From f99ed692c4f10595ccb68407ca618e007125b853 Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Tue, 30 Mar 2021 10:22:33 -0700 Subject: environment: get environment variables for both host and build machines Fixes #8605 --- mesonbuild/compilers/compilers.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'mesonbuild/compilers') diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py index b06f6a5d8..9b4418b54 100644 --- a/mesonbuild/compilers/compilers.py +++ b/mesonbuild/compilers/compilers.py @@ -1236,19 +1236,26 @@ def get_global_options(lang: str, largkey = argkey.evolve('link_args') envkey = argkey.evolve('env_args') + comp_key = argkey if argkey in env.options else envkey + + comp_options = env.options.get(comp_key, []) + link_options = env.options.get(largkey, []) + cargs = coredata.UserArrayOption( description + ' compiler', - env.options.get(argkey, []), split_args=True, user_input=True, allow_dups=True) - # the compiler args always gets the environemtn variable arguments - cargs.extend_value(env.options.get(envkey, [])) + comp_options, split_args=True, user_input=True, allow_dups=True) largs = coredata.UserArrayOption( description + ' linker', - env.options.get(largkey, []), split_args=True, user_input=True, allow_dups=True) - # The linker gets the compiler environment variable only if the comiler - # acts as the linker - if comp.INVOKES_LINKER: - largs.extend_value(env.options.get(envkey, [])) + link_options, split_args=True, user_input=True, allow_dups=True) + + if comp.INVOKES_LINKER and comp_key == envkey: + # If the compiler acts as a linker driver, and we're using the + # environment variable flags for both the compiler and linker + # arguments, then put the compiler flags in the linker flags as well. + # This is how autotools works, and the env vars freature is for + # autotools compatibility. + largs.extend_value(comp_options) opts: 'KeyedOptionDictType' = {argkey: cargs, largkey: largs} -- cgit v1.2.3