From db1910d81e450d933883a2a55184a9f053997153 Mon Sep 17 00:00:00 2001 From: Joshua Peisach Date: Fri, 8 Sep 2023 17:07:44 -0400 Subject: [PATCH] tools/makectx: Use subprocess to direct output file This way it will appear in 'ctx.h' and not (blah). Also update the .gitignore for *.obj files, which interestingly the preprocessor spat out after testing locally. --- .gitignore | 4 ++++ tools/makectx.py | 26 ++++++++++++++++++++------ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 635e1743..83eb8502 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,8 @@ ISLE.EXE LEGO1.DLL build/ *.swp + +# Stuff generated by the preprocessor and/or tools/makectx.py *.i +*.obj +ctx.h \ No newline at end of file diff --git a/tools/makectx.py b/tools/makectx.py index 66a5bf78..29dec232 100644 --- a/tools/makectx.py +++ b/tools/makectx.py @@ -1,15 +1,29 @@ #!/usr/bin/python3 import argparse import os +import subprocess -parser = argparse.ArgumentParser(allow_abbrev=False, - description='Verify Exports: Compare the exports of two DLLs.') -parser.add_argument('cppfile', metavar='cppfile', help='Path to the C++ File to preprocess.') +parser = argparse.ArgumentParser( + allow_abbrev=False, description="Verify Exports: Compare the exports of two DLLs." +) +parser.add_argument( + "cppfile", metavar="cppfile", help="Path to the C++ File to preprocess." +) +parser.add_argument( + "--debug", + action="store_true", + help="Print debug information by showing the output from the preprocessor. THIS WILL TAKE A LONG TIME AS YOUR TERMINAL TRIES TO LOAD OVER 100K LINES OF TEXT. Use this if your context contains an error or is empty.", +) args = parser.parse_args() if not os.path.isfile(args.cppfile): - parser.error('Specified C++ file does not exist.') + parser.error("Specified C++ file does not exist.") -os.system('cl.exe /EP /P ' + args.cppfile) +output = subprocess.run( + "cl.exe /EP " + args.cppfile, capture_output=not args.debug, text=True +) -print('Preprocessed file. It will be in the directory you executed in this command as "(filename).i".') \ No newline at end of file +f = open("ctx.h", "w") +f.write(output.stdout) + +print("Preprocessed file to ctx.h")