From a1b6471fe5a3ea1cd2504afa3aa2419375137d77 Mon Sep 17 00:00:00 2001 From: Giacomo Travaglini Date: Thu, 4 Jun 2020 12:45:52 +0100 Subject: [PATCH] scons: Add MARSHAL_XXFLAGS_EXTRA for the marshal object We already provide to the user the CCFLAGS_EXTRA, LDFLAGS_EXTRA variables to pass flags to scons when compiling/linking gem5. Those variables are not passed to the marshal object. We add an extra pair: MARSHAL_CCFLAGS_EXTRA, MARSHAL_LDFLAGS_EXTRA to add flag injection capabilities to the marshal object. The patch is also renaming base_py_env to marshal_env. This happens for 2 reasons: 1) At the moment the marshal compilation is the only task making use of the base python environment. 2) Consistency with the EXTRA variable names added with this patch. I could have named them as BASE_XXFLAGS_EXTRA, but it seems too much generic and users might be confused by that, as they might think the BASE_XXFLAGS_EXTRA is a subset of the XXFLAGS_EXTRA so that setting it will affect gem5 compilation as well. Change-Id: I3e420caa897059455ff8f35462db2b38da050e93 Signed-off-by: Giacomo Travaglini Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/30016 Reviewed-by: Jason Lowe-Power Reviewed-by: Nikos Nikoleris Reviewed-by: Andreas Sandberg Maintainer: Andreas Sandberg Tested-by: kokoro --- SConstruct | 8 ++++++-- src/SConscript | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/SConstruct b/SConstruct index 4bc3d0e39..b327a8b58 100755 --- a/SConstruct +++ b/SConstruct @@ -276,6 +276,8 @@ global_vars.AddVariables( ('CXX', 'C++ compiler', environ.get('CXX', main['CXX'])), ('CCFLAGS_EXTRA', 'Extra C and C++ compiler flags', ''), ('LDFLAGS_EXTRA', 'Extra linker flags', ''), + ('MARSHAL_CCFLAGS_EXTRA', 'Extra C and C++ marshal compiler flags', ''), + ('MARSHAL_LDFLAGS_EXTRA', 'Extra marshal linker flags', ''), ('PYTHON_CONFIG', 'Python config binary to use', [ 'python2.7-config', 'python-config', 'python3-config' ]), ('PROTOC', 'protoc tool', environ.get('PROTOC', 'protoc')), @@ -734,7 +736,9 @@ if main['USE_PYTHON']: main.Prepend(CPPPATH=Dir('ext/pybind11/include/')) # Bare minimum environment that only includes python -base_py_env = main.Clone() +marshal_env = main.Clone() +marshal_env.Append(CCFLAGS='$MARSHAL_CCFLAGS_EXTRA') +marshal_env.Append(LINKFLAGS='$MARSHAL_LDFLAGS_EXTRA') # On Solaris you need to use libsocket for socket ops if not conf.CheckLibWithHeader(None, 'sys/socket.h', 'C++', 'accept(0,0,0);'): @@ -1285,7 +1289,7 @@ for variant_path in variant_paths: # to the configured variables. It returns a list of environments, # one for each variant build (debug, opt, etc.) SConscript('src/SConscript', variant_dir=variant_path, - exports=['env', 'base_py_env']) + exports=['env', 'marshal_env']) # base help text Help(''' diff --git a/src/SConscript b/src/SConscript index 7582510ea..0b3127fe2 100644 --- a/src/SConscript +++ b/src/SConscript @@ -1140,7 +1140,7 @@ env.AlwaysBuild(tags) # Build a small helper that marshals the Python code using the same # version of Python as gem5. This is in an unorthodox location to # avoid building it for every variant. -py_marshal = base_py_env.Program('marshal', 'python/marshal.cc')[0] +py_marshal = marshal_env.Program('marshal', 'python/marshal.cc')[0] # Embed python files. All .py files that have been indicated by a # PySource() call in a SConscript need to be embedded into the M5 @@ -1196,7 +1196,7 @@ EmbeddedPython embedded_${sym}( code.write(str(target[0])) for source in PySource.all: - base_py_env.Command(source.cpp, [ py_marshal, source.tnode ], + marshal_env.Command(source.cpp, [ py_marshal, source.tnode ], MakeAction(embedPyFile, Transform("EMBED PY"))) Source(source.cpp, tags=source.tags, add_tags='python') -- 2.30.2