Gabe Black has uploaded this change for review. ( https://gem5-review.googlesource.com/5981

Change subject: scons: Move some compiler flag setting code to the SConstruct.
......................................................................

scons: Move some compiler flag setting code to the SConstruct.

These settings are invariant, so there's no reason to apply them over
and over again for the child environments used for various build
products.

Change-Id: Icb4053105e4f1c43008f2422ba30c7206b7ff365
---
M SConstruct
M src/SConscript
2 files changed, 35 insertions(+), 38 deletions(-)



diff --git a/SConstruct b/SConstruct
index 095b58b..36db216 100755
--- a/SConstruct
+++ b/SConstruct
@@ -473,6 +473,25 @@
     if compareVersions(gcc_version, "5.0") > 0:
         main.Append(CCFLAGS=['-Wno-error=suggest-override'])

+    # The address sanitizer is available for gcc >= 4.8
+    if GetOption('with_asan'):
+        if GetOption('with_ubsan') and \
+                compareVersions(env['GCC_VERSION'], '4.9') >= 0:
+            env.Append(CCFLAGS=['-fsanitize=address,undefined',
+                                '-fno-omit-frame-pointer'],
+                       LINKFLAGS='-fsanitize=address,undefined')
+        else:
+            env.Append(CCFLAGS=['-fsanitize=address',
+                                '-fno-omit-frame-pointer'],
+                       LINKFLAGS='-fsanitize=address')
+    # Only gcc >= 4.9 supports UBSan, so check both the version
+    # and the command-line option before adding the compiler and
+    # linker flags.
+    elif GetOption('with_ubsan') and \
+            compareVersions(env['GCC_VERSION'], '4.9') >= 0:
+        env.Append(CCFLAGS='-fsanitize=undefined')
+        env.Append(LINKFLAGS='-fsanitize=undefined')
+
 elif main['CLANG']:
     # Check for a supported version of clang, >= 3.1 is needed to
     # support similar features as gcc 4.8. See
@@ -513,6 +532,22 @@
     if sys.platform.startswith('freebsd'):
         main.Append(LIBS=['thr'])

+    # We require clang >= 3.1, so there is no need to check any
+    # versions here.
+    if GetOption('with_ubsan'):
+        if GetOption('with_asan'):
+            env.Append(CCFLAGS=['-fsanitize=address,undefined',
+                                '-fno-omit-frame-pointer'],
+                       LINKFLAGS='-fsanitize=address,undefined')
+        else:
+            env.Append(CCFLAGS='-fsanitize=undefined',
+                       LINKFLAGS='-fsanitize=undefined')
+
+    elif GetOption('with_asan'):
+        env.Append(CCFLAGS=['-fsanitize=address',
+                            '-fno-omit-frame-pointer'],
+                   LINKFLAGS='-fsanitize=address')
+
 else:
     print termcap.Yellow + termcap.Bold + 'Error' + termcap.Normal,
     print "Don't know what compiler options to use for your compiler."
diff --git a/src/SConscript b/src/SConscript
index f9560af..a40955b 100755
--- a/src/SConscript
+++ b/src/SConscript
@@ -952,44 +952,6 @@
     new_env.Label = label
     new_env.Append(**kwargs)

-    if env['GCC']:
-        # The address sanitizer is available for gcc >= 4.8
-        if GetOption('with_asan'):
-            if GetOption('with_ubsan') and \
-                    compareVersions(env['GCC_VERSION'], '4.9') >= 0:
-                new_env.Append(CCFLAGS=['-fsanitize=address,undefined',
-                                        '-fno-omit-frame-pointer'])
-                new_env.Append(LINKFLAGS='-fsanitize=address,undefined')
-            else:
-                new_env.Append(CCFLAGS=['-fsanitize=address',
-                                        '-fno-omit-frame-pointer'])
-                new_env.Append(LINKFLAGS='-fsanitize=address')
-        # Only gcc >= 4.9 supports UBSan, so check both the version
-        # and the command-line option before adding the compiler and
-        # linker flags.
-        elif GetOption('with_ubsan') and \
-                compareVersions(env['GCC_VERSION'], '4.9') >= 0:
-            new_env.Append(CCFLAGS='-fsanitize=undefined')
-            new_env.Append(LINKFLAGS='-fsanitize=undefined')
-
-
-    if env['CLANG']:
-        # We require clang >= 3.1, so there is no need to check any
-        # versions here.
-        if GetOption('with_ubsan'):
-            if GetOption('with_asan'):
-                new_env.Append(CCFLAGS=['-fsanitize=address,undefined',
-                                        '-fno-omit-frame-pointer'])
-                new_env.Append(LINKFLAGS='-fsanitize=address,undefined')
-            else:
-                new_env.Append(CCFLAGS='-fsanitize=undefined')
-                new_env.Append(LINKFLAGS='-fsanitize=undefined')
-
-        elif GetOption('with_asan'):
-            new_env.Append(CCFLAGS=['-fsanitize=address',
-                                    '-fno-omit-frame-pointer'])
-            new_env.Append(LINKFLAGS='-fsanitize=address')
-
     werror_env = new_env.Clone()
     # Treat warnings as errors but white list some warnings that we
     # want to allow (e.g., deprecation warnings).

--
To view, visit https://gem5-review.googlesource.com/5981
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Icb4053105e4f1c43008f2422ba30c7206b7ff365
Gerrit-Change-Number: 5981
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black <gabebl...@google.com>
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to