aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Tools/c-analyzer/c_parser/preprocessor/common.py
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/c-analyzer/c_parser/preprocessor/common.py')
-rw-r--r--Tools/c-analyzer/c_parser/preprocessor/common.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/Tools/c-analyzer/c_parser/preprocessor/common.py b/Tools/c-analyzer/c_parser/preprocessor/common.py
index 63681025c63..4291a066337 100644
--- a/Tools/c-analyzer/c_parser/preprocessor/common.py
+++ b/Tools/c-analyzer/c_parser/preprocessor/common.py
@@ -44,7 +44,7 @@ def run_cmd(argv, *,
return proc.stdout
-def preprocess(tool, filename, **kwargs):
+def preprocess(tool, filename, cwd=None, **kwargs):
argv = _build_argv(tool, filename, **kwargs)
logger.debug(' '.join(shlex.quote(v) for v in argv))
@@ -59,19 +59,24 @@ def preprocess(tool, filename, **kwargs):
# distutil compiler object's preprocess() method, since that
# one writes to stdout/stderr and it's simpler to do it directly
# through subprocess.
- return run_cmd(argv)
+ return run_cmd(argv, cwd=cwd)
def _build_argv(
tool,
filename,
incldirs=None,
+ includes=None,
macros=None,
preargs=None,
postargs=None,
executable=None,
compiler=None,
):
+ if includes:
+ includes = tuple(f'-include{i}' for i in includes)
+ postargs = (includes + postargs) if postargs else includes
+
compiler = distutils.ccompiler.new_compiler(
compiler=compiler or tool,
)