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

Side by Side Diff: toolchain_build/toolchain_build_pnacl.py

Issue 1608263003: Revert of [PNaCl toolchain] Stop building and using custom libc++ for OSX hosts (Closed) Base URL: https://chromium.googlesource.com/native_client/src/native_client.git@master
Patch Set: Created 4 years, 11 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # Copyright (c) 2013 The Native Client Authors. All rights reserved. 2 # Copyright (c) 2013 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 """Recipes for PNaCl toolchain packages. 6 """Recipes for PNaCl toolchain packages.
7 7
8 Recipes consist of specially-structured dictionaries, with keys for package 8 Recipes consist of specially-structured dictionaries, with keys for package
9 name, type, commands to execute, etc. The structure is documented in the 9 name, type, commands to execute, etc. The structure is documented in the
10 PackageBuilder docstring in toolchain_main.py. 10 PackageBuilder docstring in toolchain_main.py.
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 deps = [] 265 deps = []
266 if TripleIsWindows(host): 266 if TripleIsWindows(host):
267 result['LDFLAGS'] += ['-L%(abs_libdl)s', '-ldl'] 267 result['LDFLAGS'] += ['-L%(abs_libdl)s', '-ldl']
268 result['CFLAGS'] += ['-isystem','%(abs_libdl)s'] 268 result['CFLAGS'] += ['-isystem','%(abs_libdl)s']
269 result['CXXFLAGS'] += ['-isystem', '%(abs_libdl)s'] 269 result['CXXFLAGS'] += ['-isystem', '%(abs_libdl)s']
270 deps.append('libdl') 270 deps.append('libdl')
271 else: 271 else:
272 if TripleIsLinux(host) and not TripleIsX8664(host): 272 if TripleIsLinux(host) and not TripleIsX8664(host):
273 # Chrome clang defaults to 64-bit builds, even when run on 32-bit Linux. 273 # Chrome clang defaults to 64-bit builds, even when run on 32-bit Linux.
274 extra_cc_flags += ['-m32'] 274 extra_cc_flags += ['-m32']
275 if not opts.gcc and host != 'le32-nacl': 275 if opts.gcc or host == 'le32-nacl':
276 # On mac and linux, use libc++ instead of libstdc++ (which is too old on 276 result['CFLAGS'] += extra_cc_flags
277 # Ubuntu Precise and any OSX to build LLVM) 277 result['CXXFLAGS'] += extra_cc_flags
278 result['CXXFLAGS'] += ['-stdlib=libc++'] 278 else:
279 if TripleIsLinux(host): 279 result['CFLAGS'] += extra_cc_flags
280 # Use our own libc++ on Linux. 280 result['LDFLAGS'] += ['-L%(' + FlavoredName('abs_libcxx',
281 # TODO(dschuff): Get the Chrome clang maintainers to build libc++ for
282 # Linux too and use that.
283 result['CXXFLAGS'] += ['-I%(' + FlavoredName('abs_libcxx', host, opts) +
284 ')s/include/c++/v1']
285 result['LDFLAGS'] += ['-L%(' + FlavoredName('abs_libcxx',
286 host, opts) + ')s/lib'] 281 host, opts) + ')s/lib']
287 deps.append(FlavoredName('libcxx', host, opts)) 282 result['CXXFLAGS'] += ([
288 283 '-stdlib=libc++',
289 result['CFLAGS'] += extra_cc_flags 284 '-I%(' + FlavoredName('abs_libcxx', host, opts) + ')s/include/c++/v1'] +
290 result['CXXFLAGS'] += extra_cc_flags 285 extra_cc_flags)
291 286 deps.append(FlavoredName('libcxx', host, opts))
292 return result, deps 287 return result, deps
293 288
294 289
295 def ConfigureHostArchFlags(host, extra_cflags, options, extra_configure=None, 290 def ConfigureHostArchFlags(host, extra_cflags, options, extra_configure=None,
296 use_afl_fuzz=False): 291 use_afl_fuzz=False):
297 """Return flags passed to LLVM and binutils configure for compilers and 292 """Return flags passed to LLVM and binutils configure for compilers and
298 compile flags. 293 compile flags.
299 294
300 Returns the tuple (flags, inputs, deps) where 'flags' is a list of 295 Returns the tuple (flags, inputs, deps) where 'flags' is a list of
301 arguments to configure, 'inputs' is a dict of extra inputs to be hashed, 296 arguments to configure, 'inputs' is a dict of extra inputs to be hashed,
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
570 'type': 'source', 565 'type': 'source',
571 'output_dirname': 'llvm-test-suite', 566 'output_dirname': 'llvm-test-suite',
572 'commands': GetGitSyncCmds('llvm-test-suite'), 567 'commands': GetGitSyncCmds('llvm-test-suite'),
573 }, 568 },
574 } 569 }
575 return sources 570 return sources
576 571
577 572
578 def CopyHostLibcxxForLLVMBuild(host, dest, options): 573 def CopyHostLibcxxForLLVMBuild(host, dest, options):
579 """Copy libc++ to the working directory for build tools.""" 574 """Copy libc++ to the working directory for build tools."""
580 if options.gcc or not TripleIsLinux(host): 575 if options.gcc:
581 return [] 576 return []
582 libname = 'libc++.so.1' 577 if TripleIsLinux(host):
578 libname = 'libc++.so.1'
579 elif TripleIsMac(host):
580 libname = 'libc++.1.dylib'
581 else:
582 return []
583 return [command.Mkdir(dest, parents=True), 583 return [command.Mkdir(dest, parents=True),
584 command.Copy('%(' + 584 command.Copy('%(' +
585 FlavoredName('abs_libcxx', host, options) +')s/lib/' + 585 FlavoredName('abs_libcxx', host, options) +')s/lib/' +
586 libname, os.path.join(dest, libname))] 586 libname, os.path.join(dest, libname))]
587 587
588 def CreateSymLinksToDirectToNaClTools(host): 588 def CreateSymLinksToDirectToNaClTools(host):
589 if host == 'le32-nacl': 589 if host == 'le32-nacl':
590 return [] 590 return []
591 return ( 591 return (
592 [command.Command(['ln', '-f', 592 [command.Command(['ln', '-f',
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
624 '-Wall', '-O3', '-fomit-frame-pointer']), 624 '-Wall', '-O3', '-fomit-frame-pointer']),
625 command.Command([ar, 'cru', 625 command.Command([ar, 'cru',
626 'libdl.a', 'dlfcn.o']), 626 'libdl.a', 'dlfcn.o']),
627 command.Copy('libdl.a', 627 command.Copy('libdl.a',
628 os.path.join('%(output)s', 'libdl.a')), 628 os.path.join('%(output)s', 'libdl.a')),
629 command.Copy(os.path.join('src', 'dlfcn.h'), 629 command.Copy(os.path.join('src', 'dlfcn.h'),
630 os.path.join('%(output)s', 'dlfcn.h')), 630 os.path.join('%(output)s', 'dlfcn.h')),
631 ], 631 ],
632 }, 632 },
633 }) 633 })
634 elif TripleIsLinux(host) and not options.gcc: 634 elif not options.gcc:
635 # Our Libc++ is only needed for Precise and only tested with clang. 635 # Libc++ is only tested with the clang build
636 libcxx_host_arch_flags, libcxx_inputs = LibCxxHostArchFlags(host) 636 libcxx_host_arch_flags, libcxx_inputs = LibCxxHostArchFlags(host)
637 libs.update({ 637 libs.update({
638 H('libcxx'): { 638 H('libcxx'): {
639 'dependencies': ['libcxx_src', 'libcxxabi_src'], 639 'dependencies': ['libcxx_src', 'libcxxabi_src'],
640 'type': 'build', 640 'type': 'build',
641 'inputs': libcxx_inputs, 641 'inputs': libcxx_inputs,
642 'commands': [ 642 'commands': [
643 command.SkipForIncrementalCommand([ 643 command.SkipForIncrementalCommand([
644 'cmake', '-G', 'Unix Makefiles'] + 644 'cmake', '-G', 'Unix Makefiles'] +
645 libcxx_host_arch_flags + 645 libcxx_host_arch_flags +
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
943 for t in [H('llvm'), H('binutils_pnacl'), H('binutils_x86')]] + [ 943 for t in [H('llvm'), H('binutils_pnacl'), H('binutils_x86')]] + [
944 command.Runnable( 944 command.Runnable(
945 None, pnacl_commands.InstallDriverScripts, 945 None, pnacl_commands.InstallDriverScripts,
946 '%(driver)s', os.path.join('%(output)s', 'bin'), 946 '%(driver)s', os.path.join('%(output)s', 'bin'),
947 host_windows=TripleIsWindows(host) or TripleIsCygWin(host), 947 host_windows=TripleIsWindows(host) or TripleIsCygWin(host),
948 host_64bit=TripleIsX8664(host)) 948 host_64bit=TripleIsX8664(host))
949 ] 949 ]
950 }, 950 },
951 } 951 }
952 952
953 if TripleIsWindows(host) or TripleIsLinux(host) and not options.gcc: 953 if TripleIsWindows(host) or not options.gcc:
954 host_lib = 'libdl' if TripleIsWindows(host) else H('libcxx') 954 host_lib = 'libdl' if TripleIsWindows(host) else H('libcxx')
955 compiler['target_lib_compiler']['dependencies'].append(host_lib) 955 compiler['target_lib_compiler']['dependencies'].append(host_lib)
956 compiler['target_lib_compiler']['commands'].append( 956 compiler['target_lib_compiler']['commands'].append(
957 command.CopyRecursive('%(' + host_lib + ')s', '%(output)s')) 957 command.CopyRecursive('%(' + host_lib + ')s', '%(output)s'))
958 return compiler 958 return compiler
959 959
960 960
961 def Metadata(revisions, is_canonical): 961 def Metadata(revisions, is_canonical):
962 data = { 962 data = {
963 'metadata': { 963 'metadata': {
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
1191 # package_version, we still need to output the 32-bit version of the host 1191 # package_version, we still need to output the 32-bit version of the host
1192 # packages on that bot. 1192 # packages on that bot.
1193 ('linux', pynacl.platform.GetArch3264())): 1193 ('linux', pynacl.platform.GetArch3264())):
1194 triple = pynacl.platform.PlatformTriple(os_name, arch) 1194 triple = pynacl.platform.PlatformTriple(os_name, arch)
1195 legal_triple = pynacl.gsd_storage.LegalizeName(triple) 1195 legal_triple = pynacl.gsd_storage.LegalizeName(triple)
1196 host_packages.setdefault(os_name, []).extend( 1196 host_packages.setdefault(os_name, []).extend(
1197 ['binutils_pnacl_%s' % legal_triple, 1197 ['binutils_pnacl_%s' % legal_triple,
1198 'binutils_x86_%s' % legal_triple, 1198 'binutils_x86_%s' % legal_triple,
1199 'llvm_%s' % legal_triple, 1199 'llvm_%s' % legal_triple,
1200 'driver_%s' % legal_triple]) 1200 'driver_%s' % legal_triple])
1201 if os_name == 'linux': 1201 if os_name != 'win':
1202 host_packages[os_name].append('libcxx_%s' % legal_triple) 1202 host_packages[os_name].append('libcxx_%s' % legal_triple)
1203 1203
1204 # Unsandboxed target IRT libraries 1204 # Unsandboxed target IRT libraries
1205 for os_name in ['linux', 'mac']: 1205 for os_name in ['linux', 'mac']:
1206 legal_triple = pynacl.gsd_storage.LegalizeName('x86-32-' + os_name) 1206 legal_triple = pynacl.gsd_storage.LegalizeName('x86-32-' + os_name)
1207 host_packages[os_name].append('unsandboxed_runtime_%s' % legal_triple) 1207 host_packages[os_name].append('unsandboxed_runtime_%s' % legal_triple)
1208 for os_name in ['linux']: 1208 for os_name in ['linux']:
1209 legal_triple = pynacl.gsd_storage.LegalizeName('arm-' + os_name) 1209 legal_triple = pynacl.gsd_storage.LegalizeName('arm-' + os_name)
1210 host_packages[os_name].append('unsandboxed_runtime_%s' % legal_triple) 1210 host_packages[os_name].append('unsandboxed_runtime_%s' % legal_triple)
1211 for os_name in ['linux']: 1211 for os_name in ['linux']:
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
1354 SANDBOXED_TRANSLATOR_ARCHES)) 1354 SANDBOXED_TRANSLATOR_ARCHES))
1355 1355
1356 tb = toolchain_main.PackageBuilder(packages, 1356 tb = toolchain_main.PackageBuilder(packages,
1357 upload_packages, 1357 upload_packages,
1358 leftover_args) 1358 leftover_args)
1359 return tb.Main() 1359 return tb.Main()
1360 1360
1361 1361
1362 if __name__ == '__main__': 1362 if __name__ == '__main__':
1363 sys.exit(main()) 1363 sys.exit(main())
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698