scons_gd/scons/test/CC/CC-fixture/mycc.py
2022-10-15 16:06:26 +02:00

56 lines
1.5 KiB
Python

"""
Phony cc command for testing SCons.
Copies its source file to the target file, dropping lines that match
a pattern, so we can recognize the tool has made a modification.
Intended for use as the $CXX construction variable.
Note: mycc.py differs from the general fixture file mycompile.py
in arg handling: that one is intended for use as a *COM consvar,
where no compiler consvars will be passed on, this one is intended
for use as $CC, where arguments like -o come into play.
"""
import getopt
import sys
def fake_win32_cc():
args = sys.argv[1:]
inf = None
while args:
arg = args[0]
if arg == '-o':
out = args[1]
args = args[2:]
continue
args = args[1:]
if arg[0] not in '/-':
if not inf:
inf = arg
continue
if arg.startswith('/Fo'):
out = arg[3:]
with open(inf, 'rb') as infile, open(out, 'wb') as outfile:
for line in infile:
if not line.startswith(b'/*cc*/'):
outfile.write(line)
def fake_cc():
opts, args = getopt.getopt(sys.argv[1:], 'co:')
for opt, arg in opts:
if opt == '-o':
out = arg
with open(args[0], 'rb') as infile, open(out, 'wb') as outfile:
for line in infile:
if not line.startswith(b'/*cc*/'):
outfile.write(line)
if __name__ == '__main__':
print(f"DEBUG: {sys.argv[0]}: {sys.argv[1:]}")
if sys.platform == 'win32':
fake_win32_cc()
else:
fake_cc()
sys.exit(0)