xref: /aosp_15_r20/external/kotlinx.coroutines/Android.bp (revision 7a7160fed73afa6648ef8aa100d4a336fe921d9a)
1package {
2    default_applicable_licenses: ["external_kotlinx.coroutines_license"],
3    default_visibility: ["//visibility:private"],
4}
5
6// Added automatically by a large-scale-change that took the approach of
7// 'apply every license found to every target'. While this makes sure we respect
8// every license restriction, it may not be entirely correct.
9//
10// e.g. GPL in an MIT project might only apply to the contrib/ directory.
11//
12// Please consider splitting the single license below into multiple licenses,
13// taking care not to lose any license_kind information, and overriding the
14// default license using the 'licenses: [...]' property on targets as needed.
15//
16// For unused files, consider creating a 'fileGroup' with "//visibility:private"
17// to attach the license to, and including a comment whether the files may be
18// used in the current project.
19//
20// large-scale-change included anything that looked like it might be a license
21// text as a license_text. e.g. LICENSE, NOTICE, COPYING etc.
22//
23// Please consider removing redundant or irrelevant files from 'license_text:'.
24// See: http://go/android-license-faq
25license {
26    name: "external_kotlinx.coroutines_license",
27    visibility: [":__subpackages__"],
28    license_kinds: [
29        "SPDX-license-identifier-Apache-2.0",
30        "SPDX-license-identifier-MIT",
31    ],
32    license_text: [
33        "LICENSE",
34        "LICENSE.txt",
35        "license/**/*",
36    ],
37}
38
39// Upstream compiles this lib against the JVM bootclasspath; compiling against the Android
40// bootclasspath will fail. Work around this by defining this as a java_library_host, and use
41// java_host_for_device to expose it to Android targets.
42java_library_host {
43    name: "kotlinx_coroutines-host",
44    srcs: ["kotlinx-coroutines-core/jvm/src/**/*.kt"],
45    common_srcs: [
46        "kotlinx-coroutines-core/common/src/**/*.kt",
47        "kotlinx-coroutines-core/concurrent/src/**/*.kt",
48    ],
49    exclude_srcs: [
50        "kotlinx-coroutines-core/jvm/src/test_/TestCoroutineContext.kt",
51    ],
52    java_resource_dirs: ["kotlinx-coroutines-core/jvm/resources"],
53    // See https://github.com/Kotlin/kotlinx.coroutines#avoiding-including-the-debug-infrastructure-in-the-resulting-apk
54    // This file contains `kotlin.coroutines.jvm.internal.DebugProbesKt` class and is only used
55    // by the debugger.
56    // This cause issues when generating coverage as Jacoco will fail with
57    // `Caused by: java.lang.IllegalStateException: Can't add different class with same name: kotlin/coroutines/jvm/internal/DebugProbesKt`
58    // See b/291743544 for more details
59    exclude_java_resources: ["kotlinx-coroutines-core/jvm/resources/DebugProbesKt.bin"],
60    static_libs: [
61        "kotlinx_atomicfu",
62    ],
63    libs: [
64        "annotations", // for android.annotation.SuppressLint
65        "kotlinx-coroutines-android-annotation-stubs",
66    ],
67    kotlincflags: [
68        "-Xmulti-platform",
69        "-opt-in=kotlin.RequiresOptIn",
70        "-opt-in=kotlin.experimental.ExperimentalTypeInference",
71        "-opt-in=kotlin.ExperimentalMultiplatform",
72        "-opt-in=kotlinx.coroutines.DelicateCoroutinesApi",
73        "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
74        "-opt-in=kotlinx.coroutines.ObsoleteCoroutinesApi",
75        "-opt-in=kotlinx.coroutines.InternalCoroutinesApi",
76        "-opt-in=kotlinx.coroutines.FlowPreview",
77    ],
78    apex_available: [
79        "//apex_available:platform",
80        "//apex_available:anyapex",
81    ],
82}
83
84// Expose the host library to Android targets. This is generally an unsafe operation; in using
85// this, we are asserting that any host-only code will never be evaluated at runtime on Android.
86// If we're wrong, we will see runtime exceptions.
87java_host_for_device {
88    name: "kotlinx_coroutines-device",
89    libs: ["kotlinx_coroutines-host"],
90}
91
92// Combine host and Android libs back into a single target.
93java_library {
94    name: "kotlinx_coroutines",
95    host_supported: true,
96    sdk_version: "core_current",
97    min_sdk_version: "28",
98    target: {
99        host: {
100            static_libs: ["kotlinx_coroutines-host"],
101        },
102        android: {
103            static_libs: ["kotlinx_coroutines-device"],
104        },
105    },
106    apex_available: [
107        "//apex_available:platform",
108        "//apex_available:anyapex",
109    ],
110    visibility: ["//visibility:public"],
111}
112
113java_library {
114    name: "kotlinx_coroutines_android",
115    sdk_version: "current",
116    min_sdk_version: "28",
117    srcs: ["ui/kotlinx-coroutines-android/src/**/*.kt"],
118    java_resource_dirs: ["ui/kotlinx-coroutines-android/resources"],
119    kotlincflags: [
120        "-opt-in=kotlinx.coroutines.InternalCoroutinesApi",
121        "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
122    ],
123    static_libs: [
124        "kotlinx_coroutines",
125    ],
126    libs: [
127        "androidx.annotation_annotation",
128    ],
129    apex_available: [
130        "//apex_available:platform",
131        "//apex_available:anyapex",
132    ],
133    visibility: ["//visibility:public"],
134}
135
136java_library {
137    name: "kotlinx_coroutines_test",
138    host_supported: true,
139    sdk_version: "core_current",
140    srcs: ["kotlinx-coroutines-test/jvm/src/**/*.kt"],
141    common_srcs: ["kotlinx-coroutines-test/common/src/**/*.kt"],
142    java_resource_dirs: ["kotlinx-coroutines-test/jvm/resources"],
143    kotlincflags: [
144        "-Xmulti-platform",
145        "-opt-in=kotlin.ExperimentalMultiplatform",
146        "-opt-in=kotlinx.coroutines.InternalCoroutinesApi",
147        "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
148    ],
149    libs: ["kotlinx_coroutines"],
150    apex_available: [
151        "//apex_available:platform",
152        "//apex_available:anyapex",
153    ],
154    visibility: ["//visibility:public"],
155}
156
157// Compile stub implementations of annotations used by kotlinx-coroutines but not present in the
158// Android tree.
159java_library {
160    name: "kotlinx-coroutines-android-annotation-stubs",
161    host_supported: true,
162    sdk_version: "core_current",
163    srcs: ["android-annotation-stubs/src/**/*.java"],
164}
165
166// Temporary aliases for kotlinx-coroutines-core, kotlinx-coroutines-core-jvm and
167// kotlinx-coroutines-android
168
169java_library {
170    name: "kotlinx-coroutines-core",
171    host_supported: true,
172    sdk_version: "core_current",
173    min_sdk_version: "28",
174    static_libs: ["kotlinx_coroutines"],
175    apex_available: [
176        "//apex_available:platform",
177        "//apex_available:anyapex",
178    ],
179    visibility: ["//visibility:public"],
180}
181
182java_library {
183    name: "kotlinx-coroutines-core-jvm",
184    host_supported: true,
185    sdk_version: "core_current",
186    min_sdk_version: "28",
187    static_libs: ["kotlinx_coroutines"],
188    apex_available: [
189        "//apex_available:platform",
190        "//apex_available:anyapex",
191    ],
192    visibility: ["//visibility:public"],
193}
194
195java_library {
196    name: "kotlinx-coroutines-android",
197    sdk_version: "current",
198    min_sdk_version: "28",
199    static_libs: [
200        "kotlinx_coroutines_android",
201        "kotlinx_coroutines",
202    ],
203    apex_available: [
204        "//apex_available:platform",
205        "//apex_available:anyapex",
206    ],
207    visibility: ["//visibility:public"],
208}
209
210filegroup {
211    name: "kotlinx-coroutines-play-services",
212    srcs: ["integration/kotlinx-coroutines-play-services/src/**/*.kt"],
213    visibility: ["//visibility:public"],
214}
215
216// Maven coordinate: org.jetbrains.kotlinx:kotlinx-coroutines-guava
217java_library {
218    name: "kotlinx_coroutines_guava",
219    sdk_version: "current",
220    min_sdk_version: "28",
221    host_supported: true,
222    srcs: ["integration/kotlinx-coroutines-guava/src/**/*.kt"],
223    kotlincflags: [
224        "-opt-in=kotlin.RequiresOptIn",
225        "-opt-in=kotlinx.coroutines.InternalCoroutinesApi",
226        "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
227    ],
228    libs: [
229        "kotlinx_coroutines",
230        "kotlin-stdlib-jdk8",
231        "guava",
232    ],
233    apex_available: [
234        "//apex_available:platform",
235        "//apex_available:anyapex",
236    ],
237    visibility: ["//visibility:public"],
238}
239
240// Maven coordinate: org.jetbrains.kotlinx:kotlinx-coroutines-reactive
241java_library {
242    name: "kotlinx_coroutines_reactive",
243    host_supported: true,
244    srcs: ["reactive/kotlinx-coroutines-reactive/src/**/*.kt"],
245    kotlincflags: [
246        "-opt-in=kotlin.RequiresOptIn",
247        "-opt-in=kotlinx.coroutines.InternalCoroutinesApi",
248        "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
249        "-opt-in=kotlin.experimental.ExperimentalTypeInference",
250    ],
251    libs: [
252        "kotlin-stdlib",
253        "kotlinx_coroutines",
254        "rxjava",
255    ],
256    apex_available: [
257        "//apex_available:platform",
258        "//apex_available:anyapex",
259    ],
260    visibility: ["//visibility:public"],
261}
262
263// Maven coordinate: org.jetbrains.kotlinx:kotlinx-coroutines-rx2
264java_library {
265    name: "kotlinx_coroutines_rx2",
266    host_supported: true,
267    srcs: ["reactive/kotlinx-coroutines-rx2/src/**/*.kt"],
268    kotlincflags: [
269        "-opt-in=kotlin.RequiresOptIn",
270        "-opt-in=kotlinx.coroutines.InternalCoroutinesApi",
271        "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
272        "-opt-in=kotlin.experimental.ExperimentalTypeInference",
273    ],
274    libs: [
275        "kotlin-stdlib",
276        "kotlinx_coroutines",
277        "kotlinx_coroutines_reactive",
278        "rxjava",
279    ],
280    apex_available: [
281        "//apex_available:platform",
282        "//apex_available:anyapex",
283    ],
284    visibility: ["//visibility:public"],
285}
286