diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2021-02-16 18:56:01 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2021-02-16 18:56:01 +0200 |
commit | 04587bfaf1b3e098e2725d42ad1df15ffa79ea42 (patch) | |
tree | 4d3ebbb1fc689e954b527e65076e0908c9e5e329 | |
parent | 3ed30cea6ed754fa9f519f15d8e322b8fcc2126b (diff) | |
download | meson-regrfix.zip meson-regrfix.tar.gz meson-regrfix.tar.bz2 |
Non-working fix and test. Closes #8361.regrfix
-rw-r--r-- | mesonbuild/environment.py | 13 | ||||
-rwxr-xr-x | run_unittests.py | 8 | ||||
-rw-r--r-- | test cases/unit/90 multiple envvars/meson.build | 4 | ||||
-rw-r--r-- | test cases/unit/90 multiple envvars/prog.c | 18 | ||||
-rw-r--r-- | test cases/unit/90 multiple envvars/prog.cpp | 18 |
5 files changed, 59 insertions, 2 deletions
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py index b12728b..7bcdfea 100644 --- a/mesonbuild/environment.py +++ b/mesonbuild/environment.py @@ -823,11 +823,20 @@ class Environment: for lang in compilers.compilers.LANGUAGES_USING_CPPFLAGS: key = key.evolve(lang=lang) v = mesonlib.listify(self.options.get(key, [])) - self.options.setdefault(key, v + p_list) + if self.is_cross_build(): + # Only "build." options come from environment variables. + if key.machine is MachineChoice.BUILD: + self.options.setdefault(key, v + p_list) + else: + self.options[key] = v + p_list else: key = OptionKey.from_string(keyname).evolve(machine=for_machine) v = mesonlib.listify(self.options.get(key, [])) - self.options.setdefault(key, v + p_list) + if self.is_cross_build(): + if key.machine is MachineChoice.BUILD: + self.options.setdefault(key, v + p_list) + else: + self.options[key] = v + p_list def _set_default_binaries_from_env(self) -> None: """Set default binaries from the environment. diff --git a/run_unittests.py b/run_unittests.py index 8083342..b43bd99 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -5476,6 +5476,14 @@ class AllPlatformTests(BasePlatformTests): projinfo = self.introspect('--projectinfo') self.assertEqual(projinfo['version'], '1.0.0') + def test_cflags_cppflags(self): + envs = {'CPPFLAGS': '-DCPPFLAG', + 'CFLAGS': '-DCFLAG', + 'CXXFLAGS': '-DCXXFLAG'} + srcdir = os.path.join(self.unit_test_dir, '90 multiple envvars') + self.init(srcdir, override_envvars=envs) + self.build() + class FailureTests(BasePlatformTests): ''' diff --git a/test cases/unit/90 multiple envvars/meson.build b/test cases/unit/90 multiple envvars/meson.build new file mode 100644 index 0000000..ac57611 --- /dev/null +++ b/test cases/unit/90 multiple envvars/meson.build @@ -0,0 +1,4 @@ +project('multienv', 'c', 'cpp') + +executable('cexe', 'prog.c') +executable('cppexe', 'prog.cpp') diff --git a/test cases/unit/90 multiple envvars/prog.c b/test cases/unit/90 multiple envvars/prog.c new file mode 100644 index 0000000..38d3c12 --- /dev/null +++ b/test cases/unit/90 multiple envvars/prog.c @@ -0,0 +1,18 @@ +#include<stdio.h> + +#ifndef CPPFLAG +#error CPPFLAG not set +#endif + +#ifndef CFLAG +#error CFLAGS not set +#endif + +#ifdef CXXFLAG +#error CXXFLAG is set +#endif + +int main(int argc, char **argv) { + printf("%d %s\n", argc, argv[0]); + return 0; +} diff --git a/test cases/unit/90 multiple envvars/prog.cpp b/test cases/unit/90 multiple envvars/prog.cpp new file mode 100644 index 0000000..61ccf3a --- /dev/null +++ b/test cases/unit/90 multiple envvars/prog.cpp @@ -0,0 +1,18 @@ +#include<cstdio> + +#ifndef CPPFLAG +#error CPPFLAG not set +#endif + +#ifdef CFLAG +#error CFLAG is set +#endif + +#ifndef CXXFLAG +#error CXXFLAG not set +#endif + +int main(int argc, char **argv) { + printf("%d %s\n", argc, argv[0]); + return 0; +} |