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

Unified Diff: chrome/nacl.gypi

Issue 8811002: Revert 113074 - Use nacl_helper_bootstrap from native_client repository (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/chrome_exe.gypi ('k') | chrome/nacl/nacl_helper_bootstrap_linux.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/nacl.gypi
===================================================================
--- chrome/nacl.gypi (revision 113077)
+++ chrome/nacl.gypi (working copy)
@@ -187,6 +187,166 @@
'ldflags': ['-pie'],
},
},
+ {
+ 'target_name': 'nacl_helper_bootstrap_munge_phdr',
+ 'type': 'executable',
+ 'toolsets': ['host'],
+ 'sources': [
+ 'nacl/nacl_helper_bootstrap_munge_phdr.c',
+ ],
+ 'libraries': [
+ '-lelf',
+ ],
+ # This is an ugly kludge because gyp doesn't actually treat
+ # host_arch=x64 target_arch=ia32 as proper cross compilation.
+ # It still wants to compile the "host" program with -m32 et
+ # al. Though a program built that way can indeed run on the
+ # x86-64 host, we cannot reliably build this program on such a
+ # host because Ubuntu does not provide the full suite of
+ # x86-32 libraries in packages that can be installed on an
+ # x86-64 host; in particular, libelf is missing. So here we
+ # use the hack of eliding all the -m* flags from the
+ # compilation lines, getting the command close to what they
+ # would be if gyp were to really build properly for the host.
+ # TODO(bradnelson): Clean up with proper cross support.
+ 'conditions': [
+ ['host_arch=="x64"', {
+ 'cflags/': [['exclude', '-m.*']],
+ 'ldflags/': [['exclude', '-m.*']],
+ }],
+ ],
+ },
+ {
+ 'target_name': 'nacl_helper_bootstrap_lib',
+ 'type': 'static_library',
+ 'product_dir': '<(SHARED_INTERMEDIATE_DIR)/chrome',
+ 'hard_depencency': 1,
+ 'include_dirs': [
+ '..',
+ ],
+ 'sources': [
+ 'nacl/nacl_helper_bootstrap_linux.c',
+ ],
+ 'cflags': [
+ # The tiny standalone bootstrap program is incompatible with
+ # -fstack-protector, which might be on by default. That switch
+ # requires using the standard libc startup code, which we do not.
+ '-fno-stack-protector',
+ # We don't want to compile it PIC (or its cousin PIE), because
+ # it goes at an absolute address anyway, and because any kind
+ # of PIC complicates life for the x86-32 assembly code. We
+ # append -fno-* flags here instead of using a 'cflags!' stanza
+ # to remove -f* flags, just in case some system's compiler
+ # defaults to using PIC for everything.
+ '-fno-pic', '-fno-PIC',
+ '-fno-pie', '-fno-PIE',
+ ],
+ 'cflags!': [
+ # TODO(glider): -fasan is deprecated.
+ '-fasan',
+ '-faddress-sanitizer',
+ '-w',
+ ],
+ 'conditions': [
+ ['clang==1', {
+ 'cflags': [
+ # Prevent llvm-opt from replacing my_bzero with a call
+ # to memset
+ '-ffreestanding',
+ # But make its <limits.h> still work!
+ '-U__STDC_HOSTED__', '-D__STDC_HOSTED__=1',
+ ],
+ }],
+ ],
+ },
+ {
+ 'target_name': 'nacl_helper_bootstrap_raw',
+ 'type': 'none',
+ 'dependencies': [
+ 'nacl_helper_bootstrap_lib',
+ ],
+ 'actions': [
+ {
+ 'action_name': 'link_with_ld_bfd',
+ 'variables': {
+ 'bootstrap_lib': '<(SHARED_INTERMEDIATE_DIR)/chrome/<(STATIC_LIB_PREFIX)nacl_helper_bootstrap_lib<(STATIC_LIB_SUFFIX)',
+ 'linker_script': 'nacl/nacl_helper_bootstrap_linux.x',
+ },
+ 'inputs': [
+ '<(linker_script)',
+ '<(bootstrap_lib)',
+ '../tools/ld_bfd/ld',
+ ],
+ 'outputs': [
+ '<(PRODUCT_DIR)/nacl_helper_bootstrap_raw',
+ ],
+ 'message': 'Linking nacl_helper_bootstrap_raw',
+ 'conditions': [
+ ['target_arch=="x64"', {
+ 'variables': {
+ 'linker_emulation': 'elf_x86_64',
+ 'bootstrap_extra_lib': '',
+ }
+ }],
+ ['target_arch=="ia32"', {
+ 'variables': {
+ 'linker_emulation': 'elf_i386',
+ 'bootstrap_extra_lib': '',
+ }
+ }],
+ ['target_arch=="arm"', {
+ 'variables': {
+ 'linker_emulation': 'armelf_linux_eabi',
+ # ARM requires linking against libc due to ABI
+ # dependencies on memset.
+ 'bootstrap_extra_lib' : "${SYSROOT}/usr/lib/libc.a",
+ }
+ }],
+ ],
+ 'action': ['../tools/ld_bfd/ld',
+ '-m', '<(linker_emulation)',
+ '--build-id',
+ # This program is (almost) entirely
+ # standalone. It has its own startup code, so
+ # no crt1.o for it. It is statically linked,
+ # and on x86 it does not use libc at all.
+ # However, on ARM it needs a few (safe) things
+ # from libc.
+ '-static',
+ # Link with custom linker script for special
+ # layout. The script uses the symbol RESERVE_TOP.
+ '<@(nacl_reserve_top)',
+ '--script=<(linker_script)',
+ '-o', '<@(_outputs)',
+ # On x86-64, the default page size with some
+ # linkers is 2M rather than the real Linux page
+ # size of 4K. A larger page size is incompatible
+ # with our custom linker script's special layout.
+ '-z', 'max-page-size=0x1000',
+ '--whole-archive', '<(bootstrap_lib)',
+ '--no-whole-archive',
+ '<@(bootstrap_extra_lib)',
+ ],
+ }
+ ],
+ },
+ {
+ 'target_name': 'nacl_helper_bootstrap',
+ 'dependencies': [
+ 'nacl_helper_bootstrap_raw',
+ 'nacl_helper_bootstrap_munge_phdr#host',
+ ],
+ 'type': 'none',
+ 'actions': [{
+ 'action_name': 'munge_phdr',
+ 'inputs': ['nacl/nacl_helper_bootstrap_munge_phdr.py',
+ '<(PRODUCT_DIR)/nacl_helper_bootstrap_munge_phdr',
+ '<(PRODUCT_DIR)/nacl_helper_bootstrap_raw'],
+ 'outputs': ['<(PRODUCT_DIR)/nacl_helper_bootstrap'],
+ 'message': 'Munging ELF program header',
+ 'action': ['python', '<@(_inputs)', '<@(_outputs)']
+ }],
+ },
],
}],
],
« no previous file with comments | « chrome/chrome_exe.gypi ('k') | chrome/nacl/nacl_helper_bootstrap_linux.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698