diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2018-04-30 13:53:40 -0400 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2018-05-01 12:09:45 +0000 |
commit | 24f1b96dde9a0faf961a421f63212d5245de12c0 (patch) | |
tree | e993a0b465610fd56752e3442a0dc53508c80dc2 /mesonbuild/interpreter.py | |
parent | 4f4cdee6876148b14a430e5886fec45299bb0573 (diff) | |
download | meson-24f1b96dde9a0faf961a421f63212d5245de12c0.zip meson-24f1b96dde9a0faf961a421f63212d5245de12c0.tar.gz meson-24f1b96dde9a0faf961a421f63212d5245de12c0.tar.bz2 |
Fix setting c_args and friends from command line
When passing more than one -Dc_args it should override the value
instead of appending. This is how all other options works.
Value should be split on spaces using shlex just like it does with
CFLAGS environment variable.
Fixes #3473.
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r-- | mesonbuild/interpreter.py | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index c948778..24f53e2 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -2386,24 +2386,21 @@ to directly access options of other subprojects.''') mlog.log('Native %s compiler: ' % comp.get_display_language(), mlog.bold(' '.join(comp.get_exelist())), version_string, sep='') # If <language>_args/_link_args settings are given on the - # command line, use them. + # command line, use them, otherwise take them from env. + (preproc_args, compile_args, link_args) = environment.get_args_from_envvars(comp) for optspec in self.build.environment.cmd_line_options.projectoptions: (optname, optvalue) = optspec.split('=', maxsplit=1) - if optname.endswith('_link_args'): - lang = optname[:-10] - self.coredata.external_link_args.setdefault(lang, []).append(optvalue) + if optname == lang + '_link_args': + link_args = shlex.split(optvalue) elif optname.endswith('_args'): - lang = optname[:-5] - self.coredata.external_args.setdefault(lang, []).append(optvalue) - # Otherwise, look for definitions from environment - # variables such as CFLAGS. - (preproc_args, compile_args, link_args) = environment.get_args_from_envvars(comp) - if not comp.get_language() in self.coredata.external_preprocess_args: - self.coredata.external_preprocess_args[comp.get_language()] = preproc_args - if not comp.get_language() in self.coredata.external_args: - self.coredata.external_args[comp.get_language()] = compile_args - if not comp.get_language() in self.coredata.external_link_args: - self.coredata.external_link_args[comp.get_language()] = link_args + compile_args = shlex.split(optvalue) + if lang not in self.coredata.external_preprocess_args: + self.coredata.external_preprocess_args[lang] = preproc_args + if lang not in self.coredata.external_args: + self.coredata.external_args[lang] = compile_args + if lang not in self.coredata.external_link_args: + self.coredata.external_link_args[lang] = link_args + self.build.add_compiler(comp) if need_cross_compiler: mlog.log('Cross %s compiler: ' % cross_comp.get_display_language(), mlog.bold(' '.join(cross_comp.get_exelist())), ' (%s %s)' % (cross_comp.id, cross_comp.version), sep='') |