Here's how meson does cc.has_function https://github.com/mesonbuild/meson/blob/master/mesonbuild/compilers/mixins/clike.py#L761
Since the compiler error comes from the header file with __attribute__((availability(ios,unavailable))) The meson check will always pass. cc.compiles should work though. Is there a reason why it's not used instead of all the compile_prog checks in ./configure ? -j On Mon, Jan 25, 2021 at 12:04 AM Paolo Bonzini <pbonz...@redhat.com> wrote: > > On 23/01/21 14:45, Peter Maydell wrote: > > On Sat, 23 Jan 2021 at 03:18, Joelle van Dyne <j...@getutm.app> wrote: > > On Fri, Jan 22, 2021 at 3:17 PM Peter Maydell <peter.mayd...@linaro.org> > > wrote: > >>> Can we do the "does system() exist?" check in meson.build ? > > > >>> config_host_data.set('HAVE_SYSTEM_FUNCTION', cc.has_function('system')) > > > >> Unfortunately, this doesn't work for iOS, which defines system() but > >> throws a compile time error if you try to call it. > > > > That's odd -- as far as I can tell the meson implementation > > of has_function() does what I expected it to do, ie > > "try to compile and link a little program that uses the > > function, and see if it successfully links": > > https://github.com/mesonbuild/meson/blob/39ede12aa5b27376341df85bc9ec254913f044bd/mesonbuild/compilers/mixins/clike.py#L791 > > There's some initial cleverness there too, so I guess some > > part of that must be what's tripping us up. > > > > In any case, I think we should be doing new checks in > > meson.build, not configure. Paolo, what's the right > > way to do a meson "really compile this program and > > check it built" test? > > One possibility is that you have to specify the #include in the "prefix" > argument of cc.has_function for the test to behave as the QEMU code? > > If cc.has_function doesn't work, there's cc.compiles() and cc.links(). > > Paolo >