blob: c9cbcf93d5a819a295fa0801f381ca76ffbeabaa [file] [log] [blame]
# SPDX-License-Identifier: Apache-2.0
"""Wrapper for rc.exe to make it output included files."""
from __future__ import annotations
import argparse
import subprocess
import shutil
import typing as T
parser = argparse.ArgumentParser()
parser.add_argument('--rc')
parser.add_argument('--cl')
def run(args: T.List[str]) -> int:
options, rc_args = parser.parse_known_args(args)
target = rc_args[-1] if rc_args else None
rc = options.rc if options.rc else shutil.which('rc.exe')
if rc is None:
print('rc.exe not found')
return 1
cl = options.cl if options.cl else shutil.which('cl.exe')
if cl is None:
print('cl.exe not found')
return 1
# Use preprocessor to display include files
include_args = [a for a in rc_args if a.startswith(('/I', '-I'))]
cmd = [cl, '/showIncludes', '/EP', '/nologo', '/DRC_INVOKED'] + include_args + ['/Tc' + target]
result = subprocess.call(cmd, stdout=subprocess.DEVNULL)
if result != 0:
print('Error running preprocessor to find resource dependencies')
# continue anyway. rc.exe should catch the error later
cmd = [rc] + rc_args
return subprocess.call(cmd)