コード例 #1
0
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)
コード例 #2
0
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)