from __future__ import absolute_import from __future__ import print_function # System modules import os import re GMODULES_SUPPORT_MAP = {} GMODULES_HELP_REGEX = re.compile(r"\s-gmodules\s") def is_compiler_clang_with_gmodules(compiler_path): # Before computing the result, check if we already have it cached. if compiler_path in GMODULES_SUPPORT_MAP: return GMODULES_SUPPORT_MAP[compiler_path] def _gmodules_supported_internal(): compiler = os.path.basename(compiler_path) if "clang" not in compiler: return False else: # Check the compiler help for the -gmodules option. clang_help = os.popen("%s --help" % compiler_path).read() return GMODULES_HELP_REGEX.search( clang_help, re.DOTALL) is not None GMODULES_SUPPORT_MAP[compiler_path] = _gmodules_supported_internal() return GMODULES_SUPPORT_MAP[compiler_path]