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

Side by Side Diff: SConstruct

Issue 758223003: Cleanup: Use Bit('build_ARCH') instead of Bit('target_ARCH') (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: Fix + simplify Created 6 years 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 | site_scons/site_tools/library_deps.py » ('j') | no next file with comments »
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 1001 matching lines...) Expand 10 before | Expand all | Expand 10 after
1012 # 1012 #
1013 1013
1014 DeclareBit('build_x86_32', 'Building binaries for the x86-32 architecture', 1014 DeclareBit('build_x86_32', 'Building binaries for the x86-32 architecture',
1015 exclusive_groups='build_arch') 1015 exclusive_groups='build_arch')
1016 DeclareBit('build_x86_64', 'Building binaries for the x86-64 architecture', 1016 DeclareBit('build_x86_64', 'Building binaries for the x86-64 architecture',
1017 exclusive_groups='build_arch') 1017 exclusive_groups='build_arch')
1018 DeclareBit('build_mips32', 'Building binaries for the MIPS architecture', 1018 DeclareBit('build_mips32', 'Building binaries for the MIPS architecture',
1019 exclusive_groups='build_arch') 1019 exclusive_groups='build_arch')
1020 DeclareBit('build_arm_arm', 'Building binaries for the ARM architecture', 1020 DeclareBit('build_arm_arm', 'Building binaries for the ARM architecture',
1021 exclusive_groups='build_arch') 1021 exclusive_groups='build_arch')
1022 DeclareBit('target_x86_32', 'Tools being built will process x86-32 binaries',
1023 exclusive_groups='target_arch')
1024 DeclareBit('target_x86_64', 'Tools being built will process x86-36 binaries',
1025 exclusive_groups='target_arch')
1026 DeclareBit('target_mips32', 'Tools being built will process MIPS binaries',
1027 exclusive_groups='target_arch')
1028 DeclareBit('target_arm_arm', 'Tools being built will process ARM binaries',
1029 exclusive_groups='target_arch')
1030 1022
1031 # Shorthand for either the 32 or 64 bit version of x86. 1023 # Shorthand for either the 32 or 64 bit version of x86.
1032 DeclareBit('build_x86', 'Building binaries for the x86 architecture') 1024 DeclareBit('build_x86', 'Building binaries for the x86 architecture')
1033 DeclareBit('target_x86', 'Tools being built will process x86 binaries')
1034 1025
1035 DeclareBit('build_arm', 'Building binaries for the arm architecture') 1026 DeclareBit('build_arm', 'Building binaries for the arm architecture')
1036 DeclareBit('target_arm', 'Tools being built will process arm binaries')
1037 1027
1038 1028
1039 def MakeArchSpecificEnv(platform=None): 1029 def MakeArchSpecificEnv(platform=None):
1040 env = pre_base_env.Clone() 1030 env = pre_base_env.Clone()
1041 if platform is None: 1031 if platform is None:
1042 platform = GetTargetPlatform() 1032 platform = GetTargetPlatform()
1043 1033
1044 arch = pynacl.platform.GetArch(platform) 1034 arch = pynacl.platform.GetArch(platform)
1045 if pynacl.platform.IsArch64Bit(platform): 1035 if pynacl.platform.IsArch64Bit(platform):
1046 subarch = '64' 1036 subarch = '64'
1047 else: 1037 else:
1048 subarch = '32' 1038 subarch = '32'
1049 1039
1050 env.Replace(BUILD_FULLARCH=platform) 1040 env.Replace(BUILD_FULLARCH=platform)
1051 env.Replace(BUILD_ARCHITECTURE=arch) 1041 env.Replace(BUILD_ARCHITECTURE=arch)
1052 env.Replace(BUILD_SUBARCH=subarch) 1042 env.Replace(BUILD_SUBARCH=subarch)
1053 env.Replace(TARGET_FULLARCH=platform) 1043 env.Replace(TARGET_FULLARCH=platform)
1054 env.Replace(TARGET_ARCHITECTURE=arch) 1044 env.Replace(TARGET_ARCHITECTURE=arch)
1055 env.Replace(TARGET_SUBARCH=subarch) 1045 env.Replace(TARGET_SUBARCH=subarch)
1056 1046
1057 # Example: PlatformBit('build', 'x86-32') -> build_x86_32 1047 env.SetBits('build_%s' % platform.replace('-', '_'))
1058 def PlatformBit(prefix, platform):
1059 return "%s_%s" % (prefix, platform.replace('-', '_'))
1060
1061 env.SetBits(PlatformBit('build', platform))
1062 env.SetBits(PlatformBit('target', platform))
1063 1048
1064 if env.Bit('build_x86_32') or env.Bit('build_x86_64'): 1049 if env.Bit('build_x86_32') or env.Bit('build_x86_64'):
1065 env.SetBits('build_x86') 1050 env.SetBits('build_x86')
1066 if env.Bit('build_arm_arm'): 1051 if env.Bit('build_arm_arm'):
1067 env.SetBits('build_arm') 1052 env.SetBits('build_arm')
1068 1053
1069 if env.Bit('target_x86_32') or env.Bit('target_x86_64'):
1070 env.SetBits('target_x86')
1071 if env.Bit('target_arm_arm'):
1072 env.SetBits('target_arm')
1073
1074 env.Replace(BUILD_ISA_NAME=platform) 1054 env.Replace(BUILD_ISA_NAME=platform)
1075 1055
1076 if env.Bit('target_mips32'): 1056 if env.Bit('build_mips32'):
1077 # This is a silent default on MIPS. 1057 # This is a silent default on MIPS.
1078 env.SetBits('bitcode') 1058 env.SetBits('bitcode')
1079 1059
1080 # Determine where the object files go 1060 # Determine where the object files go
1081 env.Replace(BUILD_TARGET_NAME=platform) 1061 env.Replace(BUILD_TARGET_NAME=platform)
1082 # This may be changed later; see target_variant_map, below. 1062 # This may be changed later; see target_variant_map, below.
1083 env.Replace(TARGET_VARIANT='') 1063 env.Replace(TARGET_VARIANT='')
1084 env.Replace(TARGET_ROOT= 1064 env.Replace(TARGET_ROOT=
1085 '${DESTINATION_ROOT}/${BUILD_TYPE}-${BUILD_TARGET_NAME}${TARGET_VARIANT}') 1065 '${DESTINATION_ROOT}/${BUILD_TYPE}-${BUILD_TARGET_NAME}${TARGET_VARIANT}')
1086 return env 1066 return env
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
1474 # The dynamic linker's ability to receive arguments over IPC at 1454 # The dynamic linker's ability to receive arguments over IPC at
1475 # startup currently requires it to reject the plugin's first 1455 # startup currently requires it to reject the plugin's first
1476 # connection, but this interferes with the sel_universal-based 1456 # connection, but this interferes with the sel_universal-based
1477 # testing because sel_universal does not retry the connection. 1457 # testing because sel_universal does not retry the connection.
1478 # TODO(mseaborn): Fix by retrying the connection or by adding an 1458 # TODO(mseaborn): Fix by retrying the connection or by adding an
1479 # option to ld.so to disable its argv-over-IPC feature. 1459 # option to ld.so to disable its argv-over-IPC feature.
1480 if env.Bit('nacl_glibc') and not env.Bit('nacl_static_link'): 1460 if env.Bit('nacl_glibc') and not env.Bit('nacl_static_link'):
1481 return [] 1461 return []
1482 1462
1483 # TODO(petarj): Sel_universal hangs on qemu-mips. Enable when fixed. 1463 # TODO(petarj): Sel_universal hangs on qemu-mips. Enable when fixed.
1484 if env.Bit('target_mips32') and env.UsingEmulator(): 1464 if env.Bit('build_mips32') and env.UsingEmulator():
1485 return [] 1465 return []
1486 1466
1487 if sel_universal_flags is None: 1467 if sel_universal_flags is None:
1488 sel_universal_flags = [] 1468 sel_universal_flags = []
1489 1469
1490 # When run under qemu, sel_universal must sneak in qemu to the execv 1470 # When run under qemu, sel_universal must sneak in qemu to the execv
1491 # call that spawns sel_ldr. 1471 # call that spawns sel_ldr.
1492 if env.UsingEmulator(): 1472 if env.UsingEmulator():
1493 sel_universal_flags.append('--command_prefix') 1473 sel_universal_flags.append('--command_prefix')
1494 sel_universal_flags.append(env.GetEmulator()) 1474 sel_universal_flags.append(env.GetEmulator())
(...skipping 704 matching lines...) Expand 10 before | Expand all | Expand 10 after
2199 # See http://code.google.com/p/nativeclient/issues/detail?id=1987 2179 # See http://code.google.com/p/nativeclient/issues/detail?id=1987
2200 gtest_env.FilterOut(LINKFLAGS=['-static']) 2180 gtest_env.FilterOut(LINKFLAGS=['-static'])
2201 2181
2202 gtest_env.Prepend(LIBS=['gtest']) 2182 gtest_env.Prepend(LIBS=['gtest'])
2203 return gtest_env 2183 return gtest_env
2204 2184
2205 pre_base_env.AddMethod(MakeGTestEnv) 2185 pre_base_env.AddMethod(MakeGTestEnv)
2206 2186
2207 def MakeUntrustedNativeEnv(env): 2187 def MakeUntrustedNativeEnv(env):
2208 native_env = nacl_env.Clone() 2188 native_env = nacl_env.Clone()
2209 if native_env.Bit('bitcode') and not native_env.Bit('target_mips32'): 2189 if native_env.Bit('bitcode') and not native_env.Bit('build_mips32'):
2210 native_env = native_env.PNaClGetNNaClEnv() 2190 native_env = native_env.PNaClGetNNaClEnv()
2211 return native_env 2191 return native_env
2212 2192
2213 pre_base_env.AddMethod(MakeUntrustedNativeEnv) 2193 pre_base_env.AddMethod(MakeUntrustedNativeEnv)
2214 2194
2215 def MakeBaseTrustedEnv(platform=None): 2195 def MakeBaseTrustedEnv(platform=None):
2216 base_env = MakeArchSpecificEnv(platform) 2196 base_env = MakeArchSpecificEnv(platform)
2217 base_env.Append( 2197 base_env.Append(
2218 IS_BUILD_ENV = False, 2198 IS_BUILD_ENV = False,
2219 BUILD_SUBTYPE = '', 2199 BUILD_SUBTYPE = '',
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
2282 'tests/unittests/trusted/bits/build.scons', 2262 'tests/unittests/trusted/bits/build.scons',
2283 'tests/unittests/trusted/platform_qualify/build.scons', 2263 'tests/unittests/trusted/platform_qualify/build.scons',
2284 'tests/unittests/trusted/service_runtime/build.scons', 2264 'tests/unittests/trusted/service_runtime/build.scons',
2285 'toolchain_build/build.scons', 2265 'toolchain_build/build.scons',
2286 ]) 2266 ])
2287 2267
2288 base_env.AddMethod(SDKInstallBin) 2268 base_env.AddMethod(SDKInstallBin)
2289 2269
2290 # The ARM and MIPS validators can be built for any target that doesn't use 2270 # The ARM and MIPS validators can be built for any target that doesn't use
2291 # ELFCLASS64. 2271 # ELFCLASS64.
2292 if not base_env.Bit('target_x86_64'): 2272 if not base_env.Bit('build_x86_64'):
2293 base_env.Append( 2273 base_env.Append(
2294 BUILD_SCONSCRIPTS = [ 2274 BUILD_SCONSCRIPTS = [
2295 'src/trusted/validator_mips/build.scons', 2275 'src/trusted/validator_mips/build.scons',
2296 ]) 2276 ])
2297 2277
2298 base_env.AddChromeFilesFromGroup('trusted_scons_files') 2278 base_env.AddChromeFilesFromGroup('trusted_scons_files')
2299 2279
2300 base_env.Replace( 2280 base_env.Replace(
2301 NACL_BUILD_FAMILY = 'TRUSTED', 2281 NACL_BUILD_FAMILY = 'TRUSTED',
2302 ) 2282 )
(...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after
2886 return linux_env 2866 return linux_env
2887 2867
2888 (linux_debug_env, linux_optimized_env) = \ 2868 (linux_debug_env, linux_optimized_env) = \
2889 GenerateOptimizationLevels(MakeTrustedLinuxEnv()) 2869 GenerateOptimizationLevels(MakeTrustedLinuxEnv())
2890 2870
2891 2871
2892 def BiasedBitcodeFlags(env): 2872 def BiasedBitcodeFlags(env):
2893 """ Return clang flags to use biased bitcode and generate native-ABI-compliant 2873 """ Return clang flags to use biased bitcode and generate native-ABI-compliant
2894 code. Does not imply pre-translation. 2874 code. Does not imply pre-translation.
2895 """ 2875 """
2896 if env.Bit('target_x86_32'): 2876 if env.Bit('build_x86_32'):
2897 return ['--target=i686-unknown-nacl'] 2877 return ['--target=i686-unknown-nacl']
2898 if env.Bit('target_x86_64'): 2878 if env.Bit('build_x86_64'):
2899 return ['--target=x86_64-unknown-nacl'] 2879 return ['--target=x86_64-unknown-nacl']
2900 if env.Bit('target_arm'): 2880 if env.Bit('build_arm'):
2901 return ['--target=armv7-unknown-nacl-gnueabihf', '-mfloat-abi=hard'] 2881 return ['--target=armv7-unknown-nacl-gnueabihf', '-mfloat-abi=hard']
2902 if env.Bit('target_mips32'): 2882 if env.Bit('build_mips32'):
2903 return [] 2883 return []
2904 raise UserError('No known target bits set') 2884 raise UserError('No known target bits set')
2905 2885
2906 pre_base_env.AddMethod(BiasedBitcodeFlags) 2886 pre_base_env.AddMethod(BiasedBitcodeFlags)
2907 2887
2908 # Do this before the site_scons/site_tools/naclsdk.py stuff to pass it along. 2888 # Do this before the site_scons/site_tools/naclsdk.py stuff to pass it along.
2909 pre_base_env.Append( 2889 pre_base_env.Append(
2910 PNACL_BCLDFLAGS = ARGUMENTS.get('pnacl_bcldflags', '').split(':')) 2890 PNACL_BCLDFLAGS = ARGUMENTS.get('pnacl_bcldflags', '').split(':'))
2911 2891
2912 2892
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
2984 PTHREAD_LIBS = ['pthread_private'], 2964 PTHREAD_LIBS = ['pthread_private'],
2985 DYNCODE_LIBS = ['nacl_dyncode_private'], 2965 DYNCODE_LIBS = ['nacl_dyncode_private'],
2986 EXCEPTION_LIBS = ['nacl_exception_private'], 2966 EXCEPTION_LIBS = ['nacl_exception_private'],
2987 LIST_MAPPINGS_LIBS = ['nacl_list_mappings_private'], 2967 LIST_MAPPINGS_LIBS = ['nacl_list_mappings_private'],
2988 RANDOM_LIBS = ['nacl_random_private'], 2968 RANDOM_LIBS = ['nacl_random_private'],
2989 ) 2969 )
2990 2970
2991 def UsesAbiNote(env): 2971 def UsesAbiNote(env):
2992 """Return True if using a new-style GCC with .note.NaCl.ABI.* notes. 2972 """Return True if using a new-style GCC with .note.NaCl.ABI.* notes.
2993 This means there will always be an RODATA segment, even if just for the note.""" 2973 This means there will always be an RODATA segment, even if just for the note."""
2994 return env.Bit('target_arm') and not env.Bit('bitcode') 2974 return env.Bit('build_arm') and not env.Bit('bitcode')
2995 2975
2996 nacl_env.AddMethod(UsesAbiNote) 2976 nacl_env.AddMethod(UsesAbiNote)
2997 2977
2998 def UnderWindowsCoverage(env): 2978 def UnderWindowsCoverage(env):
2999 """Return True if using running on coverage under windows.""" 2979 """Return True if using running on coverage under windows."""
3000 if 'TRUSTED_ENV' not in env: 2980 if 'TRUSTED_ENV' not in env:
3001 return False 2981 return False
3002 return env['TRUSTED_ENV'].Bit('coverage_enabled') and env.Bit('host_windows') 2982 return env['TRUSTED_ENV'].Bit('coverage_enabled') and env.Bit('host_windows')
3003 2983
3004 nacl_env.AddMethod(UnderWindowsCoverage) 2984 nacl_env.AddMethod(UnderWindowsCoverage)
(...skipping 30 matching lines...) Expand all
3035 # For each architecture, we only attempt to make our inline 3015 # For each architecture, we only attempt to make our inline
3036 # assembly code work with one untrusted-code toolchain. For x86, 3016 # assembly code work with one untrusted-code toolchain. For x86,
3037 # we target GCC, but not PNaCl/Clang, because the latter's 3017 # we target GCC, but not PNaCl/Clang, because the latter's
3038 # assembly support has various quirks that we don't want to have 3018 # assembly support has various quirks that we don't want to have
3039 # to debug. For ARM, we target PNaCl/Clang, because that is the 3019 # to debug. For ARM, we target PNaCl/Clang, because that is the
3040 # only current ARM toolchain. One day, we will have an ARM GCC 3020 # only current ARM toolchain. One day, we will have an ARM GCC
3041 # toolchain, and we will no longer need to use inline assembly 3021 # toolchain, and we will no longer need to use inline assembly
3042 # with PNaCl/Clang at all. 3022 # with PNaCl/Clang at all.
3043 # 3023 #
3044 # For Non-SFI NaCl we use inline assembly in PNaCl/Clang. 3024 # For Non-SFI NaCl we use inline assembly in PNaCl/Clang.
3045 if not (env.Bit('target_arm') or env.Bit('target_mips32') 3025 if not (env.Bit('build_arm') or env.Bit('build_mips32')
3046 or env.Bit('nonsfi_nacl')): 3026 or env.Bit('nonsfi_nacl')):
3047 return False 3027 return False
3048 # Inline assembly does not work in pexes. 3028 # Inline assembly does not work in pexes.
3049 if env.Bit('pnacl_generate_pexe'): 3029 if env.Bit('pnacl_generate_pexe'):
3050 return False 3030 return False
3051 env.AddBiasForPNaCl() 3031 env.AddBiasForPNaCl()
3052 env.PNaClForceNative() 3032 env.PNaClForceNative()
3053 3033
3054 if env.Bit('target_x86_32'): 3034 if env.Bit('build_x86_32'):
3055 env.AppendUnique(CCFLAGS=['--target=i686-unknown-nacl']) 3035 env.AppendUnique(CCFLAGS=['--target=i686-unknown-nacl'])
3056 elif env.Bit('target_x86_64'): 3036 elif env.Bit('build_x86_64'):
3057 env.AppendUnique(CCFLAGS=['--target=x86_64-unknown-nacl']) 3037 env.AppendUnique(CCFLAGS=['--target=x86_64-unknown-nacl'])
3058 elif env.Bit('target_arm'): 3038 elif env.Bit('build_arm'):
3059 env.AppendUnique(CCFLAGS=['--target=armv7a-unknown-nacl-gnueabihf', 3039 env.AppendUnique(CCFLAGS=['--target=armv7a-unknown-nacl-gnueabihf',
3060 '-mfloat-abi=hard']) 3040 '-mfloat-abi=hard'])
3061 return True 3041 return True
3062 3042
3063 nacl_env.AddMethod(AllowInlineAssembly) 3043 nacl_env.AddMethod(AllowInlineAssembly)
3064 3044
3065 3045
3066 # TODO(mseaborn): Enable this unconditionally once the C code on the 3046 # TODO(mseaborn): Enable this unconditionally once the C code on the
3067 # Chromium side compiles successfully with this warning. 3047 # Chromium side compiles successfully with this warning.
3068 if not enable_chrome: 3048 if not enable_chrome:
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
3236 # See http://code.google.com/p/nativeclient/issues/detail?id=1298 3216 # See http://code.google.com/p/nativeclient/issues/detail?id=1298
3237 def GetLinkerScriptBaseName(env): 3217 def GetLinkerScriptBaseName(env):
3238 if env.Bit('build_x86_64'): 3218 if env.Bit('build_x86_64'):
3239 return 'elf_x86_64_nacl' 3219 return 'elf_x86_64_nacl'
3240 else: 3220 else:
3241 return 'elf_i386_nacl' 3221 return 'elf_i386_nacl'
3242 3222
3243 if (nacl_env.Bit('nacl_glibc') and 3223 if (nacl_env.Bit('nacl_glibc') and
3244 nacl_env.Bit('nacl_static_link')): 3224 nacl_env.Bit('nacl_static_link')):
3245 nacl_env.Append(LINKFLAGS=['-static']) 3225 nacl_env.Append(LINKFLAGS=['-static'])
3246 if nacl_env.Bit('target_x86'): 3226 if nacl_env.Bit('build_x86'):
3247 # The "-lc" is necessary because libgcc_eh depends on libc but for 3227 # The "-lc" is necessary because libgcc_eh depends on libc but for
3248 # some reason nacl-gcc is not linking with "--start-group/--end-group". 3228 # some reason nacl-gcc is not linking with "--start-group/--end-group".
3249 nacl_env.Append(LINKFLAGS=[ 3229 nacl_env.Append(LINKFLAGS=[
3250 '-T', 'ldscripts/%s.x.static' % GetLinkerScriptBaseName(nacl_env), 3230 '-T', 'ldscripts/%s.x.static' % GetLinkerScriptBaseName(nacl_env),
3251 '-lc']) 3231 '-lc'])
3252 3232
3253 if nacl_env.Bit('running_on_valgrind'): 3233 if nacl_env.Bit('running_on_valgrind'):
3254 nacl_env.Append(CCFLAGS = ['-g', '-Wno-overlength-strings', 3234 nacl_env.Append(CCFLAGS = ['-g', '-Wno-overlength-strings',
3255 '-fno-optimize-sibling-calls'], 3235 '-fno-optimize-sibling-calls'],
3256 CPPDEFINES = [['DYNAMIC_ANNOTATIONS_ENABLED', '1' ], 3236 CPPDEFINES = [['DYNAMIC_ANNOTATIONS_ENABLED', '1' ],
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
3520 # We have to reinstantiate the naclsdk.py magic after clearing those flags, 3500 # We have to reinstantiate the naclsdk.py magic after clearing those flags,
3521 # so it regenerates the tool paths right. 3501 # so it regenerates the tool paths right.
3522 # TODO(mcgrathr,bradnelson): could get cleaner if naclsdk.py got folded back in. 3502 # TODO(mcgrathr,bradnelson): could get cleaner if naclsdk.py got folded back in.
3523 nacl_irt_env.ClearBits('nacl_glibc') 3503 nacl_irt_env.ClearBits('nacl_glibc')
3524 nacl_irt_env.ClearBits('nacl_pic') 3504 nacl_irt_env.ClearBits('nacl_pic')
3525 # The choice of toolchain used to build the IRT does not depend on the toolchain 3505 # The choice of toolchain used to build the IRT does not depend on the toolchain
3526 # used to build user/test code. The PNaCl toolchain is used on x86, except on 3506 # used to build user/test code. The PNaCl toolchain is used on x86, except on
3527 # Windows (because pnacl-clang doesn't run on Windows XP. If we stop supporting 3507 # Windows (because pnacl-clang doesn't run on Windows XP. If we stop supporting
3528 # building on XP, we can remove this exception). See 3508 # building on XP, we can remove this exception). See
3529 # https://code.google.com/p/nativeclient/issues/detail?id=3936 3509 # https://code.google.com/p/nativeclient/issues/detail?id=3936
3530 if (nacl_irt_env.Bit('target_mips32') or nacl_irt_env.Bit('target_x86_64') or 3510 if (nacl_irt_env.Bit('build_mips32') or nacl_irt_env.Bit('build_x86_64') or
3531 (nacl_irt_env.Bit('target_x86_32') and 3511 (nacl_irt_env.Bit('build_x86_32') and
3532 not nacl_irt_env.Bit('host_windows'))): 3512 not nacl_irt_env.Bit('host_windows'))):
3533 nacl_irt_env.SetBits('bitcode') 3513 nacl_irt_env.SetBits('bitcode')
3534 else: 3514 else:
3535 nacl_irt_env.ClearBits('bitcode') 3515 nacl_irt_env.ClearBits('bitcode')
3536 nacl_irt_env.ClearBits('pnacl_generate_pexe') 3516 nacl_irt_env.ClearBits('pnacl_generate_pexe')
3537 nacl_irt_env.ClearBits('use_sandboxed_translator') 3517 nacl_irt_env.ClearBits('use_sandboxed_translator')
3538 nacl_irt_env.Tool('naclsdk') 3518 nacl_irt_env.Tool('naclsdk')
3539 # These are unfortunately clobbered by running Tool, which 3519 # These are unfortunately clobbered by running Tool, which
3540 # we needed to do to get the destination directory reset. 3520 # we needed to do to get the destination directory reset.
3541 # We want all the same values from nacl_env. 3521 # We want all the same values from nacl_env.
3542 nacl_irt_env.Replace(EXTRA_CFLAGS=nacl_env['EXTRA_CFLAGS'], 3522 nacl_irt_env.Replace(EXTRA_CFLAGS=nacl_env['EXTRA_CFLAGS'],
3543 EXTRA_CXXFLAGS=nacl_env['EXTRA_CXXFLAGS'], 3523 EXTRA_CXXFLAGS=nacl_env['EXTRA_CXXFLAGS'],
3544 CCFLAGS=nacl_env['CCFLAGS'], 3524 CCFLAGS=nacl_env['CCFLAGS'],
3545 CFLAGS=nacl_env['CFLAGS'], 3525 CFLAGS=nacl_env['CFLAGS'],
3546 CXXFLAGS=nacl_env['CXXFLAGS']) 3526 CXXFLAGS=nacl_env['CXXFLAGS'])
3547 FixWindowsAssembler(nacl_irt_env) 3527 FixWindowsAssembler(nacl_irt_env)
3548 # Make it find the libraries it builds, rather than the SDK ones. 3528 # Make it find the libraries it builds, rather than the SDK ones.
3549 nacl_irt_env.Replace(LIBPATH='${LIB_DIR}') 3529 nacl_irt_env.Replace(LIBPATH='${LIB_DIR}')
3550 3530
3551 if nacl_irt_env.Bit('bitcode'): 3531 if nacl_irt_env.Bit('bitcode'):
3552 if nacl_irt_env.Bit('target_x86_64'): 3532 if nacl_irt_env.Bit('build_x86_64'):
3553 nacl_irt_env.Append(CCFLAGS=['--target=x86_64-unknown-nacl']) 3533 nacl_irt_env.Append(CCFLAGS=['--target=x86_64-unknown-nacl'])
3554 nacl_irt_env.Append(LINKFLAGS=['--target=x86_64-unknown-nacl', 3534 nacl_irt_env.Append(LINKFLAGS=['--target=x86_64-unknown-nacl',
3555 '--pnacl-allow-translate', 3535 '--pnacl-allow-translate',
3556 '-arch', 'x86-64']) 3536 '-arch', 'x86-64'])
3557 elif nacl_irt_env.Bit('target_x86_32'): 3537 elif nacl_irt_env.Bit('build_x86_32'):
3558 nacl_irt_env.Append(CCFLAGS=['--target=i686-unknown-nacl']) 3538 nacl_irt_env.Append(CCFLAGS=['--target=i686-unknown-nacl'])
3559 # X86-32 IRT needs to be callable with an under-aligned stack, so we disable 3539 # X86-32 IRT needs to be callable with an under-aligned stack, so we disable
3560 # SSE instructions, which can fault on misaligned addresses: see 3540 # SSE instructions, which can fault on misaligned addresses: see
3561 # https://code.google.com/p/nativeclient/issues/detail?id=3935 3541 # https://code.google.com/p/nativeclient/issues/detail?id=3935
3562 nacl_irt_env.Append(LINKFLAGS=['--target=i686-unknown-nacl', 3542 nacl_irt_env.Append(LINKFLAGS=['--target=i686-unknown-nacl',
3563 '--pnacl-allow-translate', 3543 '--pnacl-allow-translate',
3564 '-arch', 'x86-32', 3544 '-arch', 'x86-32',
3565 '-Wt,-mattr=-sse']) 3545 '-Wt,-mattr=-sse'])
3566 elif nacl_irt_env.Bit('target_mips32'): 3546 elif nacl_irt_env.Bit('build_mips32'):
3567 # Disable the PNaCl IRT verifier since it will complain about 3547 # Disable the PNaCl IRT verifier since it will complain about
3568 # __executable_start symbol not being a valid external symbol. 3548 # __executable_start symbol not being a valid external symbol.
3569 nacl_irt_env.Append(LINKFLAGS=['--pnacl-disable-abi-check']) 3549 nacl_irt_env.Append(LINKFLAGS=['--pnacl-disable-abi-check'])
3570 3550
3571 # The IRT is C only, don't link with the C++ linker so that it doesn't 3551 # The IRT is C only, don't link with the C++ linker so that it doesn't
3572 # start depending on the C++ standard library and (in the case of 3552 # start depending on the C++ standard library and (in the case of
3573 # libc++) pthread. 3553 # libc++) pthread.
3574 nacl_irt_env.Replace(LINK=(nacl_irt_env['LINK']. 3554 nacl_irt_env.Replace(LINK=(nacl_irt_env['LINK'].
3575 replace('pnacl-clang++', 'pnacl-clang'))) 3555 replace('pnacl-clang++', 'pnacl-clang')))
3576 3556
3577 if nacl_irt_env.Bit('bitcode'): 3557 if nacl_irt_env.Bit('bitcode'):
3578 nacl_irt_env.Append(LINKFLAGS=['--pnacl-allow-native']) 3558 nacl_irt_env.Append(LINKFLAGS=['--pnacl-allow-native'])
3579 3559
3580 # All IRT code must avoid direct use of the TLS ABI register, which 3560 # All IRT code must avoid direct use of the TLS ABI register, which
3581 # is reserved for user TLS. Instead, ensure all TLS accesses use a 3561 # is reserved for user TLS. Instead, ensure all TLS accesses use a
3582 # call to __nacl_read_tp, which the IRT code overrides to segregate 3562 # call to __nacl_read_tp, which the IRT code overrides to segregate
3583 # IRT-private TLS from user TLS. This only applies to mips now, on 3563 # IRT-private TLS from user TLS. This only applies to mips now, on
3584 # other platforms we modify the TLS register through tls_edit as a 3564 # other platforms we modify the TLS register through tls_edit as a
3585 # post process. 3565 # post process.
3586 if nacl_irt_env.Bit('target_mips32'): 3566 if nacl_irt_env.Bit('build_mips32'):
3587 nacl_irt_env.Append(LINKFLAGS=['-Wt,-mtls-use-call']) 3567 nacl_irt_env.Append(LINKFLAGS=['-Wt,-mtls-use-call'])
3588 3568
3589 # TODO(mcgrathr): Clean up uses of these methods. 3569 # TODO(mcgrathr): Clean up uses of these methods.
3590 def AddLibraryDummy(env, nodes): 3570 def AddLibraryDummy(env, nodes):
3591 return nodes 3571 return nodes
3592 nacl_irt_env.AddMethod(AddLibraryDummy, 'AddLibraryToSdk') 3572 nacl_irt_env.AddMethod(AddLibraryDummy, 'AddLibraryToSdk')
3593 3573
3594 def AddObjectInternal(env, nodes): 3574 def AddObjectInternal(env, nodes):
3595 return env.Replicate('${LIB_DIR}', nodes) 3575 return env.Replicate('${LIB_DIR}', nodes)
3596 nacl_env.AddMethod(AddObjectInternal, 'AddObjectToSdk') 3576 nacl_env.AddMethod(AddObjectInternal, 'AddObjectToSdk')
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
3654 # We want to do this for nacl_env when not under --nacl_glibc, 3634 # We want to do this for nacl_env when not under --nacl_glibc,
3655 # but for nacl_irt_env whether or not under --nacl_glibc, so 3635 # but for nacl_irt_env whether or not under --nacl_glibc, so
3656 # we do it separately for each after making nacl_irt_env and 3636 # we do it separately for each after making nacl_irt_env and
3657 # clearing its Bit('nacl_glibc'). 3637 # clearing its Bit('nacl_glibc').
3658 def AddImplicitLibs(env): 3638 def AddImplicitLibs(env):
3659 implicit_libs = [] 3639 implicit_libs = []
3660 3640
3661 # Require the pnacl_irt_shim for pnacl x86-64 and arm. 3641 # Require the pnacl_irt_shim for pnacl x86-64 and arm.
3662 # Use -B to have the compiler look for the fresh libpnacl_irt_shim.a. 3642 # Use -B to have the compiler look for the fresh libpnacl_irt_shim.a.
3663 if ( env.Bit('bitcode') and 3643 if ( env.Bit('bitcode') and
3664 (env.Bit('target_x86_64') or env.Bit('target_arm')) 3644 (env.Bit('build_x86_64') or env.Bit('build_arm'))
3665 and env['NACL_BUILD_FAMILY'] != 'UNTRUSTED_IRT'): 3645 and env['NACL_BUILD_FAMILY'] != 'UNTRUSTED_IRT'):
3666 # Note: without this hack ibpnacl_irt_shim.a will be deleted 3646 # Note: without this hack ibpnacl_irt_shim.a will be deleted
3667 # when "built_elsewhere=1" 3647 # when "built_elsewhere=1"
3668 # Since we force the build in a previous step the dependency 3648 # Since we force the build in a previous step the dependency
3669 # is not really needed. 3649 # is not really needed.
3670 # Note: the "precious" mechanism did not work in this case 3650 # Note: the "precious" mechanism did not work in this case
3671 if not env.Bit('built_elsewhere'): 3651 if not env.Bit('built_elsewhere'):
3672 if env.Bit('enable_chrome_side'): 3652 if env.Bit('enable_chrome_side'):
3673 implicit_libs += ['libpnacl_irt_shim.a'] 3653 implicit_libs += ['libpnacl_irt_shim.a']
3674 3654
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after
4063 nacl_env.ValidateSdk() 4043 nacl_env.ValidateSdk()
4064 4044
4065 if BROKEN_TEST_COUNT > 0: 4045 if BROKEN_TEST_COUNT > 0:
4066 msg = "There are %d broken tests." % BROKEN_TEST_COUNT 4046 msg = "There are %d broken tests." % BROKEN_TEST_COUNT
4067 if GetOption('brief_comstr'): 4047 if GetOption('brief_comstr'):
4068 msg += " Add --verbose to the command line for more information." 4048 msg += " Add --verbose to the command line for more information."
4069 print msg 4049 print msg
4070 4050
4071 # separate warnings from actual build output 4051 # separate warnings from actual build output
4072 Banner('B U I L D - O U T P U T:') 4052 Banner('B U I L D - O U T P U T:')
OLDNEW
« no previous file with comments | « no previous file | site_scons/site_tools/library_deps.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698