diff options
author | Petteri Aimonen <jpa@git.mail.kapsi.fi> | 2014-04-09 19:28:57 +0300 |
---|---|---|
committer | Petteri Aimonen <jpa@git.mail.kapsi.fi> | 2014-04-09 19:28:57 +0300 |
commit | 3e83d81b09606791b05715e6680ea57e65f06234 (patch) | |
tree | 9e0d5afaeb7d6cf189e28a212e63bbd2649692d4 /tests | |
parent | 938c7ac3f302ccfa3044ce0720aeed9a4336ac0e (diff) |
Use -fsanitize=undefined when running tests with clang
Diffstat (limited to 'tests')
-rw-r--r-- | tests/SConstruct | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/tests/SConstruct b/tests/SConstruct index e7aa4717..0ad833d1 100644 --- a/tests/SConstruct +++ b/tests/SConstruct @@ -33,13 +33,16 @@ env.Append(PROTOCPATH = '#../generator') # Check the compilation environment, unless we are just cleaning up. if not env.GetOption('clean'): - def check_ccflags(context, flags): + def check_ccflags(context, flags, linkflags = ''): '''Check if given CCFLAGS are supported''' context.Message('Checking support for CCFLAGS="%s"... ' % flags) oldflags = context.env['CCFLAGS'] + oldlinkflags = context.env['CCFLAGS'] context.env.Append(CCFLAGS = flags) + context.env.Append(LINKFLAGS = linkflags) result = context.TryCompile("int main() {return 0;}", '.c') context.env.Replace(CCFLAGS = oldflags) + context.env.Replace(LINKFLAGS = oldlinkflags) context.Result(result) return result @@ -83,6 +86,13 @@ if not env.GetOption('clean'): if conf.CheckCCFLAGS(extra): conf.env.Append(CORECFLAGS = extra) + # Check if we can use undefined behaviour sanitizer (only with clang) + extra = '-fsanitize=undefined ' + if 'clang' in env['CC']: + if conf.CheckCCFLAGS(extra, linkflags = extra): + conf.env.Append(CORECFLAGS = extra) + conf.env.Append(LINKFLAGS = extra) + # End the config stuff env = conf.Finish() @@ -119,9 +129,9 @@ elif 'tcc' in env['CC']: env.SetDefault(CORECFLAGS = '') -if 'clang++' in env['CXX']: +if 'clang' in env['CXX']: env.Append(CXXFLAGS = '-g -O0 -Wall -Werror -Wextra -Wno-missing-field-initializers') -elif 'g++' in env['CXX']: +elif 'g++' in env['CXX'] or 'gcc' in env['CXX']: env.Append(CXXFLAGS = '-g -O0 -Wall -Werror -Wextra -Wno-missing-field-initializers') elif 'cl' in env['CXX']: env.Append(CXXFLAGS = '/Zi /W2 /WX') |