Index: native_client_sdk/src/build_tools/build_sdk.py |
diff --git a/native_client_sdk/src/build_tools/build_sdk.py b/native_client_sdk/src/build_tools/build_sdk.py |
index 1bc4ebf3c051870456c93288d2ea20bcd3518ed9..17112423a9aa9f6379a077b81f36134ff8090545 100755 |
--- a/native_client_sdk/src/build_tools/build_sdk.py |
+++ b/native_client_sdk/src/build_tools/build_sdk.py |
@@ -75,9 +75,9 @@ TOOLCHAIN_PACKAGE_MAP = { |
def GetToolchainNaClInclude(tcname, tcpath, arch): |
if arch == 'x86': |
- if tcname == 'pnacl': |
- return os.path.join(tcpath, 'le32-nacl', 'include') |
return os.path.join(tcpath, 'x86_64-nacl', 'include') |
+ elif arch == 'pnacl': |
+ return os.path.join(tcpath, 'le32-nacl', 'include') |
elif arch == 'arm': |
return os.path.join(tcpath, 'arm-nacl', 'include') |
else: |
@@ -85,7 +85,7 @@ def GetToolchainNaClInclude(tcname, tcpath, arch): |
def GetConfigDir(arch): |
- if arch == 'x64' and getos.GetPlatform() == 'win': |
+ if arch.endswith('x64') and getos.GetPlatform() == 'win': |
return 'Release_x64' |
else: |
return 'Release' |
@@ -106,8 +106,13 @@ def GetGypBuiltLib(tcname, arch): |
lib_suffix = '' |
if tcname == 'pnacl': |
- tcname = 'pnacl_newlib' |
- arch = 'x64' |
+ print arch |
binji
2015/02/20 18:34:23
remove?
|
+ if arch is None: |
+ arch = 'x64' |
+ tcname = 'pnacl_newlib' |
+ else: |
+ arch = 'clang-' + arch |
+ tcname = 'newlib' |
return os.path.join(GetNinjaOutDir(arch), |
'gen', |
@@ -116,14 +121,14 @@ def GetGypBuiltLib(tcname, arch): |
def GetToolchainNaClLib(tcname, tcpath, arch): |
- if tcname == 'pnacl': |
- return os.path.join(tcpath, 'le32-nacl', 'lib') |
- elif arch == 'ia32': |
+ if arch == 'ia32': |
return os.path.join(tcpath, 'x86_64-nacl', 'lib32') |
elif arch == 'x64': |
return os.path.join(tcpath, 'x86_64-nacl', 'lib') |
elif arch == 'arm': |
return os.path.join(tcpath, 'arm-nacl', 'lib') |
+ elif tcname == 'pnacl': |
+ return os.path.join(tcpath, 'le32-nacl', 'lib') |
def GetToolchainDirName(tcname, arch): |
@@ -326,8 +331,8 @@ def InstallFiles(src_root, dest_root, file_list): |
def InstallNaClHeaders(tc_dst_inc, tc_name): |
"""Copies NaCl headers to expected locations in the toolchain.""" |
- if tc_name == 'arm': |
- # arm toolchain header should be the same as the x86 newlib |
+ if tc_name in ('arm', 'pnacl'): |
+ # arm and pnacl toolchain headers should be the same as the newlib |
# ones |
tc_name = 'newlib' |
@@ -443,14 +448,13 @@ def GypNinjaInstall(pepperdir, toolchains): |
for tc in set(toolchains) & set(['newlib', 'glibc', 'pnacl']): |
if tc == 'pnacl': |
- xarches = (None,) |
+ xarches = (None, 'ia32', 'x64') |
bradn
2015/02/17 20:21:48
why isn't arm in here?
I thought it now works for
Sam Clegg
2015/02/17 20:31:12
See my other comment.
|
+ elif tc == 'glibc': |
+ xarches = ('ia32', 'x64') |
else: |
xarches = ('arm', 'ia32', 'x64') |
for xarch in xarches: |
- if tc == 'glibc' and xarch == 'arm': |
- continue |
- |
src_dir = GetGypBuiltLib(tc, xarch) |
dst_dir = GetOutputToolchainLib(pepperdir, tc, xarch) |
InstallFiles(src_dir, dst_dir, TOOLCHAIN_LIBS[tc]) |
@@ -481,9 +485,16 @@ def GypNinjaBuild_NaCl(rel_out_dir): |
out_dir_32 = MakeNinjaRelPath(rel_out_dir + '-ia32') |
out_dir_64 = MakeNinjaRelPath(rel_out_dir + '-x64') |
out_dir_arm = MakeNinjaRelPath(rel_out_dir + '-arm') |
+ out_dir_clang_32 = MakeNinjaRelPath(rel_out_dir + '-clang-ia32') |
+ out_dir_clang_64 = MakeNinjaRelPath(rel_out_dir + '-clang-x64') |
+ |
GypNinjaBuild('ia32', gyp_py, nacl_core_sdk_gyp, 'nacl_core_sdk', out_dir_32) |
- GypNinjaBuild('arm', gyp_py, nacl_core_sdk_gyp, 'nacl_core_sdk', out_dir_arm) |
GypNinjaBuild('x64', gyp_py, nacl_core_sdk_gyp, 'nacl_core_sdk', out_dir_64) |
+ GypNinjaBuild('ia32', gyp_py, nacl_core_sdk_gyp, 'nacl_core_sdk', |
+ out_dir_clang_32, gyp_defines=['use_nacl_clang=1']) |
+ GypNinjaBuild('x64', gyp_py, nacl_core_sdk_gyp, 'nacl_core_sdk', |
+ out_dir_clang_64, gyp_defines=['use_nacl_clang=1']) |
+ GypNinjaBuild('arm', gyp_py, nacl_core_sdk_gyp, 'nacl_core_sdk', out_dir_arm) |
GypNinjaBuild('x64', gyp_py, all_gyp, 'ncval_new', out_dir_64) |
@@ -500,12 +511,13 @@ def GypNinjaBuild_Breakpad(rel_out_dir): |
GypNinjaBuild('x64', gyp_py, gyp_file, build_list, out_dir) |
-def GypNinjaBuild_PPAPI(arch, rel_out_dir): |
+def GypNinjaBuild_PPAPI(arch, rel_out_dir, gyp_defines=None): |
gyp_py = os.path.join(SRC_DIR, 'build', 'gyp_chromium') |
out_dir = MakeNinjaRelPath(rel_out_dir) |
gyp_file = os.path.join(SRC_DIR, 'ppapi', 'native_client', |
'native_client.gyp') |
- GypNinjaBuild(arch, gyp_py, gyp_file, 'ppapi_lib', out_dir) |
+ GypNinjaBuild(arch, gyp_py, gyp_file, 'ppapi_lib', out_dir, |
+ gyp_defines=gyp_defines) |
def GypNinjaBuild_Pnacl(rel_out_dir, target_arch): |
@@ -521,17 +533,20 @@ def GypNinjaBuild_Pnacl(rel_out_dir, target_arch): |
GypNinjaBuild(target_arch, gyp_py, gyp_file, targets, out_dir) |
-def GypNinjaBuild(arch, gyp_py_script, gyp_file, targets, out_dir): |
+def GypNinjaBuild(arch, gyp_py_script, gyp_file, targets, |
+ out_dir, force_arm_gcc=True, gyp_defines=None): |
binji
2015/02/20 18:34:23
force_arm_gcc is never used...?
|
gyp_env = dict(os.environ) |
gyp_env['GYP_GENERATORS'] = 'ninja' |
- gyp_defines = ['nacl_allow_thin_archives=0'] |
+ gyp_defines = gyp_defines or [] |
+ gyp_defines.append('nacl_allow_thin_archives=0') |
if options.mac_sdk: |
gyp_defines.append('mac_sdk=%s' % options.mac_sdk) |
+ |
if arch is not None: |
gyp_defines.append('target_arch=%s' % arch) |
if arch == 'arm': |
gyp_env['GYP_CROSSCOMPILE'] = '1' |
- gyp_defines += ['arm_float_abi=hard'] |
+ gyp_defines.append('arm_float_abi=hard') |
if options.no_arm_trusted: |
gyp_defines.append('disable_cross_trusted=1') |
if getos.GetPlatform() == 'mac': |
@@ -545,7 +560,7 @@ def GypNinjaBuild(arch, gyp_py_script, gyp_file, targets, out_dir): |
# Print relevant environment variables |
for key, value in gyp_env.iteritems(): |
if key.startswith('GYP') or key in ('CC',): |
- print '%s="%s"' % (key, value) |
+ print ' %s="%s"' % (key, value) |
buildbot_common.Run( |
[sys.executable, gyp_py_script, gyp_file, '--depth=.'], |
@@ -581,6 +596,11 @@ def BuildStepBuildToolchains(pepperdir, toolchains, build, clean): |
GypNinjaBuild_PPAPI('arm', GYPBUILD_DIR + '-arm') |
if 'pnacl' in toolchains: |
+ GypNinjaBuild_PPAPI('ia32', GYPBUILD_DIR + '-clang-ia32', |
+ ['use_nacl_clang=1']) |
+ GypNinjaBuild_PPAPI('x64', GYPBUILD_DIR + '-clang-x64', |
+ ['use_nacl_clang=1']) |
bradn
2015/02/17 20:21:47
arm?
Sam Clegg
2015/02/17 20:31:12
When I started this change there was no arm suppor
|
+ |
# NOTE: For ia32, gyp builds both x86-32 and x86-64 by default. |
for arch in ('ia32', 'arm'): |
# Fill in the latest native pnacl shim library from the chrome build. |
@@ -596,6 +616,7 @@ def BuildStepBuildToolchains(pepperdir, toolchains, build, clean): |
pnacldir = os.path.join(pepperdir, 'toolchain', platform + '_pnacl') |
bionicdir = os.path.join(pepperdir, 'toolchain', platform + '_arm_bionic') |
+ |
if 'newlib' in toolchains: |
InstallNaClHeaders(GetToolchainNaClInclude('newlib', newlibdir, 'x86'), |
'newlib') |
@@ -637,8 +658,10 @@ def BuildStepBuildToolchains(pepperdir, toolchains, build, clean): |
os.path.join(release_build_dir, 'libpnacl_irt_shim.a'), |
pnacl_translator_lib_dir) |
+ InstallNaClHeaders(GetToolchainNaClInclude('pnacl', pnacldir, 'pnacl'), |
+ 'pnacl') |
bradn
2015/02/17 20:21:48
Why do these both have pnacl on the end?
Sam Clegg
2015/02/17 20:31:12
See NACL_HEADER_MAP.
In both cases the set of hea
|
InstallNaClHeaders(GetToolchainNaClInclude('pnacl', pnacldir, 'x86'), |
- 'newlib') |
+ 'pnacl') |
def MakeDirectoryOrClobber(pepperdir, dirname, clobber): |
@@ -732,6 +755,7 @@ def BuildStepVerifyFilelist(pepperdir): |
buildbot_common.BuildStep('Verify SDK Files') |
file_list_path = os.path.join(SCRIPT_DIR, 'sdk_files.list') |
try: |
+ print 'SDK directory: %s' % pepperdir |
verify_filelist.Verify(file_list_path, pepperdir) |
print 'OK' |
except verify_filelist.ParseException, e: |
@@ -984,7 +1008,7 @@ def main(args): |
# NOTE: order matters here. This will be the order that is specified in the |
# Makefiles; the first toolchain will be the default. |
- toolchains = ['pnacl', 'newlib', 'glibc', 'arm', 'host'] |
+ toolchains = ['pnacl', 'newlib', 'glibc', 'arm', 'clang-newlib', 'host'] |
# Changes for experimental bionic builder |
if options.bionic: |