blob: a07b5a03901605cbb964a6d2c94bc7a96a551015 [file] [log] [blame]
// 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).
art_runtime_base_native_shared_libs = [
"libadbconnection",
"libart",
"libart-compiler",
"libdexfile_external",
"libnativebridge",
"libnativehelper",
"libnativeloader",
"libopenjdkjvm",
"libopenjdkjvmti",
// TODO(b/124439236): Clean up the following libraries once "required"
// dependencies work with APEX libraries.
"libdt_fd_forward",
"libdt_socket",
"libjdwp",
"libnpt",
]
bionic_native_shared_libs = [
"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",
]
libcore_debug_native_shared_libs = [
"libopenjdkd",
]
// 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",
]
// Modules listed in LOCAL_REQUIRED_MODULES for module art-tools in art/Android.mk.
art_tools_common_binaries = [
"dexdiag",
"dexdump",
"dexlist",
]
// Device-only modules listed in LOCAL_REQUIRED_MODULES for module 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",
]
// Host-only modules listed in LOCAL_REQUIRED_MODULES for module 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.
libcore_native_shared_libs = [
"libandroidicu",
"libexpat",
"libicui18n",
"libicuuc",
"libjavacore",
"libopenjdk",
"libz",
"libziparchive",
]
libcore_native_device_only_shared_libs = libcore_native_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,
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"],
}