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

Side by Side Diff: SConstruct

Issue 12459004: Adjust pnacl-translate sbtc flag override mechanism to append. (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: do cpu check Created 7 years, 9 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 | pnacl/driver/driver_tools.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 os 7 import os
8 import platform 8 import platform
9 import re 9 import re
10 import subprocess 10 import subprocess
(...skipping 1089 matching lines...) Expand 10 before | Expand all | Expand 10 after
1100 # (arch, subarch) pair 1100 # (arch, subarch) pair
1101 AVAILABLE_PLATFORMS = { 1101 AVAILABLE_PLATFORMS = {
1102 'x86-32' : { 'arch' : 'x86' , 'subarch' : '32' }, 1102 'x86-32' : { 'arch' : 'x86' , 'subarch' : '32' },
1103 'x86-64' : { 'arch' : 'x86' , 'subarch' : '64' }, 1103 'x86-64' : { 'arch' : 'x86' , 'subarch' : '64' },
1104 'mips32' : { 'arch' : 'mips', 'subarch' : '32' }, 1104 'mips32' : { 'arch' : 'mips', 'subarch' : '32' },
1105 'arm' : { 'arch' : 'arm' , 'subarch' : '32' }, 1105 'arm' : { 'arch' : 'arm' , 'subarch' : '32' },
1106 'arm-thumb2' : { 'arch' : 'arm' , 'subarch' : '32' } 1106 'arm-thumb2' : { 'arch' : 'arm' , 'subarch' : '32' }
1107 } 1107 }
1108 1108
1109 # Look up the platform name from the command line arguments. 1109 # Look up the platform name from the command line arguments.
1110 def GetPlatform(): 1110 def GetPlatform(self):
1111 return ARGUMENTS.get('platform', 'x86-32') 1111 return ARGUMENTS.get('platform', 'x86-32')
1112 1112
1113 pre_base_env.AddMethod(GetPlatform)
1113 1114
1114 # Decode platform into list [ ARCHITECTURE , EXEC_MODE ]. 1115 # Decode platform into list [ ARCHITECTURE , EXEC_MODE ].
1115 def DecodePlatform(platform): 1116 def DecodePlatform(platform):
1116 if platform in AVAILABLE_PLATFORMS: 1117 if platform in AVAILABLE_PLATFORMS:
1117 return AVAILABLE_PLATFORMS[platform] 1118 return AVAILABLE_PLATFORMS[platform]
1118 raise Exception('Unrecognized platform: %s' % platform) 1119 raise Exception('Unrecognized platform: %s' % platform)
1119 1120
1120 1121
1121 DeclareBit('build_x86_32', 'Building binaries for the x86-32 architecture', 1122 DeclareBit('build_x86_32', 'Building binaries for the x86-32 architecture',
1122 exclusive_groups='build_arch') 1123 exclusive_groups='build_arch')
(...skipping 22 matching lines...) Expand all
1145 DeclareBit('build_x86', 'Building binaries for the x86 architecture') 1146 DeclareBit('build_x86', 'Building binaries for the x86 architecture')
1146 DeclareBit('target_x86', 'Tools being built will process x86 binaries') 1147 DeclareBit('target_x86', 'Tools being built will process x86 binaries')
1147 1148
1148 # Shorthand for either arm or thumb2 versions of ARM 1149 # Shorthand for either arm or thumb2 versions of ARM
1149 DeclareBit('build_arm', 'Building binaries for the arm architecture') 1150 DeclareBit('build_arm', 'Building binaries for the arm architecture')
1150 DeclareBit('target_arm', 'Tools being built will process arm binaries') 1151 DeclareBit('target_arm', 'Tools being built will process arm binaries')
1151 1152
1152 1153
1153 def MakeArchSpecificEnv(): 1154 def MakeArchSpecificEnv():
1154 env = pre_base_env.Clone() 1155 env = pre_base_env.Clone()
1155 platform = GetPlatform() 1156 platform = env.GetPlatform()
1156 info = DecodePlatform(platform) 1157 info = DecodePlatform(platform)
1157 1158
1158 env.Replace(BUILD_FULLARCH=platform) 1159 env.Replace(BUILD_FULLARCH=platform)
1159 env.Replace(BUILD_ARCHITECTURE=info['arch']) 1160 env.Replace(BUILD_ARCHITECTURE=info['arch'])
1160 env.Replace(BUILD_SUBARCH=info['subarch']) 1161 env.Replace(BUILD_SUBARCH=info['subarch'])
1161 env.Replace(TARGET_FULLARCH=platform) 1162 env.Replace(TARGET_FULLARCH=platform)
1162 env.Replace(TARGET_ARCHITECTURE=info['arch']) 1163 env.Replace(TARGET_ARCHITECTURE=info['arch'])
1163 env.Replace(TARGET_SUBARCH=info['subarch']) 1164 env.Replace(TARGET_SUBARCH=info['subarch'])
1164 1165
1165 # Example: PlatformBit('build', 'x86-32') -> build_x86_32 1166 # Example: PlatformBit('build', 'x86-32') -> build_x86_32
1166 def PlatformBit(prefix, platform): 1167 def PlatformBit(prefix, platform):
1167 return "%s_%s" % (prefix, platform.replace('-', '_')) 1168 return "%s_%s" % (prefix, platform.replace('-', '_'))
1168 1169
1169 env.SetBits(PlatformBit('build', platform)) 1170 env.SetBits(PlatformBit('build', platform))
1170 env.SetBits(PlatformBit('target', platform)) 1171 env.SetBits(PlatformBit('target', platform))
1171 1172
1172 if env.Bit('build_x86_32') or env.Bit('build_x86_64'): 1173 if env.Bit('build_x86_32') or env.Bit('build_x86_64'):
1173 env.SetBits('build_x86') 1174 env.SetBits('build_x86')
1174 if env.Bit('build_arm_arm') or env.Bit('build_arm_thumb2'): 1175 if env.Bit('build_arm_arm') or env.Bit('build_arm_thumb2'):
1175 env.SetBits('build_arm') 1176 env.SetBits('build_arm')
1176 1177
1177 if env.Bit('target_x86_32') or env.Bit('target_x86_64'): 1178 if env.Bit('target_x86_32') or env.Bit('target_x86_64'):
1178 env.SetBits('target_x86') 1179 env.SetBits('target_x86')
1179 if env.Bit('target_arm_arm') or env.Bit('target_arm_thumb2'): 1180 if env.Bit('target_arm_arm') or env.Bit('target_arm_thumb2'):
1180 env.SetBits('target_arm') 1181 env.SetBits('target_arm')
1181 1182
1182 env.Replace(BUILD_ISA_NAME=GetPlatform()) 1183 env.Replace(BUILD_ISA_NAME=env.GetPlatform())
1183 1184
1184 if env.Bit('target_arm') or env.Bit('target_mips32'): 1185 if env.Bit('target_arm') or env.Bit('target_mips32'):
1185 if not env.Bit('native_code'): 1186 if not env.Bit('native_code'):
1186 # This is a silent default on ARM and MIPS. 1187 # This is a silent default on ARM and MIPS.
1187 env.SetBits('bitcode') 1188 env.SetBits('bitcode')
1188 1189
1189 # If it's not bitcode, it's native code. 1190 # If it's not bitcode, it's native code.
1190 if not env.Bit('bitcode'): 1191 if not env.Bit('bitcode'):
1191 env.SetBits('native_code') 1192 env.SetBits('native_code')
1192 1193
(...skipping 1533 matching lines...) Expand 10 before | Expand all | Expand 10 after
2726 elif linux_env.Bit('build_x86_64'): 2727 elif linux_env.Bit('build_x86_64'):
2727 linux_env.Prepend( 2728 linux_env.Prepend(
2728 CCFLAGS = ['-m64'], 2729 CCFLAGS = ['-m64'],
2729 LINKFLAGS = ['-m64'], 2730 LINKFLAGS = ['-m64'],
2730 ) 2731 )
2731 elif linux_env.Bit('build_arm'): 2732 elif linux_env.Bit('build_arm'):
2732 SetupLinuxEnvArm(linux_env) 2733 SetupLinuxEnvArm(linux_env)
2733 elif linux_env.Bit('build_mips32'): 2734 elif linux_env.Bit('build_mips32'):
2734 SetupLinuxEnvMips(linux_env) 2735 SetupLinuxEnvMips(linux_env)
2735 else: 2736 else:
2736 Banner('Strange platform: %s' % GetPlatform()) 2737 Banner('Strange platform: %s' % env.GetPlatform())
2737 2738
2738 # These are desireable options for every Linux platform: 2739 # These are desireable options for every Linux platform:
2739 # _FORTIFY_SOURCE: general paranoia "hardening" option for library functions 2740 # _FORTIFY_SOURCE: general paranoia "hardening" option for library functions
2740 # -fPIE/-pie: create a position-independent executable 2741 # -fPIE/-pie: create a position-independent executable
2741 # relro/now: "hardening" options for linking 2742 # relro/now: "hardening" options for linking
2742 # noexecstack: ensure that the executable does not get a PT_GNU_STACK 2743 # noexecstack: ensure that the executable does not get a PT_GNU_STACK
2743 # header that causes the kernel to set the READ_IMPLIES_EXEC 2744 # header that causes the kernel to set the READ_IMPLIES_EXEC
2744 # personality flag, which disables NX page protection. 2745 # personality flag, which disables NX page protection.
2745 linux_env.Prepend( 2746 linux_env.Prepend(
2746 CPPDEFINES=[['-D_FORTIFY_SOURCE', '2']], 2747 CPPDEFINES=[['-D_FORTIFY_SOURCE', '2']],
(...skipping 737 matching lines...) Expand 10 before | Expand all | Expand 10 after
3484 # The ComponentProgram method (site_scons/site_tools/component_builders.py) 3485 # The ComponentProgram method (site_scons/site_tools/component_builders.py)
3485 # adds dependencies on env['IMPLICIT_LIBS'] if that's set. 3486 # adds dependencies on env['IMPLICIT_LIBS'] if that's set.
3486 if env.Bit('bitcode'): 3487 if env.Bit('bitcode'):
3487 implicit_libs += ['libnacl.a'] 3488 implicit_libs += ['libnacl.a']
3488 else: 3489 else:
3489 implicit_libs += ['crt1.o', 3490 implicit_libs += ['crt1.o',
3490 'libnacl.a', 3491 'libnacl.a',
3491 'crti.o', 3492 'crti.o',
3492 'crtn.o'] 3493 'crtn.o']
3493 # TODO(mcgrathr): multilib nonsense defeats -B! figure out a better way. 3494 # TODO(mcgrathr): multilib nonsense defeats -B! figure out a better way.
3494 if GetPlatform() == 'x86-32': 3495 if env.GetPlatform() == 'x86-32':
3495 implicit_libs.append(os.path.join('32', 'crt1.o')) 3496 implicit_libs.append(os.path.join('32', 'crt1.o'))
3496 3497
3497 if implicit_libs != []: 3498 if implicit_libs != []:
3498 env['IMPLICIT_LIBS'] = [env.File(os.path.join('${LIB_DIR}', file)) 3499 env['IMPLICIT_LIBS'] = [env.File(os.path.join('${LIB_DIR}', file))
3499 for file in implicit_libs] 3500 for file in implicit_libs]
3500 # The -B<dir>/ flag is necessary to tell gcc to look for crt[1in].o there. 3501 # The -B<dir>/ flag is necessary to tell gcc to look for crt[1in].o there.
3501 env.Prepend(LINKFLAGS=['-B${LIB_DIR}/']) 3502 env.Prepend(LINKFLAGS=['-B${LIB_DIR}/'])
3502 3503
3503 AddImplicitLibs(nacl_env) 3504 AddImplicitLibs(nacl_env)
3504 AddImplicitLibs(nacl_irt_env) 3505 AddImplicitLibs(nacl_irt_env)
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
3771 nacl_env.ValidateSdk() 3772 nacl_env.ValidateSdk()
3772 3773
3773 if BROKEN_TEST_COUNT > 0: 3774 if BROKEN_TEST_COUNT > 0:
3774 msg = "There are %d broken tests." % BROKEN_TEST_COUNT 3775 msg = "There are %d broken tests." % BROKEN_TEST_COUNT
3775 if GetOption('brief_comstr'): 3776 if GetOption('brief_comstr'):
3776 msg += " Add --verbose to the command line for more information." 3777 msg += " Add --verbose to the command line for more information."
3777 print msg 3778 print msg
3778 3779
3779 # separate warnings from actual build output 3780 # separate warnings from actual build output
3780 Banner('B U I L D - O U T P U T:') 3781 Banner('B U I L D - O U T P U T:')
OLDNEW
« no previous file with comments | « no previous file | pnacl/driver/driver_tools.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698