[glib/glib-2-72: 33/39] meson: fix build without cpp toolchain
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/glib-2-72: 33/39] meson: fix build without cpp toolchain
- Date: Tue, 20 Sep 2022 19:07:40 +0000 (UTC)
commit fcf2aaa1eb0b75303426dc74d6c74cb2dd70ea89
Author: James Hilliard <james hilliard1 gmail com>
Date: Fri Jul 15 00:23:37 2022 -0600
meson: fix build without cpp toolchain
We don't need a cpp toolchain for building glib so lets just
automatically disable tests requiring one when not available.
Signed-off-by: James Hilliard <james hilliard1 gmail com>
(cherry-picked from commit d0b9ebbaacb5f69aaaad30829e04cd3a88f084cb)
fuzzing/meson.build | 8 ++++++--
gio/tests/meson.build | 11 ++++++++---
glib/tests/meson.build | 11 ++++++++---
gmodule/tests/meson.build | 12 +++++++-----
gobject/tests/meson.build | 11 ++++++++---
meson.build | 39 +++++++++++++++++++++++++--------------
6 files changed, 62 insertions(+), 30 deletions(-)
---
diff --git a/fuzzing/meson.build b/fuzzing/meson.build
index 259c6d91d0..49cfc37524 100644
--- a/fuzzing/meson.build
+++ b/fuzzing/meson.build
@@ -26,8 +26,12 @@ extra_c_args = cc.get_supported_arguments('-Werror=unused-function')
# Links in a static library provided by oss-fuzz, else a standalone driver.
# https://google.github.io/oss-fuzz/getting-started/new-project-guide/#buildsh-script-environment
-fuzzing_engine = cxx.find_library('FuzzingEngine', required : get_option('oss_fuzz'))
-if fuzzing_engine.found()
+have_fuzzing_engine = false
+if have_cxx
+ fuzzing_engine = cxx.find_library('FuzzingEngine', required : get_option('oss_fuzz'))
+ have_fuzzing_engine = fuzzing_engine.found()
+endif
+if have_fuzzing_engine
deps += fuzzing_engine
else
extra_sources += 'driver.c'
diff --git a/gio/tests/meson.build b/gio/tests/meson.build
index eac412aa1e..383d84319e 100644
--- a/gio/tests/meson.build
+++ b/gio/tests/meson.build
@@ -58,9 +58,6 @@ gio_tests = {
},
'converter-stream' : {},
'credentials' : {},
- 'cxx' : {
- 'source' : ['cxx.cpp'],
- },
'data-input-stream' : {},
'data-output-stream' : {},
'fileattributematcher' : {},
@@ -124,6 +121,14 @@ gio_tests = {
'win32-appinfo' : {},
}
+if have_cxx
+ gio_tests += {
+ 'cxx' : {
+ 'source' : ['cxx.cpp'],
+ },
+ }
+endif
+
test_extra_programs = {
'gdbus-connection-flush-helper' : {},
'gdbus-testserver' : {},
diff --git a/glib/tests/meson.build b/glib/tests/meson.build
index 301158e0fb..48d12d7490 100644
--- a/glib/tests/meson.build
+++ b/glib/tests/meson.build
@@ -15,9 +15,6 @@ glib_tests = {
'completion' : {},
'cond' : {},
'convert' : {},
- 'cxx' : {
- 'source' : ['cxx.cpp'],
- },
'dataset' : {},
'date' : {
# FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/1392
@@ -142,6 +139,14 @@ glib_tests = {
},
}
+if have_cxx
+ glib_tests += {
+ 'cxx' : {
+ 'source' : ['cxx.cpp'],
+ }
+ }
+endif
+
if cc.get_id() != 'msvc'
glib_tests += {'autoptr' : {}}
endif
diff --git a/gmodule/tests/meson.build b/gmodule/tests/meson.build
index 9b475a88e1..b6f1ccaa6c 100644
--- a/gmodule/tests/meson.build
+++ b/gmodule/tests/meson.build
@@ -1,8 +1,10 @@
-gmodule_tests = {
- 'cxx' : {
- 'source' : ['cxx.cpp'],
- },
-}
+if have_cxx
+ gmodule_tests = {
+ 'cxx' : {
+ 'source' : ['cxx.cpp'],
+ },
+ }
+endif
test_env = environment()
test_env.set('G_TEST_SRCDIR', meson.current_source_dir())
diff --git a/gobject/tests/meson.build b/gobject/tests/meson.build
index 8d568f00e7..eb6a047460 100644
--- a/gobject/tests/meson.build
+++ b/gobject/tests/meson.build
@@ -29,9 +29,6 @@ marshalers_c = custom_target('marshalers_c',
gobject_tests = {
'qdata' : {},
'boxed' : {},
- 'cxx' : {
- 'source' : ['cxx.cpp'],
- },
'enums' : {},
'param' : {},
'threadtests' : {},
@@ -59,6 +56,14 @@ gobject_tests = {
'type-flags' : {},
}
+if have_cxx
+ gobject_tests += {
+ 'cxx' : {
+ 'source' : ['cxx.cpp'],
+ },
+ }
+endif
+
if cc.get_id() != 'msvc'
gobject_tests += {'autoptr' : {}}
endif
diff --git a/meson.build b/meson.build
index 48fdfe8641..04fce1d907 100644
--- a/meson.build
+++ b/meson.build
@@ -1,4 +1,4 @@
-project('glib', 'c', 'cpp',
+project('glib', 'c',
version : '2.72.3',
# NOTE: We keep this pinned at 0.52 because that's what Debian Stable ships
meson_version : '>= 0.52.0',
@@ -10,7 +10,14 @@ project('glib', 'c', 'cpp',
)
cc = meson.get_compiler('c')
-cxx = meson.get_compiler('cpp')
+if meson.version().version_compare('>= 0.54.0')
+ have_cxx = add_languages('cpp', native: false, required: get_option('oss_fuzz').enabled())
+else
+ have_cxx = add_languages('cpp', required: get_option('oss_fuzz').enabled())
+endif
+if have_cxx
+ cxx = meson.get_compiler('cpp')
+endif
cc_can_run = not meson.is_cross_build() or meson.has_exe_wrapper()
@@ -495,7 +502,9 @@ else
endif
add_project_arguments(cc.get_supported_arguments(warning_c_args), language: 'c')
-add_project_arguments(cxx.get_supported_arguments(warning_cxx_args), language: 'cpp')
+if have_cxx
+ add_project_arguments(cxx.get_supported_arguments(warning_cxx_args), language: 'cpp')
+endif
# FIXME: We cannot build some of the GResource tests with -z nodelete, which
# means we cannot use that flag in add_project_link_arguments(), and must add
@@ -1734,18 +1743,20 @@ if g_have_iso_c_varargs
#endif''')
endif
-g_have_iso_cxx_varargs = cxx.compiles('''
- void some_func (void) {
- int a(int p1, int p2, int p3);
- #define call_a(...) a(1,__VA_ARGS__)
- call_a(2,3);
- }''', name : 'ISO C99 varargs macros in C++')
+if have_cxx
+ g_have_iso_cxx_varargs = cxx.compiles('''
+ void some_func (void) {
+ int a(int p1, int p2, int p3);
+ #define call_a(...) a(1,__VA_ARGS__)
+ call_a(2,3);
+ }''', name : 'ISO C99 varargs macros in C++')
-if g_have_iso_cxx_varargs
- glibconfig_conf.set('g_have_iso_cxx_varargs', '''
-#ifdef __cplusplus
-# define G_HAVE_ISO_VARARGS 1
-#endif''')
+ if g_have_iso_cxx_varargs
+ glibconfig_conf.set('g_have_iso_cxx_varargs', '''
+ #ifdef __cplusplus
+ # define G_HAVE_ISO_VARARGS 1
+ #endif''')
+ endif
endif
g_have_gnuc_varargs = cc.compiles('''
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]