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

Side by Side Diff: chrome/nacl.gypi

Issue 7811013: Revert 98909 - Use chain-loading for Linux nacl_helper (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « chrome/common/chrome_paths.cc ('k') | chrome/nacl/nacl_fork_delegate_linux.cc » ('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 'target_defaults': { 6 'target_defaults': {
7 'variables': { 7 'variables': {
8 'nacl_target': 0, 8 'nacl_target': 0,
9 }, 9 },
10 'target_conditions': [ 10 'target_conditions': [
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 'NACL_BLOCK_SIZE=32', 176 'NACL_BLOCK_SIZE=32',
177 '<@(nacl_defines)', 177 '<@(nacl_defines)',
178 ], 178 ],
179 }, 179 },
180 }, 180 },
181 ], 181 ],
182 }], 182 }],
183 ['OS=="linux"', { 183 ['OS=="linux"', {
184 'targets': [ 184 'targets': [
185 { 185 {
186 'target_name': 'nacl_helper', 186 'target_name': 'nacl_helper.so',
187 # 'executable' will be overridden below when we add the -shared
188 # flag; here it prevents gyp from using the --whole-archive flag
187 'type': 'executable', 189 'type': 'executable',
188 'include_dirs': [ 190 'include_dirs': [
189 '..', 191 '..',
190 ], 192 ],
191 'dependencies': [ 193 'dependencies': [
192 'nacl', 194 'nacl',
193 ], 195 ],
194 'sources': [ 196 'sources': [
195 'nacl/nacl_helper_linux.cc', 197 '../chrome/nacl/nacl_helper_linux.cc',
196 ], 198 ],
197 'conditions': [ 199 'conditions': [
198 ['toolkit_uses_gtk == 1', { 200 ['toolkit_uses_gtk == 1', {
199 'dependencies': [ 201 'dependencies': [
200 '../build/linux/system.gyp:gtk', 202 '../build/linux/system.gyp:gtk',
201 ], 203 ],
202 }], 204 }],
203 ], 205 ],
204 'cflags': ['-fPIE'],
205 'link_settings': { 206 'link_settings': {
206 'ldflags': ['-pie'], 207 # NOTE: '-shared' overrides 'executable' above
207 }, 208 'ldflags': ['-shared',
208 }, 209 '-Wl,--version-script=chrome/nacl/nacl_helper_exports.tx t',
209 { 210 ],
210 'target_name': 'nacl_helper_bootstrap_munge_phdr',
211 'type': 'executable',
212 'toolsets': ['host'],
213 'sources': [
214 'nacl/nacl_helper_bootstrap_munge_phdr.c',
215 ],
216 'libraries': [
217 '-lelf',
218 ],
219 # This is an ugly kludge because gyp doesn't actually treat
220 # host_arch=x64 target_arch=ia32 as proper cross compilation.
221 # It still wants to compile the "host" program with -m32 et
222 # al. Though a program built that way can indeed run on the
223 # x86-64 host, we cannot reliably build this program on such a
224 # host because Ubuntu does not provide the full suite of
225 # x86-32 libraries in packages that can be installed on an
226 # x86-64 host; in particular, libelf is missing. So here we
227 # use the hack of eliding all the -m* flags from the
228 # compilation lines, getting the command close to what they
229 # would be if gyp were to really build properly for the host.
230 # TODO(bradnelson): Clean up with proper cross support.
231 'conditions': [
232 ['host_arch=="x64"', {
233 'cflags/': [['exclude', '-m.*']],
234 'ldflags/': [['exclude', '-m.*']],
235 }],
236 ],
237 },
238 {
239 'target_name': 'nacl_helper_bootstrap_raw',
240 'type': 'executable',
241 'include_dirs': [
242 '..',
243 ],
244 'sources': [
245 'nacl/nacl_helper_bootstrap_linux.c',
246 # We list the linker script here for documentation purposes.
247 # But even this doesn't make gyp treat it as a dependency,
248 # so incremental builds won't relink when the script changes.
249 # TODO(bradnelson): Fix the dependency handling.
250 'nacl/nacl_helper_bootstrap_linux.x',
251 ],
252 'cflags': [
253 # The tiny standalone bootstrap program is incompatible with
254 # -fstack-protector, which might be on by default. That switch
255 # requires using the standard libc startup code, which we do not.
256 '-fno-stack-protector',
257 # We don't want to compile it PIC (or its cousin PIE), because
258 # it goes at an absolute address anyway, and because any kind
259 # of PIC complicates life for the x86-32 assembly code. We
260 # append -fno-* flags here instead of using a 'cflags!' stanza
261 # to remove -f* flags, just in case some system's compiler
262 # defaults to using PIC for everything.
263 '-fno-pic', '-fno-PIC',
264 '-fno-pie', '-fno-PIE',
265 ],
266 'link_settings': {
267 'ldflags': [
268 # TODO(bradchen): Delete the -B argument when Gold is verified
269 # to produce good results with our custom linker script.
270 # Until then use ld.bfd.
271 '-B', 'tools/ld_bfd',
272 # This programs is (almost) entirely standalone. It has
273 # its own startup code, so no crt1.o for it. It is
274 # statically linked, and on x86 it actually does not use
275 # libc at all. However, on ARM it needs a few (safe)
276 # things from libc, so we don't use '-nostdlib' here.
277 '-static', '-nostartfiles',
278 # Link with our custom linker script to get out special layout.
279 # TODO(bradnelson): Use some <(foo) instead of chrome/ here.
280 '-Wl,--script=chrome/nacl/nacl_helper_bootstrap_linux.x',
281 # On x86-64, the default page size with some
282 # linkers is 2M rather than the real Linux page
283 # size of 4K. A larger page size is incompatible
284 # with our custom linker script's special layout.
285 '-Wl,-z,max-page-size=0x1000',
286 ],
287 }, 211 },
288 }, 212 },
289 { 213 {
290 'target_name': 'nacl_helper_bootstrap', 214 'target_name': 'nacl_helper_bootstrap',
215 'type': 'executable',
291 'dependencies': [ 216 'dependencies': [
292 'nacl_helper_bootstrap_raw', 217 'nacl_helper.so',
293 'nacl_helper_bootstrap_munge_phdr#host',
294 ], 218 ],
295 'type': 'none', 219 'sources': [
296 'actions': [{ 220 '../chrome/nacl/nacl_helper_bootstrap_linux.c',
297 'action_name': 'munge_phdr', 221 ],
298 'inputs': ['nacl/nacl_helper_bootstrap_munge_phdr.py', 222 # TODO(bradchen): Delete the -B argument when Gold supports
299 '<(PRODUCT_DIR)/nacl_helper_bootstrap_munge_phdr', 223 # -Ttext properly. Until then use ld.bfd.
300 '<(PRODUCT_DIR)/nacl_helper_bootstrap_raw'], 224 'link_settings': {
301 'outputs': ['<(PRODUCT_DIR)/nacl_helper_bootstrap'], 225 'ldflags': ['-B', 'tools/ld_bfd',
302 'message': 'Munging ELF program header', 226 # Force text segment at 0x10000 (64KB)
303 'action': ['python', '<@(_inputs)', '<@(_outputs)'] 227 # The max-page-size option is needed on x86-64 linux
304 }], 228 # where 4K pages are not the default in the BFD linker.
305 } 229 '-Wl,-Ttext-segment,10000,-z,max-page-size=0x1000',
230 # reference nacl_helper as a shared library
231 '<(PRODUCT_DIR)/nacl_helper.so',
232 '-Wl,-rpath,<(SHARED_LIB_DIR)',
233 ],
234 },
235 },
306 ], 236 ],
307 }], 237 }],
308 ], 238 ],
309 } 239 }
OLDNEW
« no previous file with comments | « chrome/common/chrome_paths.cc ('k') | chrome/nacl/nacl_fork_delegate_linux.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698