Fix ModelPrefUpdater destruction order.
[chromium-blink-merge.git] / components / cronet.gypi
blobd33f982c193f0038b7b95dd80e2c4188970f606c
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.
6   'conditions': [
7     ['OS=="android" and use_icu_alternatives_on_android==1', {
8       # TODO(mef): Figure out what needs to be done for gn script.
9       'targets': [
10         {
11           'target_name': 'cronet_jni_headers',
12           'type': 'none',
13           'sources': [
14             'cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java',
15             'cronet/android/java/src/org/chromium/net/ChromiumUrlRequestContext.java',
16           ],
17           'variables': {
18             'jni_gen_package': 'cronet',
19           },
20           'includes': [ '../build/jni_generator.gypi' ],
21         },
22         {
23           'target_name': 'cronet_url_request_error_list',
24           'type': 'none',
25           'sources': [
26             'cronet/android/java/src/org/chromium/net/ChromiumUrlRequestError.template',
27           ],
28           'variables': {
29             'package_name': 'org/chromium/cronet',
30             'template_deps': ['cronet/android/chromium_url_request_error_list.h'],
31           },
32           'includes': [ '../build/android/java_cpp_template.gypi' ],
33         },
34         {
35           'target_name': 'cronet_url_request_priority_list',
36           'type': 'none',
37           'sources': [
38             'cronet/android/java/src/org/chromium/net/ChromiumUrlRequestPriority.template',
39           ],
40           'variables': {
41             'package_name': 'org/chromium/cronet',
42             'template_deps': ['cronet/android/chromium_url_request_priority_list.h'],
43           },
44           'includes': [ '../build/android/java_cpp_template.gypi' ],
45         },
46         {
47           'target_name': 'cronet_url_request_context_config_list',
48           'type': 'none',
49           'sources': [
50             'cronet/android/java/src/org/chromium/net/UrlRequestContextConfig.template',
51           ],
52           'variables': {
53             'package_name': 'org/chromium/cronet',
54             'template_deps': ['cronet/url_request_context_config_list.h'],
55           },
56           'includes': [ '../build/android/java_cpp_template.gypi' ],
57         },
58         {
59           'target_name': 'cronet_version',
60           'type': 'none',
61           'variables': {
62             'lastchange_path': '<(DEPTH)/build/util/LASTCHANGE',
63             'version_py_path': '<(DEPTH)/build/util/version.py',
64             'version_path': '<(DEPTH)/chrome/VERSION',
65             'template_input_path': 'cronet/android/java/src/org/chromium/net/Version.template',
66             'output_path': '<(SHARED_INTERMEDIATE_DIR)/templates/<(_target_name)/org/chromium/cronet/Version.java',
67           },
68           'direct_dependent_settings': {
69             'variables': {
70               # Ensure that the output directory is used in the class path
71               # when building targets that depend on this one.
72               'generated_src_dirs': [
73                 '<(SHARED_INTERMEDIATE_DIR)/templates/<(_target_name)',
74               ],
75               # Ensure dependents are rebuilt when the generated Java file changes.
76               'additional_input_paths': [
77                 '<(output_path)',
78               ],
79             },
80           },
81           'actions': [
82             {
83               'action_name': 'cronet_version',
84               'inputs': [
85                 '<(template_input_path)',
86                 '<(version_path)',
87                 '<(lastchange_path)',
88               ],
89               'outputs': [
90                 '<(output_path)',
91               ],
92               'action': [
93                 'python',
94                 '<(version_py_path)',
95                 '-f', '<(version_path)',
96                 '-f', '<(lastchange_path)',
97                 '<(template_input_path)',
98                 '<(output_path)',
99               ],
100               'message': 'Generating version information',
101             },
102           ],
103         },
104         {
105           'target_name': 'cronet_static',
106           'type': 'static_library',
107           'dependencies': [
108             '../base/base.gyp:base',
109             '../base/base.gyp:base_i18n',
110             '../third_party/icu/icu.gyp:icui18n',
111             '../third_party/icu/icu.gyp:icuuc',
112             'cronet_jni_headers',
113             'cronet_url_request_context_config_list',
114             'cronet_url_request_error_list',
115             'cronet_url_request_priority_list',
116             'cronet_version',
117             '../net/net.gyp:net',
118           ],
119           'sources': [
120             'cronet/url_request_context_config.cc',
121             'cronet/url_request_context_config.h',
122             'cronet/url_request_context_config_list.h',
123             'cronet/android/chromium_url_request.cc',
124             'cronet/android/chromium_url_request.h',
125             'cronet/android/chromium_url_request_error_list.h',
126             'cronet/android/chromium_url_request_priority_list.h',
127             'cronet/android/chromium_url_request_context.cc',
128             'cronet/android/chromium_url_request_context.h',
129             'cronet/android/cronet_loader.cc',
130             'cronet/android/cronet_loader.h',
131             'cronet/android/url_request_adapter.cc',
132             'cronet/android/url_request_adapter.h',
133             'cronet/android/url_request_context_adapter.cc',
134             'cronet/android/url_request_context_adapter.h',
135             'cronet/android/wrapped_channel_upload_element_reader.cc',
136             'cronet/android/wrapped_channel_upload_element_reader.h',
137           ],
138           'cflags': [
139             '-DLOGGING=1',
140             '-fdata-sections',
141             '-ffunction-sections',
142             '-fno-rtti',
143             '-fvisibility=hidden',
144             '-fvisibility-inlines-hidden',
145             '-Wno-sign-promo',
146             '-Wno-missing-field-initializers',
147           ],
148           'ldflags': [
149             '-llog',
150             '-landroid',
151             '-Wl,--gc-sections',
152             '-Wl,--exclude-libs,ALL'
153           ],
154           'conditions': [
155             [ 'use_icu_alternatives_on_android == 1', {
156                 'dependencies!': [
157                   '../base/base.gyp:base_i18n',
158                   '../third_party/icu/icu.gyp:icui18n',
159                   '../third_party/icu/icu.gyp:icuuc',
160                 ]
161               },
162             ],
163           ],
164         },
165         {
166           'target_name': 'libcronet',
167           'type': 'shared_library',
168           'sources': [
169             'cronet/android/cronet_jni.cc',
170           ],
171           'dependencies': [
172             'cronet_static',
173             '../base/base.gyp:base',
174             '../net/net.gyp:net',
175             '../url/url.gyp:url_lib',
176           ],
177         },
178         { # cronet_stub.jar defines HttpUrlRequest interface and provides its
179           # its implementation using HttpUrlConnection (not the Chromium stack).
180           'target_name': 'cronet_stub',
181           'type': 'none',
182           'dependencies': [
183             'cronet_url_request_context_config_list',
184             'cronet_version',
185           ],
186           'variables': {
187             'java_in_dir': 'cronet/android/java',
188             'javac_includes': [
189               '**/AsyncUrlRequest.java',
190               '**/AsyncUrlRequestException.java',
191               '**/AsyncUrlRequestFactory.java',
192               '**/AsyncUrlRequestListener.java',
193               '**/ResponseInfo.java',
194               '**/ChunkedWritableByteChannel.java',
195               '**/HttpUrlConnection*.java',
196               '**/HttpUrlRequest*.java',
197               '**/ResponseTooLargeException.java',
198               '**/UserAgent.java',
199               # TODO(mef): Consider moving this into HttpUrlRequestConfig.
200               '**/UrlRequestContextConfig.java',
201               '**/Version.java',
202             ],
203           },
204           'includes': [ '../build/java.gypi' ],
205         },
206         { # cronet.jar implements HttpUrlRequest interface using Chromium stack
207           # in native libcronet.so library.
208           'target_name': 'cronet',
209           'type': 'none',
210           'dependencies': [
211             '../base/base.gyp:base',
212             'cronet_stub',
213             'cronet_url_request_error_list',
214             'cronet_url_request_priority_list',
215             'libcronet',
216           ],
217           'variables': {
218             'java_in_dir': 'cronet/android/java',
219             'javac_includes': [
220               '**/ChromiumAsyncUrlRequest.java',
221               '**/ChromiumUrlRequest.java',
222               '**/ChromiumUrlRequestContext.java',
223               '**/ChromiumUrlRequestError.java',
224               '**/ChromiumUrlRequestFactory.java',
225               '**/ChromiumUrlRequestPriority.java',
226               '**/UsedByReflection.java',
227             ],
228           },
229           'includes': [ '../build/java.gypi' ],
230         },
231         {
232           'target_name': 'cronet_package',
233           'type': 'none',
234           'dependencies': [
235             'libcronet',
236             'cronet',
237             'cronet_stub',
238           ],
239           'variables': {
240               'native_lib': 'libcronet.>(android_product_extension)',
241               'java_lib': 'cronet.jar',
242               'java_stub_lib': 'cronet_stub.jar',
243               'java_src_lib': 'cronet-src.jar',
244               'java_sample_src_lib': 'cronet-sample-src.jar',
245               'lib_java_dir': '<(PRODUCT_DIR)/lib.java',
246               'package_dir': '<(PRODUCT_DIR)/cronet',
247               'intermediate_dir': '<(SHARED_INTERMEDIATE_DIR)/cronet',
248               'jar_extract_dir': '<(intermediate_dir)/cronet_jar_extract',
249               'jar_excluded_classes': [
250                 '*/library_loader/*',
251               ],
252               'jar_extract_stamp': '<(intermediate_dir)/jar_extract.stamp',
253               'cronet_jar_stamp': '<(intermediate_dir)/cronet_jar.stamp',
254           },
255           'actions': [
256             {
257               'action_name': 'strip libcronet',
258               'inputs': ['<(SHARED_LIB_DIR)/<(native_lib)'],
259               'outputs': ['<(package_dir)/libs/<(android_app_abi)/<(native_lib)'],
260               'action': [
261                 '<(android_strip)',
262                 '--strip-unneeded',
263                 '<@(_inputs)',
264                 '-o',
265                 '<@(_outputs)',
266               ],
267             },
268             {
269               'action_name': 'extracting from jars',
270               'inputs':  [
271                 '<(lib_java_dir)/<(java_lib)',
272                 '<(lib_java_dir)/base_java.jar',
273                 '<(lib_java_dir)/net_java.jar',
274                 '<(lib_java_dir)/url_java.jar',
275               ],
276               'outputs': ['<(jar_extract_stamp)', '<(jar_extract_dir)'],
277               'action': [
278                 'python',
279                 'cronet/tools/extract_from_jars.py',
280                 '--classes-dir=<(jar_extract_dir)',
281                 '--jars=<@(_inputs)',
282                 '--stamp=<(jar_extract_stamp)',
283               ],
284             },
285             {
286               'action_name': 'jar_<(_target_name)',
287               'message': 'Creating <(_target_name) jar',
288               'inputs': [
289                 '<(DEPTH)/build/android/gyp/util/build_utils.py',
290                 '<(DEPTH)/build/android/gyp/util/md5_check.py',
291                 '<(DEPTH)/build/android/gyp/jar.py',
292                 '<(jar_extract_stamp)',
293               ],
294               'outputs': [
295                 '<(package_dir)/<(java_lib)',
296                 '<(cronet_jar_stamp)',
297               ],
298               'action': [
299                 'python', '<(DEPTH)/build/android/gyp/jar.py',
300                 '--classes-dir=<(jar_extract_dir)',
301                 '--jar-path=<(package_dir)/<(java_lib)',
302                 '--excluded-classes=<@(jar_excluded_classes)',
303                 '--stamp=<(cronet_jar_stamp)',
304               ]
305             },
306             {
307               'action_name': 'jar_src_<(_target_name)',
308               'inputs': ['cronet/tools/jar_src.py'] ,
309               'outputs': ['<(package_dir)/<(java_src_lib)'],
310               'action': [
311                 'python',
312                 '<@(_inputs)',
313                 '--src-dir=cronet/android/java/src',
314                 '--jar-path=<(package_dir)/<(java_src_lib)',
315               ],
316             },
317             {
318               'action_name': 'jar_sample_src_<(_target_name)',
319               'inputs': ['cronet/tools/jar_src.py'] ,
320               'outputs': ['<(package_dir)/<(java_sample_src_lib)'],
321               'action': [
322                 'python',
323                 '<@(_inputs)',
324                 '--src-dir=cronet/android/sample',
325                 '--jar-path=<(package_dir)/<(java_sample_src_lib)',
326               ],
327             },
328             {
329               'action_name': 'generate licenses',
330               'inputs': ['cronet/tools/cronet_licenses.py'] ,
331               'outputs': ['<(package_dir)/LICENSE'],
332               'action': [
333                 'python',
334                 '<@(_inputs)',
335                 'license',
336                 '<@(_outputs)',
337               ],
338             },
339           ],
340           'copies': [
341             {
342               'destination': '<(package_dir)',
343               'files': [
344                 '../AUTHORS',
345                 '../chrome/VERSION',
346                 'cronet/android/proguard.cfg',
347                 '<(lib_java_dir)/<(java_stub_lib)'
348               ],
349             },
350             {
351               'destination': '<(package_dir)/symbols/<(android_app_abi)',
352               'files': [
353                 '<(SHARED_LIB_DIR)/<(native_lib)',
354               ],
355             },
356           ],
357         },
358         {
359           'target_name': 'cronet_sample_apk',
360           'type': 'none',
361           'dependencies': [
362             'cronet',
363             'cronet_stub',
364           ],
365           'variables': {
366             'apk_name': 'CronetSample',
367             'java_in_dir': 'cronet/android/sample',
368             'resource_dir': 'cronet/android/sample/res',
369             'native_lib_target': 'libcronet',
370             'proguard_enabled': 'true',
371             'proguard_flags_paths': [
372               'cronet/android/proguard.cfg',
373               'cronet/android/sample/javatests/proguard.cfg',
374             ],
375           },
376           'includes': [ '../build/java_apk.gypi' ],
377         },
378         {
379           # cronet_sample_apk creates a .jar as a side effect. Any java targets
380           # that need that .jar in their classpath should depend on this target,
381           # cronet_sample_apk_java. Dependents of cronet_sample_apk receive its
382           # jar path in the variable 'apk_output_jar_path'. This target should
383           # only be used by targets which instrument cronet_sample_apk.
384           'target_name': 'cronet_sample_apk_java',
385           'type': 'none',
386           'dependencies': [
387             'cronet_sample_apk',
388           ],
389           'includes': [ '../build/apk_fake_jar.gypi' ],
390         },
391         {
392           'target_name': 'cronet_sample_test_apk',
393           'type': 'none',
394           'dependencies': [
395             'cronet',
396             'cronet_sample_apk_java',
397             'cronet_stub',
398             '../base/base.gyp:base_java',
399             '../base/base.gyp:base_java_test_support',
400           ],
401           'variables': {
402             'apk_name': 'CronetSampleTest',
403             'java_in_dir': 'cronet/android/sample/javatests',
404             'resource_dir': 'cronet/android/sample/res',
405             'is_test_apk': 1,
406           },
407           'includes': [ '../build/java_apk.gypi' ],
408         },
409         {
410           'target_name': 'cronet_tests_jni_headers',
411           'type': 'none',
412           'sources': [
413             'cronet/android/test/src/org/chromium/cronet_test_apk/CronetTestUtil.java',
414             'cronet/android/test/src/org/chromium/cronet_test_apk/MockUrlRequestJobUtil.java',
415           ],
416           'variables': {
417             'jni_gen_package': 'cronet_tests',
418           },
419           'includes': [ '../build/jni_generator.gypi' ],
420         },
421         {
422           'target_name': 'libcronet_tests',
423           'type': 'shared_library',
424           'sources': [
425             'cronet/android/test/cronet_test_jni.cc',
426             'cronet/android/test/mock_url_request_job_util.cc',
427             'cronet/android/test/mock_url_request_job_util.h',
428             '../net/base/directory_lister.cc',
429             '../net/base/directory_lister.h',
430             '../net/url_request/url_request_file_job.cc',
431             '../net/url_request/url_request_file_job.h',
432           ],
433           'dependencies': [
434             'cronet_static',
435             'cronet_tests_jni_headers',
436             '../base/base.gyp:base',
437             '../net/net.gyp:net',
438             '../net/net.gyp:net_test_support',
439             '../net/net.gyp:quic_tools',
440             '../url/url.gyp:url_lib',
441             '../base/base.gyp:base_i18n',
442             '../third_party/icu/icu.gyp:icui18n',
443             '../third_party/icu/icu.gyp:icuuc',
444           ],
445         },
446         {
447           'target_name': 'cronet_test_apk',
448           'type': 'none',
449           'dependencies': [
450             'cronet',
451           ],
452           'variables': {
453             'apk_name': 'CronetTest',
454             'java_in_dir': 'cronet/android/test',
455             'resource_dir': 'cronet/android/test/res',
456             'asset_location': 'cronet/android/test/assets',
457             'native_lib_target': 'libcronet_tests',
458           },
459           'includes': [ '../build/java_apk.gypi' ],
460         },
461         {
462           # cronet_test_apk creates a .jar as a side effect. Any java targets
463           # that need that .jar in their classpath should depend on this target,
464           # cronet_sample_apk_java. Dependents of cronet_test_apk receive its
465           # jar path in the variable 'apk_output_jar_path'. This target should
466           # only be used by targets which instrument cronet_test_apk.
467           'target_name': 'cronet_test_apk_java',
468           'type': 'none',
469           'dependencies': [
470             'cronet_test_apk',
471           ],
472           'includes': [ '../build/apk_fake_jar.gypi' ],
473         },
474         {
475           'target_name': 'cronet_test_instrumentation_apk',
476           'type': 'none',
477           'dependencies': [
478             'cronet_test_apk_java',
479             '../base/base.gyp:base_java',
480             '../base/base.gyp:base_javatests',
481             '../base/base.gyp:base_java_test_support',
482           ],
483           'variables': {
484             'apk_name': 'CronetTestInstrumentation',
485             'java_in_dir': 'cronet/android/test/javatests',
486             'resource_dir': 'cronet/android/test/res',
487             'is_test_apk': 1,
488           },
489           'includes': [ '../build/java_apk.gypi' ],
490         },
491       ],
492     }],  # OS=="android"
493   ],