config: Add a --without-python option to build process

Add the ability to build libgem5 without embedded Python or the
ability to configure with Python.

This is a prelude to a patch to allow config.ini files to be loaded
into libgem5 using only C++ which would make embedding gem5 within
other simulation systems easier.

This adds a few registration interfaces to things which cross
between Python and C++.  Namely: stats dumping and SimObject resolving
This commit is contained in:
Andrew Bardsley
2014-10-16 05:49:32 -04:00
parent a63ba6c7b7
commit d8502ee46d
23 changed files with 547 additions and 189 deletions

View File

@@ -157,9 +157,12 @@ extern "C" SimObject *convertSwigSimObjectPtr(PyObject *);
// these in sim/main.cc as well that are handled without this define.
#define PCC(s) const_cast<char *>(s)
/** Single instance of PythonSimObjectResolver as its action is effectively
* static but SimObjectResolver can use a non-persistent object */
PythonSimObjectResolver pythonSimObjectResolver;
SimObject *
resolveSimObject(const string &name)
PythonSimObjectResolver::resolveSimObject(const string &name)
{
PyObject *module = PyImport_ImportModule(PCC("m5.SimObject"));
if (module == NULL)
@@ -188,3 +191,9 @@ resolveSimObject(const string &name)
return obj;
}
Checkpoint *
getCheckpoint(const std::string &cpt_dir)
{
return new Checkpoint(cpt_dir, pythonSimObjectResolver);
}