diff options
author | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2016-05-26 03:01:51 +0530 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2016-05-26 00:31:51 +0300 |
commit | 7aa24c7d0a68959e4d29c41d157ee30ff97153ad (patch) | |
tree | dd2eb85b93794cba138e642343587e062b6b7474 | |
parent | df03f849a8d52bb45677b17b2516f2257ea42dda (diff) | |
download | meson-7aa24c7d0a68959e4d29c41d157ee30ff97153ad.zip meson-7aa24c7d0a68959e4d29c41d157ee30ff97153ad.tar.gz meson-7aa24c7d0a68959e4d29c41d157ee30ff97153ad.tar.bz2 |
compilers: Fix header stub change that broke has_function checks on Windows (#559)
Fixes https://github.com/mesonbuild/meson/issues/558
-rw-r--r-- | mesonbuild/compilers.py | 3 | ||||
-rw-r--r-- | test cases/common/43 has function/meson.build | 8 |
2 files changed, 9 insertions, 2 deletions
diff --git a/mesonbuild/compilers.py b/mesonbuild/compilers.py index 241192e..458a579 100644 --- a/mesonbuild/compilers.py +++ b/mesonbuild/compilers.py @@ -755,7 +755,8 @@ int main(int argc, char **argv) { # redefines the symbol to be something else. In that case, we want to # still detect the function. We still want to fail if __stub_foo or # _stub_foo are defined, of course. - if self.links('{0}\n' + stubs_fail + '\nint main() {{ {1}; }}'.format(prefix, funcname), extra_args): + header_templ = '#include <limits.h>\n{0}\n' + stubs_fail + '\nint main() {{ {1}; }}' + if self.links(header_templ.format(prefix, funcname), extra_args): return True # Some functions like alloca() are defined as compiler built-ins which # are inlined by the compiler, so test for that instead. Built-ins are diff --git a/test cases/common/43 has function/meson.build b/test cases/common/43 has function/meson.build index c7fe353..00ca640 100644 --- a/test cases/common/43 has function/meson.build +++ b/test cases/common/43 has function/meson.build @@ -9,7 +9,13 @@ endif # Should also be able to detect it without specifying the header # We check for a different function here to make sure the result is # not taken from a cache (ie. the check above) -assert(cc.has_function('fprintf'), '"fprintf" function not found without include (should always exist).') +# 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).') +else + assert(cc.has_function('fprintf', prefix : '#include <stdio.h>'), '"fprintf" function not found with include (on msvc).') +endif if cc.has_function('hfkerhisadf', prefix : '#include<stdio.h>') error('Found non-existent function "hfkerhisadf".') |