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

Side by Side Diff: chrome/nacl.gypi

Issue 8800034: Use nacl_helper_bootstrap from native_client repository (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/chrome_exe.gypi ('k') | chrome/nacl/nacl_helper_bootstrap_linux.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 { 5 {
6 'include': [ 6 'include': [
7 '../native_client/build/untrusted.gypi', 7 '../native_client/build/untrusted.gypi',
8 ], 8 ],
9 'target_defaults': { 9 'target_defaults': {
10 'variables': { 10 'variables': {
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 ], 180 ],
181 }], 181 }],
182 ], 182 ],
183 }], 183 }],
184 ], 184 ],
185 'cflags': ['-fPIE'], 185 'cflags': ['-fPIE'],
186 'link_settings': { 186 'link_settings': {
187 'ldflags': ['-pie'], 187 'ldflags': ['-pie'],
188 }, 188 },
189 }, 189 },
190 {
191 'target_name': 'nacl_helper_bootstrap_munge_phdr',
192 'type': 'executable',
193 'toolsets': ['host'],
194 'sources': [
195 'nacl/nacl_helper_bootstrap_munge_phdr.c',
196 ],
197 'libraries': [
198 '-lelf',
199 ],
200 # This is an ugly kludge because gyp doesn't actually treat
201 # host_arch=x64 target_arch=ia32 as proper cross compilation.
202 # It still wants to compile the "host" program with -m32 et
203 # al. Though a program built that way can indeed run on the
204 # x86-64 host, we cannot reliably build this program on such a
205 # host because Ubuntu does not provide the full suite of
206 # x86-32 libraries in packages that can be installed on an
207 # x86-64 host; in particular, libelf is missing. So here we
208 # use the hack of eliding all the -m* flags from the
209 # compilation lines, getting the command close to what they
210 # would be if gyp were to really build properly for the host.
211 # TODO(bradnelson): Clean up with proper cross support.
212 'conditions': [
213 ['host_arch=="x64"', {
214 'cflags/': [['exclude', '-m.*']],
215 'ldflags/': [['exclude', '-m.*']],
216 }],
217 ],
218 },
219 {
220 'target_name': 'nacl_helper_bootstrap_lib',
221 'type': 'static_library',
222 'product_dir': '<(SHARED_INTERMEDIATE_DIR)/chrome',
223 'hard_depencency': 1,
224 'include_dirs': [
225 '..',
226 ],
227 'sources': [
228 'nacl/nacl_helper_bootstrap_linux.c',
229 ],
230 'cflags': [
231 # The tiny standalone bootstrap program is incompatible with
232 # -fstack-protector, which might be on by default. That switch
233 # requires using the standard libc startup code, which we do not .
234 '-fno-stack-protector',
235 # We don't want to compile it PIC (or its cousin PIE), because
236 # it goes at an absolute address anyway, and because any kind
237 # of PIC complicates life for the x86-32 assembly code. We
238 # append -fno-* flags here instead of using a 'cflags!' stanza
239 # to remove -f* flags, just in case some system's compiler
240 # defaults to using PIC for everything.
241 '-fno-pic', '-fno-PIC',
242 '-fno-pie', '-fno-PIE',
243 ],
244 'cflags!': [
245 # TODO(glider): -fasan is deprecated.
246 '-fasan',
247 '-faddress-sanitizer',
248 '-w',
249 ],
250 'conditions': [
251 ['clang==1', {
252 'cflags': [
253 # Prevent llvm-opt from replacing my_bzero with a call
254 # to memset
255 '-ffreestanding',
256 # But make its <limits.h> still work!
257 '-U__STDC_HOSTED__', '-D__STDC_HOSTED__=1',
258 ],
259 }],
260 ],
261 },
262 {
263 'target_name': 'nacl_helper_bootstrap_raw',
264 'type': 'none',
265 'dependencies': [
266 'nacl_helper_bootstrap_lib',
267 ],
268 'actions': [
269 {
270 'action_name': 'link_with_ld_bfd',
271 'variables': {
272 'bootstrap_lib': '<(SHARED_INTERMEDIATE_DIR)/chrome/<(STATIC _LIB_PREFIX)nacl_helper_bootstrap_lib<(STATIC_LIB_SUFFIX)',
273 'linker_script': 'nacl/nacl_helper_bootstrap_linux.x',
274 },
275 'inputs': [
276 '<(linker_script)',
277 '<(bootstrap_lib)',
278 '../tools/ld_bfd/ld',
279 ],
280 'outputs': [
281 '<(PRODUCT_DIR)/nacl_helper_bootstrap_raw',
282 ],
283 'message': 'Linking nacl_helper_bootstrap_raw',
284 'conditions': [
285 ['target_arch=="x64"', {
286 'variables': {
287 'linker_emulation': 'elf_x86_64',
288 'bootstrap_extra_lib': '',
289 }
290 }],
291 ['target_arch=="ia32"', {
292 'variables': {
293 'linker_emulation': 'elf_i386',
294 'bootstrap_extra_lib': '',
295 }
296 }],
297 ['target_arch=="arm"', {
298 'variables': {
299 'linker_emulation': 'armelf_linux_eabi',
300 # ARM requires linking against libc due to ABI
301 # dependencies on memset.
302 'bootstrap_extra_lib' : "${SYSROOT}/usr/lib/libc.a",
303 }
304 }],
305 ],
306 'action': ['../tools/ld_bfd/ld',
307 '-m', '<(linker_emulation)',
308 '--build-id',
309 # This program is (almost) entirely
310 # standalone. It has its own startup code, so
311 # no crt1.o for it. It is statically linked,
312 # and on x86 it does not use libc at all.
313 # However, on ARM it needs a few (safe) things
314 # from libc.
315 '-static',
316 # Link with custom linker script for special
317 # layout. The script uses the symbol RESERVE_TOP.
318 '<@(nacl_reserve_top)',
319 '--script=<(linker_script)',
320 '-o', '<@(_outputs)',
321 # On x86-64, the default page size with some
322 # linkers is 2M rather than the real Linux page
323 # size of 4K. A larger page size is incompatible
324 # with our custom linker script's special layout.
325 '-z', 'max-page-size=0x1000',
326 '--whole-archive', '<(bootstrap_lib)',
327 '--no-whole-archive',
328 '<@(bootstrap_extra_lib)',
329 ],
330 }
331 ],
332 },
333 {
334 'target_name': 'nacl_helper_bootstrap',
335 'dependencies': [
336 'nacl_helper_bootstrap_raw',
337 'nacl_helper_bootstrap_munge_phdr#host',
338 ],
339 'type': 'none',
340 'actions': [{
341 'action_name': 'munge_phdr',
342 'inputs': ['nacl/nacl_helper_bootstrap_munge_phdr.py',
343 '<(PRODUCT_DIR)/nacl_helper_bootstrap_munge_phdr',
344 '<(PRODUCT_DIR)/nacl_helper_bootstrap_raw'],
345 'outputs': ['<(PRODUCT_DIR)/nacl_helper_bootstrap'],
346 'message': 'Munging ELF program header',
347 'action': ['python', '<@(_inputs)', '<@(_outputs)']
348 }],
349 },
350 ], 190 ],
351 }], 191 }],
352 ], 192 ],
353 }, { # else (disable_nacl==1) 193 }, { # else (disable_nacl==1)
354 'targets': [ 194 'targets': [
355 { 195 {
356 'target_name': 'nacl', 196 'target_name': 'nacl',
357 'type': 'none', 197 'type': 'none',
358 'sources': [], 198 'sources': [],
359 }, 199 },
360 ], 200 ],
361 'conditions': [ 201 'conditions': [
362 ['OS=="win"', { 202 ['OS=="win"', {
363 'targets': [ 203 'targets': [
364 { 204 {
365 'target_name': 'nacl_win64', 205 'target_name': 'nacl_win64',
366 'type': 'none', 206 'type': 'none',
367 'sources': [], 207 'sources': [],
368 }, 208 },
369 ], 209 ],
370 }], 210 }],
371 ], 211 ],
372 }], 212 }],
373 ], 213 ],
374 } 214 }
OLDNEW
« 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