| #!/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() |