import sys import os from checksetup import * from commandwrapper import findExe def irWrapper(var, command): wrapper = os.path.join(IR_WRAPPER_DIR, 'bin', command) if not os.path.exists(wrapper): sys.exit('could not find ' + wrapper) return '-DCMAKE_' + var + '=' + wrapper commandline = [ findExe('cmake'), irWrapper('C_COMPILER', 'clang'), irWrapper('CXX_COMPILER', 'clang++'), irWrapper('LINKER', 'ld'), irWrapper('AR', 'ar'), irWrapper('RANLIB', 'ranlib') ] hasGenerator = any(elem.startswith('-G') for elem in sys.argv) if not hasGenerator: commandline.append('-GNinja') commandline.extend(sys.argv[1:]) # append all the user passed flags print("About to run:", quoteCommand(commandline)) os.environ[ENVVAR_NO_EMIT_IR] = '1' # no need for subprocess.call, just use execvpe os.execvpe(commandline[0], commandline, os.environ)
parser.add_argument('--link', required=False, default='', type=str, help='LINK wrapper script name (and parameters)') parser.add_argument('--ar', required=False, default='', type=str, help='AR wrapper script name (and parameters)') parser.add_argument('--ranlib', required=False, default='', type=str, help='RANLIB wrapper script name (and parameters)') parser.add_argument('--var', required=False, action='append', metavar=('VAR=VALUE'), help='override env var [VAR] with [VALUE]. Can be repeated multiple times') parser.add_argument('--cpp-linker', action='store_true', help='Use C++ compiler for linking') parser.add_argument('--install-bitcode', action='store_true', help='Install the bitcode files as well') parser.add_argument('--confirm', action='store_true', help='Confirm before running configure') parsedArgs, unknownArgs = parser.parse_known_args() makefile = parsedArgs.f print('Makefile is:', makefile) print(parsedArgs) commandline = [findExe('gmake'), '-f', makefile] # no need to add an override option for CC and CXX, this can be done via --env setIrWrapperVar('CC', 'clang') setIrWrapperVar('LTCC', 'clang') setIrWrapperVar('CXX', 'clang++') setIrWrapperVar('AR', parsedArgs.ar) setIrWrapperVar('RANLIB', parsedArgs.ranlib) if parsedArgs.cpp_linker: if parsedArgs.ld == 'clang': parsedArgs.ld = 'clang++' if parsedArgs.link == 'clang': parsedArgs.link = 'clang++' setIrWrapperVar('LD', parsedArgs.ld)