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