From ba54193d9bf90a48b5cb793493d421b8df7fec6e Mon Sep 17 00:00:00 2001 From: Meagan Lang Date: Wed, 22 May 2024 20:46:30 -0400 Subject: [PATCH] Handle case where env variable empty for make get_language_for_buildfile Add missing aliases for gnu-ld linker --- yggdrasil/drivers/CModelDriver.py | 2 +- yggdrasil/drivers/CPPModelDriver.py | 4 ++-- yggdrasil/drivers/CompiledModelDriver.py | 4 ++++ yggdrasil/drivers/MakeModelDriver.py | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/yggdrasil/drivers/CModelDriver.py b/yggdrasil/drivers/CModelDriver.py index 642cf5068..8426b02de 100755 --- a/yggdrasil/drivers/CModelDriver.py +++ b/yggdrasil/drivers/CModelDriver.py @@ -238,7 +238,7 @@ class LDLinker(LinkerBase): class GCCLinker(LDLinker): r"""Interface class for gcc linker (calls to ld).""" toolname = GCCCompiler.toolname - aliases = GCCCompiler.aliases + aliases = GCCCompiler.aliases + ['gnu-ld'] languages = GCCCompiler.languages platforms = GCCCompiler.platforms default_executable = GCCCompiler.default_executable diff --git a/yggdrasil/drivers/CPPModelDriver.py b/yggdrasil/drivers/CPPModelDriver.py index 65ffbf406..1f6a809c8 100644 --- a/yggdrasil/drivers/CPPModelDriver.py +++ b/yggdrasil/drivers/CPPModelDriver.py @@ -56,7 +56,7 @@ def handle_standard_flag(cls, flags, skip_standard_flag=False): class GPPCompiler(CPPCompilerBase, GCCCompiler): r"""Interface class for G++ compiler/linker.""" toolname = 'g++' - aliases = ['gnu-c++'] + aliases = ['gnu-c++', 'gnu-g++'] default_linker = 'g++' standard_library = 'stdc++' libraries = {} @@ -163,7 +163,7 @@ def before_registration(cls): class GPPLinker(GCCLinker): r"""Interface class for clang++ linker (calls to ld).""" toolname = GPPCompiler.toolname - aliases = GPPCompiler.aliases + aliases = GPPCompiler.aliases + ['gnu-ld'] languages = GPPCompiler.languages default_executable = GPPCompiler.default_executable toolset = GPPCompiler.toolset diff --git a/yggdrasil/drivers/CompiledModelDriver.py b/yggdrasil/drivers/CompiledModelDriver.py index 702cf9057..5d8698a59 100644 --- a/yggdrasil/drivers/CompiledModelDriver.py +++ b/yggdrasil/drivers/CompiledModelDriver.py @@ -4482,6 +4482,10 @@ def env_matches_tool(cls, use_sysconfig=False, env=None, if not with_flags: envi_full = envi_full.split(maxsplit=1)[0] return envi_full + logger.info(f"{cls.tooltype.title()} {cls.toolname} does not " + f"match environment:" + f"\n\ttool_base = {tool_base}" + f"\n\tenvi_base = {envi_base}") return out @classmethod diff --git a/yggdrasil/drivers/MakeModelDriver.py b/yggdrasil/drivers/MakeModelDriver.py index 7ea3150de..8796ed5e7 100644 --- a/yggdrasil/drivers/MakeModelDriver.py +++ b/yggdrasil/drivers/MakeModelDriver.py @@ -134,7 +134,7 @@ def get_language_for_buildfile(cls, buildfile, target=None): lines = fd.read() ext_present = [] for lang, info in constants.COMPILER_ENV_VARS.items(): - if info['exec'] in lines: + if info['exec'] and info['exec'] in lines: ext_present.append(lang) if ('c' in ext_present) and ('c++' in ext_present): # pragma: debug ext_present.remove('c')