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
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."
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).