@ -358,9 +358,8 @@ class InternalTests(unittest.TestCase):
stat . S_IRGRP | stat . S_IXGRP )
def test_compiler_args_class_none_flush ( self ) :
cargsfunc = mesonbuild . arglist . CompilerArgs
cc = mesonbuild . compilers . CCompiler ( [ ] , ' fake ' , False , MachineChoice . HOST , mock . Mock ( ) )
a = cargsfunc ( cc , [ ' -I. ' ] )
a = cc . compiler_args ( [ ' -I. ' ] )
#first we are checking if the tree construction deduplicates the correct -I argument
a + = [ ' -I.. ' ]
a + = [ ' -I./tests/ ' ]
@ -377,16 +376,15 @@ class InternalTests(unittest.TestCase):
def test_compiler_args_class ( self ) :
cargsfunc = mesonbuild . arglist . CompilerArgs
cc = mesonbuild . compilers . CCompiler ( [ ] , ' fake ' , False , MachineChoice . HOST , mock . Mock ( ) )
# Test that empty initialization works
a = cargsfunc ( cc )
a = cc . compiler_args ( )
self . assertEqual ( a , [ ] )
# Test that list initialization works
a = cargsfunc ( cc , [ ' -I. ' , ' -I.. ' ] )
a = cc . compiler_args ( [ ' -I. ' , ' -I.. ' ] )
self . assertEqual ( a , [ ' -I. ' , ' -I.. ' ] )
# Test that there is no de-dup on initialization
self . assertEqual ( cargsfunc ( cc , [ ' -I. ' , ' -I. ' ] ) , [ ' -I. ' , ' -I. ' ] )
self . assertEqual ( cc . compiler_args ( [ ' -I. ' , ' -I. ' ] ) , [ ' -I. ' , ' -I. ' ] )
## Test that appending works
a . append ( ' -I.. ' )
@ -432,7 +430,7 @@ class InternalTests(unittest.TestCase):
self . assertEqual ( a , [ ' -Ibar ' , ' -Ifoo ' , ' -Ibaz ' , ' -I.. ' , ' -I. ' , ' -Ldir ' , ' -Lbah ' , ' -Werror ' , ' -O3 ' , ' -O2 ' , ' -Wall ' ] )
## Test that adding libraries works
l = cargsfunc ( cc , [ ' -Lfoodir ' , ' -lfoo ' ] )
l = cc . compiler_args ( [ ' -Lfoodir ' , ' -lfoo ' ] )
self . assertEqual ( l , [ ' -Lfoodir ' , ' -lfoo ' ] )
# Adding a library and a libpath appends both correctly
l + = [ ' -Lbardir ' , ' -lbar ' ]
@ -442,7 +440,7 @@ class InternalTests(unittest.TestCase):
self . assertEqual ( l , [ ' -Lbardir ' , ' -Lfoodir ' , ' -lfoo ' , ' -lbar ' ] )
## Test that 'direct' append and extend works
l = cargsfunc ( cc , [ ' -Lfoodir ' , ' -lfoo ' ] )
l = cc . compiler_args ( [ ' -Lfoodir ' , ' -lfoo ' ] )
self . assertEqual ( l , [ ' -Lfoodir ' , ' -lfoo ' ] )
# Direct-adding a library and a libpath appends both correctly
l . extend_direct ( [ ' -Lbardir ' , ' -lbar ' ] )
@ -458,14 +456,13 @@ class InternalTests(unittest.TestCase):
self . assertEqual ( l , [ ' -Lfoodir ' , ' -lfoo ' , ' -Lbardir ' , ' -lbar ' , ' -lbar ' , ' /libbaz.a ' ] )
def test_compiler_args_class_gnuld ( self ) :
cargsfunc = mesonbuild . arglist . CompilerArgs
## Test --start/end-group
linker = mesonbuild . linkers . GnuDynamicLinker ( [ ] , MachineChoice . HOST , ' fake ' , ' -Wl, ' , [ ] )
gcc = mesonbuild . compilers . GnuCCompiler ( [ ] , ' fake ' , False , MachineChoice . HOST , mock . Mock ( ) , linker = linker )
## Ensure that the fake compiler is never called by overriding the relevant function
gcc . get_default_include_dirs = lambda : [ ' /usr/include ' , ' /usr/share/include ' , ' /usr/local/include ' ]
## Test that 'direct' append and extend works
l = cargsfunc ( gcc , [ ' -Lfoodir ' , ' -lfoo ' ] )
l = gcc . compiler_args ( [ ' -Lfoodir ' , ' -lfoo ' ] )
self . assertEqual ( l . to_native ( copy = True ) , [ ' -Lfoodir ' , ' -Wl,--start-group ' , ' -lfoo ' , ' -Wl,--end-group ' ] )
# Direct-adding a library and a libpath appends both correctly
l . extend_direct ( [ ' -Lbardir ' , ' -lbar ' ] )
@ -487,14 +484,13 @@ class InternalTests(unittest.TestCase):
self . assertEqual ( l . to_native ( copy = True ) , [ ' -Lfoo ' , ' -Lfoodir ' , ' -Wl,--start-group ' , ' -lfoo ' , ' -Lbardir ' , ' -lbar ' , ' -lbar ' , ' /libbaz.a ' , ' -Wl,--export-dynamic ' , ' -Wl,-ldl ' , ' -Wl,--end-group ' ] )
def test_compiler_args_remove_system ( self ) :
cargsfunc = mesonbuild . arglist . CompilerArgs
## Test --start/end-group
linker = mesonbuild . linkers . GnuDynamicLinker ( [ ] , MachineChoice . HOST , ' fake ' , ' -Wl, ' , [ ] )
gcc = mesonbuild . compilers . GnuCCompiler ( [ ] , ' fake ' , False , MachineChoice . HOST , mock . Mock ( ) , linker = linker )
## Ensure that the fake compiler is never called by overriding the relevant function
gcc . get_default_include_dirs = lambda : [ ' /usr/include ' , ' /usr/share/include ' , ' /usr/local/include ' ]
## Test that 'direct' append and extend works
l = cargsfunc ( gcc , [ ' -Lfoodir ' , ' -lfoo ' ] )
l = gcc . compiler_args ( [ ' -Lfoodir ' , ' -lfoo ' ] )
self . assertEqual ( l . to_native ( copy = True ) , [ ' -Lfoodir ' , ' -Wl,--start-group ' , ' -lfoo ' , ' -Wl,--end-group ' ] )
## Test that to_native removes all system includes
l + = [ ' -isystem/usr/include ' , ' -isystem=/usr/share/include ' , ' -DSOMETHING_IMPORTANT=1 ' , ' -isystem ' , ' /usr/local/include ' ]