util: m5ops, optional extra build flags
authorAdrian Herrera <adrian.herrera@arm.com>
Tue, 8 Dec 2020 20:12:55 +0000 (20:12 +0000)
committerAdrian Herrera <adrian.herrera@arm.com>
Wed, 16 Dec 2020 09:05:05 +0000 (09:05 +0000)
This increases compilation control for users. Main use case is building
m5ops as part of an image distribution. Specifying a different sysroot
or dynamic linker may be required when the cross toolchain is built as
part of the process.

Change-Id: Icbd3faa92ea6e084fc4a9b2db83129bce73faf21
Signed-off-by: Adrian Herrera <adrian.herrera@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/38416
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Gabe Black <gabe.black@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
util/m5/SConstruct

index 5725f6c87478710c04c605e9de99c1668c49199e..63143a806c170727f1b30514de6873cda17ec117 100644 (file)
@@ -232,16 +232,24 @@ for root, dirs, files in os.walk(abspath(src_dir)):
         #
         # This also considers scons command line settings which may look like
         # environment variables, but are set after "scons" on the command line.
-        def get_abi_opt(name, default):
+        def _extract_abi_opt_val(name, default):
             var_name = env.subst('${ABI}.%s' % name)
-            env[name] = os.environ.get(
-                    var_name, ARGUMENTS.get(var_name, default))
+            return os.environ.get(var_name, ARGUMENTS.get(var_name, default))
+        def get_abi_opt(name, default):
+            env[name] = _extract_abi_opt_val(name, default)
+        def append_abi_opt(name):
+            env.Append(**{ name: _extract_abi_opt_val(name, '') })
 
         # Process the ABI's settings in the SConsopts file, storing them
         # in a copy of the primary environment.
         env.SConscript(Dir(root).File('SConsopts'),
                        exports=[ 'env', 'get_abi_opt' ])
 
+        # The user can pass extra build flags for each ABI
+        append_abi_opt('CCFLAGS')
+        append_abi_opt('CXXFLAGS')
+        append_abi_opt('LINKFLAGS')
+
         # Check if this version of QEMU is available for running unit tests.
         env['HAVE_QEMU'] = env.Detect('${QEMU}') is not None
         if env['HAVE_QEMU'] and env.Detect('${CC}'):