blob: 1cd61ce4212bdd63a90900279b4def02beb16714 [file] [log] [blame]
#!/usr/bin/env python
from __future__ import print_function
import argparse
import os
import shutil
import subprocess
def perform_build(args, swiftbuild_path, config, binary_name, opt_flag):
assert(config in ['debug', 'release'])
assert(binary_name in ['Benchmark_O', 'Benchmark_Onone'])
assert(opt_flag in ['-O', '-Onone'])
inner_build_dir = os.path.join(args.build_path, binary_name)
swiftbuild_args = [
swiftbuild_path,
'--package-path', args.package_path,
'--build-path', inner_build_dir,
'--configuration', config,
'-Xswiftc', '-Xllvm',
'-Xswiftc', '-align-module-to-page-size',
'-Xswiftc', opt_flag,
]
if args.verbose:
swiftbuild_args.append('--verbose')
subprocess.call(swiftbuild_args)
# Copy the benchmark file into the final ./bin directory.
binpath = os.path.join(inner_build_dir, config, 'SwiftBench')
finalpath = os.path.join(args.build_path, 'bin', binary_name)
shutil.copy(binpath, finalpath)
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--verbose', '-v', action='store_true')
parser.add_argument('--package-path', type=str, required=True)
parser.add_argument('--build-path', type=str, required=True)
parser.add_argument('--toolchain', type=str, required=True)
args = parser.parse_args()
# Create our bin directory so we can copy in the binaries.
bin_dir = os.path.join(args.build_path, 'bin')
if not os.path.isdir(bin_dir):
os.makedirs(bin_dir)
swiftbuild_path = os.path.join(args.toolchain, 'usr', 'bin', 'swift-build')
perform_build(args, swiftbuild_path, 'debug', 'Benchmark_Onone', '-Onone')
perform_build(args, swiftbuild_path, 'release', 'Benchmark_O', '-O')
if __name__ == "__main__":
main()