Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 ApplyTLSEdit(env, nexe_name, raw_nexe): | |
| 1255 tls_edit_exe = env['BUILD_ENV'].File('${STAGING_DIR}/tls_edit${PROGSUFFIX}') | |
| 1256 return env.Command( | |
| 1257 nexe_name, | |
| 1258 [tls_edit_exe, raw_nexe], | |
| 1259 '${SOURCES} ${TARGET}') | |
| 1260 | |
| 1261 pre_base_env.AddMethod(ApplyTLSEdit) | |
| 1254 | 1262 |
| 1255 def CommandValidatorTestNacl(env, name, image, | 1263 def CommandValidatorTestNacl(env, name, image, |
| 1256 validator_flags=None, | 1264 validator_flags=None, |
| 1257 validator=None, | 1265 validator=None, |
| 1258 size='medium', | 1266 size='medium', |
| 1259 **extra): | 1267 **extra): |
| 1260 validator = env.GetValidator(validator) | 1268 validator = env.GetValidator(validator) |
| 1261 if validator is None: | 1269 if validator is None: |
| 1262 print 'WARNING: no validator found. Skipping test %s' % name | 1270 print 'WARNING: no validator found. Skipping test %s' % name |
| 1263 return [] | 1271 return [] |
| (...skipping 2136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3400 env.Prepend(LINKFLAGS=['-B${LIB_DIR}/']) | 3408 env.Prepend(LINKFLAGS=['-B${LIB_DIR}/']) |
| 3401 | 3409 |
| 3402 AddImplicitLibs(nacl_env) | 3410 AddImplicitLibs(nacl_env) |
| 3403 AddImplicitLibs(nacl_irt_env) | 3411 AddImplicitLibs(nacl_irt_env) |
| 3404 | 3412 |
| 3405 nacl_irt_env.Append( | 3413 nacl_irt_env.Append( |
| 3406 BUILD_SCONSCRIPTS = [ | 3414 BUILD_SCONSCRIPTS = [ |
| 3407 'src/shared/gio/nacl.scons', | 3415 'src/shared/gio/nacl.scons', |
| 3408 'src/shared/platform/nacl.scons', | 3416 'src/shared/platform/nacl.scons', |
| 3409 'src/shared/srpc/nacl.scons', | 3417 'src/shared/srpc/nacl.scons', |
| 3418 'src/tools/tls_edit/build.scons', | |
| 3410 'src/untrusted/irt/nacl.scons', | 3419 'src/untrusted/irt/nacl.scons', |
| 3411 'src/untrusted/nacl/nacl.scons', | 3420 'src/untrusted/nacl/nacl.scons', |
| 3412 'src/untrusted/stubs/nacl.scons', | 3421 'src/untrusted/stubs/nacl.scons', |
| 3413 'tests/irt_private_pthread/nacl.scons', | 3422 'tests/irt_private_pthread/nacl.scons', |
| 3414 ]) | 3423 ]) |
| 3415 nacl_irt_env.AddChromeFilesFromGroup('untrusted_irt_scons_files') | 3424 nacl_irt_env.AddChromeFilesFromGroup('untrusted_irt_scons_files') |
| 3416 | 3425 |
| 3417 environment_list.append(nacl_irt_env) | 3426 environment_list.append(nacl_irt_env) |
| 3418 | 3427 |
| 3419 # Since browser_tests already use the IRT normally, those are fully covered | 3428 # Since browser_tests already use the IRT normally, those are fully covered |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3602 'linux' : MakeLinuxEnv, | 3611 'linux' : MakeLinuxEnv, |
| 3603 'linux2': MakeLinuxEnv, | 3612 'linux2': MakeLinuxEnv, |
| 3604 'darwin': MakeMacEnv, | 3613 'darwin': MakeMacEnv, |
| 3605 } | 3614 } |
| 3606 if sys.platform not in platform_func_map: | 3615 if sys.platform not in platform_func_map: |
| 3607 raise UserError('Unrecognized host platform: %s', sys.platform) | 3616 raise UserError('Unrecognized host platform: %s', sys.platform) |
| 3608 make_env_func = platform_func_map[sys.platform] | 3617 make_env_func = platform_func_map[sys.platform] |
| 3609 | 3618 |
| 3610 build_env = make_env_func(build_platform) | 3619 build_env = make_env_func(build_platform) |
| 3611 build_env['IS_BUILD_ENV'] = True | 3620 build_env['IS_BUILD_ENV'] = True |
| 3612 build_env['BUILD_SCONSCRIPTS'] = [] | 3621 |
| 3622 # Building tls_edit depends on gio, platform, and validator_ragel. | |
| 3623 build_env['BUILD_SCONSCRIPTS'] = [ | |
| 3624 # KEEP THIS SORTED PLEASE | |
| 3625 'src/shared/gio/build.scons', | |
| 3626 'src/shared/platform/build.scons', | |
| 3627 'src/trusted/validator_ragel/build.scons', | |
| 3628 ] | |
| 3613 | 3629 |
| 3614 # The build environment is only used for intermediate steps and should | 3630 # 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 | 3631 # 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 | 3632 # 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 | 3633 # share all of our build scripts but not define any aliases, we should |
| 3618 # override the alias function and essentially stub it out. | 3634 # override the alias function and essentially stub it out. |
| 3619 build_env.Alias = lambda env, target, source=[], actions=None, **kw : [] | 3635 build_env.Alias = lambda env, target, source=[], actions=None, **kw : [] |
| 3620 | 3636 |
| 3621 dbg_build_env, opt_build_env = GenerateOptimizationLevels(build_env) | 3637 return build_env |
| 3622 | 3638 |
| 3623 return opt_build_env | 3639 def LinkBuildEnv(selected_envs): |
| 3640 build_env_map = { | |
| 3641 'opt': opt_build_env, | |
| 3642 'dbg': dbg_build_env, | |
| 3643 } | |
| 3624 | 3644 |
| 3625 def LinkBuildEnv(selected_envs, build_env): | 3645 # We need to find the optimization level in order to know which |
| 3646 # build environment we want to use | |
| 3647 opt_level = None | |
| 3648 for env in selected_envs: | |
| 3649 if 'OPTIMIZATION_LEVEL' in env: | |
| 3650 if env['OPTIMIZATION_LEVEL']: | |
| 3651 opt_level = env['OPTIMIZATION_LEVEL'] | |
| 3652 break | |
| 3653 | |
| 3654 build_env = build_env_map.get(opt_level, opt_build_env) | |
| 3626 for env in selected_envs: | 3655 for env in selected_envs: |
| 3627 env['BUILD_ENV'] = build_env | 3656 env['BUILD_ENV'] = build_env |
| 3628 | 3657 |
| 3629 # If platform is not the same as the host environment, add the targets | 3658 if (opt_level not in build_env_map or |
| 3630 # of the host environment so scons can find them | 3659 GetBuildPlatform() != GetTargetPlatform()): |
| 3631 if GetBuildPlatform() != GetTargetPlatform(): | |
| 3632 selected_envs.append(build_env) | 3660 selected_envs.append(build_env) |
| 3633 | 3661 |
| 3634 def DumpEnvironmentInfo(selected_envs): | 3662 def DumpEnvironmentInfo(selected_envs): |
| 3635 if VerboseConfigInfo(pre_base_env): | 3663 if VerboseConfigInfo(pre_base_env): |
| 3636 Banner("The following environments have been configured") | 3664 Banner("The following environments have been configured") |
| 3637 for env in selected_envs: | 3665 for env in selected_envs: |
| 3638 for tag in RELEVANT_CONFIG: | 3666 for tag in RELEVANT_CONFIG: |
| 3639 assert tag in env, repr(tag) | 3667 assert tag in env, repr(tag) |
| 3640 print "%s: %s" % (tag, env.subst(env.get(tag))) | 3668 print "%s: %s" % (tag, env.subst(env.get(tag))) |
| 3641 for tag in MAYBE_RELEVANT_CONFIG: | 3669 for tag in MAYBE_RELEVANT_CONFIG: |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3687 # a separate mode due to the vagaries of scons when we'd really rather it | 3715 # 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 | 3716 # not be, while not requiring that every bot command line using --mode be |
| 3689 # changed to list '...,nacl,nacl_irt' explicitly. | 3717 # changed to list '...,nacl,nacl_irt' explicitly. |
| 3690 if nacl_env in selected_envs: | 3718 if nacl_env in selected_envs: |
| 3691 selected_envs.append(nacl_irt_env) | 3719 selected_envs.append(nacl_irt_env) |
| 3692 | 3720 |
| 3693 # The nacl_irt_test_env requires nacl_env to build things correctly. | 3721 # 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: | 3722 if nacl_irt_test_env in selected_envs and nacl_env not in selected_envs: |
| 3695 selected_envs.append(nacl_env) | 3723 selected_envs.append(nacl_env) |
| 3696 | 3724 |
| 3697 | |
| 3698 DumpEnvironmentInfo(selected_envs) | 3725 DumpEnvironmentInfo(selected_envs) |
| 3699 LinkTrustedEnv(selected_envs) | 3726 LinkTrustedEnv(selected_envs) |
| 3700 LinkBuildEnv(selected_envs, MakeBuildEnv()) | 3727 |
| 3728 # When building nacl, any intermediate build tool that is used during the | |
|
Mark Seaborn
2014/02/04 18:09:10
Nit: capitalise as "NaCl"
| |
| 3729 # build process must be built using the current build environment, not the | |
| 3730 # target. Create a build environment for this purpose and link it into | |
| 3731 # the selected environments | |
| 3732 dbg_build_env, opt_build_env = GenerateOptimizationLevels(MakeBuildEnv()) | |
| 3733 LinkBuildEnv(selected_envs) | |
| 3734 | |
| 3701 # This must happen after LinkTrustedEnv, since that is where TRUSTED_ENV | 3735 # This must happen after LinkTrustedEnv, since that is where TRUSTED_ENV |
| 3702 # is finally set, and env.UsingEmulator() checks TRUSTED_ENV for the emulator. | 3736 # is finally set, and env.UsingEmulator() checks TRUSTED_ENV for the emulator. |
| 3703 # This must also happen before BuildEnvironments. | 3737 # This must also happen before BuildEnvironments. |
| 3704 PnaclSetEmulatorForSandboxedTranslator(selected_envs) | 3738 PnaclSetEmulatorForSandboxedTranslator(selected_envs) |
| 3705 | 3739 |
| 3706 BuildEnvironments(selected_envs) | 3740 BuildEnvironments(selected_envs) |
| 3707 | 3741 |
| 3708 # Change default to build everything, but not run tests. | 3742 # Change default to build everything, but not run tests. |
| 3709 Default(['all_programs', 'all_bundles', 'all_test_programs', 'all_libraries']) | 3743 Default(['all_programs', 'all_bundles', 'all_test_programs', 'all_libraries']) |
| 3710 | 3744 |
| 3711 | 3745 |
| 3712 # Sanity check whether we are ready to build nacl modules | 3746 # Sanity check whether we are ready to build nacl modules |
| 3713 # NOTE: this uses stuff from: site_scons/site_tools/naclsdk.py | 3747 # 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 | 3748 if nacl_env.Bit('naclsdk_validate') and (nacl_env in selected_envs or |
| 3715 nacl_irt_env in selected_envs): | 3749 nacl_irt_env in selected_envs): |
| 3716 nacl_env.ValidateSdk() | 3750 nacl_env.ValidateSdk() |
| 3717 | 3751 |
| 3718 if BROKEN_TEST_COUNT > 0: | 3752 if BROKEN_TEST_COUNT > 0: |
| 3719 msg = "There are %d broken tests." % BROKEN_TEST_COUNT | 3753 msg = "There are %d broken tests." % BROKEN_TEST_COUNT |
| 3720 if GetOption('brief_comstr'): | 3754 if GetOption('brief_comstr'): |
| 3721 msg += " Add --verbose to the command line for more information." | 3755 msg += " Add --verbose to the command line for more information." |
| 3722 print msg | 3756 print msg |
| 3723 | 3757 |
| 3724 # separate warnings from actual build output | 3758 # separate warnings from actual build output |
| 3725 Banner('B U I L D - O U T P U T:') | 3759 Banner('B U I L D - O U T P U T:') |
| OLD | NEW |