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