systemc: Move systemc disabling checks to SConsopts.
authorGabe Black <gabeblack@google.com>
Thu, 28 Feb 2019 00:26:39 +0000 (16:26 -0800)
committerGabe Black <gabeblack@google.com>
Thu, 28 Feb 2019 22:29:36 +0000 (22:29 +0000)
This will ensure that the value of USE_SYSTEMC is consistent throughout
the build. It also has the side effect that USE_SYSTEMC can be forced
to a particular value if you're confident you know what you're doing
and want to override these checks.

Change-Id: I0f2d1153245ff17ce4a828c6b7496cb9ded6bd5b
Reviewed-on: https://gem5-review.googlesource.com/c/16810
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

src/systemc/SConscript
src/systemc/SConsopts

index c820b457ec2d741e21a64f2c593026995e0fc121..b2673947f3531b77b51147494f9075f94ccb46aa 100644 (file)
 
 Import('*')
 
-from m5.util import compareVersions
-from m5.util.terminal import termcap
+if not env['USE_SYSTEMC']:
+    Return()
 
-if env['USE_SYSTEMC']:
-    if ('GCC_VERSION' in env and \
-        compareVersions(env['GCC_VERSION'], '5.0') < 0) or \
-        env['PLATFORM'] == 'darwin':
+env.UseSystemcCheck(warn=True)
 
-        if env['PLATFORM'] == 'darwin':
-            print(termcap.Yellow + termcap.Bold +
-                  'Warning: Disabling systemc on Mac OS.' + termcap.Normal)
-        else:
-            print(termcap.Yellow + termcap.Bold +
-                  'Warning: Disabling systemc on gcc versions less than 5.0.' +
-                  termcap.Normal)
-        env['USE_SYSTEMC'] = False
-        Return()
-
-    env.Append(CPPPATH=Dir('ext'))
+env.Append(CPPPATH=Dir('ext'))
index fc0abb2ad6e7e97db7c9ff4effe9ea17af39f091..172de5724153cefb6bf88d2b68c1188e2e84b190 100644 (file)
 
 Import('*')
 
+from m5.util import compareVersions
+from m5.util.terminal import termcap
+
+def use_systemc_check(env, warn=False):
+    if ('GCC_VERSION' in env and
+            compareVersions(env['GCC_VERSION'], '5.0') < 0):
+        if warn:
+            print(termcap.Yellow + termcap.Bold +
+                  'Warning: Systemc may not work on gcc versions less '
+                  'than 5.0.' + termcap.Normal)
+        return False
+    elif env['PLATFORM'] == 'darwin':
+        if warn:
+            print(termcap.Yellow + termcap.Bold +
+                  'Warning: Systemc may not work on Mac OS.' + termcap.Normal)
+        return False
+    return True
+
+main.AddMethod(use_systemc_check, 'UseSystemcCheck')
+
 sticky_vars.AddVariables(
-    BoolVariable('USE_SYSTEMC', 'Enable SystemC API support', True)
+    BoolVariable('USE_SYSTEMC', 'Enable SystemC API support',
+                 main.UseSystemcCheck())
     )
 
 export_vars.append('USE_SYSTEMC')