genini.py revision 13675:afeab32b3655
110916Sandreas.sandberg@arm.com#!/usr/bin/env python2.7 211349Sandreas.sandberg@arm.com# Copyright (c) 2005 The Regents of The University of Michigan 310916Sandreas.sandberg@arm.com# All rights reserved. 410916Sandreas.sandberg@arm.com# 510916Sandreas.sandberg@arm.com# Redistribution and use in source and binary forms, with or without 610916Sandreas.sandberg@arm.com# modification, are permitted provided that the following conditions are 710916Sandreas.sandberg@arm.com# met: redistributions of source code must retain the above copyright 810916Sandreas.sandberg@arm.com# notice, this list of conditions and the following disclaimer; 910916Sandreas.sandberg@arm.com# redistributions in binary form must reproduce the above copyright 1010916Sandreas.sandberg@arm.com# notice, this list of conditions and the following disclaimer in the 1110916Sandreas.sandberg@arm.com# documentation and/or other materials provided with the distribution; 1210916Sandreas.sandberg@arm.com# neither the name of the copyright holders nor the names of its 1310916Sandreas.sandberg@arm.com# contributors may be used to endorse or promote products derived from 1410916Sandreas.sandberg@arm.com# this software without specific prior written permission. 1510916Sandreas.sandberg@arm.com# 1610916Sandreas.sandberg@arm.com# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1710916Sandreas.sandberg@arm.com# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1810916Sandreas.sandberg@arm.com# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1910916Sandreas.sandberg@arm.com# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2010916Sandreas.sandberg@arm.com# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2110916Sandreas.sandberg@arm.com# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2210916Sandreas.sandberg@arm.com# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2310916Sandreas.sandberg@arm.com# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2410916Sandreas.sandberg@arm.com# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2510916Sandreas.sandberg@arm.com# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2610916Sandreas.sandberg@arm.com# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2710916Sandreas.sandberg@arm.com# 2810916Sandreas.sandberg@arm.com# Authors: Nathan Binkert 2910916Sandreas.sandberg@arm.com 3010916Sandreas.sandberg@arm.comfrom __future__ import print_function 3110916Sandreas.sandberg@arm.com 3210916Sandreas.sandberg@arm.comimport getopt, os, os.path, sys 3310916Sandreas.sandberg@arm.comfrom os.path import join as joinpath, realpath 3410916Sandreas.sandberg@arm.com 3510916Sandreas.sandberg@arm.commypath = sys.path[0] 3610916Sandreas.sandberg@arm.comsys.path.append(joinpath(mypath, '..')) 3710916Sandreas.sandberg@arm.comsys.path.append(joinpath(mypath, '../python')) 3810916Sandreas.sandberg@arm.comsys.path.append(joinpath(mypath, '../util/pbs')) 3910916Sandreas.sandberg@arm.com 4010916Sandreas.sandberg@arm.compathlist = [ '.' ] 4110916Sandreas.sandberg@arm.com 4210916Sandreas.sandberg@arm.comm5_build_env = {} 4310916Sandreas.sandberg@arm.com 4410916Sandreas.sandberg@arm.comtry: 4510916Sandreas.sandberg@arm.com opts, args = getopt.getopt(sys.argv[1:], '-E:I:') 4610916Sandreas.sandberg@arm.com for opt,arg in opts: 4711619Sandreas.sandberg@arm.com if opt == '-E': 4811619Sandreas.sandberg@arm.com offset = arg.find('=') 4910916Sandreas.sandberg@arm.com if offset == -1: 5010916Sandreas.sandberg@arm.com name = arg 5111349Sandreas.sandberg@arm.com value = 'True' 5211349Sandreas.sandberg@arm.com else: 5311349Sandreas.sandberg@arm.com name = arg[:offset] 5411349Sandreas.sandberg@arm.com value = arg[offset+1:] 5511349Sandreas.sandberg@arm.com os.environ[name] = value 5611349Sandreas.sandberg@arm.com m5_build_env[name] = value 5710916Sandreas.sandberg@arm.com if opt == '-I': 5810916Sandreas.sandberg@arm.com pathlist.append(arg) 5910916Sandreas.sandberg@arm.comexcept getopt.GetoptError: 6010916Sandreas.sandberg@arm.com sys.exit('Improper Usage') 6110916Sandreas.sandberg@arm.com 6210916Sandreas.sandberg@arm.comimport __main__ 6310916Sandreas.sandberg@arm.com__main__.m5_build_env = m5_build_env 6410916Sandreas.sandberg@arm.com 6510916Sandreas.sandberg@arm.comfrom m5 import * 6610916Sandreas.sandberg@arm.com 6710916Sandreas.sandberg@arm.comfor path in pathlist: 6810916Sandreas.sandberg@arm.com AddToPath(path) 6910916Sandreas.sandberg@arm.com 7010916Sandreas.sandberg@arm.comfor arg in args: 7110916Sandreas.sandberg@arm.com m5execfile(arg, globals()) 7210916Sandreas.sandberg@arm.com 7310916Sandreas.sandberg@arm.comif 'root' in globals() and isinstance(root, Root): 7411349Sandreas.sandberg@arm.com instantiate(root) 7511349Sandreas.sandberg@arm.comelse: 7611349Sandreas.sandberg@arm.com print("Instantiation skipped: no root object found.") 7711349Sandreas.sandberg@arm.com