Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(574)

Side by Side Diff: SConstruct

Issue 269703002: Non-SFI Mode: Add nonsfi_loader and plumbing to test it (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: Review Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | buildbot/buildbot_pnacl.py » ('j') | buildbot/buildbot_pnacl.sh » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #! -*- python -*- 1 #! -*- python -*-
2 # Copyright (c) 2012 The Native Client Authors. All rights reserved. 2 # Copyright (c) 2012 The Native Client Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import atexit 6 import atexit
7 import json 7 import json
8 import os 8 import os
9 import platform 9 import platform
10 import re 10 import re
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 320
321 BitFromArgument(env, 'pnacl_generate_pexe', default=env.Bit('bitcode'), 321 BitFromArgument(env, 'pnacl_generate_pexe', default=env.Bit('bitcode'),
322 desc='use pnacl to generate pexes and translate in a separate step') 322 desc='use pnacl to generate pexes and translate in a separate step')
323 323
324 BitFromArgument(env, 'translate_in_build_step', default=True, 324 BitFromArgument(env, 'translate_in_build_step', default=True,
325 desc='Run translation during build phase (e.g. if do_not_run_tests=1)') 325 desc='Run translation during build phase (e.g. if do_not_run_tests=1)')
326 326
327 BitFromArgument(env, 'pnacl_unsandboxed', default=False, 327 BitFromArgument(env, 'pnacl_unsandboxed', default=False,
328 desc='Translate pexe to an unsandboxed, host executable') 328 desc='Translate pexe to an unsandboxed, host executable')
329 329
330 BitFromArgument(env, 'nonsfi_nacl', default=False,
331 desc='Use Non-SFI Mode instead of the original SFI Mode. This uses '
332 'nonsfi_loader instead of sel_ldr, and it tells the PNaCl toolchain '
333 'to translate pexes to Non-SFI nexes.')
334
330 BitFromArgument(env, 'browser_headless', default=False, 335 BitFromArgument(env, 'browser_headless', default=False,
331 desc='Where possible, set up a dummy display to run the browser on ' 336 desc='Where possible, set up a dummy display to run the browser on '
332 'when running browser tests. On Linux, this runs the browser through ' 337 'when running browser tests. On Linux, this runs the browser through '
333 'xvfb-run. This Scons does not need to be run with an X11 display ' 338 'xvfb-run. This Scons does not need to be run with an X11 display '
334 'and we do not open a browser window on the user\'s desktop. ' 339 'and we do not open a browser window on the user\'s desktop. '
335 'Unfortunately there is no equivalent on Mac OS X.') 340 'Unfortunately there is no equivalent on Mac OS X.')
336 341
337 BitFromArgument(env, 'disable_crash_dialog', default=True, 342 BitFromArgument(env, 'disable_crash_dialog', default=True,
338 desc='Disable Windows\' crash dialog box, which Windows pops up when a ' 343 desc='Disable Windows\' crash dialog box, which Windows pops up when a '
339 'process exits with an unhandled fault. Windows enables this by ' 344 'process exits with an unhandled fault. Windows enables this by '
(...skipping 946 matching lines...) Expand 10 before | Expand all | Expand 10 after
1286 def AddBootstrap(env, executable, args): 1291 def AddBootstrap(env, executable, args):
1287 bootstrap, bootstrap_args = env.GetBootstrap() 1292 bootstrap, bootstrap_args = env.GetBootstrap()
1288 if bootstrap is None: 1293 if bootstrap is None:
1289 return [executable] + args 1294 return [executable] + args
1290 else: 1295 else:
1291 return [bootstrap, executable] + bootstrap_args + args 1296 return [bootstrap, executable] + bootstrap_args + args
1292 1297
1293 pre_base_env.AddMethod(AddBootstrap) 1298 pre_base_env.AddMethod(AddBootstrap)
1294 1299
1295 1300
1301 def GetNonSfiLoader(env):
1302 if 'TRUSTED_ENV' not in env:
1303 return None
1304 return env['TRUSTED_ENV'].File(
1305 '${STAGING_DIR}/${PROGPREFIX}nonsfi_loader${PROGSUFFIX}')
1306
1307 pre_base_env.AddMethod(GetNonSfiLoader)
1308
1309
1296 def GetIrtNexe(env, chrome_irt=False): 1310 def GetIrtNexe(env, chrome_irt=False):
1297 image = ARGUMENTS.get('force_irt') 1311 image = ARGUMENTS.get('force_irt')
1298 if image: 1312 if image:
1299 return env.SConstructAbsPath(image) 1313 return env.SConstructAbsPath(image)
1300 1314
1301 if chrome_irt: 1315 if chrome_irt:
1302 return nacl_irt_env.File('${STAGING_DIR}/irt.nexe') 1316 return nacl_irt_env.File('${STAGING_DIR}/irt.nexe')
1303 else: 1317 else:
1304 return nacl_irt_env.File('${STAGING_DIR}/irt_core.nexe') 1318 return nacl_irt_env.File('${STAGING_DIR}/irt_core.nexe')
1305 1319
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
1606 1620
1607 command = [nexe] 1621 command = [nexe]
1608 if args is not None: 1622 if args is not None:
1609 command += args 1623 command += args
1610 1624
1611 if env.Bit('pnacl_unsandboxed'): 1625 if env.Bit('pnacl_unsandboxed'):
1612 # Run unsandboxed executable directly, without sel_ldr. 1626 # Run unsandboxed executable directly, without sel_ldr.
1613 return env.CommandTest(name, command, size, **extra) 1627 return env.CommandTest(name, command, size, **extra)
1614 1628
1615 if loader is None: 1629 if loader is None:
1616 loader = env.GetSelLdr() 1630 if env.Bit('nonsfi_nacl'):
1631 loader = env.GetNonSfiLoader()
1632 else:
1633 loader = env.GetSelLdr()
1617 if loader is None: 1634 if loader is None:
1618 print 'WARNING: no sel_ldr found. Skipping test %s' % name 1635 print 'WARNING: no sel_ldr found. Skipping test %s' % name
1619 return [] 1636 return []
1620 1637
1621 # Avoid problems with [] as default arguments 1638 # Avoid problems with [] as default arguments
1622 if sel_ldr_flags is None: 1639 if sel_ldr_flags is None:
1623 sel_ldr_flags = [] 1640 sel_ldr_flags = []
1624 else: 1641 else:
1625 # Avoid modifying original list 1642 # Avoid modifying original list
1626 sel_ldr_flags = list(sel_ldr_flags) 1643 sel_ldr_flags = list(sel_ldr_flags)
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1666 sel_ldr_flags += ['-a'] 1683 sel_ldr_flags += ['-a']
1667 1684
1668 if env.Bit('tests_use_irt'): 1685 if env.Bit('tests_use_irt'):
1669 sel_ldr_flags += ['-B', nacl_env.GetIrtNexe()] 1686 sel_ldr_flags += ['-B', nacl_env.GetIrtNexe()]
1670 1687
1671 if skip_bootstrap: 1688 if skip_bootstrap:
1672 loader_cmd = [loader] 1689 loader_cmd = [loader]
1673 else: 1690 else:
1674 loader_cmd = env.AddBootstrap(loader, []) 1691 loader_cmd = env.AddBootstrap(loader, [])
1675 1692
1676 command = loader_cmd + sel_ldr_flags + ['--'] + command 1693 if env.Bit('nonsfi_nacl'):
1694 # nonsfi_loader does not accept the same flags as sel_ldr yet, so
1695 # we ignore sel_ldr_flags here.
1696 command = [loader] + command
1697 else:
1698 command = loader_cmd + sel_ldr_flags + ['--'] + command
1677 1699
1678 if env.Bit('host_linux'): 1700 if env.Bit('host_linux'):
1679 extra['using_nacl_signal_handler'] = True 1701 extra['using_nacl_signal_handler'] = True
1680 1702
1681 if env.ShouldUseVerboseOptions(extra): 1703 if env.ShouldUseVerboseOptions(extra):
1682 env.MakeVerboseExtraOptions(name, log_verbosity, extra) 1704 env.MakeVerboseExtraOptions(name, log_verbosity, extra)
1683 1705
1684 node = env.CommandTest(name, command, size, posix_path=True, 1706 node = env.CommandTest(name, command, size, posix_path=True,
1685 wrapper_program_prefix=wrapper_program_prefix, **extra) 1707 wrapper_program_prefix=wrapper_program_prefix, **extra)
1686 if env.Bit('tests_use_irt'): 1708 if env.Bit('tests_use_irt'):
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after
2120 CFLAGS = ['${EXTRA_CFLAGS}'], 2142 CFLAGS = ['${EXTRA_CFLAGS}'],
2121 CXXFLAGS = ['${EXTRA_CXXFLAGS}'], 2143 CXXFLAGS = ['${EXTRA_CXXFLAGS}'],
2122 ) 2144 )
2123 if base_env.Bit('ncval_testing'): 2145 if base_env.Bit('ncval_testing'):
2124 base_env.Append(CPPDEFINES = ['NCVAL_TESTING']) 2146 base_env.Append(CPPDEFINES = ['NCVAL_TESTING'])
2125 2147
2126 base_env.Append(BUILD_SCONSCRIPTS = [ 2148 base_env.Append(BUILD_SCONSCRIPTS = [
2127 # KEEP THIS SORTED PLEASE 2149 # KEEP THIS SORTED PLEASE
2128 'build/package_version/build.scons', 2150 'build/package_version/build.scons',
2129 'pynacl/build.scons', 2151 'pynacl/build.scons',
2152 'src/nonsfi/irt/build.scons',
2153 'src/nonsfi/loader/build.scons',
2130 'src/shared/gio/build.scons', 2154 'src/shared/gio/build.scons',
2131 'src/shared/imc/build.scons', 2155 'src/shared/imc/build.scons',
2132 'src/shared/ldr/build.scons', 2156 'src/shared/ldr/build.scons',
2133 'src/shared/platform/build.scons', 2157 'src/shared/platform/build.scons',
2134 'src/shared/serialization/build.scons', 2158 'src/shared/serialization/build.scons',
2135 'src/shared/srpc/build.scons', 2159 'src/shared/srpc/build.scons',
2136 'src/shared/utils/build.scons', 2160 'src/shared/utils/build.scons',
2137 'src/third_party_mod/gtest/build.scons', 2161 'src/third_party_mod/gtest/build.scons',
2138 'src/tools/validator_tools/build.scons', 2162 'src/tools/validator_tools/build.scons',
2139 'src/trusted/cpu_features/build.scons', 2163 'src/trusted/cpu_features/build.scons',
(...skipping 893 matching lines...) Expand 10 before | Expand all | Expand 10 after
3033 3057
3034 # Map certain flag bits to suffices on the build output. This needs to 3058 # Map certain flag bits to suffices on the build output. This needs to
3035 # happen pretty early, because it affects any concretized directory names. 3059 # happen pretty early, because it affects any concretized directory names.
3036 target_variant_map = [ 3060 target_variant_map = [
3037 ('bitcode', 'pnacl'), 3061 ('bitcode', 'pnacl'),
3038 ('translate_fast', 'fast'), 3062 ('translate_fast', 'fast'),
3039 ('nacl_pic', 'pic'), 3063 ('nacl_pic', 'pic'),
3040 ('use_sandboxed_translator', 'sbtc'), 3064 ('use_sandboxed_translator', 'sbtc'),
3041 ('nacl_glibc', 'glibc'), 3065 ('nacl_glibc', 'glibc'),
3042 ('pnacl_generate_pexe', 'pexe'), 3066 ('pnacl_generate_pexe', 'pexe'),
3067 ('nonsfi_nacl', 'nonsfi'),
3043 ] 3068 ]
3044 for variant_bit, variant_suffix in target_variant_map: 3069 for variant_bit, variant_suffix in target_variant_map:
3045 if nacl_env.Bit(variant_bit): 3070 if nacl_env.Bit(variant_bit):
3046 nacl_env['TARGET_VARIANT'] += '-' + variant_suffix 3071 nacl_env['TARGET_VARIANT'] += '-' + variant_suffix
3047 3072
3048 if nacl_env.Bit('bitcode'): 3073 if nacl_env.Bit('bitcode'):
3049 nacl_env['TARGET_VARIANT'] += '-clang' 3074 nacl_env['TARGET_VARIANT'] += '-clang'
3050 3075
3051 nacl_env.Replace(TESTRUNNER_LIBS=['testrunner']) 3076 nacl_env.Replace(TESTRUNNER_LIBS=['testrunner'])
3052 # TODO(mseaborn): Drop this once chrome side has inlined this. 3077 # TODO(mseaborn): Drop this once chrome side has inlined this.
(...skipping 783 matching lines...) Expand 10 before | Expand all | Expand 10 after
3836 nacl_env.ValidateSdk() 3861 nacl_env.ValidateSdk()
3837 3862
3838 if BROKEN_TEST_COUNT > 0: 3863 if BROKEN_TEST_COUNT > 0:
3839 msg = "There are %d broken tests." % BROKEN_TEST_COUNT 3864 msg = "There are %d broken tests." % BROKEN_TEST_COUNT
3840 if GetOption('brief_comstr'): 3865 if GetOption('brief_comstr'):
3841 msg += " Add --verbose to the command line for more information." 3866 msg += " Add --verbose to the command line for more information."
3842 print msg 3867 print msg
3843 3868
3844 # separate warnings from actual build output 3869 # separate warnings from actual build output
3845 Banner('B U I L D - O U T P U T:') 3870 Banner('B U I L D - O U T P U T:')
OLDNEW
« no previous file with comments | « no previous file | buildbot/buildbot_pnacl.py » ('j') | buildbot/buildbot_pnacl.sh » ('J')

Powered by Google App Engine
This is Rietveld 408576698