diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2018-03-10 18:25:03 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-10 18:25:03 +0200 |
commit | 407b6dfc2934a0d70b45d682df8f2ccfd05ac6d2 (patch) | |
tree | 182f9f2fd1a5a48155ddba0f664708f7569d62fa | |
parent | 8ca2cf03a5529281c02a888775b03ccc5524a4d8 (diff) | |
parent | 8789278e5e700203a3b5fcf2c89fa5482e6ec5ee (diff) | |
download | meson-407b6dfc2934a0d70b45d682df8f2ccfd05ac6d2.zip meson-407b6dfc2934a0d70b45d682df8f2ccfd05ac6d2.tar.gz meson-407b6dfc2934a0d70b45d682df8f2ccfd05ac6d2.tar.bz2 |
Merge pull request #3203 from jukkalaurila/bug3185
Fix bug 3185, "Setting -Dc_args=... option and some others during initial run fails silently'
-rw-r--r-- | mesonbuild/interpreter.py | 13 | ||||
-rw-r--r-- | test cases/common/181 initial c_args/meson.build | 7 | ||||
-rw-r--r-- | test cases/common/181 initial c_args/test_args.txt | 4 |
3 files changed, 24 insertions, 0 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index c6503ed..1819db4 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -2104,6 +2104,19 @@ to directly access options of other subprojects.''') else: version_string = ' (%s %s)' % (comp.id, comp.version) 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. + 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) + 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. if not comp.get_language() in self.coredata.external_args: (preproc_args, compile_args, link_args) = environment.get_args_from_envvars(comp) self.coredata.external_preprocess_args[comp.get_language()] = preproc_args diff --git a/test cases/common/181 initial c_args/meson.build b/test cases/common/181 initial c_args/meson.build new file mode 100644 index 0000000..70a6e7a --- /dev/null +++ b/test cases/common/181 initial c_args/meson.build @@ -0,0 +1,7 @@ +project('options', 'c') + +# Test passing c_args and c_link_args options from the command line. +assert(get_option('c_args') == ['-march=native', '-funroll-loops'], + 'Incorrect value for c_args option.') +assert(get_option('c_link_args') == ['-random_linker_option'], + 'Incorrect value for c_link_args option.') diff --git a/test cases/common/181 initial c_args/test_args.txt b/test cases/common/181 initial c_args/test_args.txt new file mode 100644 index 0000000..9a6da06 --- /dev/null +++ b/test cases/common/181 initial c_args/test_args.txt @@ -0,0 +1,4 @@ +# This file is not read by meson itself, but by the test framework. +# It is not possible to pass arguments to meson from a file. +['-Dc_args=-march=native', '-Dc_args=-funroll-loops', + '-Dc_link_args=-random_linker_option'] |