blob: 757a029ddc25ca8d54665850b2e00aaae6534ade [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
Andrew Grieve724c31652025-02-05 17:15:3627 } else if (target_name == "androidx_appcompat_appcompat_java") {
28 deps += [ ":core_overrides_java" ]
Mohamed Heikal3e5a2ae2023-07-26 19:10:3129 } else if (target_name == "androidx_core_core_java") {
30 # Target has AIDL, but we do not support it yet: http://crbug.com/644439
31 ignore_aidl = true
32
33 # Manifest and proguard config have just one entry: Adding (and -keep'ing
34 # android:appComponentFactory="androidx.core.app.CoreComponentFactory"
35 # Chrome does not use this feature and it causes a scary stack trace to be
36 # shown when incremental_install=true.
37 ignore_manifest = true
38 ignore_proguard_configs = true
39
40 # https://crbug.com/1414452
Andrew Grieve724c31652025-02-05 17:15:3641 jar_excluded_patterns = [
42 "androidx/core/os/BuildCompat*",
43 "androidx/core/content/res/TypedArrayUtils*",
44 ]
Mohamed Heikal3e5a2ae2023-07-26 19:10:3145 public_deps = [ "//third_party/androidx/local_modifications/buildcompat:buildcompat_java" ]
46
47 if (!enable_java_asserts) {
48 # Omit the file since we use our own copy.
49 jar_excluded_patterns += [ "androidx/core/util/Preconditions.class" ]
50 deps += [ "//third_party/android_deps/local_modifications/preconditions:androidx_stub_preconditions_java" ]
51 }
52 } else if (target_name == "androidx_fragment_fragment_java") {
53 deps += [ "//third_party/android_deps/utils:java" ]
54
55 proguard_configs = [ "androidx_fragment.flags" ]
Mohamed Heikal3e5a2ae2023-07-26 19:10:3156 } else if (target_name == "androidx_lifecycle_lifecycle_process_java") {
57 # Only useful for very old SDKs.
58 ignore_proguard_configs = true
Andrew Grievef3e9c702024-06-21 21:10:2659 } else if (target_name == "androidx_graphics_graphics_path_java") {
60 ignore_native_libraries = true
Mohamed Heikal3e5a2ae2023-07-26 19:10:3161 } else if (target_name == "androidx_media_media_java") {
62 # Target has AIDL, but we do not support it yet: http://crbug.com/644439
63 ignore_aidl = true
64 } else if (target_name == "androidx_mediarouter_mediarouter_java") {
65 # https://crbug.com/1000382
66 proguard_configs = [ "androidx_mediarouter.flags" ]
67 } else if (target_name == "androidx_preference_preference_java") {
Mohamed Heikal3e5a2ae2023-07-26 19:10:3168 proguard_configs = [ "androidx_preferences.flags" ]
69
70 # Replace broad library -keep rules with a more limited set in
71 # chrome/android/java/proguard.flags instead.
72 ignore_proguard_configs = true
Mohamed Heikal3e5a2ae2023-07-26 19:10:3173 } else if (target_name == "androidx_startup_startup_runtime_java") {
74 # Keeps emoji2 code. See http://crbug.com/1205141
75 ignore_proguard_configs = true
Mohamed Heikal3e5a2ae2023-07-26 19:10:3176 } else if (target_name == "androidx_test_uiautomator_uiautomator_java") {
77 deps += [ ":androidx_test_runner_java" ]
Andrew Grieveacffb5d52023-10-17 20:07:1778 } else if (target_name == "androidx_tracing_tracing_perfetto_java") {
79 # b/280878596
80 jar_excluded_patterns = [ "dalvik/*" ]
Mohamed Heikal3e5a2ae2023-07-26 19:10:3181 } else if (target_name == "androidx_transition_transition_java") {
82 # Not specified in the POM, compileOnly dependency not supposed to be used unless
83 # the library is present: b/70887421
84 deps += [ ":androidx_fragment_fragment_java" ]
85 } else if (target_name == "androidx_tracing_tracing_perfetto_binary_java") {
86 ignore_native_libraries = true
87 } else if (target_name ==
88 "androidx_versionedparcelable_versionedparcelable_java") {
89 # Target has AIDL, but we do not support it yet: http://crbug.com/644439
90 ignore_aidl = true
Sam Maier35686f02024-09-17 20:09:0991 } else if (target_name == "androidx_window_window_java") {
92 deps += [
93 # This library has a <uses-library> to enable some extra OS APIs, so ensure the
94 # .jar file is made available to R8 via this dep.
95 "//third_party/android_sdk:android_window_extensions_java",
96
97 # Sidecar as a library seems to be gone in Maven, so deps don't exist
98 # onto sidecar.
99 "//third_party/androidx:androidx_window_sidecar_sidecar_java",
100 ]
Mohamed Heikal3e5a2ae2023-07-26 19:10:31101 } else if (target_name == "androidx_webkit_webkit_java") {
102 visibility = [
103 "//android_webview/tools/system_webview_shell:*",
104 "//third_party/android_deps:*",
105 ]
Mohamed Heikal569f3112025-01-09 18:06:39106 } else if (target_name == "androidx_datastore_datastore_core_android_java") {
107 ignore_native_libraries = true
Andrew Grieve724c31652025-02-05 17:15:36108 } else if (target_name == "androidx_compose_ui_ui_android_java") {
109 jar_excluded_patterns = [
110 "androidx/compose/ui/graphics/vector/compat/AndroidVectorParser*",
111 "androidx/compose/ui/graphics/vector/compat/XmlVectorParser*",
112 ]
113 } else if (target_name == "androidx_compose_ui_ui_java") {
114 public_deps = [ ":compose_ui_overrides_java" ]
Andrew Grievea54cd8e2025-02-21 20:30:21115 } else if (filter_include([ target_name ], [ "androidx_xr_*" ]) != []) {
116 # Configs are overly broad.
117 ignore_proguard_configs = true
Gurmeet Kalra8812f332025-02-25 23:39:16118 proguard_configs = [ "androidx_xr.flags" ]
Andrew Grievea54cd8e2025-02-21 20:30:21119
120 # We do not use the APIs that require the native code.
121 ignore_native_libraries = true
122
123 # It adds:
124 # <uses-native-library android:name="libopenxr.google.so" android:required="false"/>
125 # <uses-library android:name="com.android.extensions.xr" android:required="false"/>
126 # We do not need the uses-native-library, but do need the uses-library.
127 # However, we add it via the dep onto android_xr_extensions_java.
128 ignore_manifest = true
129 deps += [ "//third_party/android_sdk:android_xr_extensions_java" ]
Mohamed Heikal3e5a2ae2023-07-26 19:10:31130 }
131 }
Andrew Grievec0809760b2023-09-25 19:44:15132
133 # Arbitrarily use this target to add new top-level GN targets.
134 if (target_name == "androidx_annotation_annotation_jvm_java") {
135 java_group("androidx_window_stubs_java") {
136 deps = [ "//third_party/androidx/local_modifications/window:androidx_window_shims_java" ]
137 }
138 }
Mohamed Heikal3e5a2ae2023-07-26 19:10:31139}
140
141template("androidx_java_prebuilt") {
142 _androidx_prebuilt(target_name) {
143 forward_variables_from(invoker, "*")
144 target_type = "java_prebuilt"
145
Andrew Grieve5b2bd852024-12-02 16:04:51146 # If this target only "supports_android", then it will not be allowed to
147 # depend on a target that "requires_android". https://crbug.com/1412551
148 if (target_name != "androidx_annotation_annotation_jvm_java") {
149 requires_android = true
150 }
Mohamed Heikal3e5a2ae2023-07-26 19:10:31151 }
152}
153
154template("androidx_android_aar_prebuilt") {
155 _androidx_prebuilt(target_name) {
156 forward_variables_from(invoker, "*")
157 target_type = "android_aar_prebuilt"
158
159 # The libraries have duplicate resources such as
160 # "primary_text_default_material_dark".
161 resource_overlay = true
Shu Yang1a4e6262024-08-12 17:53:22162
Andrew Grievef392d622025-06-25 14:41:58163 if (target_name == "androidx_pdf_pdf_viewer_java" ||
164 target_name == "androidx_pdf_pdf_document_service_java") {
165 # Target has AIDL, which we do not need (and don't support).
Shu Yang1a4e6262024-08-12 17:53:22166 ignore_aidl = true
167 }
Mohamed Heikal3e5a2ae2023-07-26 19:10:31168 }
169}
Andrew Grievea283deb2024-02-14 15:14:39170
171template("androidx_java_group") {
172 _androidx_prebuilt(target_name) {
173 forward_variables_from(invoker, "*")
174 target_type = "java_group"
175 }
176}