diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index d4a1b05de..6984bdf05 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -2479,9 +2479,9 @@ different subdirectory. if 'language' not in kwargs: raise InvalidCode('Missing language definition in {}'.format(node.func_name)) - lang = kwargs['language'].lower() - args = argsdict.get(lang, []) + args - argsdict[lang] = args + for lang in mesonlib.stringlistify(kwargs['language']): + lang = lang.lower() + argsdict[lang] = argsdict.get(lang, []) + args def func_environment(self, node, args, kwargs): return EnvironmentVariablesHolder() diff --git a/test cases/common/123 subproject project arguments/exe.c b/test cases/common/123 subproject project arguments/exe.c index b04344adc..d6440f01c 100644 --- a/test cases/common/123 subproject project arguments/exe.c +++ b/test cases/common/123 subproject project arguments/exe.c @@ -18,6 +18,10 @@ #error #endif +#ifndef PROJECT_OPTION_C_CPP +#error +#endif + int main(int argc, char **argv) { return 0; } diff --git a/test cases/common/123 subproject project arguments/exe.cpp b/test cases/common/123 subproject project arguments/exe.cpp index 7ffe098b6..8471c6fec 100644 --- a/test cases/common/123 subproject project arguments/exe.cpp +++ b/test cases/common/123 subproject project arguments/exe.cpp @@ -18,6 +18,10 @@ #error #endif +#ifndef PROJECT_OPTION_C_CPP +#error +#endif + int main(int argc, char **argv) { return 0; } diff --git a/test cases/common/123 subproject project arguments/meson.build b/test cases/common/123 subproject project arguments/meson.build index aee803c0f..12a94972f 100644 --- a/test cases/common/123 subproject project arguments/meson.build +++ b/test cases/common/123 subproject project arguments/meson.build @@ -6,6 +6,7 @@ add_global_arguments('-DGLOBAL_ARGUMENT', language: 'c') add_project_arguments('-DPROJECT_OPTION', language: 'c') add_project_arguments('-DPROJECT_OPTION_1', language: 'c') add_project_arguments('-DPROJECT_OPTION_CPP', language: 'cpp') +add_project_arguments('-DPROJECT_OPTION_C_CPP', language: ['c', 'cpp']) sub = subproject('subexe', version : '1.0.0') e = executable('exe', 'exe.c') diff --git a/test cases/common/123 subproject project arguments/subprojects/subexe/subexe.c b/test cases/common/123 subproject project arguments/subprojects/subexe/subexe.c index 6ebd752a3..f748afc18 100644 --- a/test cases/common/123 subproject project arguments/subprojects/subexe/subexe.c +++ b/test cases/common/123 subproject project arguments/subprojects/subexe/subexe.c @@ -6,6 +6,10 @@ #error #endif +#ifdef PROJECT_OPTION_C_CPP +#error +#endif + #ifndef GLOBAL_ARGUMENT #error #endif diff --git a/test cases/common/23 global arg/meson.build b/test cases/common/23 global arg/meson.build index aec5c2d80..d7fd4286a 100644 --- a/test cases/common/23 global arg/meson.build +++ b/test cases/common/23 global arg/meson.build @@ -3,6 +3,8 @@ project('global arg test', 'cpp', 'c') add_global_arguments('-DMYTHING', language : 'c') add_global_arguments('-DMYCPPTHING', language : 'cpp') +add_global_arguments('-DMYCANDCPPTHING', language: ['c', 'cpp']) + exe1 = executable('prog', 'prog.c') exe2 = executable('prog2', 'prog.cc') diff --git a/test cases/common/23 global arg/prog.c b/test cases/common/23 global arg/prog.c index df9177739..ace5a0a5e 100644 --- a/test cases/common/23 global arg/prog.c +++ b/test cases/common/23 global arg/prog.c @@ -6,6 +6,10 @@ #error "Wrong global argument set" #endif +#ifndef MYCANDCPPTHING +#error "Global argument not set" +#endif + int main(int argc, char **argv) { return 0; } diff --git a/test cases/common/23 global arg/prog.cc b/test cases/common/23 global arg/prog.cc index 342fdd0cb..0ffd85e61 100644 --- a/test cases/common/23 global arg/prog.cc +++ b/test cases/common/23 global arg/prog.cc @@ -6,6 +6,10 @@ #error "Global argument not set" #endif +#ifndef MYCANDCPPTHING +#error "Global argument not set" +#endif + int main(int argc, char **argv) { return 0; }