meson: perform snappy test with the C++ compiler if used
authorPaolo Bonzini <pbonzini@redhat.com>
Thu, 4 Nov 2021 13:35:14 +0000 (14:35 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 8 Nov 2021 09:55:58 +0000 (10:55 +0100)
Snappy is written in C++ and as such needs to link against libstdc++.  When
linking statically, this means that the compile test cannot succeed unless
performed with a C++ compiler.  Do so if link_language is set to C++; if it
is C, the test will usually fail and snappy will be disabled.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
meson.build

index 47df10afc2100841f5e44658d52000548e57c536..6bfed294d07b5d1e0e02d81d9ffe3d01b9de4c93 100644 (file)
@@ -197,6 +197,10 @@ add_project_arguments('-iquote', '.',
 link_language = meson.get_external_property('link_language', 'cpp')
 if link_language == 'cpp'
   add_languages('cpp', required: true, native: false)
+  cxx = meson.get_compiler('cpp')
+  linker = cxx
+else
+  linker = cc
 endif
 if host_machine.system() == 'darwin'
   add_languages('objc', required: false, native: false)
@@ -1109,7 +1113,7 @@ if not get_option('snappy').auto() or have_system
                            required: get_option('snappy'),
                            kwargs: static_kwargs)
 endif
-if snappy.found() and not cc.links('''
+if snappy.found() and not linker.links('''
    #include <snappy-c.h>
    int main(void) { snappy_max_compressed_length(4096); return 0; }''', dependencies: snappy)
   snappy = not_found