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

Unified Diff: components/cronet/android/BUILD.gn

Issue 1483843002: Port cronet build rules to GN part 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: components/cronet/android/BUILD.gn
diff --git a/components/cronet/android/BUILD.gn b/components/cronet/android/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..22d46bc4b758d45a0c7bf3561d699ff8adaaaca0
--- /dev/null
+++ b/components/cronet/android/BUILD.gn
@@ -0,0 +1,453 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/config/android/rules.gni")
+import("//build/util/version.gni")
+import("//chrome/version.gni")
+import("//testing/test.gni")
+
+assert(!is_component_build, "Cronet requires static library build.")
+
+declare_args() {
+ cronet_enable_data_reduction_proxy_support = false
megjablon 2015/12/08 20:03:31 when should this be true?
pkotwicz 2015/12/08 20:42:56 When a user specifies this as true in gn gen --arg
+}
+
+generate_jni("cronet_jni_headers") {
+ sources = [
+ "java/src/org/chromium/net/ChromiumUrlRequest.java",
+ "java/src/org/chromium/net/ChromiumUrlRequestContext.java",
+ "java/src/org/chromium/net/CronetLibraryLoader.java",
+ "java/src/org/chromium/net/CronetUploadDataStream.java",
+ "java/src/org/chromium/net/CronetUrlRequest.java",
+ "java/src/org/chromium/net/CronetUrlRequestContext.java",
+ ]
+ jni_package = "cronet"
+}
+
+java_cpp_enum("cronet_url_request_java") {
+ sources = [
+ "chromium_url_request.h",
+ ]
+}
+
+java_cpp_enum("net_request_priority_java") {
+ sources = [
+ "//net/base/request_priority.h",
+ ]
+}
+
+java_cpp_enum("network_quality_observations_java") {
+ sources = [
+ "//net/base/network_quality_estimator.h",
+ ]
+}
+
+java_cpp_template("cronet_engine_builder_list") {
+ sources = [
+ "java/src/org/chromium/net/CronetEngineBuilderList.template",
+ ]
+ inputs = [
+ "//components/cronet/url_request_context_config_list.h",
+ ]
+ package_name = "org/chromium/net"
+}
+
+java_cpp_template("load_states_list") {
+ sources = [
+ "java/src/org/chromium/net/LoadState.template",
+ ]
+ inputs = [
+ "//net/base/load_states_list.h",
+ ]
+ package_name = "org/chromium/cronet"
+}
+
+_generated_version_java_dir = "$target_gen_dir/templates/cronet_version_java"
+_generated_version_java =
+ "$_generated_version_java_dir/org/chromium/cronet/Version.java"
+
+process_version("cronet_version_java") {
+ template_file = "java/src/org/chromium/net/Version.template"
+ output = _generated_version_java
+}
+
+zip("cronet_version_srcjar") {
mef 2015/12/02 16:57:49 what does this do?
pkotwicz 2015/12/03 19:24:18 This packages up the generated Version.java in a .
+ inputs = [
+ _generated_version_java,
+ ]
+ output = "$target_gen_dir/$target_name.srcjar"
+ base_dir = _generated_version_java_dir
+ deps = [
+ ":cronet_version_java",
+ ]
+}
+
+_cronet_version_header_include_dir = "$target_gen_dir/cronet_version_header"
+process_version("cronet_version_header") {
+ template_file = "//components/cronet/version.h.in"
+ output = "$_cronet_version_header_include_dir/components/cronet/version.h"
+ extra_args = [
+ "-e",
+ "VERSION_FULL=\"$chrome_version_full\"",
+ ]
+}
+
+template("cronet_static_tmpl") {
Dirk Pranke 2015/12/09 22:28:26 templates should have comments describing their in
+ source_set(target_name) {
+ defines = []
+
+ deps = [
+ ":cronet_engine_builder_list",
+ ":cronet_jni_headers",
+ ":cronet_url_request_java",
+ ":cronet_version_header",
+ "//base",
+ "//base/third_party/dynamic_annotations",
+ "//components/metrics",
+ ]
+ sources = [
+ "//components/cronet/android/chromium_url_request.cc",
+ "//components/cronet/android/chromium_url_request.h",
+ "//components/cronet/android/chromium_url_request_context.cc",
+ "//components/cronet/android/chromium_url_request_context.h",
+ "//components/cronet/android/chromium_url_request_error_list.h",
+ "//components/cronet/android/chromium_url_request_priority_list.h",
+ "//components/cronet/android/cronet_in_memory_pref_store.cc",
+ "//components/cronet/android/cronet_in_memory_pref_store.h",
+ "//components/cronet/android/cronet_library_loader.cc",
+ "//components/cronet/android/cronet_library_loader.h",
+ "//components/cronet/android/cronet_upload_data_stream.cc",
+ "//components/cronet/android/cronet_upload_data_stream.h",
+ "//components/cronet/android/cronet_upload_data_stream_adapter.cc",
+ "//components/cronet/android/cronet_upload_data_stream_adapter.h",
+ "//components/cronet/android/cronet_url_request_adapter.cc",
+ "//components/cronet/android/cronet_url_request_adapter.h",
+ "//components/cronet/android/cronet_url_request_context_adapter.cc",
+ "//components/cronet/android/cronet_url_request_context_adapter.h",
+ "//components/cronet/android/url_request_adapter.cc",
+ "//components/cronet/android/url_request_adapter.h",
+ "//components/cronet/android/url_request_context_adapter.cc",
+ "//components/cronet/android/url_request_context_adapter.h",
+ "//components/cronet/android/wrapped_channel_upload_element_reader.cc",
+ "//components/cronet/android/wrapped_channel_upload_element_reader.h",
+ "//components/cronet/histogram_manager.cc",
+ "//components/cronet/histogram_manager.h",
+ "//components/cronet/url_request_context_config.cc",
+ "//components/cronet/url_request_context_config.h",
+ "//components/cronet/url_request_context_config_list.h",
+ ]
+
+ include_dirs = [ _cronet_version_header_include_dir ]
+
+ cflags = [
+ "-DLOGGING=1",
mef 2015/12/02 16:57:49 Interesting. Are these flags different from regula
pkotwicz 2015/12/03 19:24:19 These flags are taken right out of cronet_static.g
mef 2015/12/07 20:52:07 Right, and given that you don't list the entire bl
pkotwicz 2015/12/08 17:17:57 It looks like these flags have been around since h
+ "-Wno-sign-promo",
+ ]
+
+ libs = [
+ "android",
+ "log",
+ ]
+
+ if (cronet_enable_data_reduction_proxy_support) {
+ defines += [ "DATA_REDUCTION_PROXY_SUPPORT" ]
+ sources += [
+ "//components/cronet/android/cronet_data_reduction_proxy.cc",
+ "//components/cronet/android/cronet_data_reduction_proxy.h",
+ ]
+ }
+
+ if (defined(invoker.defines)) {
+ defines += invoker.defines
+ }
+
+ if (defined(invoker.deps)) {
+ deps += invoker.deps
+ }
+ }
+}
+
+# cronet_static_small target has reduced binary size through using
+# ICU alternatives which requires file and ftp support be disabled.
mef 2015/12/02 16:57:49 file and ftp support are disabled primarily for si
pkotwicz 2015/12/03 19:24:19 I copied the comment from cronet.gypi. Should I mo
mef 2015/12/07 20:52:06 No, that's fine.
+cronet_static_tmpl("cronet_static_small") {
+ defines = [
+ "USE_ICU_ALTERNATIVES_ON_ANDROID=1",
+ "DISABLE_FILE_SUPPORT=1",
+ "DISABLE_FTP_SUPPORT=1",
+ ]
+
+ deps = [
+ "//net:net_small",
+ "//url:url_lib_use_icu_alternatives_on_android",
+ ]
+
+ if (cronet_enable_data_reduction_proxy_support) {
+ deps += [ "//components/data_reduction_proxy/core/browser:browser_small" ]
+ }
+}
+
+# cronet_static target depends on ICU and includes file and ftp support.
+cronet_static_tmpl("cronet_static") {
+ deps = [
+ "//base:i18n",
+ "//net",
+ "//url",
+ ]
+
+ if (cronet_enable_data_reduction_proxy_support) {
+ deps += [ "//components/data_reduction_proxy/core/browser" ]
+ }
+}
+
+shared_library("cronet") {
+ sources = [
+ "cronet_jni.cc",
+ ]
+ deps = [
+ ":cronet_static_small",
+ "//base",
+ "//net:net_small",
+ ]
+}
+
+# cronet_api.jar defines Cronet API and provides implementation of
+# legacy api using HttpUrlConnection (not the Chromium stack).
+android_library("cronet_api") {
+ DEPRECATED_java_in_dir = "api/src"
mef 2015/12/02 16:57:49 If new way is to use java_files section, then we c
pkotwicz 2015/12/03 19:24:19 DEPRECATED_java_in_dir is a misnomer. It is not de
mef 2015/12/07 20:52:06 Acknowledged.
+
+ deps = [
+ "//third_party/android_tools:android_support_annotations_javalib",
+ ]
+
+ srcjar_deps = [
mef 2015/12/02 16:57:49 Nice, are those added to src jar?
pkotwicz 2015/12/03 19:24:18 I do not really understand your question. The con
mef 2015/12/07 20:52:07 Hm, I thought that srcjars generated by GYP don't
+ ":cronet_engine_builder_list",
+ ":cronet_version_srcjar",
+ ":load_states_list",
+ ":network_quality_observations_java",
+ ]
+
+ run_findbugs = true
+}
+
+android_library("cronet_java") {
+ java_files = [
+ "java/src/org/chromium/net/ChromiumUrlRequest.java",
+ "java/src/org/chromium/net/ChromiumUrlRequestContext.java",
+ "java/src/org/chromium/net/ChromiumUrlRequestFactory.java",
+ "java/src/org/chromium/net/CronetLibraryLoader.java",
+ "java/src/org/chromium/net/CronetUploadDataStream.java",
+ "java/src/org/chromium/net/CronetUrlRequest.java",
+ "java/src/org/chromium/net/CronetUrlRequestContext.java",
+ "java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java",
+ "java/src/org/chromium/net/urlconnection/CronetChunkedOutputStream.java",
+ "java/src/org/chromium/net/urlconnection/CronetFixedModeOutputStream.java",
+ "java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java",
+ "java/src/org/chromium/net/urlconnection/CronetHttpURLStreamHandler.java",
+ "java/src/org/chromium/net/urlconnection/CronetInputStream.java",
+ "java/src/org/chromium/net/urlconnection/CronetOutputStream.java",
+ "java/src/org/chromium/net/urlconnection/CronetURLStreamHandlerFactory.java",
+ "java/src/org/chromium/net/urlconnection/MessageLoop.java",
+ ]
+
+ deps = [
+ ":cronet_api",
+ "//base:base_java",
+ "//net/android:net_java",
+ "//third_party/jsr-305:jsr_305_javalib",
+ ]
+
+ srcjar_deps = [
+ ":cronet_url_request_java",
+ ":net_request_priority_java",
+ ]
+
+ run_findbugs = true
+}
+
+android_resources("cronet_sample_apk_resources") {
+ resource_dirs = [ "sample/res" ]
+ android_manifest = "sample/AndroidManifest.xml"
+}
+
+android_library("cronet_sample_apk_java") {
+ DEPRECATED_java_in_dir = "sample/src"
+
+ deps = [
+ ":cronet_api",
+ ":cronet_java",
+ ":cronet_sample_apk_resources",
+ "//base:base_java",
+ ]
+
+ run_findbugs = true
+}
+
+android_apk("cronet_sample_apk") {
+ apk_name = "CronetSample"
+ android_manifest = "sample/AndroidManifest.xml"
+ native_libs = [ "libcronet.so" ]
+
+ deps = [
+ ":cronet",
+ ":cronet_sample_apk_java",
+ ":cronet_sample_apk_resources",
+ "//base:base_java",
+ "//third_party/jsr-305:jsr_305_javalib",
+ ]
+
+ run_findbugs = true
+ proguard_enabled = !is_debug
+ proguard_configs = [
+ "proguard.cfg",
+ "sample/javatests/proguard.cfg",
+ ]
+}
+
+# cronet_sample_test_apk_resources is identical to
+# cronet_sample_apk_resources. The two have to be different targets because
+# targets which are common between the "instrumentation test apk" and the
+# "tested apk" are removed from the "instrumentation test apk".
+android_resources("cronet_sample_test_apk_resources") {
+ resource_dirs = [ "sample/res" ]
+ android_manifest = "sample/AndroidManifest.xml"
+}
+
+instrumentation_test_apk("cronet_sample_test_apk") {
+ apk_name = "CronetSampleTest"
+ apk_under_test = ":cronet_sample_apk"
+ android_manifest = "sample/javatests/AndroidManifest.xml"
+ DEPRECATED_java_in_dir = "sample/javatests/src"
+
+ deps = [
+ ":cronet_api",
+ ":cronet_java",
+ ":cronet_sample_apk_java",
+ ":cronet_sample_test_apk_resources",
+ "//base:base_java",
+ "//base:base_java_test_support",
+ ]
+
+ run_findbugs = true
+ proguard_enabled = !is_debug
+}
+
+generate_jni("cronet_tests_jni_headers") {
+ testonly = true
+ sources = [
+ "test/src/org/chromium/net/CronetTestUtil.java",
+ "test/src/org/chromium/net/MockCertVerifier.java",
+ "test/src/org/chromium/net/MockUrlRequestJobFactory.java",
+ "test/src/org/chromium/net/NativeTestServer.java",
+ "test/src/org/chromium/net/NetworkChangeNotifierUtil.java",
+ "test/src/org/chromium/net/QuicTestServer.java",
+ "test/src/org/chromium/net/SdchObserver.java",
+ "test/src/org/chromium/net/TestUploadDataStreamHandler.java",
+ ]
+ jni_package = "cronet_tests"
+}
+
+shared_library("cronet_tests") {
+ testonly = true
+ sources = [
+ "test/cronet_test_jni.cc",
+ "test/mock_cert_verifier.cc",
+ "test/mock_cert_verifier.h",
+ "test/mock_url_request_job_factory.cc",
+ "test/mock_url_request_job_factory.h",
+ "test/native_test_server.cc",
+ "test/native_test_server.h",
+ "test/network_change_notifier_util.cc",
+ "test/network_change_notifier_util.h",
+ "test/quic_test_server.cc",
+ "test/quic_test_server.h",
+ "test/sdch_test_util.cc",
+ "test/sdch_test_util.h",
+ "test/test_upload_data_stream_handler.cc",
+ "test/test_upload_data_stream_handler.h",
+ ]
+
+ deps = [
+ ":cronet_static",
+ ":cronet_tests_jni_headers",
+ "//base",
+ "//base:i18n",
+ "//net",
+ "//net:simple_quic_tools",
+ "//net:test_support",
+ "//third_party/icu",
+ ]
+
+ if (cronet_enable_data_reduction_proxy_support) {
+ deps += [ "//components/data_reduction_proxy/core/browser" ]
+ }
+}
+
+android_resources("cronet_test_apk_resources") {
+ testonly = true
+ resource_dirs = [ "test/res" ]
+ android_manifest = "test/AndroidManifest.xml"
+}
+
+android_library("cronet_test_apk_java") {
+ testonly = true
+ DEPRECATED_java_in_dir = "test/src"
+
+ deps = [
+ ":cronet_api",
+ ":cronet_java",
+ "//base:base_java",
+ "//net/android:net_java_test_support",
+ ]
+}
+
+android_apk("cronet_test_apk") {
+ testonly = true
+ apk_name = "CronetTest"
+ android_manifest = "test/AndroidManifest.xml"
+ native_libs = [ "libcronet_tests.so" ]
+ asset_location = "test/assets"
+
+ deps = [
+ ":cronet_test_apk_java",
+ ":cronet_test_apk_resources",
+ ":cronet_tests",
+ "//base:base_java",
+ ]
+
+ run_findbugs = true
+}
+
+instrumentation_test_apk("cronet_test_instrumentation_apk") {
+ apk_name = "CronetTestInstrumentation"
+ apk_under_test = ":cronet_test_apk"
+ android_manifest = "test/javatests/AndroidManifest.xml"
+ DEPRECATED_java_in_dir = "test/javatests/src"
+
+ deps = [
+ ":cronet_api",
+ ":cronet_java",
+ ":cronet_test_apk_java",
+ "//base:base_java",
+ "//base:base_java_test_support",
+ "//net/android:net_java_test_support",
+ ]
+
+ run_findbugs = true
+}
+
+test("cronet_unittests") {
+ sources = [
+ "//components/cronet/histogram_manager_unittest.cc",
+ "//components/cronet/run_all_unittests.cc",
+ "//components/cronet/url_request_context_config_unittest.cc",
+ ]
+
+ deps = [
+ ":cronet_static",
+ "//base",
+ "//base/test:test_support",
+ "//components/metrics",
+ "//testing/gtest",
+ ]
+}

Powered by Google App Engine
This is Rietveld 408576698