summaryrefslogtreecommitdiff
path: root/python/m5/__init__.py
diff options
context:
space:
mode:
authorSteve Reinhardt <stever@eecs.umich.edu>2005-03-14 07:46:26 -0500
committerSteve Reinhardt <stever@eecs.umich.edu>2005-03-14 07:46:26 -0500
commit1b841a871ecd717dd8705d12ff7311c6fc97fc63 (patch)
tree48db77cabaae797478b9ee84c03ebe64fbe34f94 /python/m5/__init__.py
parent82964b2705b892f5d36522f7b7c5472975a5d873 (diff)
downloadgem5-1b841a871ecd717dd8705d12ff7311c6fc97fc63.tar.xz
- Add capability to auto-generate Param structs from
.mpy SimObject descriptions. Structs are defined in simobj/param/ObjectName.hh. - Move compile-time python params (from CPPDEFINES) to separate dict from run-time params (from os.environ). The former are needed to generate proper param structs. This also helps prevent users from messing things up by setting the wrong environment vars (which could have overridden compile-time settings in the old system). - Other misc cleanup of m5 python package. SConscript: Include simobj/SConscript build/SConstruct: Fix type in comment python/SConscript: Move CPPDEFINES dict-generating code to m5scons.flatten_defines python/m5/__init__.py: - Generate a build_env SmartDict here to hold compile-time params (passed in via __main__.m5_build_env). - Move panic and env here from config.py. python/m5/config.py: Move panic, env to top level (m5/__init__.py) python/m5/objects/BaseCPU.mpy: Use build_env instead of env for compile-time params python/m5/smartdict.py: Add some comments. sim/sim_object.hh: Include auto-generated Param struct. Not used yet, just here as proof of concept. test/genini.py: Put -E arguments in build_env as well as os.environ --HG-- extra : convert_revision : cf6f4a2565b230c495b33b18612d6030988adac5
Diffstat (limited to 'python/m5/__init__.py')
-rw-r--r--python/m5/__init__.py30
1 files changed, 28 insertions, 2 deletions
diff --git a/python/m5/__init__.py b/python/m5/__init__.py
index 3d54a83da..16f48dba3 100644
--- a/python/m5/__init__.py
+++ b/python/m5/__init__.py
@@ -1,10 +1,36 @@
+import sys, os
+
+# the mpy import code is added to the global import meta_path as a
+# side effect of this import
from mpy_importer import AddToPath, LoadMpyFile
+# define this here so we can use it right away if necessary
+def panic(string):
+ print >>sys.stderr, 'panic:', string
+ sys.exit(1)
+
+# find the m5 compile options: must be specified as a dict in
+# __main__.m5_build_env.
+import __main__
+if not hasattr(__main__, 'm5_build_env'):
+ panic("__main__ must define m5_build_env")
+
+# make a SmartDict out of the build options for our local use
+import smartdict
+build_env = smartdict.SmartDict()
+build_env.update(__main__.m5_build_env)
+
+# make a SmartDict out of the OS environment too
+env = smartdict.SmartDict()
+env.update(os.environ)
+
+# import the main m5 config code
from config import *
-config.add_param_types(config.__dict__)
+config.add_param_types(config)
+# import the built-in object definitions
from objects import *
-config.add_param_types(objects.__dict__)
+config.add_param_types(objects)
cpp_classes = config.MetaSimObject.cpp_classes
cpp_classes.sort()