aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/environment.py
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2020-12-11 13:37:11 -0800
committerDylan Baker <dylan@pnwbakers.com>2021-01-11 11:15:07 -0800
commit0076db6ff9309a34e2b86a6ae3fd85ff34b8f9f3 (patch)
treee3f544c4911ab7adb96b2f468a2ea19231e7d2e7 /mesonbuild/environment.py
parentf3fcbba1f89f0b2a323dd596a3caf4fce5a1611e (diff)
downloadmeson-0076db6ff9309a34e2b86a6ae3fd85ff34b8f9f3.zip
meson-0076db6ff9309a34e2b86a6ae3fd85ff34b8f9f3.tar.gz
meson-0076db6ff9309a34e2b86a6ae3fd85ff34b8f9f3.tar.bz2
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.py34
1 files changed, 30 insertions, 4 deletions
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
index ba24411..8ff9574 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: