summaryrefslogtreecommitdiff
path: root/mesonbuild/compilers/compilers.py
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2025-11-08 16:37:19 +0100
committerDylan Baker <dylan@pnwbakers.com>2025-11-12 14:56:22 -0800
commit572c6986b886bec90ce21adde9d15d4b12a22909 (patch)
treebbdf6bdd54671e8d64e7334d6f341dd1a6f2ab2d /mesonbuild/compilers/compilers.py
parent351eda4dbb2eb630d20e63ed58452df559817b3c (diff)
downloadmeson-572c6986b886bec90ce21adde9d15d4b12a22909.tar.gz
compilers: generalize -fembed-bitcode
Produce -Cembed-bitcode for Rust, and also disable bitcode generation when LTO is not enabled.
Diffstat (limited to 'mesonbuild/compilers/compilers.py')
-rw-r--r--mesonbuild/compilers/compilers.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py
index bd283ed32..8ee2c1b24 100644
--- a/mesonbuild/compilers/compilers.py
+++ b/mesonbuild/compilers/compilers.py
@@ -273,6 +273,7 @@ def are_asserts_disabled_for_subproject(subproject: str, env: 'Environment') ->
def get_base_compile_args(target: 'BuildTarget', compiler: 'Compiler', env: 'Environment') -> T.List[str]:
args: T.List[str] = []
+ lto = False
try:
if env.coredata.get_option_for_target(target, 'b_lto'):
num_threads = get_option_value_for_target(env, target, OptionKey('b_lto_threads'), 0)
@@ -280,6 +281,7 @@ def get_base_compile_args(target: 'BuildTarget', compiler: 'Compiler', env: 'Env
args.extend(compiler.get_lto_compile_args(
threads=num_threads,
mode=ltomode))
+ lto = True
except (KeyError, AttributeError):
pass
try:
@@ -320,8 +322,8 @@ def get_base_compile_args(target: 'BuildTarget', compiler: 'Compiler', env: 'Env
except KeyError:
pass
# This does not need a try...except
- if option_enabled(compiler.base_options, target, env, 'b_bitcode'):
- args.append('-fembed-bitcode')
+ bitcode = option_enabled(compiler.base_options, target, env, 'b_bitcode')
+ args.extend(compiler.get_embed_bitcode_args(bitcode, lto))
try:
crt_val = env.coredata.get_option_for_target(target, 'b_vscrt')
assert isinstance(crt_val, str)
@@ -1035,6 +1037,9 @@ class Compiler(HoldableObject, metaclass=abc.ABCMeta):
ret.append(arg)
return ret
+ def get_embed_bitcode_args(self, bitcode: bool, lto: bool) -> T.List[str]:
+ return []
+
def get_lto_compile_args(self, *, threads: int = 0, mode: str = 'default') -> T.List[str]:
return []