#!/usr/bin/env python3 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()