Mohamed Heikal | 3e5a2ae | 2023-07-26 19:10:31 | [diff] [blame] | 1 | # 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 | |
| 5 | import("//build/config/android/rules.gni") |
| 6 | |
| 7 | template("_androidx_prebuilt") { |
| 8 | target(invoker.target_type, target_name) { |
| 9 | forward_variables_from(invoker, "*", [ "target_type" ]) |
| 10 | |
Andrew Grieve | a283deb | 2024-02-14 15:14:39 | [diff] [blame] | 11 | 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 Heikal | 3e5a2ae | 2023-07-26 19:10:31 | [diff] [blame] | 15 | # 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 Heikal | 3e5a2ae | 2023-07-26 19:10:31 | [diff] [blame] | 23 | } 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 Heikal | 3e5a2ae | 2023-07-26 19:10:31 | [diff] [blame] | 51 | } else if (target_name == "androidx_lifecycle_lifecycle_process_java") { |
| 52 | # Only useful for very old SDKs. |
| 53 | ignore_proguard_configs = true |
Andrew Grieve | f3e9c70 | 2024-06-21 21:10:26 | [diff] [blame] | 54 | } else if (target_name == "androidx_graphics_graphics_path_java") { |
| 55 | ignore_native_libraries = true |
Mohamed Heikal | 3e5a2ae | 2023-07-26 19:10:31 | [diff] [blame] | 56 | } 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 Heikal | 3e5a2ae | 2023-07-26 19:10:31 | [diff] [blame] | 63 | 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 Heikal | 3e5a2ae | 2023-07-26 19:10:31 | [diff] [blame] | 68 | } else if (target_name == "androidx_startup_startup_runtime_java") { |
| 69 | # Keeps emoji2 code. See http://crbug.com/1205141 |
| 70 | ignore_proguard_configs = true |
Mohamed Heikal | 3e5a2ae | 2023-07-26 19:10:31 | [diff] [blame] | 71 | } else if (target_name == "androidx_test_uiautomator_uiautomator_java") { |
| 72 | deps += [ ":androidx_test_runner_java" ] |
Andrew Grieve | acffb5d5 | 2023-10-17 20:07:17 | [diff] [blame] | 73 | } else if (target_name == "androidx_tracing_tracing_perfetto_java") { |
| 74 | # b/280878596 |
| 75 | jar_excluded_patterns = [ "dalvik/*" ] |
Mohamed Heikal | 3e5a2ae | 2023-07-26 19:10:31 | [diff] [blame] | 76 | } 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 Maier | 35686f01 | 2024-09-17 20:09:09 | [diff] [blame] | 86 | } 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 Heikal | 3e5a2ae | 2023-07-26 19:10:31 | [diff] [blame] | 96 | } else if (target_name == "androidx_webkit_webkit_java") { |
| 97 | visibility = [ |
| 98 | "//android_webview/tools/system_webview_shell:*", |
| 99 | "//third_party/android_deps:*", |
| 100 | ] |
Ritika Gupta | 73a5c3b | 2024-08-23 01:53:32 | [diff] [blame] | 101 | } 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 Heikal | 3e5a2ae | 2023-07-26 19:10:31 | [diff] [blame] | 108 | } |
| 109 | } |
Andrew Grieve | c0809760b | 2023-09-25 19:44:15 | [diff] [blame] | 110 | |
| 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 Heikal | 3e5a2ae | 2023-07-26 19:10:31 | [diff] [blame] | 117 | } |
| 118 | |
| 119 | template("androidx_java_prebuilt") { |
| 120 | _androidx_prebuilt(target_name) { |
| 121 | forward_variables_from(invoker, "*") |
| 122 | target_type = "java_prebuilt" |
| 123 | |
Andrew Grieve | 5b2bd85 | 2024-12-02 16:04:51 | [diff] [blame^] | 124 | # 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 Heikal | 3e5a2ae | 2023-07-26 19:10:31 | [diff] [blame] | 129 | } |
| 130 | } |
| 131 | |
| 132 | template("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 Yang | 1a4e626 | 2024-08-12 17:53:22 | [diff] [blame] | 140 | |
| 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 Heikal | 3e5a2ae | 2023-07-26 19:10:31 | [diff] [blame] | 145 | } |
| 146 | } |
Andrew Grieve | a283deb | 2024-02-14 15:14:39 | [diff] [blame] | 147 | |
| 148 | template("androidx_java_group") { |
| 149 | _androidx_prebuilt(target_name) { |
| 150 | forward_variables_from(invoker, "*") |
| 151 | target_type = "java_group" |
| 152 | } |
| 153 | } |