Files
swift-mirror/benchmark/scripts/build_linux.py
Michael Gottesman 36e0e6949c [benchmark] Add cmake support for compiling the benchmarks standalone on Linux.
To use this, one needs to first build an installable root for swift (i.e. like
the smoke testbot does). Then use the tool ./benchmark/scripts/build_linux.py
with the appropriate locations of the build-directory, installable snapshot,
and it will build the benchmarks. (There are more arguments, just use --help).

rdar://40541972
2018-05-29 14:25:16 -07:00

48 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env python
import argparse
import os
import subprocess
def main():
p = argparse.ArgumentParser()
p.add_argument('cmake_path', help='The cmake binary to use')
p.add_argument('swift_src_dir', help='The swift source directory')
p.add_argument('clang', help='The path to the clang binary to use')
p.add_argument('swift_root_dir',
help='A path to a swift root produced by installing '
'Swift and Foundation together. We infer swiftc '
'from here')
p.add_argument('destdir', help='The directory to perform the actual '
'build in')
p.add_argument('--clean', action='store_true',
help='Delete destdir before performing a build.')
args = p.parse_args()
if args.clean:
print("Asked to clean... Cleaning!")
subprocess.check_output(['/bin/rm', '-rfv', args.destdir])
subprocess.check_call(['/bin/mkdir', '-p', args.destdir])
os.chdir(args.destdir)
configureInvocation = [
args.cmake_path, '-GNinja',
'-DSWIFT_EXEC={}/bin/swiftc'.format(args.swift_root_dir),
'-DCLANG_EXEC={}'.format(args.clang),
'-DSWIFT_LIBRARY_PATH={}/lib/swift'.format(args.swift_root_dir),
'{}/benchmark'.format(args.swift_src_dir)
]
print('COMMAND: {}'.format(' '.join(configureInvocation)))
subprocess.check_call(configureInvocation)
buildInvocation = [
args.cmake_path, '--build', args.destdir, '--',
'swift-benchmark-linux-x86_64'
]
print('COMMAND: {}'.format(' '.join(buildInvocation)))
subprocess.check_call(buildInvocation)
if __name__ == "__main__":
main()