diff --git a/libcxx/utils/compile_only.py b/libcxx/utils/compile_only.py new file mode 100755 --- /dev/null +++ b/libcxx/utils/compile_only.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python3 +#===----------------------------------------------------------------------===## +# +# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +# See https://llvm.org/LICENSE.txt for license information. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +# +#===----------------------------------------------------------------------===## + +"""compile_only.py is a utility for simulating running of a program.""" + +import argparse +import subprocess +import sys + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('--execdir', type=str, required=True) + parser.add_argument('--codesign_identity', type=str, required=False, default=None) + parser.add_argument('--env', type=str, nargs='*', required=False, default=dict()) + (args, remaining) = parser.parse_known_args(sys.argv[1:]) + + if len(remaining) < 2: + sys.stderr.write('Missing actual commands to run') + exit(1) + commandLine = remaining[1:] # Skip the '--' + + # Do any necessary codesigning. + if args.codesign_identity: + exe = commandLine[0] + rc = subprocess.call(['xcrun', 'codesign', '-f', '-s', args.codesign_identity, exe], env={}) + if rc != 0: + sys.stderr.write('Failed to codesign: ' + exe) + return rc + + # Extract environment variables into a dictionary + env = {k : v for (k, v) in map(lambda s: s.split('=', 1), args.env)} + # Run the command line with the given environment in the execution directory. + print("Would have run", subprocess.list2cmdline(commandLine), "in", args.execdir, "with env=", env) + + +if __name__ == '__main__': + exit(main())