Files
swift-mirror/benchmark/scripts/build_script_helper.py
Michael Gottesman 53ff97428a [benchmarks] Change the build_script_helper to use subdirectories for each build and install final binaries in a toplevel ./bin build directory.
This will let me:

1. Add -Osize support easily.
2. Put all of the binaries in the same directory so that Benchmark_Driver can
   work with them via the -tools argument.
2019-04-10 22:18:50 -07:00

57 lines
1.8 KiB
Python
Executable File

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