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

Side by Side Diff: site_scons/site_tools/naclsdk.py

Issue 6825060: Rename PNaCl (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client/
Patch Set: '' Created 9 years, 8 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
OLDNEW
1 #!/usr/bin/python2.4 1 #!/usr/bin/python2.4
2 # Copyright 2009, Google Inc. 2 # Copyright 2009, Google Inc.
3 # All rights reserved. 3 # All rights reserved.
4 # 4 #
5 # Redistribution and use in source and binary forms, with or without 5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions are 6 # modification, are permitted provided that the following conditions are
7 # met: 7 # met:
8 # 8 #
9 # * Redistributions of source code must retain the above copyright 9 # * Redistributions of source code must retain the above copyright
10 # notice, this list of conditions and the following disclaimer. 10 # notice, this list of conditions and the following disclaimer.
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 'x86': { 58 'x86': {
59 '32': ['win_x86'], 59 '32': ['win_x86'],
60 '64': ['win_x86'], 60 '64': ['win_x86'],
61 }, 61 },
62 }, 62 },
63 'linux': { 63 'linux': {
64 'x86': { 64 'x86': {
65 '32': ['linux_x86'], 65 '32': ['linux_x86'],
66 '64': ['linux_x86'], 66 '64': ['linux_x86'],
67 }, 67 },
68 'arm': {
69 '32': ['linux_arm-untrusted', 'linux_arm-trusted'],
70 },
71 }, 68 },
72 'mac': { 69 'mac': {
73 'x86': { 70 'x86': {
74 '32': ['mac_x86'], 71 '32': ['mac_x86'],
75 '64': ['mac_x86'], 72 '64': ['mac_x86'],
76 }, 73 },
77 'arm': {
78 # This entry is not actually correct, but it must be here
79 # for launching scons.
80 # TODO(pdox): Refactor this table so that pnacl is recognized
81 # as an x86 toolchain also, not just an ARM toolchain.
82 '32': ['linux_arm-untrusted'],
83 },
84
85 }, 74 },
86 } 75 }
87 76
88
89
90 def _PlatformSubdirs(env): 77 def _PlatformSubdirs(env):
91 platform = NACL_CANONICAL_PLATFORM_MAP[env['PLATFORM']] 78 if env.Bit('bitcode'):
92 arch = env['BUILD_ARCHITECTURE'] 79 import platform
93 subarch = env['TARGET_SUBARCH'] 80 name = 'pnacl_%s_%s' % (platform.system().lower(), platform.machine())
94 name = NACL_PLATFORM_DIR_MAP[platform][arch][subarch] 81 else:
82 platform = NACL_CANONICAL_PLATFORM_MAP[env['PLATFORM']]
83 arch = env['BUILD_ARCHITECTURE']
84 subarch = env['TARGET_SUBARCH']
85 name = NACL_PLATFORM_DIR_MAP[platform][arch][subarch]
95 return name 86 return name
96 87
97 88
98 def _GetNaclSdkRoot(env, sdk_mode): 89 def _GetNaclSdkRoot(env, sdk_mode):
99 """Return the path to the sdk. 90 """Return the path to the sdk.
100 91
101 Args: 92 Args:
102 env: The SCons environment in question. 93 env: The SCons environment in question.
103 sdk_mode: A string indicating which location to select the tools from. 94 sdk_mode: A string indicating which location to select the tools from.
104 Returns: 95 Returns:
(...skipping 11 matching lines...) Expand all
116 stdout=subprocess.PIPE).communicate()[0].replace('\n', '') 107 stdout=subprocess.PIPE).communicate()[0].replace('\n', '')
117 except WindowsError: 108 except WindowsError:
118 raise NotImplementedError( 109 raise NotImplementedError(
119 'Not able to decide where /usr/local/nacl-sdk is on this platform,' 110 'Not able to decide where /usr/local/nacl-sdk is on this platform,'
120 'use naclsdk_mode=custom:...') 111 'use naclsdk_mode=custom:...')
121 return path 112 return path
122 else: 113 else:
123 return '/usr/local/nacl-sdk' 114 return '/usr/local/nacl-sdk'
124 115
125 elif sdk_mode == 'download': 116 elif sdk_mode == 'download':
126 platforms = _PlatformSubdirs(env) 117 tcname = _PlatformSubdirs(env)
127 root = os.path.join(env['MAIN_DIR'], 'toolchain', platforms[-1]) 118 return os.path.join(env['MAIN_DIR'], 'toolchain', tcname)
128 return root
129
130 elif sdk_mode.startswith('custom:'): 119 elif sdk_mode.startswith('custom:'):
131 return os.path.abspath(sdk_mode[len('custom:'):]) 120 return os.path.abspath(sdk_mode[len('custom:'):])
132 121
133 elif sdk_mode == 'manual': 122 elif sdk_mode == 'manual':
134 return None 123 return None
135 124
136 else: 125 else:
137 raise Exception('Unknown sdk mode: %r' % sdk_mode) 126 raise Exception('Unknown sdk mode: %r' % sdk_mode)
138 127
139 128
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 '-g', 187 '-g',
199 '-fno-builtin', 188 '-fno-builtin',
200 '-fno-stack-protector', 189 '-fno-stack-protector',
201 '-fdiagnostics-show-option', 190 '-fdiagnostics-show-option',
202 '-pedantic', 191 '-pedantic',
203 '-D__linux__', 192 '-D__linux__',
204 ], 193 ],
205 ASFLAGS=[], 194 ASFLAGS=[],
206 ) 195 )
207 196
208 def _SetEnvForPnacl(env, arch): 197 def _SetEnvForPnacl(env, root):
198 arch = env['TARGET_FULLARCH']
209 assert arch in ['arm', 'x86-32', 'x86-64'] 199 assert arch in ['arm', 'x86-32', 'x86-64']
210 pnacl_sdk_root = '${MAIN_DIR}/toolchain/linux_arm-untrusted' 200
211 pnacl_sdk_lib = pnacl_sdk_root + '/libs-bitcode' 201 env['PNACL_ROOT'] = root
202 pnacl_sdk_lib = '${PNACL_ROOT}/libs-bitcode'
212 #TODO(robertm): remove NACL_SDK_INCLUDE ASAP 203 #TODO(robertm): remove NACL_SDK_INCLUDE ASAP
213 pnacl_sdk_include = (pnacl_sdk_root + 204 pnacl_sdk_include = '${PNACL_ROOT}/arm-newlib/arm-none-linux-gnueabi/include'
214 '/arm-newlib/arm-none-linux-gnueabi/include') 205 pnacl_sdk_ar = '${PNACL_ROOT}/bin/pnacl-ar'
215 pnacl_sdk_ar = (pnacl_sdk_root + '/bin/pnacl-ar') 206 pnacl_sdk_nm = '${PNACL_ROOT}/bin/pnacl-nm'
216 pnacl_sdk_nm = (pnacl_sdk_root + '/bin/pnacl-nm') 207 pnacl_sdk_ranlib = '${PNACL_ROOT}/bin/pnacl-ranlib'
217 pnacl_sdk_ranlib = (pnacl_sdk_root + '/bin/pnacl-ranlib')
218 208
219 pnacl_sdk_cc = (pnacl_sdk_root + '/bin/pnacl-gcc') 209 pnacl_sdk_cc = '${PNACL_ROOT}/bin/pnacl-gcc'
220 pnacl_sdk_cxx = (pnacl_sdk_root + '/bin/pnacl-g++') 210 pnacl_sdk_cxx = '${PNACL_ROOT}/bin/pnacl-g++'
221 pnacl_sdk_ld = (pnacl_sdk_root + '/bin/pnacl-ld') 211 pnacl_sdk_ld = '${PNACL_ROOT}/bin/pnacl-ld'
222 pnacl_sdk_disass = (pnacl_sdk_root + '/arm-none-linux-gnueabi' + 212 pnacl_sdk_disass = '${PNACL_ROOT}/bin/pnacl-dis'
223 '/bin/llvm-dis')
224 # NOTE: XXX_flags start with space for easy concatenation 213 # NOTE: XXX_flags start with space for easy concatenation
225 pnacl_sdk_cxx_flags = '' 214 pnacl_sdk_cxx_flags = ''
226 pnacl_sdk_cc_flags = ' -std=gnu99' 215 pnacl_sdk_cc_flags = ' -std=gnu99'
227 pnacl_sdk_cc_native_flags = ' -std=gnu99 -arch %s' % arch 216 pnacl_sdk_cc_native_flags = ' -std=gnu99 -arch %s' % arch
228 pnacl_sdk_ld_flags = ' -arch %s' % arch 217 pnacl_sdk_ld_flags = ' -arch %s' % arch
229 pnacl_sdk_ld_flags += ' ' + ' '.join(env['PNACL_BCLDFLAGS']) 218 pnacl_sdk_ld_flags += ' ' + ' '.join(env['PNACL_BCLDFLAGS'])
230 if env.Bit('nacl_pic'): 219 if env.Bit('nacl_pic'):
231 pnacl_sdk_cc_flags += ' -fPIC' 220 pnacl_sdk_cc_flags += ' -fPIC'
232 pnacl_sdk_cxx_flags += ' -fPIC' 221 pnacl_sdk_cxx_flags += ' -fPIC'
233 # NOTE: this is a special hack for the pnacl backend which 222 # NOTE: this is a special hack for the pnacl backend which
234 # does more than linking 223 # does more than linking
235 pnacl_sdk_ld_flags += ' -fPIC' 224 pnacl_sdk_ld_flags += ' -fPIC'
236 225
237 if env.Bit('use_sandboxed_translator'): 226 if env.Bit('use_sandboxed_translator'):
238 pnacl_sdk_ld_flags += ' --pnacl-sb' 227 pnacl_sdk_ld_flags += ' --pnacl-sb'
239 228
240 # TODO(pdox): Remove the dependency on the gcc toolchain here. 229 # TODO(pdox): Remove PNaCl's dependency on the gcc toolchain here.
241 nacl_gcc_root = os.path.join('${MAIN_DIR}', 230 platform = NACL_CANONICAL_PLATFORM_MAP[env['PLATFORM']]
242 'toolchain', 231 nnacl_root = os.path.join(env['MAIN_DIR'], 'toolchain', '%s_x86' % platform)
243 _PlatformSubdirs(env)[0]) 232
244 cc_other_map = { 233 cc_other_map = {
245 'arm': pnacl_sdk_cc + pnacl_sdk_cc_native_flags, 234 'arm': pnacl_sdk_cc + pnacl_sdk_cc_native_flags,
246 'x86-32': os.path.join(nacl_gcc_root, 'bin', 'nacl-gcc'), 235 'x86-32': os.path.join(nnacl_root, 'bin', 'nacl-gcc'),
247 'x86-64': os.path.join(nacl_gcc_root, 'bin', 'nacl64-gcc'), 236 'x86-64': os.path.join(nnacl_root, 'bin', 'nacl64-gcc'),
248 } 237 }
249 238
250 env.Replace(# Replace header and lib paths. 239 env.Replace(# Replace header and lib paths.
251 NACL_SDK_INCLUDE=pnacl_sdk_include, 240 NACL_SDK_INCLUDE=pnacl_sdk_include,
252 NACL_SDK_LIB=pnacl_sdk_lib, 241 NACL_SDK_LIB=pnacl_sdk_lib,
253 # Replace the normal unix tools with the PNaCl ones. 242 # Replace the normal unix tools with the PNaCl ones.
254 CC=pnacl_sdk_cc + pnacl_sdk_cc_flags, 243 CC=pnacl_sdk_cc + pnacl_sdk_cc_flags,
255 CXX=pnacl_sdk_cxx + pnacl_sdk_cxx_flags, 244 CXX=pnacl_sdk_cxx + pnacl_sdk_cxx_flags,
256 # NOTE: only in bitcode compilation scenarios where 245 # NOTE: only in bitcode compilation scenarios where
257 # CC compiles to bitcode and 246 # CC compiles to bitcode and
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 379
391 # Get root of the SDK. 380 # Get root of the SDK.
392 root = _GetNaclSdkRoot(env, sdk_mode) 381 root = _GetNaclSdkRoot(env, sdk_mode)
393 382
394 # Determine where to get the SDK from. 383 # Determine where to get the SDK from.
395 if sdk_mode == 'manual': 384 if sdk_mode == 'manual':
396 _SetEnvForSdkManually(env) 385 _SetEnvForSdkManually(env)
397 else: 386 else:
398 # if bitcode=1 use pnacl toolchain 387 # if bitcode=1 use pnacl toolchain
399 if env.Bit('bitcode'): 388 if env.Bit('bitcode'):
400 _SetEnvForPnacl(env, env['TARGET_FULLARCH']) 389 _SetEnvForPnacl(env, root)
401 elif env.Bit('target_x86'): 390 elif env.Bit('target_x86'):
402 _SetEnvForX86Sdk(env, root) 391 _SetEnvForX86Sdk(env, root)
403 else: 392 else:
404 print "ERROR: unknown TARGET_ARCHITECTURE: ", env['TARGET_ARCHITECTURE'] 393 print "ERROR: unknown TARGET_ARCHITECTURE: ", env['TARGET_ARCHITECTURE']
405 assert 0 394 assert 0
406 395
407 env.Prepend(LIBPATH='${NACL_SDK_LIB}') 396 env.Prepend(LIBPATH='${NACL_SDK_LIB}')
OLDNEW
« no previous file with comments | « buildbot/buildbot_toolchain_arm_untrusted.sh ('k') | src/trusted/validator_arm/testdata/compile_tests.sh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698