// 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"],
}

soong_config_module_type_import {
    from: "art/build/SoongConfig.bp",
    module_types: [
        "art_module_apex_defaults",
        "art_module_cc_defaults",
    ],
}

// Modules listed in LOCAL_REQUIRED_MODULES for module art-runtime in art/Android.mk.
// - Base requirements (binaries for which both 32- and 64-bit versions are built, if possible).
art_runtime_base_binaries_both = [
    "dalvikvm",
]
art_runtime_base_binaries_both_on_device_first_on_host = [
    "dex2oat",
]
// - Base requirements (binaries for which the "first" version is preferred on device
//  (likely 64-bit) and on host).
art_runtime_base_binaries_first_on_device_first_on_host = [
    "dexoptanalyzer",
    "profman",
]

// - Base requirements (libraries).
//
// Note: ART on-device chroot-based testing and benchmarking is not yet using
// the ART APEX, meaning that copies of some of these libraries have to be
// installed in `/system` for the ART Buildbot set-up to work properly. This is
// done by the `standalone-apex-files` Make phony target, used by the ART
// Buildbot and Golem (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`.
// TODO(b/121117762): Remove this note when both the ART Buildbot and Golem use
// the ART APEX.
art_runtime_base_native_shared_libs_minus_libart = [
    // External API (having APEX stubs).
    "libdexfile",
    "libnativebridge",
    "libnativehelper",
    "libnativeloader",
    "libsigchain",
    // libadbconnection is internal and loaded with dlopen(), but it cannot use
    // "required" because of cyclic dependency (b/124505714).
    "libadbconnection",
    // TODO(b/124476339): Clean up the following libraries once "required"
    // dependencies work with APEX libraries.
    "libart-compiler",
    "libdt_fd_forward",
    "libdt_socket",
    "libjdwp",
    "libnpt",
    "libopenjdkjvm",
    "libopenjdkjvmti",
    // TODO(chriswailes): Make libarttools a dependency for another target
    // when such a target exists
    "libarttools",
]
// Actual version of ART runtime base libs, used in non-test ART APEXes.
art_runtime_base_native_shared_libs = ["libart"] +
    art_runtime_base_native_shared_libs_minus_libart
// "Broken" version of ART runtime base libs, used for testing purposes.
art_runtime_base_broken_native_shared_libs = ["libart-broken"] +
    art_runtime_base_native_shared_libs_minus_libart

art_runtime_base_native_device_only_shared_libs = [
    "libperfetto_hprof",
]

bionic_native_shared_libs = [
    // External API (having APEX stubs).
    "libc",
    "libm",
    "libdl",
]

bionic_binaries_both = [
    "linker",
    // To validate the zip file generated by cloud server.
    "ziptool",
]

// - Debug variants (binaries for which the "first" version is preferred on device
//  (likely 64-bit) and on host).
art_runtime_debug_binaries_first_on_device_first_on_host = [
    "dexoptanalyzerd",
    "profmand",
]
art_runtime_debug_binaries_both_on_device_first_on_host = [
    "dex2oatd",
]

// - Debug variants (libraries).
art_runtime_debug_native_shared_libs = [
    "libadbconnectiond",
    "libartd",
    "libartd-compiler",
    "libdexfiled",
    "libopenjdkjvmd",
    "libopenjdkjvmtid",
]

art_runtime_base_native_device_only_debug_shared_libs = [
    "libperfetto_hprofd",
]

// Libraries needed to execute ART run-tests.
// TODO(b/124476339): When bug 124476339 is fixed, add these libraries as `runtime_libs`
// dependencies of `libartd-compiler`, and remove `art_runtime_run_test_libs`.
art_runtime_run_test_libs = [
    "libart-disassembler",
    "libartd-disassembler",
]

// Tools common to both device APEX and host APEX. Derived from art-tools in art/Android.mk.
art_tools_common_binaries = [
    "dexdump",
    "dexlist",
]

// Tools common to both device and host debug APEXes.
art_tools_debug_binaries = [
    "dexanalyze",
    "dexdiag",
    "dexlayout",
    "dexlayoutd",
]

art_tools_debug_binaries_both = [
    "imgdiag",
    "imgdiagd",
]

// Tools exclusively for the device APEX derived from art-tools in art/Android.mk.
art_tools_device_only_binaries = [
    // oatdump cannot link with host linux_bionic due to not using clang lld;
    // TODO: Make it work with clang lld.
    "oatdump",
]
// Same, but for only for debug packages.
art_tools_debug_device_only_binaries = [
    // oatdumpd cannot link with host linux_bionic due to not using clang lld;
    // TODO: Make it work with clang lld.
    "oatdumpd",
]

// Tools exclusively for the host APEX derived from art-tools in art/Android.mk.
art_tools_host_only_binaries = [
    // FIXME: Does not work as-is, because `ahat` is defined in tools/ahat/Android.mk
    // (same issue as for `libart_fake` above).
    //"ahat",
    "hprof-conv",
]

// Core Java libraries.
libcore_java_libs = [
    "core-oj",
    "core-libart",
    "okhttp",
    "bouncycastle",
    "apache-xml",
]

// 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: libcore_java_libs + [
        "framework-annotations-lib",
    ],
}

// Native libraries that support the core Java libraries.
//
// Note: ART on-device chroot-based testing and benchmarking is not yet using
// the ART APEX, meaning that copies of some of these libraries have to be
// installed in `/system` for the ART Buildbot set-up to work properly. This is
// done by the `standalone-apex-files` Make phony target, used by the ART
// Buildbot and Golem (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`.
// TODO(b/121117762): Remove this note when both the ART Buildbot and Golem use
// the ART APEX.
libcore_native_shared_libs = [
    // External API (having APEX stubs).
    "libandroidio",
    // TODO(b/124476339): Clean up the following libraries once "required"
    // dependencies work with APEX libraries.
    "libexpat",
    "libjavacore",
    "libopenjdk",
]
libcore_debug_native_shared_libs = [
    "libopenjdkd",
]

// Temporary library includes for b/123591866 as all libraries are moved into the main art-apex.
art_runtime_libraries_zipapex = [
    "libnativebridge",
    "libnativeloader",
    "libnativehelper",
    "libcutils",
]

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",
}

art_module_apex_defaults {
    name: "com.android.art-defaults",

    // Enable if ART_MODULE_BUILD_FROM_SOURCE is true
    enabled: false,
    soong_config_variables: {
        source_build: {
            enabled: true,
        },
    },

    target: {
        windows: {
            // When the Soong config variable above sets enabled:true, it
            // overrides the default false for targets, so we need to disable
            // windows explicitly.
            enabled: false,
        },
    },
}

// Default values shared by device ART APEXes.
apex_defaults {
    name: "com.android.art-device-defaults-minus-odrefresh",
    defaults: [
        "com.android.art-defaults",
        "s-launched-apex-module",
    ],
    compile_multilib: "both",
    manifest: "manifest-art.json",
    bootclasspath_fragments: ["art-bootclasspath-fragment"],
    systemserverclasspath_fragments: ["art-systemserverclasspath-fragment"],
    compat_configs: ["libcore-platform-compat-config"],
    java_libs: libcore_java_libs,
    native_shared_libs: art_runtime_base_native_shared_libs +
        art_runtime_base_native_device_only_shared_libs +
        libcore_native_shared_libs,
    jni_libs: [
        "libartservice",
    ],
    binaries: [
        "artd",
    ],
    multilib: {
        both: {
            binaries: art_runtime_base_binaries_both +
                art_runtime_base_binaries_both_on_device_first_on_host,
        },
        first: {
            binaries: art_runtime_base_binaries_first_on_device_first_on_host +
                art_tools_common_binaries +
                art_tools_device_only_binaries,
        },
    },
    key: "com.android.art.key",
    required: [
        "com.android.i18n",
    ],
    prebuilts: [
        "art-linker-config",
        "com.android.art.artd.init.rc",
        "current_sdkinfo",
    ],
    // ART APEXes depend on bouncycastle which is disabled for PDK builds.
    // Since the dependency is disabled, ART APEXes can't be built either.
    // Disable the APEXes too. See b/157267166.
    product_variables: {
        pdk: {
            enabled: false,
        },
    },
    // Indicates that pre-installed version of this apex can be compressed.
    // Whether it actually will be compressed is controlled on per-device basis.
    compressible: true,
}

apex_defaults {
    name: "com.android.art-device-defaults",
    defaults: ["com.android.art-device-defaults-minus-odrefresh"],
    multilib: {
        first: {
            binaries: ["odrefresh"],
        },
    },
}

// Default values shared by (device) Debug and Testing ART APEXes.
apex_defaults {
    name: "com.android.art-devel-defaults",
    defaults: ["com.android.art-device-defaults"],
    native_shared_libs: art_runtime_base_native_device_only_debug_shared_libs +
        art_runtime_run_test_libs +
        art_runtime_debug_native_shared_libs +
        libcore_debug_native_shared_libs,
    multilib: {
        both: {
            binaries: art_tools_debug_binaries_both +
                art_runtime_debug_binaries_both_on_device_first_on_host,
        },
        first: {
            binaries: art_runtime_debug_binaries_first_on_device_first_on_host +
                art_tools_debug_binaries +
                art_tools_debug_device_only_binaries,
        },
    },
}

// "Broken" test APEX, only used for testing, including module
// `libart-broken` instead of `libart`.
apex_test {
    name: "test_broken_com.android.art",
    // Use of "s-launched-apex-module" does not imply that this is a released
    // module.
    defaults: [
        "com.android.art-defaults",
        "s-launched-apex-module",
    ],

    // Only include native libraries in this test APEX. Don't include
    // binaries (and maybe other artifacts) for now, as they pull
    // the "non-broken" `libart` module into this test APEX and
    // overwrite `libart-broken`. Maybe consider creating "broken"
    // variants of binaries (and other artifacts)?
    native_shared_libs: art_runtime_base_broken_native_shared_libs,
    compile_multilib: "both",

    key: "com.android.art.key",
    manifest: "test_apex_manifest.json",
    file_contexts: ":com.android.art-file_contexts",
    certificate: ":com.android.art.certificate",
    installable: false,
}

apex_test {
    name: "test_jitzygote_com.android.art",
    defaults: ["com.android.art-device-defaults-minus-odrefresh"],
    multilib: {
        first: {
            binaries: ["odrefresh_broken"],
        },
    },
    key: "com.android.art.key",
    manifest: "test_apex_manifest.json",
    file_contexts: ":com.android.art-file_contexts",
    certificate: ":com.android.art.certificate",
    installable: false,
}

// 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-device-defaults"],
    certificate: ":com.android.art.certificate",
}

// "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"],
    certificate: ":com.android.art.certificate",
}

// ART gtests with dependencies on internal ART APEX libraries.
art_gtests = [
    "art_cmdline_tests",
    "art_compiler_tests",
    "art_dex2oat_tests",
    "art_dexanalyze_tests",
    "art_dexdiag_tests",
    "art_dexdump_tests",
    "art_dexlayout_tests",
    "art_dexlist_tests",
    "art_dexoptanalyzer_tests",
    "art_imgdiag_tests",
    "art_libartbase_tests",
    "art_libartpalette_tests",
    "art_libartservice_tests",
    "art_libarttools_tests",
    "art_libdexfile_tests",
    "art_libdexfile_support_tests",
    "art_libprofile_tests",
    "art_oatdump_tests",
    "art_odrefresh_tests",
    "art_profman_tests",
    "art_runtime_compiler_tests",
    "art_runtime_tests",
    "art_sigchain_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",
    certificate: ":com.android.art.certificate",
    tests: art_gtests,
    binaries: ["signal_dumper"], // Need signal_dumper for run-tests.
    updatable: false,
}

// TODO: Do this better. art_apex_test_host will disable host builds when
// HOST_PREFER_32_BIT is set. We cannot simply use com.android.art.debug
// because binaries have different multilib classes and 'multilib: {}' isn't
// supported by target: { ... }.
// See b/120617876 for more information.
art_apex_test_host {
    name: "com.android.art.host",
    defaults: ["com.android.art-defaults"],
    compile_multilib: "both",
    payload_type: "zip",
    host_supported: true,
    device_supported: false,
    manifest: "manifest-art.json",
    updatable: false,
    java_libs: libcore_java_libs,
    ignore_system_library_special_case: true,
    native_shared_libs: art_runtime_base_native_shared_libs +
        art_runtime_debug_native_shared_libs +
        libcore_native_shared_libs +
        libcore_debug_native_shared_libs +
        art_runtime_libraries_zipapex +
        art_runtime_run_test_libs,
    multilib: {
        both: {
            binaries: art_runtime_base_binaries_both +
                art_tools_debug_binaries_both,
        },
        first: {
            binaries: art_runtime_base_binaries_both_on_device_first_on_host +
                art_runtime_base_binaries_first_on_device_first_on_host +
                art_runtime_debug_binaries_first_on_device_first_on_host +
                art_runtime_debug_binaries_both_on_device_first_on_host +
                art_tools_common_binaries +
                art_tools_debug_binaries + // Host APEX is always debug.
                art_tools_host_only_binaries,
        },
    },
    key: "com.android.art.key",
    target: {
        darwin: {
            enabled: false,
        },
        linux_bionic: {
            multilib: {
                both: {
                    native_shared_libs: bionic_native_shared_libs,
                    binaries: bionic_binaries_both,
                },
            },
        },
    },
    // ART APEXes depend on bouncycastle which is disabled for PDK builds.
    // Since the dependency is disabled, ART APEXes can't be built either.
    // Disable the APEXes too. See b/157267166.
    product_variables: {
        pdk: {
            enabled: false,
        },
    },
}

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)" +
    " --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",
    defaults: ["art_module_source_build_genrule_defaults"],
    tools: [
        "art-apex-tester",
        "deapexer",
        "debugfs_static",
    ],
}

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

    // Enable if ART_MODULE_BUILD_FROM_SOURCE is true
    enabled: false,
    soong_config_variables: {
        source_build: {
            enabled: true,
        },
    },

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

genrule {
    name: "art-check-release-apex-gen",
    defaults: ["art-check-apex-gen-defaults"],
    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"],
}

genrule {
    name: "art-check-debug-apex-gen",
    defaults: ["art-check-apex-gen-defaults"],
    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"],
}

genrule {
    name: "art-check-testing-apex-gen",
    defaults: ["art-check-apex-gen-defaults"],
    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"],
}

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