Use -fsanitize=undefined when running tests with clang
This commit is contained in:
@@ -33,13 +33,16 @@ env.Append(PROTOCPATH = '#../generator')
|
|||||||
|
|
||||||
# Check the compilation environment, unless we are just cleaning up.
|
# Check the compilation environment, unless we are just cleaning up.
|
||||||
if not env.GetOption('clean'):
|
if not env.GetOption('clean'):
|
||||||
def check_ccflags(context, flags):
|
def check_ccflags(context, flags, linkflags = ''):
|
||||||
'''Check if given CCFLAGS are supported'''
|
'''Check if given CCFLAGS are supported'''
|
||||||
context.Message('Checking support for CCFLAGS="%s"... ' % flags)
|
context.Message('Checking support for CCFLAGS="%s"... ' % flags)
|
||||||
oldflags = context.env['CCFLAGS']
|
oldflags = context.env['CCFLAGS']
|
||||||
|
oldlinkflags = context.env['CCFLAGS']
|
||||||
context.env.Append(CCFLAGS = flags)
|
context.env.Append(CCFLAGS = flags)
|
||||||
|
context.env.Append(LINKFLAGS = linkflags)
|
||||||
result = context.TryCompile("int main() {return 0;}", '.c')
|
result = context.TryCompile("int main() {return 0;}", '.c')
|
||||||
context.env.Replace(CCFLAGS = oldflags)
|
context.env.Replace(CCFLAGS = oldflags)
|
||||||
|
context.env.Replace(LINKFLAGS = oldlinkflags)
|
||||||
context.Result(result)
|
context.Result(result)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
@@ -83,6 +86,13 @@ if not env.GetOption('clean'):
|
|||||||
if conf.CheckCCFLAGS(extra):
|
if conf.CheckCCFLAGS(extra):
|
||||||
conf.env.Append(CORECFLAGS = 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
|
# End the config stuff
|
||||||
env = conf.Finish()
|
env = conf.Finish()
|
||||||
|
|
||||||
@@ -119,9 +129,9 @@ elif 'tcc' in env['CC']:
|
|||||||
|
|
||||||
env.SetDefault(CORECFLAGS = '')
|
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')
|
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')
|
env.Append(CXXFLAGS = '-g -O0 -Wall -Werror -Wextra -Wno-missing-field-initializers')
|
||||||
elif 'cl' in env['CXX']:
|
elif 'cl' in env['CXX']:
|
||||||
env.Append(CXXFLAGS = '/Zi /W2 /WX')
|
env.Append(CXXFLAGS = '/Zi /W2 /WX')
|
||||||
|
|||||||
Reference in New Issue
Block a user