Chromium Code Reviews| Index: chrome/nacl.gypi |
| diff --git a/chrome/nacl.gypi b/chrome/nacl.gypi |
| index 000c5dc7f6513561badbd70c31f700893a31cf88..870367a91c139fa101bf6e9ee20b6ee728daad7a 100644 |
| --- a/chrome/nacl.gypi |
| +++ b/chrome/nacl.gypi |
| @@ -236,18 +236,14 @@ |
| ], |
| }, |
| { |
| - 'target_name': 'nacl_helper_bootstrap_raw', |
| - 'type': 'executable', |
| + 'target_name': 'nacl_helper_bootstrap_lib', |
|
Roland McGrath
2011/09/07 17:21:17
This is a library not actually being used for anyt
Brad Chen
2011/09/07 19:05:40
Done.
|
| + 'type': 'static_library', |
| + 'hard_depencency': 1, |
| 'include_dirs': [ |
| '..', |
| ], |
| 'sources': [ |
| 'nacl/nacl_helper_bootstrap_linux.c', |
|
Roland McGrath
2011/09/07 17:21:17
Putting the linker script here was on the recommen
Brad Chen
2011/09/07 19:05:40
The linker script is now an input dependency of th
|
| - # We list the linker script here for documentation purposes. |
| - # But even this doesn't make gyp treat it as a dependency, |
| - # so incremental builds won't relink when the script changes. |
| - # TODO(bradnelson): Fix the dependency handling. |
| - 'nacl/nacl_helper_bootstrap_linux.x', |
| ], |
| 'cflags': [ |
| # The tiny standalone bootstrap program is incompatible with |
| @@ -263,27 +259,67 @@ |
| '-fno-pic', '-fno-PIC', |
| '-fno-pie', '-fno-PIE', |
| ], |
| - 'link_settings': { |
| - 'ldflags': [ |
| - # TODO(bradchen): Delete the -B argument when Gold is verified |
| - # to produce good results with our custom linker script. |
| - # Until then use ld.bfd. |
| - '-B', '<(PRODUCT_DIR)/../../tools/ld_bfd', |
| - # This programs is (almost) entirely standalone. It has |
| - # its own startup code, so no crt1.o for it. It is |
| - # statically linked, and on x86 it actually does not use |
| - # libc at all. However, on ARM it needs a few (safe) |
| - # things from libc, so we don't use '-nostdlib' here. |
| - '-static', '-nostartfiles', |
| - # Link with our custom linker script to get out special layout. |
| - '-Wl,--script=<(PRODUCT_DIR)/../../chrome/nacl/nacl_helper_bootstrap_linux.x', |
| - # 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. |
| - '-Wl,-z,max-page-size=0x1000', |
| - ], |
| - }, |
| + }, |
| + { |
| + 'target_name': 'nacl_helper_bootstrap_raw', |
| + 'type': 'none', |
| + 'dependencies': [ |
| + 'nacl_helper_bootstrap_lib', |
| + ], |
| + 'actions': [ |
| + { |
| + 'action_name': 'link_with_ld_bfd', |
| + 'variables': { |
| + # We list the linker script here for documentation purposes. |
| + # But even this doesn't make gyp treat it as a dependency, |
| + # so incremental builds won't relink when the script changes. |
| + # TODO(bradnelson): Fix the dependency handling. |
|
Roland McGrath
2011/09/07 17:21:17
This comment doesn't make any sense here.
Brad Chen
2011/09/07 19:05:40
Removed
On 2011/09/07 17:21:17, Roland McGrath wro
|
| + 'nacl_bootstrap_linker_script': './nacl/nacl_helper_bootstrap_linux.x', |
| + }, |
| + 'inputs': [ |
| + '<(PRODUCT_DIR)/obj.target/nacl_helper_bootstrap_lib/chrome/nacl/nacl_helper_bootstrap_linux.o', |
|
Evan Martin
2011/09/07 17:14:00
This is hardcoding a private build path. It may w
Brad Chen
2011/09/07 19:05:40
With help from Brad Nelson I think I figured out h
|
| + ], |
| + 'outputs': [ |
| + '<(PRODUCT_DIR)/nacl_helper_bootstrap_raw', |
| + ], |
| + 'message': 'Linking nacl_helper_bootstrap_raw', |
| + 'conditions': [ |
| + ['target_arch=="x64"', { |
| + 'variables': { |
| + 'linker_emulation': 'elf_x86_64', |
| + } |
| + }], |
| + ['target_arch=="ia32"', { |
| + 'variables': { |
| + 'linker_emulation': 'elf_i386', |
| + } |
| + }], |
| + ['target_arch=="arm"', { |
| + 'variables': { |
| + 'linker_emulation': 'arm', |
|
Roland McGrath
2011/09/07 17:21:17
This should be 'armelf_linux_eabi'.
Brad Chen
2011/09/07 19:05:40
Done.
|
| + } |
| + }], |
| + ], |
| + 'action': ['../tools/ld_bfd/ld', |
| + '-m', '<(linker_emulation)', |
| + # 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) |
|
Roland McGrath
2011/09/07 17:21:17
This comment doesn't make sense here. There is no
Brad Chen
2011/09/07 19:05:40
I've revised it, removing the -nostdlib', so that
|
| + # things from libc, so we don't use '-nostdlib' here. |
| + '-static', |
| + '-o', '<@(_outputs)', |
| + # Link with custom linker script for special layout. |
| + '--script=<(nacl_bootstrap_linker_script)', |
| + # 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', |
| + '<@(_inputs)', |
|
Roland McGrath
2011/09/07 17:21:17
For ARM it's necessary to add a '-lc' argument aft
Brad Chen
2011/09/07 19:05:40
Done.
|
| + ], |
| + } |
| + ], |
| }, |
| { |
| 'target_name': 'nacl_helper_bootstrap', |
| @@ -301,7 +337,7 @@ |
| 'message': 'Munging ELF program header', |
| 'action': ['python', '<@(_inputs)', '<@(_outputs)'] |
| }], |
| - } |
| + }, |
| ], |
| }], |
| ], |