// Android Runtime APEX module.

// 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 relevant).
art_runtime_base_binaries_both = [
    "dalvikvm",
]
// - Base requirements (binaries for which a 32-bit version is preferred).
art_runtime_base_binaries_prefer32 = [
    "dex2oat",
    "dexoptanalyzer",
    "profman",
]
// - Base requirements (libraries).
//
// Note: ART on-device chroot-based testing and benchmarking is not yet using
// the Runtime 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_RUNTIME_DEPENDENCY_LIBS` in
// `art/Android.mk`.
// TODO(b/121117762): Remove this note when both the ART Buildbot and Golem use
// the Runtime APEX.
art_runtime_base_native_shared_libs = [
    // External API (having APEX stubs).
    "libdexfile_external",
    "libnativebridge",
    "libnativehelper",
    "libnativeloader",
    // 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",
    "libart-compiler",
    "libdt_fd_forward",
    "libdt_socket",
    "libjdwp",
    "libnpt",
    "libopenjdkjvm",
    "libopenjdkjvmti",
]
bionic_native_shared_libs = [
    // External API (having APEX stubs).
    "libc",
    "libm",
    "libdl",
]
bionic_binaries_both = [
    "linker",
]
// - Debug variants (binaries for which a 32-bit version is preferred).
art_runtime_debug_binaries_prefer32 = [
    "dexoptanalyzerd",
    "profmand",
]
art_runtime_debug_binaries_prefer32_device = [
    "dex2oatd",
]
art_runtime_debug_binaries_both_host = [
    "dex2oatd",
]

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

// Data files associated with bionic / managed core library APIs.
art_runtime_data_file_prebuilts = [
    "apex_tz_version",
    "apex_tzdata",
    "apex_tzlookup.xml",
    "apex_icu.dat",
]

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

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

art_tools_device_binaries = art_tools_common_binaries + art_tools_device_only_binaries
art_tools_host_binaries = art_tools_common_binaries + art_tools_host_only_binaries

// Libraries needed to use com.android.runtime.host for zipapex run-tests
art_runtime_host_run_test_libs = [
    "libartd-disassembler"
]

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

// Native libraries that support the core Java libraries.
//
// Note: ART on-device chroot-based testing and benchmarking is not yet using
// the Runtime 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_RUNTIME_DEPENDENCY_LIBS` in
// `art/Android.mk`.
// TODO(b/121117762): Remove this note when both the ART Buildbot and Golem use
// the Runtime APEX.
libcore_native_shared_libs = [
    // External API (having APEX stubs).
    "libandroidicu",
    "libandroidio",
    // TODO(b/124476339): Clean up the following libraries once "required"
    // dependencies work with APEX libraries.
    "libexpat",
    "libicui18n",
    "libicuuc",
    "libjavacore",
    "libopenjdk",
]
libcore_debug_native_shared_libs = [
    "libopenjdkd",
]

libcore_native_device_only_shared_libs = [
    // TODO(b/122876336): Remove libpac.so once it's migrated to Webview.
    // libpac is used by frameworks, not by ART host.
    "libpac",
]

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

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

android_app_certificate {
    name: "com.android.runtime.debug.certificate",
    certificate: "com.android.runtime.debug",
}

android_app_certificate {
    name: "com.android.runtime.release.certificate",
    certificate: "com.android.runtime.release",
}

prebuilt_etc {
    name: "com.android.runtime.ld.config.txt",
    src: "ld.config.txt",
    filename: "ld.config.txt",
    installable: false,
}

apex_defaults {
    name: "com.android.runtime-defaults",
    compile_multilib: "both",
    manifest: "manifest.json",
    java_libs: libcore_java_libs,
    native_shared_libs: art_runtime_base_native_shared_libs
        + bionic_native_shared_libs
        + libcore_native_device_only_shared_libs
        + libcore_native_shared_libs,
    multilib: {
        both: {
            binaries: art_runtime_base_binaries_both
                + bionic_binaries_both,
        },
        prefer32: {
            binaries: art_runtime_base_binaries_prefer32,
        },
        first: {
            binaries: art_tools_device_binaries,
        }
    },
    binaries: [
        "art_postinstall_hook",
        "art_preinstall_hook",
        "art_preinstall_hook_boot",
        "art_preinstall_hook_system_server",
        "art_prepostinstall_utils",
    ],
    prebuilts: art_runtime_data_file_prebuilts
        + ["com.android.runtime.ld.config.txt"],
    key: "com.android.runtime.key",
    required: ["art_apex_boot_integrity"],
}

// Release version of the Runtime 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.runtime.release",
    defaults: ["com.android.runtime-defaults"],
    certificate: ":com.android.runtime.release.certificate",
}

// "Debug" version of the Runtime APEX module (containing both release and
// debug variants, as well as additional tools), included in userdebug and
// eng build.
apex {
    name: "com.android.runtime.debug",
    defaults: ["com.android.runtime-defaults"],
    native_shared_libs: art_runtime_debug_native_shared_libs
        + libcore_debug_native_shared_libs,
    multilib: {
        prefer32: {
            binaries: art_runtime_debug_binaries_prefer32
                + art_runtime_debug_binaries_prefer32_device,
        },
        first: {
            binaries: art_tools_debug_device_only_binaries,
        }
    },
    certificate: ":com.android.runtime.debug.certificate",
}

// TODO: Do this better. art_apex will disable host builds when
// HOST_PREFER_32_BIT is set. We cannot simply use com.android.runtime.debug
// because binaries have different multilib classes and 'multilib: {}' isn't
// supported by target: { ... }.
// See b/120617876 for more information.
art_apex_test {
    name: "com.android.runtime.host",
    compile_multilib: "both",
    payload_type: "zip",
    host_supported: true,
    device_supported: false,
    manifest: "manifest.json",
    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_host_run_test_libs,
    multilib: {
        both: {
            binaries: art_runtime_base_binaries_both
                + art_runtime_debug_binaries_both_host,
        },
        first: {
            binaries: art_tools_host_binaries
                + art_runtime_base_binaries_prefer32
                + art_runtime_debug_binaries_prefer32,
        }
    },
    key: "com.android.runtime.key",
    target: {
        darwin: {
            enabled: false,
        },
        linux_bionic: {
            enabled: true,
            multilib: {
                both: {
                    native_shared_libs: bionic_native_shared_libs,
                    binaries: bionic_binaries_both,
                }
            }
        },
    },
}

python_binary_host {
    name: "art-apex-tester",
    srcs: ["art_apex_test.py"],
    main: "art_apex_test.py",
    version: {
        py2: {
            enabled: false,
        },
        py3: {
            enabled: true,
        },
    },
}

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

genrule {
    name: "art-check-release-apex-gen",
    srcs: [":com.android.runtime.release"],
    tools: [
        "art-apex-tester",
        "debugfs",
    ],
    cmd: "$(location art-apex-tester)"
              + " --debugfs $(location debugfs)"
              + " --tmpdir $(genDir)"
              + " $(in)"
         + " && touch $(out)",
    out: ["art-check-release-apex-gen.dummy"],
}
cc_prebuilt_binary {
    name: "art-check-release-apex-gen-fakebin",
    srcs: [":art-check-release-apex-gen"],
    host_supported: true,
    device_supported: false,
    target: {
        darwin: {
            enabled: false,  // No python3.
        },
    },
}

genrule {
    name: "art-check-debug-apex-gen",
    srcs: [":com.android.runtime.debug"],
    tools: [
        "art-apex-tester",
        "debugfs",
    ],
    cmd: "$(location art-apex-tester)"
              + " --debugfs $(location debugfs)"
              + " --tmpdir $(genDir)"
              + " --debug"
              + " $(in)"
         + " && touch $(out)",
    out: ["art-check-debug-apex-gen.dummy"],
}
cc_prebuilt_binary {
    name: "art-check-debug-apex-gen-fakebin",
    srcs: [":art-check-debug-apex-gen"],
    host_supported: true,
    device_supported: false,
    target: {
        darwin: {
            enabled: false,  // No python3.
        },
    },
}

// Pre-install scripts.

sh_binary {
    name: "art_preinstall_hook",
    src: "art_preinstall_hook.sh",
}
sh_binary {
    name: "art_preinstall_hook_boot",
    src: "art_preinstall_hook_boot.sh",
}
sh_binary {
    name: "art_preinstall_hook_system_server",
    src: "art_preinstall_hook_system_server.sh",
}
sh_binary {
    name: "art_prepostinstall_utils",
    src: "art_prepostinstall_utils.sh",
}
sh_binary {
    name: "art_postinstall_hook",
    src: "art_postinstall_hook.sh",
}

sh_binary {
    name: "art_apex_boot_integrity",
    src: "art_apex_boot_integrity.sh",
    init_rc: ["art_apex_boot_integrity.rc"],
}
