aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2019-07-17 22:54:58 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2019-08-06 21:34:15 +0300
commit5fd4963766fe53d4a6db24a2cb7cb54e21600fe9 (patch)
tree08c48cdf5927bfdf12d3a00a07135a2a9ad44b07 /mesonbuild
parent534c95cc3eae86bb8e08bee5f5162ca65bc53461 (diff)
downloadmeson-5fd4963766fe53d4a6db24a2cb7cb54e21600fe9.zip
meson-5fd4963766fe53d4a6db24a2cb7cb54e21600fe9.tar.gz
meson-5fd4963766fe53d4a6db24a2cb7cb54e21600fe9.tar.bz2
Made build. options alias basic ones when native building.
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/coredata.py23
-rw-r--r--mesonbuild/interpreter.py2
2 files changed, 25 insertions, 0 deletions
diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py
index 2d3d5ab..48aeda8 100644
--- a/mesonbuild/coredata.py
+++ b/mesonbuild/coredata.py
@@ -635,7 +635,28 @@ class CoreData:
if type(oldval) != type(value):
self.user_options[name] = value
+ def is_cross_build(self):
+ return len(self.cross_files) > 0
+
+ def strip_build_option_names(self, options):
+ res = {}
+ for k, v in options.items():
+ if k.startswith('build.'):
+ k = k.split('.', 1)[1]
+ res[k] = v
+ return res
+
+ def copy_build_options_from_regular_ones(self):
+ assert(not self.is_cross_build())
+ for k, o in self.builtins_per_machine.host.items():
+ self.builtins_per_machine.build[k].set_value(o.value)
+ for k, o in self.compiler_options.host.items():
+ if k in self.compiler_options.build:
+ self.compiler_options.build[k].set_value(o.value)
+
def set_options(self, options, *, subproject='', warn_unknown=True):
+ if not self.is_cross_build():
+ options = self.strip_build_option_names(options)
# Set prefix first because it's needed to sanitize other options
prefix = self.builtins['prefix'].value
if 'prefix' in options:
@@ -663,6 +684,8 @@ class CoreData:
unknown_options = ', '.join(sorted(unknown_options))
sub = 'In subproject {}: '.format(subproject) if subproject else ''
mlog.warning('{}Unknown options: "{}"'.format(sub, unknown_options))
+ if not self.is_cross_build():
+ self.copy_build_options_from_regular_ones()
def set_default_options(self, default_options, subproject, env):
# Set defaults first from conf files (cross or native), then
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 03bbcc1..c6ad815 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -2795,6 +2795,8 @@ external dependencies (including libraries) must go to "dependencies".''')
def add_languages(self, args: Sequence[str], required: bool) -> bool:
success = self.add_languages_for(args, required, MachineChoice.BUILD)
success &= self.add_languages_for(args, required, MachineChoice.HOST)
+ if not self.coredata.is_cross_build():
+ self.coredata.copy_build_options_from_regular_ones()
return success
def add_languages_for(self, args, required, for_machine: MachineChoice):