diff --git a/fuzzing/meson.build b/fuzzing/meson.build index 259c6d91d..49cfc3752 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 eac412aa1..383d84319 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 301158e0f..48d12d749 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 9b475a88e..b6f1ccaa6 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 8d568f00e..eb6a04746 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 48fdfe864..04fce1d90 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('''