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

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

Powered by Google App Engine
This is Rietveld 408576698