| 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] |