diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 9a1bb8410..fc0e4eef0 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -1698,11 +1698,11 @@ class Interpreter(InterpreterBase): raise InterpreterException('Argument required for get_option.') optname = args[0] try: - return compilers.base_options[optname].value + return self.environment.get_coredata().base_options[optname].value except KeyError: pass try: - return self.environment.get_coredata().get_builtin_option(optname) + return self.environment.coredata.get_builtin_option(optname) except RuntimeError: pass try: @@ -1727,6 +1727,11 @@ class Interpreter(InterpreterBase): return self.coredata.external_args[lang] except KeyError: pass + # Some base options are not defined in some environments, return the default value. + try: + return compilers.base_options[optname].value + except KeyError: + pass raise InterpreterException('Tried to access unknown option "%s".' % optname) @noKwargs diff --git a/run_unittests.py b/run_unittests.py index 64874968f..262693118 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -1948,6 +1948,11 @@ endian = 'little' crossfile.flush() self.init(testdir, ['--cross-file='+crossfile.name]) + def test_reconfigure(self): + testdir = os.path.join(self.unit_test_dir, '13 reconfigure') + self.init(testdir, ['-Db_lto=true'], default_args=False) + self.build('reconfigure') + class LinuxArmCrossCompileTests(BasePlatformTests): ''' diff --git a/test cases/common/47 options/meson.build b/test cases/common/47 options/meson.build index 4058748f0..2a764f036 100644 --- a/test cases/common/47 options/meson.build +++ b/test cases/common/47 options/meson.build @@ -12,6 +12,7 @@ if get_option('combo_opt') != 'combo' error('Incorrect value to combo option.') endif +# If the default changes, update test cases/unit/13 reconfigure if get_option('b_lto') != false error('Incorrect value in base option.') endif diff --git a/test cases/unit/13 reconfigure/meson.build b/test cases/unit/13 reconfigure/meson.build new file mode 100644 index 000000000..102180e54 --- /dev/null +++ b/test cases/unit/13 reconfigure/meson.build @@ -0,0 +1,5 @@ +project('reconfigure test', ['c']) + +if get_option('b_lto') != true + error('b_lto not set') +endif