diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2020-12-11 13:37:11 -0800 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2021-01-11 11:15:07 -0800 |
commit | 0076db6ff9309a34e2b86a6ae3fd85ff34b8f9f3 (patch) | |
tree | e3f544c4911ab7adb96b2f468a2ea19231e7d2e7 /mesonbuild/environment.py | |
parent | f3fcbba1f89f0b2a323dd596a3caf4fce5a1611e (diff) | |
download | meson-0076db6ff9309a34e2b86a6ae3fd85ff34b8f9f3.tar.gz |
move get_env_var_pair to environment
This is only used in environment, so it should live there too.
Diffstat (limited to 'mesonbuild/environment.py')
-rw-r--r-- | mesonbuild/environment.py | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py index ba24411eb..8ff9574db 100644 --- a/mesonbuild/environment.py +++ b/mesonbuild/environment.py @@ -23,15 +23,13 @@ from . import coredata from .linkers import ArLinker, ArmarLinker, VisualStudioLinker, DLinker, CcrxLinker, Xc16Linker, CompCertLinker, C2000Linker, IntelVisualStudioLinker, AIXArLinker from . import mesonlib from .mesonlib import ( - MesonException, EnvironmentException, MachineChoice, Popen_safe, + MesonException, EnvironmentException, MachineChoice, Popen_safe, PerMachine, PerMachineDefaultable, PerThreeMachineDefaultable, split_args, quote_arg, OptionKey ) from . import mlog from .envconfig import ( - BinaryTable, ENV_VAR_PROG_MAP, MachineInfo, - Properties, known_cpu_families, get_env_var_pair, - CMakeVariables, + BinaryTable, MachineInfo, Properties, known_cpu_families, CMakeVariables, ) from . import compilers from .compilers import ( @@ -143,6 +141,34 @@ CompilersDict = T.Dict[str, Compiler] if T.TYPE_CHECKING: import argparse + +def get_env_var_pair(for_machine: MachineChoice, + is_cross: bool, + var_name: str) -> T.Optional[T.Tuple[str, str]]: + """ + Returns the exact env var and the value. + """ + candidates = PerMachine( + # The prefixed build version takes priority, but if we are native + # compiling we fall back on the unprefixed host version. This + # allows native builds to never need to worry about the 'BUILD_*' + # ones. + ([var_name + '_FOR_BUILD'] if is_cross else [var_name]), + # Always just the unprefixed host verions + [var_name] + )[for_machine] + for var in candidates: + value = os.environ.get(var) + if value is not None: + break + else: + formatted = ', '.join(['{!r}'.format(var) for var in candidates]) + mlog.debug('None of {} are defined in the environment, not changing global flags.'.format(formatted)) + return None + mlog.debug('Using {!r} from environment with value: {!r}'.format(var, value)) + return var, value + + def detect_gcovr(min_version='3.3', new_rootdir_version='4.2', log=False): gcovr_exe = 'gcovr' try: |