diff options
-rw-r--r-- | mesonbuild/interpreter.py | 12 | ||||
-rwxr-xr-x | run_unittests.py | 8 |
2 files changed, 17 insertions, 3 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 26405e2..cd608db 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -2494,7 +2494,13 @@ to directly access options of other subprojects.''') self.add_base_options(comp) return success + def emit_base_options_warnings(self, enabled_opts): + if 'b_bitcode' in enabled_opts: + mlog.warning('Base option \'b_bitcode\' is enabled, which is incompatible with many linker options. Incompatible options such as such as \'b_asneeded\' have been disabled.') + mlog.warning('Please see https://mesonbuild.com/Builtin-options.html#Notes_about_Apple_Bitcode_support for more details.') + def add_base_options(self, compiler): + enabled_opts = [] proj_opt = self.environment.cmd_line_options.projectoptions for optname in compiler.base_options: if optname in self.coredata.base_options: @@ -2502,9 +2508,13 @@ to directly access options of other subprojects.''') oobj = compilers.base_options[optname] for po in proj_opt: if po.startswith(optname + '='): - oobj.set_value(po.split('=', 1)[1]) + opt, value = po.split('=', 1) + oobj.set_value(value) + if oobj.value: + enabled_opts.append(opt) break self.coredata.base_options[optname] = oobj + self.emit_base_options_warnings(enabled_opts) def program_from_cross_file(self, prognames, silent=False): bins = self.environment.cross_info.config['binaries'] diff --git a/run_unittests.py b/run_unittests.py index ca8bc62..1400db7 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -3224,13 +3224,17 @@ endian = 'little' to inspect the compiler database. ''' if not is_osx(): - raise unittest.SkipTest('Apple bitcode not relevant') + raise unittest.SkipTest('Apple bitcode only works on macOS') testdir = os.path.join(self.common_test_dir, '4 shared') # Try with bitcode enabled - self.init(testdir, extra_args='-Db_bitcode=true') + out = self.init(testdir, extra_args='-Db_bitcode=true') + # Warning was printed + self.assertRegex(out, 'WARNING:.*b_bitcode') + # Compiler options were added compdb = self.get_compdb() self.assertIn('-fembed-bitcode', compdb[0]['command']) build_ninja = os.path.join(self.builddir, 'build.ninja') + # Linker options were added with open(build_ninja, 'r', encoding='utf-8') as f: contents = f.read() m = re.search('LINK_ARGS =.*-bitcode_bundle', contents) |