Extend relocation packing to cover arm64.
[chromium-blink-merge.git] / ppapi / ppapi_nacl.gyp
blob8252f6d027bc7262a13989609b173abee8c2b16a
1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
5 # This GYP file defines untrusted (NaCl) targets.  All targets in this
6 # file should be conditionally depended upon via 'disable_nacl!=1' to avoid
7 # requiring NaCl sources for building.
10   'includes': [
11     '../native_client/build/untrusted.gypi',
12     'ppapi_sources.gypi',
13   ],
14   'targets': [
15     {
16       'target_name': 'ppapi_cpp_lib',
17       'type': 'none',
18       'variables': {
19         'nlib_target': 'libppapi_cpp.a',
20         'nso_target': 'libppapi_cpp.so',
21         'build_glibc': 1,
22         'build_newlib': 1,
23         'build_pnacl_newlib': 1,
24         'sources': [
25           '<@(cpp_source_files)',
26           'cpp/module_embedder.h',
27           'cpp/ppp_entrypoints.cc',
28         ],
29       },
30       'dependencies': [
31         '<(DEPTH)/native_client/tools.gyp:prep_toolchain',
32       ],
33     },
34     {
35       'target_name': 'ppapi_gles2_lib',
36       'type': 'none',
37       'variables': {
38         'nlib_target': 'libppapi_gles2.a',
39         'nso_target': 'libppapi_gles2.so',
40         'build_glibc': 1,
41         'build_newlib': 1,
42         'build_pnacl_newlib': 1,
43         'include_dirs': [
44           'lib/gl/include',
45         ],
46         'sources': [
47           'lib/gl/gles2/gl2ext_ppapi.c',
48           'lib/gl/gles2/gl2ext_ppapi.h',
49           'lib/gl/gles2/gles2.c',
50         ],
51       },
52       'dependencies': [
53         '<(DEPTH)/native_client/tools.gyp:prep_toolchain',
54       ],
55     },
56     {
57       'target_name': 'ppapi_nacl_tests',
58       'type': 'none',
59       'dependencies': [
60          '<(DEPTH)/native_client/src/untrusted/nacl/nacl.gyp:nacl_lib',
61          'ppapi_cpp_lib',
62          'native_client/native_client.gyp:ppapi_lib',
63       ],
64       'variables': {
65         # This is user code (vs IRT code), so tls accesses do not
66         # need to be indirect through a function call.
67         'newlib_tls_flags=': [],
68         # TODO(bradnelson): Remove this compile flag once new nacl_rev is
69         # above 9362.
70         'compile_flags': [
71           '-DGL_GLEXT_PROTOTYPES',
72         ],
73         # Speed up pnacl linking by not generating debug info for tests.
74         # We compile with --strip-all under extra_args so debug info is
75         # discarded anyway.  Remove this and the --strip-all flag if
76         # debug info is really needed.
77         'compile_flags!': [
78           '-g',
79         ],
80         'defines': [
81           'GL_GLEXT_PROTOTYPES',
82         ],
83         'nexe_target': 'ppapi_nacl_tests',
84         'build_newlib': 1,
85         'include_dirs': [
86           'lib/gl/include',
87           '..',
88         ],
89         'link_flags': [
90           '-lppapi_cpp',
91           '-lppapi',
92           '-pthread',
93         ],
94         'link_flags!': [
95           '-O3',
96         ],
97         'translate_flags': [
98           '-O0',
99         ],
100         'conditions': [
101           ['target_arch=="ia32" or target_arch=="x64"', {
102             'extra_deps_newlib64': [
103               '>(tc_lib_dir_newlib64)/libppapi_cpp.a',
104               '>(tc_lib_dir_newlib64)/libppapi.a',
105             ],
106             'extra_deps_newlib32': [
107               '>(tc_lib_dir_newlib32)/libppapi_cpp.a',
108               '>(tc_lib_dir_newlib32)/libppapi.a',
109             ],
110             'extra_deps_glibc64': [
111               '>(tc_lib_dir_glibc64)/libppapi_cpp.so',
112               '>(tc_lib_dir_glibc64)/libppapi.so',
113             ],
114             'extra_deps_glibc32': [
115               '>(tc_lib_dir_glibc32)/libppapi_cpp.so',
116               '>(tc_lib_dir_glibc32)/libppapi.so',
117             ],
118           }],
119           ['target_arch=="arm"', {
120             'extra_deps_arm': [
121               '>(tc_lib_dir_newlib_arm)/libppapi_cpp.a',
122               '>(tc_lib_dir_newlib_arm)/libppapi.a',
123             ],
124           }],
125         ],
126         'extra_deps_pnacl_newlib': [
127           '>(tc_lib_dir_pnacl_newlib)/libppapi_cpp.a',
128           '>(tc_lib_dir_pnacl_newlib)/libppapi.a',
129         ],
130         'sources': [
131           '<@(test_common_source_files)',
132           '<@(test_nacl_source_files)',
133         ],
134         'extra_args': [
135           '--strip-all',
136         ],
137         'create_nmf': '<(DEPTH)/native_client_sdk/src/tools/create_nmf.py',
138         'create_nonsfi_test_nmf': 'tests/create_nonsfi_test_nmf.py',
139       },
140       'conditions': [
141         ['target_arch!="arm" and target_arch!="mipsel" and disable_glibc==0', {
142           'variables': {
143             'build_glibc': 1,
144             # NOTE: Use /lib, not /lib64 here; it is a symbolic link which
145             # doesn't work on Windows.
146             'libdir_glibc64': '>(nacl_glibc_tc_root)/x86_64-nacl/lib',
147             'libdir_glibc32': '>(nacl_glibc_tc_root)/x86_64-nacl/lib32',
148             'nacl_objdump': '>(nacl_glibc_tc_root)/bin/x86_64-nacl-objdump',
149             'nmf_glibc%': '<(PRODUCT_DIR)/>(nexe_target)_glibc.nmf',
150           },
151           'actions': [
152           {
153             'action_name': 'Generate GLIBC NMF and copy libs',
154             # NOTE: create_nmf must be first, it is the script python executes
155             # below.
156             'inputs': ['>(create_nmf)', '>(out_glibc64)', '>(out_glibc32)'],
157             # NOTE: There is no explicit dependency for the lib32
158             # and lib64 directories created in the PRODUCT_DIR.
159             # They are created as a side-effect of NMF creation.
160             'outputs': ['>(nmf_glibc)'],
161             'action': [
162               'python',
163               '>@(_inputs)',
164               '--objdump=>(nacl_objdump)',
165               '--library-path=>(libdir_glibc64)',
166               '--library-path=>(libdir_glibc32)',
167               '--library-path=>(tc_lib_dir_glibc32)',
168               '--library-path=>(tc_lib_dir_glibc64)',
169               '--output=>(nmf_glibc)',
170               '--stage-dependencies=<(PRODUCT_DIR)',
171             ],
172           },
173         ],
174         }],
175         # Test PNaCl pre-translated code (pre-translated to save bot time).
176         # We only care about testing that code generation is correct,
177         # and in-browser translation is tested elsewhere.
178         # NOTE: native_client/build/untrusted.gypi dictates that
179         # PNaCl only generate x86-32 and x86-64 on x86 platforms,
180         # ARM on ARM platforms, or MIPS on MIPS platforms, not all
181         # versions always.
182         # The same goes for the PNaCl shims. So, we have two variations here.
183         ['disable_pnacl==0 and (target_arch=="ia32" or target_arch=="x64")', {
184           'variables': {
185             'build_pnacl_newlib': 1,
186             'translate_pexe_with_build': 1,
187             'nmf_pnacl%': '<(PRODUCT_DIR)/>(nexe_target)_pnacl.nmf',
188           },
189           # Shim is a dependency for the nexe because we pre-translate.
190           'dependencies': [
191             '<(DEPTH)/ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_irt_shim.gyp:aot',
192           ],
193           'actions': [
194             {
195               'action_name': 'Generate PNACL NEWLIB NMF',
196               # NOTE: create_nmf must be first, it is the script python executes
197               # below.
198               'inputs': [
199                 '>(create_nmf)',
200                 '>(out_pnacl_newlib_x86_32_nexe)',
201                 '>(out_pnacl_newlib_x86_64_nexe)'
202               ],
203               'outputs': ['>(nmf_pnacl)'],
204               'action': [
205                 'python',
206                 '>@(_inputs)',
207                 '--output=>(nmf_pnacl)',
208               ],
209             },
210           ],
211         }],
212         ['disable_pnacl==0 and target_arch=="ia32" and OS=="linux"', {
213           # In addition to above configuration, build x86-32-nonsfi .nexe file
214           # by translating from .pexe binary, for non-SFI mode PPAPI testing.
215           'variables': {
216             'enable_x86_32_nonsfi': 1,
217             'translate_pexe_with_build': 1,
218             'nmf_nonsfi%': '<(PRODUCT_DIR)/>(nexe_target)_pnacl_nonsfi.nmf',
219           },
220           # Shim is a dependency for the nexe because we pre-translate.
221          'dependencies': [
222             '<(DEPTH)/ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_irt_shim.gyp:aot',
223           ],
224           'actions': [
225             {
226               'action_name': 'Generate PNACL NEWLIB NONSFI NMF',
227               'inputs': ['>(create_nonsfi_test_nmf)'],
228               'outputs': ['>(nmf_nonsfi)'],
229               'action': [
230                 'python',
231                 '>(create_nonsfi_test_nmf)',
232                 '--output=>(nmf_nonsfi)',
233                 '--program=>(out_pnacl_newlib_x86_32_nonsfi_nexe)',
234               ],
235             },
236           ],
237         }],
238         ['disable_pnacl==0 and target_arch=="arm"', {
239           'variables': {
240             'build_pnacl_newlib': 1,
241             'translate_pexe_with_build': 1,
242             'nmf_pnacl%': '<(PRODUCT_DIR)/>(nexe_target)_pnacl.nmf',
243           },
244           # Shim is a dependency for the nexe because we pre-translate.
245           'dependencies': [
246             '<(DEPTH)/ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_irt_shim.gyp:aot',
247           ],
248           'actions': [
249             {
250               'action_name': 'Generate PNACL NEWLIB NMF',
251               # NOTE: create_nmf must be first, it is the script python executes
252               # below.
253               'inputs': ['>(create_nmf)', '>(out_pnacl_newlib_arm_nexe)'],
254               'outputs': ['>(nmf_pnacl)'],
255               'action': [
256                 'python',
257                 '>@(_inputs)',
258                 '--output=>(nmf_pnacl)',
259               ],
260             },
261           ],
262         }],
263         ['disable_pnacl==0 and target_arch=="mipsel"', {
264           'variables': {
265             'build_pnacl_newlib': 1,
266             'translate_pexe_with_build': 1,
267             'nmf_pnacl%': '<(PRODUCT_DIR)/>(nexe_target)_pnacl.nmf',
268           },
269           # Shim is a dependency for the nexe because we pre-translate.
270           'dependencies': [
271             '<(DEPTH)/ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_irt_shim.gyp:aot',
272           ],
273           'actions': [
274             {
275               'action_name': 'Generate PNACL NEWLIB NMF',
276               'inputs': ['>(create_nmf)', '>(out_pnacl_newlib_mips_nexe)'],
277               'outputs': ['>(nmf_pnacl)'],
278               'action': [
279                 'python',
280                 '>@(_inputs)',
281                 '--output=>(nmf_pnacl)',
282               ],
283             },
284           ],
285         }],
286       ],
287     },
288   ],