// ART APEX module
//
// Contains both the Android Managed Runtime (ART) and the Android Core Library
// (Libcore).

package {
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "art_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["art_license"],
}

// Create combined library which is used for compiling run-tests.
// This is much easier than trying to make the test depend on them directly,
// or than trying to make the test compilation depend on the apex module.
// Some of the components are only visible here (but not in test Android.bp).
java_library {
    name: "art-run-test-bootclasspath",
    sdk_version: "core_platform",
    static_libs: [
        "framework-annotations-lib",
        // Core Java libraries. This list must be the same as
        // art-bootclasspath-fragment because it's that which is pulled in
        // through bootclasspath_fragments in com.android-art-base-defaults.
        "core-oj",
        "core-libart",
        "okhttp",
        "bouncycastle",
        "apache-xml",
    ],
}

android_app_certificate {
    name: "com.android.art.certificate",
    certificate: "com.android.art",
}

apex_key {
    name: "com.android.art.key",
    public_key: "com.android.art.avbpubkey",
    private_key: "com.android.art.pem",
}

linker_config {
    name: "art-linker-config",
    src: "linker.config.json",
    installable: false,
}

prebuilt_etc {
    name: "com.android.art.init.rc",
    src: "art.rc",
    filename: "init.rc",
    installable: false,
}

prebuilt_etc {
    name: "dirty-image-objects-art",
    src: "dirty-image-objects",
    filename: "dirty-image-objects",
    installable: false,
}

// Default shared by all ART APEXes.
apex_defaults {
    name: "com.android.art-base-defaults",
    defaults: ["s-launched-apex-module"],

    manifest: "manifest-art.json",
    key: "com.android.art.key",
    certificate: ":com.android.art.certificate",
    bootclasspath_fragments: ["art-bootclasspath-fragment"],
    systemserverclasspath_fragments: ["art-systemserverclasspath-fragment"],
    compat_configs: ["libcore-platform-compat-config"],
    required: [
        "com.android.i18n",
    ],
    prebuilts: [
        "art-linker-config",
        "com.android.art.init.rc",
        "current_sdkinfo",
        "dirty-image-objects-art",
    ],

    compile_multilib: "both",

    // Note: ART Golem benchmarking does not use the ART APEX, meaning that
    // copies of some of these libraries have to be installed in `/system` for
    // the setup to work properly. This is done by the `standalone-apex-files`
    // Make phony target (see `art/Android.mk`). If you add libraries to this
    // list, you may have to also add them to `PRIVATE_ART_APEX_DEPENDENCY_LIBS`
    // in `art/Android.mk`.
    native_shared_libs: [
        // ART
        // External API (having APEX stubs).
        "libdexfile",
        "libnativebridge",
        "libnativehelper",
        "libnativeloader",
        "libsigchain",
        // These libraries are loaded at runtime from libart (either through
        // dlopen() or by instructing the user to load with -Xplugin), but they
        // cannot be runtime_lib dependencies from there because of cyclic
        // dependencies (b/124505714).
        "libadbconnection",
        "libopenjdkjvmti",
        "libperfetto_hprof",
        // Likewise libart is loaded at runtime from libnativeloader and also must
        // be specified explicitly due to cyclic dependencies. However, it's not
        // listed directly here since test_broken_com.android.art uses a different
        // implementation.

        // Libcore
        // External API (having APEX stubs).
        "libandroidio",
        // This library is loaded at runtime from libart but cannot be a runtime_lib
        // dependency from there because of cyclic dependencies (b/124505714).
        "libopenjdk",
        // These libraries are internal dependencies in libcore, but they don't get
        // pulled in automatically into apex_test modules.
        "libexpat",
        "libopenjdkjvm",
    ],

    multilib: {
        both: {
            binaries: [
                "dalvikvm",
                "dex2oat",
            ],
        },
        first: {
            binaries: [
                "art_boot",
                "art_exec",
                "artd",
                "dexdump",
                "dexlist",
                "dexopt_chroot_setup",
                "dexoptanalyzer",
                "oatdump",
                "profman",
            ],
            jni_libs: [
                "libartservice",
            ],
        },
    },
}

// Default values shared by Debug and Testing ART APEXes.
apex_defaults {
    name: "com.android.art-devel-defaults",
    defaults: ["com.android.art-base-defaults"],

    native_shared_libs: [
        "libadbconnectiond",
        "libdexfiled",
        "libopenjdkd",
        "libopenjdkjvmtid",
        "libperfetto_hprofd",
    ],

    multilib: {
        both: {
            binaries: [
                "dex2oatd",
                "imgdiag",
                "imgdiagd",
            ],
        },
        first: {
            binaries: [
                "dexanalyze",
                "dexoptanalyzerd",
                "oatdumpd",
                "profmand",
            ],
        },
    },
}

// "Broken" test APEX, only used for testing, including module
// `libart-broken` instead of `libart`.
apex_test {
    name: "test_broken_com.android.art",
    defaults: ["com.android.art-base-defaults"],
    manifest: "test_apex_manifest.json",
    file_contexts: ":com.android.art-file_contexts",
    installable: false,
    compressible: false,

    native_shared_libs: ["libart-broken"],
    unwanted_transitive_deps: ["libart"],
}

apex_test {
    name: "test_jitzygote_com.android.art",
    defaults: ["com.android.art-base-defaults"],
    manifest: "test_apex_manifest.json",
    file_contexts: ":com.android.art-file_contexts",
    installable: false,

    native_shared_libs: ["libart"],
    multilib: {
        first: {
            binaries: ["odrefresh_broken"],
        },
    },
}

// Same as "com.android.art" APEX, but also contains "imgdiag" binary.
// Used to collect dirty-image-objects.
apex_test {
    name: "test_imgdiag_com.android.art",
    defaults: ["com.android.art-base-defaults"],
    manifest: "test_apex_manifest.json",
    file_contexts: ":com.android.art-file_contexts",
    installable: false,

    native_shared_libs: ["libart"],
    multilib: {
        both: {
            binaries: ["imgdiag"],
        },
        first: {
            binaries: ["odrefresh"],
        },
    },
}

// Release version of the ART APEX module (not containing debug
// variants nor tools), included in user builds. Also used for
// storage-constrained devices in userdebug and eng builds.
apex {
    name: "com.android.art",
    defaults: ["com.android.art-base-defaults"],

    native_shared_libs: ["libart"],
    multilib: {
        first: {
            binaries: ["odrefresh"],
        },
    },

    visibility: [
        "//art/build/sdk",
        "//packages/modules/common/build",
    ],
}

// "Debug" version of the ART APEX module (containing both release and
// debug variants, as well as additional tools), included in userdebug and
// eng build.
apex {
    name: "com.android.art.debug",
    defaults: ["com.android.art-devel-defaults"],
    // Use a different manifest for this APEX (which has no prebuilts and is
    // thus always built from sources), with a high version number that ensures
    // that these packages can be installed on virtually all Android dessert
    // releases.
    manifest: "manifest-art-debug.json",

    native_shared_libs: [
        "libart",
        "libartd",
    ],
    multilib: {
        first: {
            binaries: ["odrefresh"],
            jni_libs: ["libartserviced"],
        },
    },

    visibility: [
        "//packages/modules/common/build",
    ],
}

// ART gtests with dependencies on internal ART APEX libraries.
art_gtests = [
    "art_cmdline_tests",
    "art_compiler_tests",
    "art_dex2oat_tests",
    "art_dexanalyze_tests",
    "art_dexdump_tests",
    "art_dexlist_tests",
    "art_disassembler_tests",
    "art_dexoptanalyzer_tests",
    "art_imgdiag_tests",
    "art_libartbase_tests",
    "art_libdexfile_tests",
    "art_libdexfile_support_tests",
    "art_libprofile_tests",
    "art_oatdump_tests",
    "art_profman_tests",
    "art_runtime_tests",
    "art_sigchain_tests",
]

// ART gtests for which the "first" version is preferred.
art_gtests_first = [
    "art_odrefresh_tests",
]

// "Testing" version of the ART APEX module (containing both release
// and debug variants, additional tools, and ART gtests), for testing
// purposes only.
apex_test {
    name: "com.android.art.testing",
    defaults: ["com.android.art-devel-defaults"],
    file_contexts: ":com.android.art.debug-file_contexts",
    tests: art_gtests,
    binaries: ["signal_dumper"], // Need signal_dumper for run-tests.
    // Use a different manifest for this APEX (which has no prebuilts and is
    // thus always built from sources), with a high version number that ensures
    // that these packages can be installed on virtually all Android dessert
    // releases.
    manifest: "manifest-art-debug.json",
    // Mark this test APEX as non-updatable, as its contains
    // additional files (used only for testing) that would not pass
    // dependency checks performed on updatable APEXes (see
    // go/apex-allowed-deps-error).
    updatable: false,
    // Because this APEX is non-updatable, some of its native shared
    // libraries (implicitly added as dependencies) are eligible to
    // the symlink optimization. As we want this APEX to be
    // self-contained (for testing purposes), we want to package
    // these dependencies in this APEX, instead of symbolic links to
    // their counterparts on the `system` partition, which may not
    // even exist, as in the case of `libbacktrace` (see b/232790938
    // and b/233357459). Marking this APEX as "future updatable"
    // disables all symlink optimizations for it.
    future_updatable: true,

    native_shared_libs: [
        "libart",
        "libartd",
    ],
    multilib: {
        first: {
            tests: art_gtests_first,
            binaries: ["odrefresh"],
            jni_libs: ["libartserviced"],
        },
    },
}

python_binary_host {
    name: "art-apex-tester",
    srcs: ["art_apex_test.py"],
    main: "art_apex_test.py",
}

// Genrules so we can run the checker, and empty Java library so that it gets executed.

art_check_apex_gen_stem = "$(location art-apex-tester)" +
    " --deapexer $(location deapexer)" +
    " --debugfs $(location debugfs_static)" +
    " --fsckerofs $(location fsck.erofs)" +
    " --tmpdir $(genDir)"

// The non-flattened APEXes are always checked, as they are always generated
// (even when APEX flattening is enabled).
genrule_defaults {
    name: "art-check-apex-gen-defaults",
    tools: [
        "art-apex-tester",
        "deapexer",
        "debugfs_static",
        "fsck.erofs",
    ],
}

cc_defaults {
    name: "art-check-apex-gen-fakebin-defaults",
    host_supported: true,
    device_supported: false,

    target: {
        darwin: {
            enabled: false, // No python3.
        },
    },
}

java_genrule {
    name: "art-check-release-apex-gen",
    host_supported: true,
    device_supported: false,
    defaults: ["art-check-apex-gen-defaults"],
    device_common_srcs: [":com.android.art"],
    cmd: art_check_apex_gen_stem +
        " --flavor release" +
        " $(in)" +
        " && touch $(out)" +
        " && chmod a+x $(out)",
    out: ["art-check-release-apex-gen.unused"],
}

cc_prebuilt_binary {
    name: "art-check-release-apex-gen-fakebin",
    defaults: ["art-check-apex-gen-fakebin-defaults"],
    srcs: [":art-check-release-apex-gen"],
}

java_genrule {
    name: "art-check-debug-apex-gen",
    host_supported: true,
    device_supported: false,
    defaults: ["art-check-apex-gen-defaults"],
    device_common_srcs: [":com.android.art.debug"],
    cmd: art_check_apex_gen_stem +
        " --flavor debug" +
        " $(in)" +
        " && touch $(out)" +
        " && chmod a+x $(out)",
    out: ["art-check-debug-apex-gen.unused"],
}

cc_prebuilt_binary {
    name: "art-check-debug-apex-gen-fakebin",
    defaults: ["art-check-apex-gen-fakebin-defaults"],
    srcs: [":art-check-debug-apex-gen"],
}

java_genrule {
    name: "art-check-testing-apex-gen",
    host_supported: true,
    device_supported: false,
    defaults: ["art-check-apex-gen-defaults"],
    device_common_srcs: [":com.android.art.testing"],
    cmd: art_check_apex_gen_stem +
        " --flavor testing" +
        " $(in)" +
        " && touch $(out)" +
        " && chmod a+x $(out)",
    out: ["art-check-testing-apex-gen.unused"],
}

cc_prebuilt_binary {
    name: "art-check-testing-apex-gen-fakebin",
    defaults: ["art-check-apex-gen-fakebin-defaults"],
    srcs: [":art-check-testing-apex-gen"],
}

// A zip containing ART binaries and ART bootclasspath jars.
// At the time of writing, this is only for Compiler Explorer (https://godbolt.org).
java_genrule {
    name: "art_release_zip",
    srcs: [
        ":com.android.art",
    ],
    common_os_srcs: [
        ":art-module-host-exports",
    ],
    out: [
        "art_release.zip",
    ],
    tools: [
        "deapexer",
        "debugfs",
        "fsck.erofs",
        "merge_zips",
        "soong_zip",
    ],
    cmd: "$(location deapexer) " +
        "--debugfs_path $(location debugfs) " +
        "--fsckerofs_path $(location fsck.erofs) " +
        "extract $(location :com.android.art) $(genDir)/extracted && " +

        "$(location soong_zip) -o $(out).tmp -P bootjars -j " +
        "-f $(genDir)/extracted/javalib/core-oj.jar " +
        "-f $(genDir)/extracted/javalib/core-libart.jar " +
        "-f $(genDir)/extracted/javalib/okhttp.jar " +
        "-f $(genDir)/extracted/javalib/bouncycastle.jar " +
        "-f $(genDir)/extracted/javalib/apache-xml.jar && " +

        "$(location merge_zips) $(out) $(out).tmp $(location :art-module-host-exports)",
    dist: {
        targets: ["droidcore"],
    },
}
