blob: 4db6bdb88afca3a0d49f67812304c517965a9b7b [file] [log] [blame]
Mohamed Heikal3e5a2ae2023-07-26 19:10:311# Copyright 2023 The Chromium Authors
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import("//build/config/android/rules.gni")
6
7template("_androidx_prebuilt") {
8 target(invoker.target_type, target_name) {
9 forward_variables_from(invoker, "*", [ "target_type" ])
10
Andrew Grievea283deb2024-02-14 15:14:3911 if (target_name == "androidx_annotation_annotation_java") {
12 # Ensure this dep is the suggested one when targets are missing it.
13 preferred_dep = true
14 } else if (target_name == "androidx_annotation_annotation_jvm_java") {
Mohamed Heikal3e5a2ae2023-07-26 19:10:3115 # https://crbug.com/989505
16 jar_excluded_patterns = [ "META-INF/proguard/*" ]
17 proguard_configs = [ "androidx_annotations.flags" ]
18 } else if (target_name == "androidx_benchmark_benchmark_common_java") {
19 ignore_native_libraries = true
20 } else if (target_name == "androidx_benchmark_benchmark_macro_java") {
21 # Manually add dep onto DISALLOWED_DEP androidx.profileinstaller.
22 deps += [ ":androidx_profileinstaller_profileinstaller_java" ]
Mohamed Heikal3e5a2ae2023-07-26 19:10:3123 } else if (target_name ==
24 "androidx_coordinatorlayout_coordinatorlayout_java") {
25 # Reduce binary size. https:crbug.com/954584
26 ignore_proguard_configs = true
27 } else if (target_name == "androidx_core_core_java") {
28 # Target has AIDL, but we do not support it yet: http://crbug.com/644439
29 ignore_aidl = true
30
31 # Manifest and proguard config have just one entry: Adding (and -keep'ing
32 # android:appComponentFactory="androidx.core.app.CoreComponentFactory"
33 # Chrome does not use this feature and it causes a scary stack trace to be
34 # shown when incremental_install=true.
35 ignore_manifest = true
36 ignore_proguard_configs = true
37
38 # https://crbug.com/1414452
39 jar_excluded_patterns = [ "androidx/core/os/BuildCompat*" ]
40 public_deps = [ "//third_party/androidx/local_modifications/buildcompat:buildcompat_java" ]
41
42 if (!enable_java_asserts) {
43 # Omit the file since we use our own copy.
44 jar_excluded_patterns += [ "androidx/core/util/Preconditions.class" ]
45 deps += [ "//third_party/android_deps/local_modifications/preconditions:androidx_stub_preconditions_java" ]
46 }
47 } else if (target_name == "androidx_fragment_fragment_java") {
48 deps += [ "//third_party/android_deps/utils:java" ]
49
50 proguard_configs = [ "androidx_fragment.flags" ]
Mohamed Heikal3e5a2ae2023-07-26 19:10:3151 } else if (target_name == "androidx_lifecycle_lifecycle_process_java") {
52 # Only useful for very old SDKs.
53 ignore_proguard_configs = true
Andrew Grievef3e9c702024-06-21 21:10:2654 } else if (target_name == "androidx_graphics_graphics_path_java") {
55 ignore_native_libraries = true
Mohamed Heikal3e5a2ae2023-07-26 19:10:3156 } else if (target_name == "androidx_media_media_java") {
57 # Target has AIDL, but we do not support it yet: http://crbug.com/644439
58 ignore_aidl = true
59 } else if (target_name == "androidx_mediarouter_mediarouter_java") {
60 # https://crbug.com/1000382
61 proguard_configs = [ "androidx_mediarouter.flags" ]
62 } else if (target_name == "androidx_preference_preference_java") {
Mohamed Heikal3e5a2ae2023-07-26 19:10:3163 proguard_configs = [ "androidx_preferences.flags" ]
64
65 # Replace broad library -keep rules with a more limited set in
66 # chrome/android/java/proguard.flags instead.
67 ignore_proguard_configs = true
Mohamed Heikal3e5a2ae2023-07-26 19:10:3168 } else if (target_name == "androidx_startup_startup_runtime_java") {
69 # Keeps emoji2 code. See http://crbug.com/1205141
70 ignore_proguard_configs = true
Mohamed Heikal3e5a2ae2023-07-26 19:10:3171 } else if (target_name == "androidx_test_uiautomator_uiautomator_java") {
72 deps += [ ":androidx_test_runner_java" ]
Andrew Grieveacffb5d52023-10-17 20:07:1773 } else if (target_name == "androidx_tracing_tracing_perfetto_java") {
74 # b/280878596
75 jar_excluded_patterns = [ "dalvik/*" ]
Mohamed Heikal3e5a2ae2023-07-26 19:10:3176 } else if (target_name == "androidx_transition_transition_java") {
77 # Not specified in the POM, compileOnly dependency not supposed to be used unless
78 # the library is present: b/70887421
79 deps += [ ":androidx_fragment_fragment_java" ]
80 } else if (target_name == "androidx_tracing_tracing_perfetto_binary_java") {
81 ignore_native_libraries = true
82 } else if (target_name ==
83 "androidx_versionedparcelable_versionedparcelable_java") {
84 # Target has AIDL, but we do not support it yet: http://crbug.com/644439
85 ignore_aidl = true
Sam Maier35686f012024-09-17 20:09:0986 } else if (target_name == "androidx_window_window_java") {
87 deps += [
88 # This library has a <uses-library> to enable some extra OS APIs, so ensure the
89 # .jar file is made available to R8 via this dep.
90 "//third_party/android_sdk:android_window_extensions_java",
91
92 # Sidecar as a library seems to be gone in Maven, so deps don't exist
93 # onto sidecar.
94 "//third_party/androidx:androidx_window_sidecar_sidecar_java",
95 ]
Mohamed Heikal3e5a2ae2023-07-26 19:10:3196 } else if (target_name == "androidx_webkit_webkit_java") {
97 visibility = [
98 "//android_webview/tools/system_webview_shell:*",
99 "//third_party/android_deps:*",
100 ]
Ritika Gupta73a5c3b2024-08-23 01:53:32101 } else if (target_name == "androidx_room_room_guava_java") {
102 deps -= [ ":androidx_room_room_runtime_jvm_java" ]
103 deps += [ ":androidx_room_room_runtime_android_java" ]
104 } else if (target_name == "androidx_sqlite_sqlite_framework_android_java" ||
105 target_name == "androidx_room_room_runtime_android_java") {
106 deps -= [ ":androidx_sqlite_sqlite_jvm_java" ]
107 deps += [ ":androidx_sqlite_sqlite_android_java" ]
Mohamed Heikal3e5a2ae2023-07-26 19:10:31108 }
109 }
Andrew Grievec0809760b2023-09-25 19:44:15110
111 # Arbitrarily use this target to add new top-level GN targets.
112 if (target_name == "androidx_annotation_annotation_jvm_java") {
113 java_group("androidx_window_stubs_java") {
114 deps = [ "//third_party/androidx/local_modifications/window:androidx_window_shims_java" ]
115 }
116 }
Mohamed Heikal3e5a2ae2023-07-26 19:10:31117}
118
119template("androidx_java_prebuilt") {
120 _androidx_prebuilt(target_name) {
121 forward_variables_from(invoker, "*")
122 target_type = "java_prebuilt"
123
Andrew Grieve5b2bd852024-12-02 16:04:51124 # If this target only "supports_android", then it will not be allowed to
125 # depend on a target that "requires_android". https://crbug.com/1412551
126 if (target_name != "androidx_annotation_annotation_jvm_java") {
127 requires_android = true
128 }
Mohamed Heikal3e5a2ae2023-07-26 19:10:31129 }
130}
131
132template("androidx_android_aar_prebuilt") {
133 _androidx_prebuilt(target_name) {
134 forward_variables_from(invoker, "*")
135 target_type = "android_aar_prebuilt"
136
137 # The libraries have duplicate resources such as
138 # "primary_text_default_material_dark".
139 resource_overlay = true
Shu Yang1a4e6262024-08-12 17:53:22140
141 if (target_name == "androidx_pdf_pdf_viewer_java") {
142 # Target has AIDL, but we do not support it yet: http://crbug.com/644439
143 ignore_aidl = true
144 }
Mohamed Heikal3e5a2ae2023-07-26 19:10:31145 }
146}
Andrew Grievea283deb2024-02-14 15:14:39147
148template("androidx_java_group") {
149 _androidx_prebuilt(target_name) {
150 forward_variables_from(invoker, "*")
151 target_type = "java_group"
152 }
153}