aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2017-09-18 20:42:38 +0300
committerGitHub <noreply@github.com>2017-09-18 20:42:38 +0300
commit9c834a4ecddfa6ba38249be501d0ad1b481e48b1 (patch)
tree8ecd0894b4886fdf65b8e879f38e1254e25f27b9
parent02ad00b9826a037d87477af46dde07bfa26d0089 (diff)
parent56c566a38e37c5de12f3a5fa17184572c75fcfa0 (diff)
downloadmeson-9c834a4ecddfa6ba38249be501d0ad1b481e48b1.zip
meson-9c834a4ecddfa6ba38249be501d0ad1b481e48b1.tar.gz
meson-9c834a4ecddfa6ba38249be501d0ad1b481e48b1.tar.bz2
Merge pull request #2310 from hvenev/reconfigure-get_option
Fix get_option() for base options on reconfigure.
-rw-r--r--mesonbuild/interpreter.py9
-rwxr-xr-xrun_unittests.py5
-rw-r--r--test cases/common/47 options/meson.build1
-rw-r--r--test cases/unit/13 reconfigure/meson.build5
4 files changed, 18 insertions, 2 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 9a1bb84..fc0e4ee 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 6487496..2626931 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 4058748..2a764f0 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 0000000..102180e
--- /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