blob: 0c27ec2aeb6c63f4adfa6c8ba7ecae086bb4d997 [file] [log] [blame]
#!/usr/bin/python2.7
import os
import subprocess
import sys
ninja = sys.argv[1]
def call(cmd):
subprocess.check_call(cmd, shell=True)
def append(path, line):
with open(path, 'a') as f:
print >>f, line
print "Hello from {platform} in {cwd}!".format(platform=sys.platform,
cwd=os.getcwd())
if 'darwin' in sys.platform:
# Get Xcode from CIPD using mac_toolchain tool.
mac_toolchain = os.path.join(os.getcwd(), sys.argv[3])
xcode_app_path = os.path.join(os.getcwd(), sys.argv[4])
# See mapping of Xcode version to Xcode build version here:
# https://chromium.googlesource.com/chromium/tools/build/+/master/scripts/slave/recipe_modules/ios/api.py#37
XCODE_BUILD_VERSION = '9c40b'
call(('{mac_toolchain}/mac_toolchain install '
'-kind mac '
'-xcode-version {xcode_build_version} '
'-output-dir {xcode_app_path}').format(
mac_toolchain=mac_toolchain,
xcode_build_version=XCODE_BUILD_VERSION,
xcode_app_path=xcode_app_path))
call('sudo xcode-select -switch {xcode_app_path}'.format(
xcode_app_path=xcode_app_path))
# Our Mac bot toolchains are too old for LSAN.
append('skcms/build/clang.lsan', 'disabled = true')
call('{ninja}/ninja -C skcms -k 0'.format(ninja=ninja))
elif 'linux' in sys.platform:
# Point to clang in our clang_linux package.
clang_linux = os.path.realpath(sys.argv[3])
append('skcms/build/clang', 'cc = {}/bin/clang '.format(clang_linux))
append('skcms/build/clang', 'cxx = {}/bin/clang++'.format(clang_linux))
# Get an Emscripten environment all set up.
call('git clone https://github.com/emscripten-core/emsdk.git')
os.chdir('emsdk')
call('./emsdk install 1.39.4')
os.chdir('..')
emscripten_sdk = os.path.realpath('emsdk')
node = emscripten_sdk + '/node/12.9.1_64bit/bin/node'
em_config = os.path.realpath(os.path.join('.', 'em_config'))
with open(em_config, 'w') as f:
print >>f, '''
LLVM_ROOT = '{}/upstream/bin'
BINARYEN_ROOT = '{}/upstream'
EMSCRIPTEN_ROOT = '{}/upstream/emscripten'
NODE_JS = '{}'
COMPILER_ENGINE = NODE_JS
JS_ENGINES = [NODE_JS]
'''.format(emscripten_sdk, emscripten_sdk, emscripten_sdk, node)
append('skcms/build/emscripten',
'cc = env EM_CONFIG={} {}/upstream/emscripten/emcc'.format(
em_config, emscripten_sdk))
append('skcms/build/emscripten',
'cxx = env EM_CONFIG={} {}/upstream/emscripten/em++'.format(
em_config, emscripten_sdk))
append('skcms/build/emscripten',
'node = {}'.format(node))
call('{ninja}/ninja -C skcms -k 0'.format(ninja=ninja))
else: # Windows
win_toolchain = os.path.realpath(sys.argv[2])
msvc = win_toolchain + '\\VC\\Tools\\MSVC\\14.24.28314\\'
sdk = win_toolchain + '\\win_sdk\\'
os.environ['PATH'] = msvc + 'bin\\HostX64\\x64;' + os.environ['PATH']
os.environ['INCLUDE'] = msvc + 'include;'
os.environ['INCLUDE'] += sdk + 'Include\\10.0.17763.0\\shared;'
os.environ['INCLUDE'] += sdk + 'Include\\10.0.17763.0\\ucrt;'
os.environ['INCLUDE'] += sdk + 'Include\\10.0.17763.0\\um;'
os.environ['LIB'] = msvc + 'lib\\x64;'
os.environ['LIB'] += sdk + 'Lib\\10.0.17763.0\\um\\x64;'
os.environ['LIB'] += sdk + 'Lib\\10.0.17763.0\\ucrt\\x64;'
call('{ninja}\\ninja.exe -C skcms -f msvs.ninja -k 0'.format(ninja=ninja))