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

Side by Side Diff: SConstruct

Issue 140653005: Adds tls_edit utility which patches irt_core.nexe's TLS usage. (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: gyp builds with host toolsets should not inherit target flags for arm and mips Created 6 years, 11 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 | build/common.gypi » ('j') | src/untrusted/irt/tls_edit.c » ('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 1238 matching lines...) Expand 10 before | Expand all | Expand 10 after
1249 if image: 1249 if image:
1250 return env.SConstructAbsPath(image) 1250 return env.SConstructAbsPath(image)
1251 1251
1252 if chrome_irt: 1252 if chrome_irt:
1253 return nacl_irt_env.File('${STAGING_DIR}/irt.nexe') 1253 return nacl_irt_env.File('${STAGING_DIR}/irt.nexe')
1254 else: 1254 else:
1255 return nacl_irt_env.File('${STAGING_DIR}/irt_core.nexe') 1255 return nacl_irt_env.File('${STAGING_DIR}/irt_core.nexe')
1256 1256
1257 pre_base_env.AddMethod(GetIrtNexe) 1257 pre_base_env.AddMethod(GetIrtNexe)
1258 1258
1259 def GetTLSEdit(env):
1260 return env['BUILD_ENV'].File('${STAGING_DIR}/tls_edit${PROGSUFFIX}')
1261
1262 pre_base_env.AddMethod(GetTLSEdit)
1259 1263
1260 def CommandValidatorTestNacl(env, name, image, 1264 def CommandValidatorTestNacl(env, name, image,
1261 validator_flags=None, 1265 validator_flags=None,
1262 validator=None, 1266 validator=None,
1263 size='medium', 1267 size='medium',
1264 **extra): 1268 **extra):
1265 validator = env.GetValidator(validator) 1269 validator = env.GetValidator(validator)
1266 if validator is None: 1270 if validator is None:
1267 print 'WARNING: no validator found. Skipping test %s' % name 1271 print 'WARNING: no validator found. Skipping test %s' % name
1268 return [] 1272 return []
(...skipping 2328 matching lines...) Expand 10 before | Expand all | Expand 10 after
3597 'linux' : MakeLinuxEnv, 3601 'linux' : MakeLinuxEnv,
3598 'linux2': MakeLinuxEnv, 3602 'linux2': MakeLinuxEnv,
3599 'darwin': MakeMacEnv, 3603 'darwin': MakeMacEnv,
3600 } 3604 }
3601 if sys.platform not in platform_func_map: 3605 if sys.platform not in platform_func_map:
3602 raise UserError('Unrecognized host platform: %s', sys.platform) 3606 raise UserError('Unrecognized host platform: %s', sys.platform)
3603 make_env_func = platform_func_map[sys.platform] 3607 make_env_func = platform_func_map[sys.platform]
3604 3608
3605 build_env = make_env_func(build_platform) 3609 build_env = make_env_func(build_platform)
3606 build_env['IS_BUILD_ENV'] = True 3610 build_env['IS_BUILD_ENV'] = True
3607 build_env['BUILD_SCONSCRIPTS'] = [] 3611 build_env['BUILD_SCONSCRIPTS'] = [
3612 # KEEP THIS SORTED PLEASE
Roland McGrath 2014/01/24 18:50:49 This should have a comment saying that it's tls_ed
3613 'src/shared/gio/build.scons',
3614 'src/shared/platform/build.scons',
3615 'src/trusted/validator_ragel/build.scons',
3616 ]
3608 3617
3609 # The build environment is only used for intermediate steps and should 3618 # The build environment is only used for intermediate steps and should
3610 # not be creating any targets. Aliases are used as means to add targets 3619 # not be creating any targets. Aliases are used as means to add targets
3611 # to builds (IE, all_programs, all_libraries...etc.). Since we want to 3620 # to builds (IE, all_programs, all_libraries...etc.). Since we want to
3612 # share all of our build scripts but not define any aliases, we should 3621 # share all of our build scripts but not define any aliases, we should
3613 # override the alias function and essentially stub it out. 3622 # override the alias function and essentially stub it out.
3614 build_env.Alias = lambda env, target, source=[], actions=None, **kw : [] 3623 build_env.Alias = lambda env, target, source=[], actions=None, **kw : []
3615 3624
3616 dbg_build_env, opt_build_env = GenerateOptimizationLevels(build_env) 3625 return build_env
3617 3626
3618 return opt_build_env 3627 def LinkBuildEnv(selected_envs):
3628 build_env_map = {
3629 'opt': opt_build_env,
3630 'dbg': dbg_build_env,
3631 }
3619 3632
3620 def LinkBuildEnv(selected_envs, build_env): 3633 # We need to find the optimization level in order to know which
3634 # build environment we want to use
3635 opt_level = None
3636 for env in selected_envs:
3637 if 'OPTIMIZATION_LEVEL' in env:
3638 if env['OPTIMIZATION_LEVEL']:
3639 opt_level = env['OPTIMIZATION_LEVEL']
3640 break
3641
3642 build_env = build_env_map.get(opt_level, opt_build_env)
3621 for env in selected_envs: 3643 for env in selected_envs:
3622 env['BUILD_ENV'] = build_env 3644 env['BUILD_ENV'] = build_env
3623 3645
3624 # If platform is not the same as the host environment, add the targets 3646 if opt_level not in build_env_map or \
Roland McGrath 2014/01/24 18:50:49 Use parens around a wrapped expr, and no backslash
3625 # of the host environment so scons can find them 3647 GetBuildPlatform() != GetTargetPlatform():
3626 if GetBuildPlatform() != GetTargetPlatform():
3627 selected_envs.append(build_env) 3648 selected_envs.append(build_env)
3628 3649
3629 def DumpEnvironmentInfo(selected_envs): 3650 def DumpEnvironmentInfo(selected_envs):
3630 if VerboseConfigInfo(pre_base_env): 3651 if VerboseConfigInfo(pre_base_env):
3631 Banner("The following environments have been configured") 3652 Banner("The following environments have been configured")
3632 for env in selected_envs: 3653 for env in selected_envs:
3633 for tag in RELEVANT_CONFIG: 3654 for tag in RELEVANT_CONFIG:
3634 assert tag in env, repr(tag) 3655 assert tag in env, repr(tag)
3635 print "%s: %s" % (tag, env.subst(env.get(tag))) 3656 print "%s: %s" % (tag, env.subst(env.get(tag)))
3636 for tag in MAYBE_RELEVANT_CONFIG: 3657 for tag in MAYBE_RELEVANT_CONFIG:
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
3682 # a separate mode due to the vagaries of scons when we'd really rather it 3703 # a separate mode due to the vagaries of scons when we'd really rather it
3683 # not be, while not requiring that every bot command line using --mode be 3704 # not be, while not requiring that every bot command line using --mode be
3684 # changed to list '...,nacl,nacl_irt' explicitly. 3705 # changed to list '...,nacl,nacl_irt' explicitly.
3685 if nacl_env in selected_envs: 3706 if nacl_env in selected_envs:
3686 selected_envs.append(nacl_irt_env) 3707 selected_envs.append(nacl_irt_env)
3687 3708
3688 # The nacl_irt_test_env requires nacl_env to build things correctly. 3709 # The nacl_irt_test_env requires nacl_env to build things correctly.
3689 if nacl_irt_test_env in selected_envs and nacl_env not in selected_envs: 3710 if nacl_irt_test_env in selected_envs and nacl_env not in selected_envs:
3690 selected_envs.append(nacl_env) 3711 selected_envs.append(nacl_env)
3691 3712
3692
3693 DumpEnvironmentInfo(selected_envs) 3713 DumpEnvironmentInfo(selected_envs)
3694 LinkTrustedEnv(selected_envs) 3714 LinkTrustedEnv(selected_envs)
3695 LinkBuildEnv(selected_envs, MakeBuildEnv()) 3715
3716 # When building nacl, any intermediate build tool that is used during the
3717 # build process must built using the current build environment, not the
Roland McGrath 2014/01/24 18:50:49 s/must built/must be built/
3718 # target. Create a build environment for this purpose and link it into
3719 # the selected environments
3720 dbg_build_env, opt_build_env = GenerateOptimizationLevels(MakeBuildEnv())
3721 LinkBuildEnv(selected_envs)
3722
3696 # This must happen after LinkTrustedEnv, since that is where TRUSTED_ENV 3723 # This must happen after LinkTrustedEnv, since that is where TRUSTED_ENV
3697 # is finally set, and env.UsingEmulator() checks TRUSTED_ENV for the emulator. 3724 # is finally set, and env.UsingEmulator() checks TRUSTED_ENV for the emulator.
3698 # This must also happen before BuildEnvironments. 3725 # This must also happen before BuildEnvironments.
3699 PnaclSetEmulatorForSandboxedTranslator(selected_envs) 3726 PnaclSetEmulatorForSandboxedTranslator(selected_envs)
3700 3727
3701 BuildEnvironments(selected_envs) 3728 BuildEnvironments(selected_envs)
3702 3729
3703 # Change default to build everything, but not run tests. 3730 # Change default to build everything, but not run tests.
3704 Default(['all_programs', 'all_bundles', 'all_test_programs', 'all_libraries']) 3731 Default(['all_programs', 'all_bundles', 'all_test_programs', 'all_libraries'])
3705 3732
3706 3733
3707 # Sanity check whether we are ready to build nacl modules 3734 # Sanity check whether we are ready to build nacl modules
3708 # NOTE: this uses stuff from: site_scons/site_tools/naclsdk.py 3735 # NOTE: this uses stuff from: site_scons/site_tools/naclsdk.py
3709 if nacl_env.Bit('naclsdk_validate') and (nacl_env in selected_envs or 3736 if nacl_env.Bit('naclsdk_validate') and (nacl_env in selected_envs or
3710 nacl_irt_env in selected_envs): 3737 nacl_irt_env in selected_envs):
3711 nacl_env.ValidateSdk() 3738 nacl_env.ValidateSdk()
3712 3739
3713 if BROKEN_TEST_COUNT > 0: 3740 if BROKEN_TEST_COUNT > 0:
3714 msg = "There are %d broken tests." % BROKEN_TEST_COUNT 3741 msg = "There are %d broken tests." % BROKEN_TEST_COUNT
3715 if GetOption('brief_comstr'): 3742 if GetOption('brief_comstr'):
3716 msg += " Add --verbose to the command line for more information." 3743 msg += " Add --verbose to the command line for more information."
3717 print msg 3744 print msg
3718 3745
3719 # separate warnings from actual build output 3746 # separate warnings from actual build output
3720 Banner('B U I L D - O U T P U T:') 3747 Banner('B U I L D - O U T P U T:')
OLDNEW
« no previous file with comments | « no previous file | build/common.gypi » ('j') | src/untrusted/irt/tls_edit.c » ('J')

Powered by Google App Engine
This is Rietveld 408576698