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 os | 7 import os |
8 import platform | 8 import platform |
9 import re | 9 import re |
10 import subprocess | 10 import subprocess |
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
297 | 297 |
298 BitFromArgument(env, 'disable_flaky_tests', default=False, | 298 BitFromArgument(env, 'disable_flaky_tests', default=False, |
299 desc='Do not run potentially flaky tests - used on Chrome bots') | 299 desc='Do not run potentially flaky tests - used on Chrome bots') |
300 | 300 |
301 BitFromArgument(env, 'use_sandboxed_translator', default=False, | 301 BitFromArgument(env, 'use_sandboxed_translator', default=False, |
302 desc='use pnacl sandboxed translator for linking (not available for arm)') | 302 desc='use pnacl sandboxed translator for linking (not available for arm)') |
303 | 303 |
304 BitFromArgument(env, 'pnacl_generate_pexe', default=env.Bit('bitcode'), | 304 BitFromArgument(env, 'pnacl_generate_pexe', default=env.Bit('bitcode'), |
305 desc='use pnacl to generate pexes and translate in a separate step') | 305 desc='use pnacl to generate pexes and translate in a separate step') |
306 | 306 |
307 BitFromArgument(env, 'pnacl_shared_newlib', default=False, | |
308 desc='build newlib (and other libs) shared in PNaCl') | |
309 | |
310 BitFromArgument(env, 'translate_in_build_step', default=True, | 307 BitFromArgument(env, 'translate_in_build_step', default=True, |
311 desc='Run translation during build phase (e.g. if do_not_run_tests=1)') | 308 desc='Run translation during build phase (e.g. if do_not_run_tests=1)') |
312 | 309 |
313 BitFromArgument(env, 'browser_headless', default=False, | 310 BitFromArgument(env, 'browser_headless', default=False, |
314 desc='Where possible, set up a dummy display to run the browser on ' | 311 desc='Where possible, set up a dummy display to run the browser on ' |
315 'when running browser tests. On Linux, this runs the browser through ' | 312 'when running browser tests. On Linux, this runs the browser through ' |
316 'xvfb-run. This Scons does not need to be run with an X11 display ' | 313 'xvfb-run. This Scons does not need to be run with an X11 display ' |
317 'and we do not open a browser window on the user\'s desktop. ' | 314 'and we do not open a browser window on the user\'s desktop. ' |
318 'Unfortunately there is no equivalent on Mac OS X.') | 315 'Unfortunately there is no equivalent on Mac OS X.') |
319 | 316 |
(...skipping 2597 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2917 nacl_env['INCLUDE_DIR'] = '${TARGET_ROOT}/include' | 2914 nacl_env['INCLUDE_DIR'] = '${TARGET_ROOT}/include' |
2918 # Remove the default $LIB_DIR element so that we prepend it without duplication. | 2915 # Remove the default $LIB_DIR element so that we prepend it without duplication. |
2919 # Using PrependUnique alone would let it stay last, where we want it first. | 2916 # Using PrependUnique alone would let it stay last, where we want it first. |
2920 nacl_env.FilterOut(LIBPATH=['${LIB_DIR}']) | 2917 nacl_env.FilterOut(LIBPATH=['${LIB_DIR}']) |
2921 nacl_env.PrependUnique( | 2918 nacl_env.PrependUnique( |
2922 CPPPATH = ['${INCLUDE_DIR}'], | 2919 CPPPATH = ['${INCLUDE_DIR}'], |
2923 LIBPATH = ['${LIB_DIR}'], | 2920 LIBPATH = ['${LIB_DIR}'], |
2924 ) | 2921 ) |
2925 | 2922 |
2926 if nacl_env.Bit('bitcode'): | 2923 if nacl_env.Bit('bitcode'): |
2927 # This helps with NaClSdkLibrary() where some libraries share object files | |
2928 # between static and shared libs. Without it scons will complain. | |
2929 # NOTE: this is a standard scons mechanism | |
2930 nacl_env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1 | |
2931 # passing -O when linking requests LTO, which does additional global | 2924 # passing -O when linking requests LTO, which does additional global |
2932 # optimizations at link time | 2925 # optimizations at link time |
2933 nacl_env.Append(LINKFLAGS=['-O3']) | 2926 nacl_env.Append(LINKFLAGS=['-O3']) |
2934 if not nacl_env.Bit('nacl_glibc') and not nacl_env.Bit('pnacl_shared_newlib'): | 2927 if not nacl_env.Bit('nacl_glibc'): |
2935 nacl_env.Append(LINKFLAGS=['-static']) | 2928 nacl_env.Append(LINKFLAGS=['-static']) |
2936 | 2929 |
2937 if nacl_env.Bit('translate_fast'): | 2930 if nacl_env.Bit('translate_fast'): |
2938 nacl_env.Append(LINKFLAGS=['-Xlinker', '-translate-fast']) | 2931 nacl_env.Append(LINKFLAGS=['-Xlinker', '-translate-fast']) |
2939 nacl_env.Append(TRANSLATEFLAGS=['-translate-fast']) | 2932 nacl_env.Append(TRANSLATEFLAGS=['-translate-fast']) |
2940 | 2933 |
2941 # With pnacl's clang base/ code uses the "override" keyword. | 2934 # With pnacl's clang base/ code uses the "override" keyword. |
2942 nacl_env.Append(CXXFLAGS=['-Wno-c++11-extensions']) | 2935 nacl_env.Append(CXXFLAGS=['-Wno-c++11-extensions']) |
2943 # Allow extraneous semicolons. (Until these are removed.) | 2936 # Allow extraneous semicolons. (Until these are removed.) |
2944 # http://code.google.com/p/nativeclient/issues/detail?id=2861 | 2937 # http://code.google.com/p/nativeclient/issues/detail?id=2861 |
(...skipping 22 matching lines...) Expand all Loading... |
2967 | 2960 |
2968 # Map certain flag bits to suffices on the build output. This needs to | 2961 # Map certain flag bits to suffices on the build output. This needs to |
2969 # happen pretty early, because it affects any concretized directory names. | 2962 # happen pretty early, because it affects any concretized directory names. |
2970 target_variant_map = [ | 2963 target_variant_map = [ |
2971 ('bitcode', 'pnacl'), | 2964 ('bitcode', 'pnacl'), |
2972 ('translate_fast', 'fast'), | 2965 ('translate_fast', 'fast'), |
2973 ('nacl_pic', 'pic'), | 2966 ('nacl_pic', 'pic'), |
2974 ('use_sandboxed_translator', 'sbtc'), | 2967 ('use_sandboxed_translator', 'sbtc'), |
2975 ('nacl_glibc', 'glibc'), | 2968 ('nacl_glibc', 'glibc'), |
2976 ('pnacl_generate_pexe', 'pexe'), | 2969 ('pnacl_generate_pexe', 'pexe'), |
2977 ('pnacl_shared_newlib', 'shared'), | |
2978 ] | 2970 ] |
2979 for variant_bit, variant_suffix in target_variant_map: | 2971 for variant_bit, variant_suffix in target_variant_map: |
2980 if nacl_env.Bit(variant_bit): | 2972 if nacl_env.Bit(variant_bit): |
2981 nacl_env['TARGET_VARIANT'] += '-' + variant_suffix | 2973 nacl_env['TARGET_VARIANT'] += '-' + variant_suffix |
2982 | 2974 |
2983 if nacl_env.Bit('bitcode'): | 2975 if nacl_env.Bit('bitcode'): |
2984 nacl_env['TARGET_VARIANT'] += '-clang' | 2976 nacl_env['TARGET_VARIANT'] += '-clang' |
2985 | 2977 |
2986 nacl_env.Replace(TESTRUNNER_LIBS=['testrunner']) | 2978 nacl_env.Replace(TESTRUNNER_LIBS=['testrunner']) |
2987 # TODO(mseaborn): Drop this once chrome side has inlined this. | 2979 # TODO(mseaborn): Drop this once chrome side has inlined this. |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3217 | 3209 |
3218 def NaClSharedLibrary(env, lib_name, *args, **kwargs): | 3210 def NaClSharedLibrary(env, lib_name, *args, **kwargs): |
3219 env_shared = env.Clone(COMPONENT_STATIC=False) | 3211 env_shared = env.Clone(COMPONENT_STATIC=False) |
3220 soname = SCons.Util.adjustixes(lib_name, 'lib', '.so') | 3212 soname = SCons.Util.adjustixes(lib_name, 'lib', '.so') |
3221 env_shared.AppendUnique(SHLINKFLAGS=['-Wl,-soname,%s' % (soname)]) | 3213 env_shared.AppendUnique(SHLINKFLAGS=['-Wl,-soname,%s' % (soname)]) |
3222 return env_shared.ComponentLibrary(lib_name, *args, **kwargs) | 3214 return env_shared.ComponentLibrary(lib_name, *args, **kwargs) |
3223 | 3215 |
3224 nacl_env.AddMethod(NaClSharedLibrary) | 3216 nacl_env.AddMethod(NaClSharedLibrary) |
3225 | 3217 |
3226 def NaClSdkLibrary(env, lib_name, *args, **kwargs): | 3218 def NaClSdkLibrary(env, lib_name, *args, **kwargs): |
3227 gen_shared = (not env.Bit('nacl_disable_shared') or | |
3228 env.Bit('pnacl_shared_newlib')) | |
3229 if 'no_shared_lib' in kwargs: | |
3230 if kwargs['no_shared_lib']: | |
3231 gen_shared = False | |
3232 del kwargs['no_shared_lib'] | |
3233 n = [env.ComponentLibrary(lib_name, *args, **kwargs)] | 3219 n = [env.ComponentLibrary(lib_name, *args, **kwargs)] |
3234 if gen_shared: | 3220 if not env.Bit('nacl_disable_shared'): |
3235 n.append(env.NaClSharedLibrary(lib_name, *args, **kwargs)) | 3221 n.append(env.NaClSharedLibrary(lib_name, *args, **kwargs)) |
3236 return n | 3222 return n |
3237 | 3223 |
3238 nacl_env.AddMethod(NaClSdkLibrary) | 3224 nacl_env.AddMethod(NaClSdkLibrary) |
3239 | 3225 |
3240 | 3226 |
3241 # Special environment for untrusted test binaries that use raw syscalls | 3227 # Special environment for untrusted test binaries that use raw syscalls |
3242 def RawSyscallObjects(env, sources): | 3228 def RawSyscallObjects(env, sources): |
3243 raw_syscall_env = env.Clone() | 3229 raw_syscall_env = env.Clone() |
3244 raw_syscall_env.Append( | 3230 raw_syscall_env.Append( |
(...skipping 16 matching lines...) Expand all Loading... |
3261 nacl_env.AddMethod(RawSyscallObjects) | 3247 nacl_env.AddMethod(RawSyscallObjects) |
3262 | 3248 |
3263 | 3249 |
3264 # The IRT-building environment was cloned from nacl_env, but it should | 3250 # The IRT-building environment was cloned from nacl_env, but it should |
3265 # ignore the --nacl_glibc, nacl_pic=1 and bitcode=1 switches. | 3251 # ignore the --nacl_glibc, nacl_pic=1 and bitcode=1 switches. |
3266 # We have to reinstantiate the naclsdk.py magic after clearing those flags, | 3252 # We have to reinstantiate the naclsdk.py magic after clearing those flags, |
3267 # so it regenerates the tool paths right. | 3253 # so it regenerates the tool paths right. |
3268 # TODO(mcgrathr,bradnelson): could get cleaner if naclsdk.py got folded back in. | 3254 # TODO(mcgrathr,bradnelson): could get cleaner if naclsdk.py got folded back in. |
3269 nacl_irt_env.ClearBits('nacl_glibc') | 3255 nacl_irt_env.ClearBits('nacl_glibc') |
3270 nacl_irt_env.ClearBits('nacl_pic') | 3256 nacl_irt_env.ClearBits('nacl_pic') |
3271 nacl_irt_env.ClearBits('pnacl_shared_newlib') | |
3272 # We build the IRT using the nnacl TC even when the pnacl TC is used otherwise. | 3257 # We build the IRT using the nnacl TC even when the pnacl TC is used otherwise. |
3273 if nacl_irt_env.Bit('target_mips32') or nacl_irt_env.Bit('target_x86_64'): | 3258 if nacl_irt_env.Bit('target_mips32') or nacl_irt_env.Bit('target_x86_64'): |
3274 nacl_irt_env.SetBits('bitcode') | 3259 nacl_irt_env.SetBits('bitcode') |
3275 else: | 3260 else: |
3276 nacl_irt_env.ClearBits('bitcode') | 3261 nacl_irt_env.ClearBits('bitcode') |
3277 nacl_irt_env.ClearBits('pnacl_generate_pexe') | 3262 nacl_irt_env.ClearBits('pnacl_generate_pexe') |
3278 nacl_irt_env.ClearBits('use_sandboxed_translator') | 3263 nacl_irt_env.ClearBits('use_sandboxed_translator') |
3279 nacl_irt_env.Tool('naclsdk') | 3264 nacl_irt_env.Tool('naclsdk') |
3280 # These are unfortunately clobbered by running Tool, which | 3265 # These are unfortunately clobbered by running Tool, which |
3281 # we needed to do to get the destination directory reset. | 3266 # we needed to do to get the destination directory reset. |
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3699 nacl_env.ValidateSdk() | 3684 nacl_env.ValidateSdk() |
3700 | 3685 |
3701 if BROKEN_TEST_COUNT > 0: | 3686 if BROKEN_TEST_COUNT > 0: |
3702 msg = "There are %d broken tests." % BROKEN_TEST_COUNT | 3687 msg = "There are %d broken tests." % BROKEN_TEST_COUNT |
3703 if GetOption('brief_comstr'): | 3688 if GetOption('brief_comstr'): |
3704 msg += " Add --verbose to the command line for more information." | 3689 msg += " Add --verbose to the command line for more information." |
3705 print msg | 3690 print msg |
3706 | 3691 |
3707 # separate warnings from actual build output | 3692 # separate warnings from actual build output |
3708 Banner('B U I L D - O U T P U T:') | 3693 Banner('B U I L D - O U T P U T:') |
OLD | NEW |