]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
meson: Use check_header to confirm headers work
authorThomas Sondergaard <Thomas.Sondergaard@mi.medical.canon>
Thu, 4 Jan 2024 16:45:46 +0000 (17:45 +0100)
committerThomas Sondergaard <Thomas.Sondergaard@mi.medical.canon>
Thu, 4 Jan 2024 16:57:25 +0000 (17:57 +0100)
instead of using has_header use check_header to confirm the header
works. This is necessary to get the meson build to work with Visual
Studio 2022. It has <stdatomic.h> but it does not actually work when
compiling a C program. A minimal C program that include <stdatomic.h>
fails with the following errors:

    C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.38.33130\include\vcruntime_c11_stdatomic.h(36): error C2061: syntax error: identifier 'atomic_bool'
    C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.38.33130\include\vcruntime_c11_stdatomic.h(36): error C2059: syntax error: ';'
    C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.38.33130\include\vcruntime_c11_stdatomic.h(37): error C2061: syntax error: identifier 'atomic_char'
    C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.38.33130\include\vcruntime_c11_stdatomic.h(37): error C2059: syntax error: ';'
    ...
    ...

check_header is consistent with CMake's

    check_include_file(stdatomic.h  HAVE_STDATOMIC_H)

which is why the CMake-based build of dbus works with Visual Studio
2022, while the meson build doesn't.

Fixes #494

meson.build

index 17b2a837a000f9d0861e115094876d319888b422..19b41cd90aa17759e339721e30b9f7026de168ee 100644 (file)
@@ -705,7 +705,7 @@ check_headers = [
 
 foreach header : check_headers
     macro = 'HAVE_' + header.underscorify().to_upper()
-    config.set(macro, cc.has_header(header, args: compile_args_c) ? 1 : false)
+    config.set(macro, cc.check_header(header, args: compile_args_c) ? 1 : false)
 endforeach
 
 execinfo = cc.find_library('execinfo', required: false)