xref: /aosp_15_r20/art/build/apex/Android.bp (revision 795d594fd825385562da6b089ea9b2033f3abf5a)
1*795d594fSAndroid Build Coastguard Worker// ART APEX module
2*795d594fSAndroid Build Coastguard Worker//
3*795d594fSAndroid Build Coastguard Worker// Contains both the Android Managed Runtime (ART) and the Android Core Library
4*795d594fSAndroid Build Coastguard Worker// (Libcore).
5*795d594fSAndroid Build Coastguard Worker
6*795d594fSAndroid Build Coastguard Workerpackage {
7*795d594fSAndroid Build Coastguard Worker    // See: http://go/android-license-faq
8*795d594fSAndroid Build Coastguard Worker    // A large-scale-change added 'default_applicable_licenses' to import
9*795d594fSAndroid Build Coastguard Worker    // all of the 'license_kinds' from "art_license"
10*795d594fSAndroid Build Coastguard Worker    // to get the below license kinds:
11*795d594fSAndroid Build Coastguard Worker    //   SPDX-license-identifier-Apache-2.0
12*795d594fSAndroid Build Coastguard Worker    default_applicable_licenses: ["art_license"],
13*795d594fSAndroid Build Coastguard Worker}
14*795d594fSAndroid Build Coastguard Worker
15*795d594fSAndroid Build Coastguard Worker// Create combined library which is used for compiling run-tests.
16*795d594fSAndroid Build Coastguard Worker// This is much easier than trying to make the test depend on them directly,
17*795d594fSAndroid Build Coastguard Worker// or than trying to make the test compilation depend on the apex module.
18*795d594fSAndroid Build Coastguard Worker// Some of the components are only visible here (but not in test Android.bp).
19*795d594fSAndroid Build Coastguard Workerjava_library {
20*795d594fSAndroid Build Coastguard Worker    name: "art-run-test-bootclasspath",
21*795d594fSAndroid Build Coastguard Worker    sdk_version: "core_platform",
22*795d594fSAndroid Build Coastguard Worker    static_libs: [
23*795d594fSAndroid Build Coastguard Worker        "framework-annotations-lib",
24*795d594fSAndroid Build Coastguard Worker        // Core Java libraries. This list must be the same as
25*795d594fSAndroid Build Coastguard Worker        // art-bootclasspath-fragment because it's that which is pulled in
26*795d594fSAndroid Build Coastguard Worker        // through bootclasspath_fragments in com.android-art-base-defaults.
27*795d594fSAndroid Build Coastguard Worker        "core-oj",
28*795d594fSAndroid Build Coastguard Worker        "core-libart",
29*795d594fSAndroid Build Coastguard Worker        "okhttp",
30*795d594fSAndroid Build Coastguard Worker        "bouncycastle",
31*795d594fSAndroid Build Coastguard Worker        "apache-xml",
32*795d594fSAndroid Build Coastguard Worker    ],
33*795d594fSAndroid Build Coastguard Worker}
34*795d594fSAndroid Build Coastguard Worker
35*795d594fSAndroid Build Coastguard Workerandroid_app_certificate {
36*795d594fSAndroid Build Coastguard Worker    name: "com.android.art.certificate",
37*795d594fSAndroid Build Coastguard Worker    certificate: "com.android.art",
38*795d594fSAndroid Build Coastguard Worker}
39*795d594fSAndroid Build Coastguard Worker
40*795d594fSAndroid Build Coastguard Workerapex_key {
41*795d594fSAndroid Build Coastguard Worker    name: "com.android.art.key",
42*795d594fSAndroid Build Coastguard Worker    public_key: "com.android.art.avbpubkey",
43*795d594fSAndroid Build Coastguard Worker    private_key: "com.android.art.pem",
44*795d594fSAndroid Build Coastguard Worker}
45*795d594fSAndroid Build Coastguard Worker
46*795d594fSAndroid Build Coastguard Workerlinker_config {
47*795d594fSAndroid Build Coastguard Worker    name: "art-linker-config",
48*795d594fSAndroid Build Coastguard Worker    src: "linker.config.json",
49*795d594fSAndroid Build Coastguard Worker    installable: false,
50*795d594fSAndroid Build Coastguard Worker}
51*795d594fSAndroid Build Coastguard Worker
52*795d594fSAndroid Build Coastguard Workerprebuilt_etc {
53*795d594fSAndroid Build Coastguard Worker    name: "com.android.art.init.rc",
54*795d594fSAndroid Build Coastguard Worker    src: "art.rc",
55*795d594fSAndroid Build Coastguard Worker    filename: "init.rc",
56*795d594fSAndroid Build Coastguard Worker    installable: false,
57*795d594fSAndroid Build Coastguard Worker}
58*795d594fSAndroid Build Coastguard Worker
59*795d594fSAndroid Build Coastguard Workerprebuilt_etc {
60*795d594fSAndroid Build Coastguard Worker    name: "dirty-image-objects-art",
61*795d594fSAndroid Build Coastguard Worker    src: "dirty-image-objects",
62*795d594fSAndroid Build Coastguard Worker    filename: "dirty-image-objects",
63*795d594fSAndroid Build Coastguard Worker    installable: false,
64*795d594fSAndroid Build Coastguard Worker}
65*795d594fSAndroid Build Coastguard Worker
66*795d594fSAndroid Build Coastguard Worker// Default shared by all ART APEXes.
67*795d594fSAndroid Build Coastguard Workerapex_defaults {
68*795d594fSAndroid Build Coastguard Worker    name: "com.android.art-base-defaults",
69*795d594fSAndroid Build Coastguard Worker    defaults: ["s-launched-apex-module"],
70*795d594fSAndroid Build Coastguard Worker
71*795d594fSAndroid Build Coastguard Worker    manifest: "manifest-art.json",
72*795d594fSAndroid Build Coastguard Worker    key: "com.android.art.key",
73*795d594fSAndroid Build Coastguard Worker    certificate: ":com.android.art.certificate",
74*795d594fSAndroid Build Coastguard Worker    bootclasspath_fragments: ["art-bootclasspath-fragment"],
75*795d594fSAndroid Build Coastguard Worker    systemserverclasspath_fragments: ["art-systemserverclasspath-fragment"],
76*795d594fSAndroid Build Coastguard Worker    compat_configs: ["libcore-platform-compat-config"],
77*795d594fSAndroid Build Coastguard Worker    required: [
78*795d594fSAndroid Build Coastguard Worker        "com.android.i18n",
79*795d594fSAndroid Build Coastguard Worker    ],
80*795d594fSAndroid Build Coastguard Worker    prebuilts: [
81*795d594fSAndroid Build Coastguard Worker        "art-linker-config",
82*795d594fSAndroid Build Coastguard Worker        "com.android.art.init.rc",
83*795d594fSAndroid Build Coastguard Worker        "current_sdkinfo",
84*795d594fSAndroid Build Coastguard Worker        "dirty-image-objects-art",
85*795d594fSAndroid Build Coastguard Worker    ],
86*795d594fSAndroid Build Coastguard Worker
87*795d594fSAndroid Build Coastguard Worker    compile_multilib: "both",
88*795d594fSAndroid Build Coastguard Worker
89*795d594fSAndroid Build Coastguard Worker    // Note: ART Golem benchmarking does not use the ART APEX, meaning that
90*795d594fSAndroid Build Coastguard Worker    // copies of some of these libraries have to be installed in `/system` for
91*795d594fSAndroid Build Coastguard Worker    // the setup to work properly. This is done by the `standalone-apex-files`
92*795d594fSAndroid Build Coastguard Worker    // Make phony target (see `art/Android.mk`). If you add libraries to this
93*795d594fSAndroid Build Coastguard Worker    // list, you may have to also add them to `PRIVATE_ART_APEX_DEPENDENCY_LIBS`
94*795d594fSAndroid Build Coastguard Worker    // in `art/Android.mk`.
95*795d594fSAndroid Build Coastguard Worker    native_shared_libs: [
96*795d594fSAndroid Build Coastguard Worker        // ART
97*795d594fSAndroid Build Coastguard Worker        // External API (having APEX stubs).
98*795d594fSAndroid Build Coastguard Worker        "libdexfile",
99*795d594fSAndroid Build Coastguard Worker        "libnativebridge",
100*795d594fSAndroid Build Coastguard Worker        "libnativehelper",
101*795d594fSAndroid Build Coastguard Worker        "libnativeloader",
102*795d594fSAndroid Build Coastguard Worker        "libsigchain",
103*795d594fSAndroid Build Coastguard Worker        // These libraries are loaded at runtime from libart (either through
104*795d594fSAndroid Build Coastguard Worker        // dlopen() or by instructing the user to load with -Xplugin), but they
105*795d594fSAndroid Build Coastguard Worker        // cannot be runtime_lib dependencies from there because of cyclic
106*795d594fSAndroid Build Coastguard Worker        // dependencies (b/124505714).
107*795d594fSAndroid Build Coastguard Worker        "libadbconnection",
108*795d594fSAndroid Build Coastguard Worker        "libopenjdkjvmti",
109*795d594fSAndroid Build Coastguard Worker        "libperfetto_hprof",
110*795d594fSAndroid Build Coastguard Worker        // Likewise libart is loaded at runtime from libnativeloader and also must
111*795d594fSAndroid Build Coastguard Worker        // be specified explicitly due to cyclic dependencies. However, it's not
112*795d594fSAndroid Build Coastguard Worker        // listed directly here since test_broken_com.android.art uses a different
113*795d594fSAndroid Build Coastguard Worker        // implementation.
114*795d594fSAndroid Build Coastguard Worker
115*795d594fSAndroid Build Coastguard Worker        // Libcore
116*795d594fSAndroid Build Coastguard Worker        // External API (having APEX stubs).
117*795d594fSAndroid Build Coastguard Worker        "libandroidio",
118*795d594fSAndroid Build Coastguard Worker        // This library is loaded at runtime from libart but cannot be a runtime_lib
119*795d594fSAndroid Build Coastguard Worker        // dependency from there because of cyclic dependencies (b/124505714).
120*795d594fSAndroid Build Coastguard Worker        "libopenjdk",
121*795d594fSAndroid Build Coastguard Worker        // These libraries are internal dependencies in libcore, but they don't get
122*795d594fSAndroid Build Coastguard Worker        // pulled in automatically into apex_test modules.
123*795d594fSAndroid Build Coastguard Worker        "libexpat",
124*795d594fSAndroid Build Coastguard Worker        "libopenjdkjvm",
125*795d594fSAndroid Build Coastguard Worker    ],
126*795d594fSAndroid Build Coastguard Worker
127*795d594fSAndroid Build Coastguard Worker    multilib: {
128*795d594fSAndroid Build Coastguard Worker        both: {
129*795d594fSAndroid Build Coastguard Worker            binaries: [
130*795d594fSAndroid Build Coastguard Worker                "dalvikvm",
131*795d594fSAndroid Build Coastguard Worker                "dex2oat",
132*795d594fSAndroid Build Coastguard Worker            ],
133*795d594fSAndroid Build Coastguard Worker        },
134*795d594fSAndroid Build Coastguard Worker        first: {
135*795d594fSAndroid Build Coastguard Worker            binaries: [
136*795d594fSAndroid Build Coastguard Worker                "art_boot",
137*795d594fSAndroid Build Coastguard Worker                "art_exec",
138*795d594fSAndroid Build Coastguard Worker                "artd",
139*795d594fSAndroid Build Coastguard Worker                "dexdump",
140*795d594fSAndroid Build Coastguard Worker                "dexlist",
141*795d594fSAndroid Build Coastguard Worker                "dexopt_chroot_setup",
142*795d594fSAndroid Build Coastguard Worker                "dexoptanalyzer",
143*795d594fSAndroid Build Coastguard Worker                "oatdump",
144*795d594fSAndroid Build Coastguard Worker                "profman",
145*795d594fSAndroid Build Coastguard Worker            ],
146*795d594fSAndroid Build Coastguard Worker            jni_libs: [
147*795d594fSAndroid Build Coastguard Worker                "libartservice",
148*795d594fSAndroid Build Coastguard Worker            ],
149*795d594fSAndroid Build Coastguard Worker        },
150*795d594fSAndroid Build Coastguard Worker    },
151*795d594fSAndroid Build Coastguard Worker}
152*795d594fSAndroid Build Coastguard Worker
153*795d594fSAndroid Build Coastguard Worker// Default values shared by Debug and Testing ART APEXes.
154*795d594fSAndroid Build Coastguard Workerapex_defaults {
155*795d594fSAndroid Build Coastguard Worker    name: "com.android.art-devel-defaults",
156*795d594fSAndroid Build Coastguard Worker    defaults: ["com.android.art-base-defaults"],
157*795d594fSAndroid Build Coastguard Worker
158*795d594fSAndroid Build Coastguard Worker    native_shared_libs: [
159*795d594fSAndroid Build Coastguard Worker        "libadbconnectiond",
160*795d594fSAndroid Build Coastguard Worker        "libdexfiled",
161*795d594fSAndroid Build Coastguard Worker        "libopenjdkd",
162*795d594fSAndroid Build Coastguard Worker        "libopenjdkjvmtid",
163*795d594fSAndroid Build Coastguard Worker        "libperfetto_hprofd",
164*795d594fSAndroid Build Coastguard Worker    ],
165*795d594fSAndroid Build Coastguard Worker
166*795d594fSAndroid Build Coastguard Worker    multilib: {
167*795d594fSAndroid Build Coastguard Worker        both: {
168*795d594fSAndroid Build Coastguard Worker            binaries: [
169*795d594fSAndroid Build Coastguard Worker                "dex2oatd",
170*795d594fSAndroid Build Coastguard Worker                "imgdiag",
171*795d594fSAndroid Build Coastguard Worker                "imgdiagd",
172*795d594fSAndroid Build Coastguard Worker            ],
173*795d594fSAndroid Build Coastguard Worker        },
174*795d594fSAndroid Build Coastguard Worker        first: {
175*795d594fSAndroid Build Coastguard Worker            binaries: [
176*795d594fSAndroid Build Coastguard Worker                "dexanalyze",
177*795d594fSAndroid Build Coastguard Worker                "dexoptanalyzerd",
178*795d594fSAndroid Build Coastguard Worker                "oatdumpd",
179*795d594fSAndroid Build Coastguard Worker                "profmand",
180*795d594fSAndroid Build Coastguard Worker            ],
181*795d594fSAndroid Build Coastguard Worker        },
182*795d594fSAndroid Build Coastguard Worker    },
183*795d594fSAndroid Build Coastguard Worker}
184*795d594fSAndroid Build Coastguard Worker
185*795d594fSAndroid Build Coastguard Worker// "Broken" test APEX, only used for testing, including module
186*795d594fSAndroid Build Coastguard Worker// `libart-broken` instead of `libart`.
187*795d594fSAndroid Build Coastguard Workerapex_test {
188*795d594fSAndroid Build Coastguard Worker    name: "test_broken_com.android.art",
189*795d594fSAndroid Build Coastguard Worker    defaults: ["com.android.art-base-defaults"],
190*795d594fSAndroid Build Coastguard Worker    manifest: "test_apex_manifest.json",
191*795d594fSAndroid Build Coastguard Worker    file_contexts: ":com.android.art-file_contexts",
192*795d594fSAndroid Build Coastguard Worker    installable: false,
193*795d594fSAndroid Build Coastguard Worker    compressible: false,
194*795d594fSAndroid Build Coastguard Worker
195*795d594fSAndroid Build Coastguard Worker    native_shared_libs: ["libart-broken"],
196*795d594fSAndroid Build Coastguard Worker    unwanted_transitive_deps: ["libart"],
197*795d594fSAndroid Build Coastguard Worker}
198*795d594fSAndroid Build Coastguard Worker
199*795d594fSAndroid Build Coastguard Workerapex_test {
200*795d594fSAndroid Build Coastguard Worker    name: "test_jitzygote_com.android.art",
201*795d594fSAndroid Build Coastguard Worker    defaults: ["com.android.art-base-defaults"],
202*795d594fSAndroid Build Coastguard Worker    manifest: "test_apex_manifest.json",
203*795d594fSAndroid Build Coastguard Worker    file_contexts: ":com.android.art-file_contexts",
204*795d594fSAndroid Build Coastguard Worker    installable: false,
205*795d594fSAndroid Build Coastguard Worker
206*795d594fSAndroid Build Coastguard Worker    native_shared_libs: ["libart"],
207*795d594fSAndroid Build Coastguard Worker    multilib: {
208*795d594fSAndroid Build Coastguard Worker        first: {
209*795d594fSAndroid Build Coastguard Worker            binaries: ["odrefresh_broken"],
210*795d594fSAndroid Build Coastguard Worker        },
211*795d594fSAndroid Build Coastguard Worker    },
212*795d594fSAndroid Build Coastguard Worker}
213*795d594fSAndroid Build Coastguard Worker
214*795d594fSAndroid Build Coastguard Worker// Same as "com.android.art" APEX, but also contains "imgdiag" binary.
215*795d594fSAndroid Build Coastguard Worker// Used to collect dirty-image-objects.
216*795d594fSAndroid Build Coastguard Workerapex_test {
217*795d594fSAndroid Build Coastguard Worker    name: "test_imgdiag_com.android.art",
218*795d594fSAndroid Build Coastguard Worker    defaults: ["com.android.art-base-defaults"],
219*795d594fSAndroid Build Coastguard Worker    manifest: "test_apex_manifest.json",
220*795d594fSAndroid Build Coastguard Worker    file_contexts: ":com.android.art-file_contexts",
221*795d594fSAndroid Build Coastguard Worker    installable: false,
222*795d594fSAndroid Build Coastguard Worker
223*795d594fSAndroid Build Coastguard Worker    native_shared_libs: ["libart"],
224*795d594fSAndroid Build Coastguard Worker    multilib: {
225*795d594fSAndroid Build Coastguard Worker        both: {
226*795d594fSAndroid Build Coastguard Worker            binaries: ["imgdiag"],
227*795d594fSAndroid Build Coastguard Worker        },
228*795d594fSAndroid Build Coastguard Worker        first: {
229*795d594fSAndroid Build Coastguard Worker            binaries: ["odrefresh"],
230*795d594fSAndroid Build Coastguard Worker        },
231*795d594fSAndroid Build Coastguard Worker    },
232*795d594fSAndroid Build Coastguard Worker}
233*795d594fSAndroid Build Coastguard Worker
234*795d594fSAndroid Build Coastguard Worker// Release version of the ART APEX module (not containing debug
235*795d594fSAndroid Build Coastguard Worker// variants nor tools), included in user builds. Also used for
236*795d594fSAndroid Build Coastguard Worker// storage-constrained devices in userdebug and eng builds.
237*795d594fSAndroid Build Coastguard Workerapex {
238*795d594fSAndroid Build Coastguard Worker    name: "com.android.art",
239*795d594fSAndroid Build Coastguard Worker    defaults: ["com.android.art-base-defaults"],
240*795d594fSAndroid Build Coastguard Worker
241*795d594fSAndroid Build Coastguard Worker    native_shared_libs: ["libart"],
242*795d594fSAndroid Build Coastguard Worker    multilib: {
243*795d594fSAndroid Build Coastguard Worker        first: {
244*795d594fSAndroid Build Coastguard Worker            binaries: ["odrefresh"],
245*795d594fSAndroid Build Coastguard Worker        },
246*795d594fSAndroid Build Coastguard Worker    },
247*795d594fSAndroid Build Coastguard Worker
248*795d594fSAndroid Build Coastguard Worker    visibility: [
249*795d594fSAndroid Build Coastguard Worker        "//art/build/sdk",
250*795d594fSAndroid Build Coastguard Worker        "//packages/modules/common/build",
251*795d594fSAndroid Build Coastguard Worker    ],
252*795d594fSAndroid Build Coastguard Worker}
253*795d594fSAndroid Build Coastguard Worker
254*795d594fSAndroid Build Coastguard Worker// "Debug" version of the ART APEX module (containing both release and
255*795d594fSAndroid Build Coastguard Worker// debug variants, as well as additional tools), included in userdebug and
256*795d594fSAndroid Build Coastguard Worker// eng build.
257*795d594fSAndroid Build Coastguard Workerapex {
258*795d594fSAndroid Build Coastguard Worker    name: "com.android.art.debug",
259*795d594fSAndroid Build Coastguard Worker    defaults: ["com.android.art-devel-defaults"],
260*795d594fSAndroid Build Coastguard Worker    // Use a different manifest for this APEX (which has no prebuilts and is
261*795d594fSAndroid Build Coastguard Worker    // thus always built from sources), with a high version number that ensures
262*795d594fSAndroid Build Coastguard Worker    // that these packages can be installed on virtually all Android dessert
263*795d594fSAndroid Build Coastguard Worker    // releases.
264*795d594fSAndroid Build Coastguard Worker    manifest: "manifest-art-debug.json",
265*795d594fSAndroid Build Coastguard Worker
266*795d594fSAndroid Build Coastguard Worker    native_shared_libs: [
267*795d594fSAndroid Build Coastguard Worker        "libart",
268*795d594fSAndroid Build Coastguard Worker        "libartd",
269*795d594fSAndroid Build Coastguard Worker    ],
270*795d594fSAndroid Build Coastguard Worker    multilib: {
271*795d594fSAndroid Build Coastguard Worker        first: {
272*795d594fSAndroid Build Coastguard Worker            binaries: ["odrefresh"],
273*795d594fSAndroid Build Coastguard Worker            jni_libs: ["libartserviced"],
274*795d594fSAndroid Build Coastguard Worker        },
275*795d594fSAndroid Build Coastguard Worker    },
276*795d594fSAndroid Build Coastguard Worker
277*795d594fSAndroid Build Coastguard Worker    visibility: [
278*795d594fSAndroid Build Coastguard Worker        "//packages/modules/common/build",
279*795d594fSAndroid Build Coastguard Worker    ],
280*795d594fSAndroid Build Coastguard Worker}
281*795d594fSAndroid Build Coastguard Worker
282*795d594fSAndroid Build Coastguard Worker// ART gtests with dependencies on internal ART APEX libraries.
283*795d594fSAndroid Build Coastguard Workerart_gtests = [
284*795d594fSAndroid Build Coastguard Worker    "art_cmdline_tests",
285*795d594fSAndroid Build Coastguard Worker    "art_compiler_tests",
286*795d594fSAndroid Build Coastguard Worker    "art_dex2oat_tests",
287*795d594fSAndroid Build Coastguard Worker    "art_dexanalyze_tests",
288*795d594fSAndroid Build Coastguard Worker    "art_dexdump_tests",
289*795d594fSAndroid Build Coastguard Worker    "art_dexlist_tests",
290*795d594fSAndroid Build Coastguard Worker    "art_disassembler_tests",
291*795d594fSAndroid Build Coastguard Worker    "art_dexoptanalyzer_tests",
292*795d594fSAndroid Build Coastguard Worker    "art_imgdiag_tests",
293*795d594fSAndroid Build Coastguard Worker    "art_libartbase_tests",
294*795d594fSAndroid Build Coastguard Worker    "art_libdexfile_tests",
295*795d594fSAndroid Build Coastguard Worker    "art_libdexfile_support_tests",
296*795d594fSAndroid Build Coastguard Worker    "art_libprofile_tests",
297*795d594fSAndroid Build Coastguard Worker    "art_oatdump_tests",
298*795d594fSAndroid Build Coastguard Worker    "art_profman_tests",
299*795d594fSAndroid Build Coastguard Worker    "art_runtime_tests",
300*795d594fSAndroid Build Coastguard Worker    "art_sigchain_tests",
301*795d594fSAndroid Build Coastguard Worker]
302*795d594fSAndroid Build Coastguard Worker
303*795d594fSAndroid Build Coastguard Worker// ART gtests for which the "first" version is preferred.
304*795d594fSAndroid Build Coastguard Workerart_gtests_first = [
305*795d594fSAndroid Build Coastguard Worker    "art_odrefresh_tests",
306*795d594fSAndroid Build Coastguard Worker]
307*795d594fSAndroid Build Coastguard Worker
308*795d594fSAndroid Build Coastguard Worker// "Testing" version of the ART APEX module (containing both release
309*795d594fSAndroid Build Coastguard Worker// and debug variants, additional tools, and ART gtests), for testing
310*795d594fSAndroid Build Coastguard Worker// purposes only.
311*795d594fSAndroid Build Coastguard Workerapex_test {
312*795d594fSAndroid Build Coastguard Worker    name: "com.android.art.testing",
313*795d594fSAndroid Build Coastguard Worker    defaults: ["com.android.art-devel-defaults"],
314*795d594fSAndroid Build Coastguard Worker    file_contexts: ":com.android.art.debug-file_contexts",
315*795d594fSAndroid Build Coastguard Worker    tests: art_gtests,
316*795d594fSAndroid Build Coastguard Worker    binaries: ["signal_dumper"], // Need signal_dumper for run-tests.
317*795d594fSAndroid Build Coastguard Worker    // Use a different manifest for this APEX (which has no prebuilts and is
318*795d594fSAndroid Build Coastguard Worker    // thus always built from sources), with a high version number that ensures
319*795d594fSAndroid Build Coastguard Worker    // that these packages can be installed on virtually all Android dessert
320*795d594fSAndroid Build Coastguard Worker    // releases.
321*795d594fSAndroid Build Coastguard Worker    manifest: "manifest-art-debug.json",
322*795d594fSAndroid Build Coastguard Worker    // Mark this test APEX as non-updatable, as its contains
323*795d594fSAndroid Build Coastguard Worker    // additional files (used only for testing) that would not pass
324*795d594fSAndroid Build Coastguard Worker    // dependency checks performed on updatable APEXes (see
325*795d594fSAndroid Build Coastguard Worker    // go/apex-allowed-deps-error).
326*795d594fSAndroid Build Coastguard Worker    updatable: false,
327*795d594fSAndroid Build Coastguard Worker    // Because this APEX is non-updatable, some of its native shared
328*795d594fSAndroid Build Coastguard Worker    // libraries (implicitly added as dependencies) are eligible to
329*795d594fSAndroid Build Coastguard Worker    // the symlink optimization. As we want this APEX to be
330*795d594fSAndroid Build Coastguard Worker    // self-contained (for testing purposes), we want to package
331*795d594fSAndroid Build Coastguard Worker    // these dependencies in this APEX, instead of symbolic links to
332*795d594fSAndroid Build Coastguard Worker    // their counterparts on the `system` partition, which may not
333*795d594fSAndroid Build Coastguard Worker    // even exist, as in the case of `libbacktrace` (see b/232790938
334*795d594fSAndroid Build Coastguard Worker    // and b/233357459). Marking this APEX as "future updatable"
335*795d594fSAndroid Build Coastguard Worker    // disables all symlink optimizations for it.
336*795d594fSAndroid Build Coastguard Worker    future_updatable: true,
337*795d594fSAndroid Build Coastguard Worker
338*795d594fSAndroid Build Coastguard Worker    native_shared_libs: [
339*795d594fSAndroid Build Coastguard Worker        "libart",
340*795d594fSAndroid Build Coastguard Worker        "libartd",
341*795d594fSAndroid Build Coastguard Worker    ],
342*795d594fSAndroid Build Coastguard Worker    multilib: {
343*795d594fSAndroid Build Coastguard Worker        first: {
344*795d594fSAndroid Build Coastguard Worker            tests: art_gtests_first,
345*795d594fSAndroid Build Coastguard Worker            binaries: ["odrefresh"],
346*795d594fSAndroid Build Coastguard Worker            jni_libs: ["libartserviced"],
347*795d594fSAndroid Build Coastguard Worker        },
348*795d594fSAndroid Build Coastguard Worker    },
349*795d594fSAndroid Build Coastguard Worker}
350*795d594fSAndroid Build Coastguard Worker
351*795d594fSAndroid Build Coastguard Workerpython_binary_host {
352*795d594fSAndroid Build Coastguard Worker    name: "art-apex-tester",
353*795d594fSAndroid Build Coastguard Worker    srcs: ["art_apex_test.py"],
354*795d594fSAndroid Build Coastguard Worker    main: "art_apex_test.py",
355*795d594fSAndroid Build Coastguard Worker}
356*795d594fSAndroid Build Coastguard Worker
357*795d594fSAndroid Build Coastguard Worker// Genrules so we can run the checker, and empty Java library so that it gets executed.
358*795d594fSAndroid Build Coastguard Worker
359*795d594fSAndroid Build Coastguard Workerart_check_apex_gen_stem = "$(location art-apex-tester)" +
360*795d594fSAndroid Build Coastguard Worker    " --deapexer $(location deapexer)" +
361*795d594fSAndroid Build Coastguard Worker    " --debugfs $(location debugfs_static)" +
362*795d594fSAndroid Build Coastguard Worker    " --fsckerofs $(location fsck.erofs)" +
363*795d594fSAndroid Build Coastguard Worker    " --tmpdir $(genDir)"
364*795d594fSAndroid Build Coastguard Worker
365*795d594fSAndroid Build Coastguard Worker// The non-flattened APEXes are always checked, as they are always generated
366*795d594fSAndroid Build Coastguard Worker// (even when APEX flattening is enabled).
367*795d594fSAndroid Build Coastguard Workergenrule_defaults {
368*795d594fSAndroid Build Coastguard Worker    name: "art-check-apex-gen-defaults",
369*795d594fSAndroid Build Coastguard Worker    tools: [
370*795d594fSAndroid Build Coastguard Worker        "art-apex-tester",
371*795d594fSAndroid Build Coastguard Worker        "deapexer",
372*795d594fSAndroid Build Coastguard Worker        "debugfs_static",
373*795d594fSAndroid Build Coastguard Worker        "fsck.erofs",
374*795d594fSAndroid Build Coastguard Worker    ],
375*795d594fSAndroid Build Coastguard Worker}
376*795d594fSAndroid Build Coastguard Worker
377*795d594fSAndroid Build Coastguard Workercc_defaults {
378*795d594fSAndroid Build Coastguard Worker    name: "art-check-apex-gen-fakebin-defaults",
379*795d594fSAndroid Build Coastguard Worker    host_supported: true,
380*795d594fSAndroid Build Coastguard Worker    device_supported: false,
381*795d594fSAndroid Build Coastguard Worker
382*795d594fSAndroid Build Coastguard Worker    target: {
383*795d594fSAndroid Build Coastguard Worker        darwin: {
384*795d594fSAndroid Build Coastguard Worker            enabled: false, // No python3.
385*795d594fSAndroid Build Coastguard Worker        },
386*795d594fSAndroid Build Coastguard Worker    },
387*795d594fSAndroid Build Coastguard Worker}
388*795d594fSAndroid Build Coastguard Worker
389*795d594fSAndroid Build Coastguard Workerjava_genrule {
390*795d594fSAndroid Build Coastguard Worker    name: "art-check-release-apex-gen",
391*795d594fSAndroid Build Coastguard Worker    host_supported: true,
392*795d594fSAndroid Build Coastguard Worker    device_supported: false,
393*795d594fSAndroid Build Coastguard Worker    defaults: ["art-check-apex-gen-defaults"],
394*795d594fSAndroid Build Coastguard Worker    device_common_srcs: [":com.android.art"],
395*795d594fSAndroid Build Coastguard Worker    cmd: art_check_apex_gen_stem +
396*795d594fSAndroid Build Coastguard Worker        " --flavor release" +
397*795d594fSAndroid Build Coastguard Worker        " $(in)" +
398*795d594fSAndroid Build Coastguard Worker        " && touch $(out)" +
399*795d594fSAndroid Build Coastguard Worker        " && chmod a+x $(out)",
400*795d594fSAndroid Build Coastguard Worker    out: ["art-check-release-apex-gen.unused"],
401*795d594fSAndroid Build Coastguard Worker}
402*795d594fSAndroid Build Coastguard Worker
403*795d594fSAndroid Build Coastguard Workercc_prebuilt_binary {
404*795d594fSAndroid Build Coastguard Worker    name: "art-check-release-apex-gen-fakebin",
405*795d594fSAndroid Build Coastguard Worker    defaults: ["art-check-apex-gen-fakebin-defaults"],
406*795d594fSAndroid Build Coastguard Worker    srcs: [":art-check-release-apex-gen"],
407*795d594fSAndroid Build Coastguard Worker}
408*795d594fSAndroid Build Coastguard Worker
409*795d594fSAndroid Build Coastguard Workerjava_genrule {
410*795d594fSAndroid Build Coastguard Worker    name: "art-check-debug-apex-gen",
411*795d594fSAndroid Build Coastguard Worker    host_supported: true,
412*795d594fSAndroid Build Coastguard Worker    device_supported: false,
413*795d594fSAndroid Build Coastguard Worker    defaults: ["art-check-apex-gen-defaults"],
414*795d594fSAndroid Build Coastguard Worker    device_common_srcs: [":com.android.art.debug"],
415*795d594fSAndroid Build Coastguard Worker    cmd: art_check_apex_gen_stem +
416*795d594fSAndroid Build Coastguard Worker        " --flavor debug" +
417*795d594fSAndroid Build Coastguard Worker        " $(in)" +
418*795d594fSAndroid Build Coastguard Worker        " && touch $(out)" +
419*795d594fSAndroid Build Coastguard Worker        " && chmod a+x $(out)",
420*795d594fSAndroid Build Coastguard Worker    out: ["art-check-debug-apex-gen.unused"],
421*795d594fSAndroid Build Coastguard Worker}
422*795d594fSAndroid Build Coastguard Worker
423*795d594fSAndroid Build Coastguard Workercc_prebuilt_binary {
424*795d594fSAndroid Build Coastguard Worker    name: "art-check-debug-apex-gen-fakebin",
425*795d594fSAndroid Build Coastguard Worker    defaults: ["art-check-apex-gen-fakebin-defaults"],
426*795d594fSAndroid Build Coastguard Worker    srcs: [":art-check-debug-apex-gen"],
427*795d594fSAndroid Build Coastguard Worker}
428*795d594fSAndroid Build Coastguard Worker
429*795d594fSAndroid Build Coastguard Workerjava_genrule {
430*795d594fSAndroid Build Coastguard Worker    name: "art-check-testing-apex-gen",
431*795d594fSAndroid Build Coastguard Worker    host_supported: true,
432*795d594fSAndroid Build Coastguard Worker    device_supported: false,
433*795d594fSAndroid Build Coastguard Worker    defaults: ["art-check-apex-gen-defaults"],
434*795d594fSAndroid Build Coastguard Worker    device_common_srcs: [":com.android.art.testing"],
435*795d594fSAndroid Build Coastguard Worker    cmd: art_check_apex_gen_stem +
436*795d594fSAndroid Build Coastguard Worker        " --flavor testing" +
437*795d594fSAndroid Build Coastguard Worker        " $(in)" +
438*795d594fSAndroid Build Coastguard Worker        " && touch $(out)" +
439*795d594fSAndroid Build Coastguard Worker        " && chmod a+x $(out)",
440*795d594fSAndroid Build Coastguard Worker    out: ["art-check-testing-apex-gen.unused"],
441*795d594fSAndroid Build Coastguard Worker}
442*795d594fSAndroid Build Coastguard Worker
443*795d594fSAndroid Build Coastguard Workercc_prebuilt_binary {
444*795d594fSAndroid Build Coastguard Worker    name: "art-check-testing-apex-gen-fakebin",
445*795d594fSAndroid Build Coastguard Worker    defaults: ["art-check-apex-gen-fakebin-defaults"],
446*795d594fSAndroid Build Coastguard Worker    srcs: [":art-check-testing-apex-gen"],
447*795d594fSAndroid Build Coastguard Worker}
448*795d594fSAndroid Build Coastguard Worker
449*795d594fSAndroid Build Coastguard Worker// A zip containing ART binaries and ART bootclasspath jars.
450*795d594fSAndroid Build Coastguard Worker// At the time of writing, this is only for Compiler Explorer (https://godbolt.org).
451*795d594fSAndroid Build Coastguard Workerjava_genrule {
452*795d594fSAndroid Build Coastguard Worker    name: "art_release_zip",
453*795d594fSAndroid Build Coastguard Worker    srcs: [
454*795d594fSAndroid Build Coastguard Worker        ":com.android.art",
455*795d594fSAndroid Build Coastguard Worker    ],
456*795d594fSAndroid Build Coastguard Worker    common_os_srcs: [
457*795d594fSAndroid Build Coastguard Worker        ":art-module-host-exports",
458*795d594fSAndroid Build Coastguard Worker    ],
459*795d594fSAndroid Build Coastguard Worker    out: [
460*795d594fSAndroid Build Coastguard Worker        "art_release.zip",
461*795d594fSAndroid Build Coastguard Worker    ],
462*795d594fSAndroid Build Coastguard Worker    tools: [
463*795d594fSAndroid Build Coastguard Worker        "deapexer",
464*795d594fSAndroid Build Coastguard Worker        "debugfs",
465*795d594fSAndroid Build Coastguard Worker        "fsck.erofs",
466*795d594fSAndroid Build Coastguard Worker        "merge_zips",
467*795d594fSAndroid Build Coastguard Worker        "soong_zip",
468*795d594fSAndroid Build Coastguard Worker    ],
469*795d594fSAndroid Build Coastguard Worker    cmd: "$(location deapexer) " +
470*795d594fSAndroid Build Coastguard Worker        "--debugfs_path $(location debugfs) " +
471*795d594fSAndroid Build Coastguard Worker        "--fsckerofs_path $(location fsck.erofs) " +
472*795d594fSAndroid Build Coastguard Worker        "extract $(location :com.android.art) $(genDir)/extracted && " +
473*795d594fSAndroid Build Coastguard Worker
474*795d594fSAndroid Build Coastguard Worker        "$(location soong_zip) -o $(out).tmp -P bootjars -j " +
475*795d594fSAndroid Build Coastguard Worker        "-f $(genDir)/extracted/javalib/core-oj.jar " +
476*795d594fSAndroid Build Coastguard Worker        "-f $(genDir)/extracted/javalib/core-libart.jar " +
477*795d594fSAndroid Build Coastguard Worker        "-f $(genDir)/extracted/javalib/okhttp.jar " +
478*795d594fSAndroid Build Coastguard Worker        "-f $(genDir)/extracted/javalib/bouncycastle.jar " +
479*795d594fSAndroid Build Coastguard Worker        "-f $(genDir)/extracted/javalib/apache-xml.jar && " +
480*795d594fSAndroid Build Coastguard Worker
481*795d594fSAndroid Build Coastguard Worker        "$(location merge_zips) $(out) $(out).tmp $(location :art-module-host-exports)",
482*795d594fSAndroid Build Coastguard Worker    dist: {
483*795d594fSAndroid Build Coastguard Worker        targets: ["droidcore"],
484*795d594fSAndroid Build Coastguard Worker    },
485*795d594fSAndroid Build Coastguard Worker}
486