diff options
| author | Nirbheek Chauhan <nirbheek@centricular.com> | 2016-11-29 03:15:03 +0530 |
|---|---|---|
| committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2016-12-04 00:32:24 +0530 |
| commit | cee9638cc43682b6e371cc2becae745876c73bda (patch) | |
| tree | 58f414d5acc2144e286c9f58d01039528a8dd2fa /test cases | |
| parent | c1efaafec46ad837a2e9a0d409dd98302b619141 (diff) | |
| download | meson-cee9638cc43682b6e371cc2becae745876c73bda.tar.gz | |
Compiler check and extra args should always override
We want compiler check arguments (-O0, -fpermissive, etc) to override
all other arguments, and we want extra_args passed in by the build file
to always override everything.
To do this properly, we must split include arguments out, append them
first, append all other arguments as usual, and then append the rest.
As part of this, we also add the compiler check flags to the
cc.compiles() and cc.links() helper functions since they also most
likely need them.
Also includes a unit test for all this.
Diffstat (limited to 'test cases')
| -rw-r--r-- | test cases/common/43 has function/meson.build | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/test cases/common/43 has function/meson.build b/test cases/common/43 has function/meson.build index 61f96e11e..e0d3344f6 100644 --- a/test cases/common/43 has function/meson.build +++ b/test cases/common/43 has function/meson.build @@ -1,9 +1,12 @@ project('has function', 'c', 'cpp') +# This is used in the `test_compiler_check_flags_order` unit test +unit_test_args = '-I/tmp' compilers = [meson.get_compiler('c'), meson.get_compiler('cpp')] foreach cc : compilers - if not cc.has_function('printf', prefix : '#include<stdio.h>') + if not cc.has_function('printf', prefix : '#include<stdio.h>', + args : unit_test_args) error('"printf" function not found (should always exist).') endif @@ -13,12 +16,16 @@ foreach cc : compilers # On MSVC fprintf is defined as an inline function in the header, so it cannot # be found without the include. if cc.get_id() != 'msvc' - assert(cc.has_function('fprintf'), '"fprintf" function not found without include (on !msvc).') + assert(cc.has_function('fprintf', args : unit_test_args), + '"fprintf" function not found without include (on !msvc).') else - assert(cc.has_function('fprintf', prefix : '#include <stdio.h>'), '"fprintf" function not found with include (on msvc).') + assert(cc.has_function('fprintf', prefix : '#include <stdio.h>', + args : unit_test_args), + '"fprintf" function not found with include (on msvc).') endif - if cc.has_function('hfkerhisadf', prefix : '#include<stdio.h>') + if cc.has_function('hfkerhisadf', prefix : '#include<stdio.h>', + args : unit_test_args) error('Found non-existent function "hfkerhisadf".') endif @@ -28,16 +35,23 @@ foreach cc : compilers # implemented in glibc it's probably not implemented in any other 'slimmer' # C library variants either, so the check should be safe either way hopefully. if host_machine.system() == 'linux' and cc.get_id() == 'gcc' - assert (cc.has_function('poll', prefix : '#include <poll.h>'), 'couldn\'t detect "poll" when defined by a header') - assert (not cc.has_function('lchmod', prefix : '''#include <sys/stat.h> - #include <unistd.h>'''), '"lchmod" check should have failed') + assert (cc.has_function('poll', prefix : '#include <poll.h>', + args : unit_test_args), + 'couldn\'t detect "poll" when defined by a header') + lchmod_prefix = '#include <sys/stat.h>\n#include <unistd.h>' + assert (not cc.has_function('lchmod', prefix : lchmod_prefix, + args : unit_test_args), + '"lchmod" check should have failed') endif # For some functions one needs to define _GNU_SOURCE before including the # right headers to get them picked up. Make sure we can detect these functions # as well without any prefix - if cc.has_header_symbol('sys/socket.h', 'recvmmsg', prefix : '#define _GNU_SOURCE') + if cc.has_header_symbol('sys/socket.h', 'recvmmsg', + prefix : '#define _GNU_SOURCE', + args : unit_test_args) # We assume that if recvmmsg exists sendmmsg does too - assert (cc.has_function('sendmmsg'), 'Failed to detect function "sendmmsg" (should always exist).') + assert (cc.has_function('sendmmsg', args : unit_test_args), + 'Failed to detect function "sendmmsg" (should always exist).') endif endforeach |
