|  | #!/usr/bin/env python2 | 
|  |  | 
|  | import argparse | 
|  | import os | 
|  | import sys | 
|  |  | 
|  | import szbuild | 
|  |  | 
|  | from utils import FindBaseNaCl, shellcmd | 
|  |  | 
|  | def main(): | 
|  | """Build native gcc-style executables for one or all Spec2K components. | 
|  |  | 
|  | Afterwards, the executables can be run from the | 
|  | native_client/tests/spec2k/ directory as: | 
|  | './run_all.sh RunBenchmarks SetupGccX8632Opt {train|ref} ...' | 
|  | -- or -- | 
|  | './run_all.sh RunBenchmarks SetupPnaclX8632Opt {train|ref} ...' | 
|  | -- or -- | 
|  | './run_all.sh RunBenchmarks SetupNonsfiX8632Opt {train|ref} ...' | 
|  | """ | 
|  | nacl_root = FindBaseNaCl() | 
|  | # Use the same default ordering as spec2k/run_all.sh. | 
|  | components = [ '177.mesa', '179.art', '183.equake', '188.ammp', '164.gzip', | 
|  | '175.vpr', '176.gcc', '181.mcf', '186.crafty', '197.parser', | 
|  | '253.perlbmk', '254.gap', '255.vortex', '256.bzip2', | 
|  | '300.twolf', '252.eon' ] | 
|  |  | 
|  | argparser = argparse.ArgumentParser(description=main.__doc__) | 
|  | szbuild.AddOptionalArgs(argparser) | 
|  | argparser.add_argument('--run', dest='run', action='store_true', | 
|  | help='Run after building') | 
|  | argparser.add_argument('comps', nargs='*', default=components) | 
|  | args = argparser.parse_args() | 
|  | bad = set(args.comps) - set(components) | 
|  | if bad: | 
|  | print 'Unknown component{s}: '.format(s='s' if len(bad) > 1 else '') + \ | 
|  | ' '.join(x for x in bad) | 
|  | sys.exit(1) | 
|  |  | 
|  | # Fix up Subzero target strings for the run_all.sh script. | 
|  | target_map = { | 
|  | 'arm32':'arm', | 
|  | 'x8632':'x8632', | 
|  | 'x8664':'x8664' | 
|  | } | 
|  | run_all_target = target_map[args.target] # fail if target not listed above | 
|  |  | 
|  | suffix = ( | 
|  | 'pnacl.opt.{target}' if args.sandbox else | 
|  | 'nonsfi.opt.{target}' if args.nonsfi else | 
|  | 'gcc.opt.{target}').format( | 
|  | target=run_all_target); | 
|  | for comp in args.comps: | 
|  | name = os.path.splitext(comp)[1] or comp | 
|  | if name[0] == '.': | 
|  | name = name[1:] | 
|  | szbuild.ProcessPexe(args, | 
|  | ('{root}/tests/spec2k/{comp}/' + | 
|  | '{name}.opt.stripped.pexe' | 
|  | ).format(root=nacl_root, comp=comp, name=name), | 
|  | ('{root}/tests/spec2k/{comp}/' + | 
|  | '{name}.{suffix}' | 
|  | ).format(root=nacl_root, comp=comp, name=name, | 
|  | suffix=suffix)) | 
|  | if args.run: | 
|  | os.chdir('{root}/tests/spec2k'.format(root=FindBaseNaCl())) | 
|  | setup = 'Setup' + ('Pnacl' if args.sandbox else | 
|  | 'Nonsfi' if args.nonsfi else | 
|  | 'Gcc') + { | 
|  | 'arm32': 'Arm', | 
|  | 'x8632': 'X8632', | 
|  | 'x8664': 'X8664'}[args.target] + 'Opt' | 
|  | shellcmd(['./run_all.sh', | 
|  | 'RunTimedBenchmarks', | 
|  | setup, | 
|  | 'train'] + args.comps) | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | main() |