compilers: Fix header stub change that broke has_function checks on Windows (#559)
Fixes https://github.com/mesonbuild/meson/issues/558
This commit is contained in:
parent
df03f849a8
commit
7aa24c7d0a
|
@ -755,7 +755,8 @@ int main(int argc, char **argv) {
|
||||||
# redefines the symbol to be something else. In that case, we want to
|
# 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
|
# still detect the function. We still want to fail if __stub_foo or
|
||||||
# _stub_foo are defined, of course.
|
# _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
|
return True
|
||||||
# Some functions like alloca() are defined as compiler built-ins which
|
# Some functions like alloca() are defined as compiler built-ins which
|
||||||
# are inlined by the compiler, so test for that instead. Built-ins are
|
# are inlined by the compiler, so test for that instead. Built-ins are
|
||||||
|
|
|
@ -9,7 +9,13 @@ endif
|
||||||
# Should also be able to detect it without specifying the header
|
# Should also be able to detect it without specifying the header
|
||||||
# We check for a different function here to make sure the result is
|
# We check for a different function here to make sure the result is
|
||||||
# not taken from a cache (ie. the check above)
|
# 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>')
|
if cc.has_function('hfkerhisadf', prefix : '#include<stdio.h>')
|
||||||
error('Found non-existent function "hfkerhisadf".')
|
error('Found non-existent function "hfkerhisadf".')
|
||||||
|
|
Loading…
Reference in New Issue