diff options
Diffstat (limited to 'packages/Python/lldbsuite/support/gmodules.py')
| -rw-r--r-- | packages/Python/lldbsuite/support/gmodules.py | 30 | 
1 files changed, 30 insertions, 0 deletions
| diff --git a/packages/Python/lldbsuite/support/gmodules.py b/packages/Python/lldbsuite/support/gmodules.py new file mode 100644 index 000000000000..4f2fd9643b14 --- /dev/null +++ b/packages/Python/lldbsuite/support/gmodules.py @@ -0,0 +1,30 @@ +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] + + | 
