blob: 2095a688eb14c77e4641c3d66631bbd5e8e92369 [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 = [
"libart",
"libart-compiler",
"libopenjdkjvm",
"libopenjdkjvmti",
"libadbconnection",
"libjavacrypto",
]
bionic_native_shared_libs = [
"libc",
"libm",
"libdl",
]
// - Fake library that avoids namespace issues and gives some warnings for nosy apps.
art_runtime_fake_native_shared_libs = [
// FIXME: Does not work as-is, because `libart_fake` is defined in libart_fake/Android.mk,
// and because a module defined in a Blueprint file cannot depend on a module defined in a
// Makefile. To support `libart_fake` as a dependency of this APEX module, we can either
// (probably in that order of preference):
// a. translate that logic into Blueprint; or
// b. write the whole Android Runtime APEX generation logic in Android.mk; or
// c. introduce an `art_apex` module type extending the `apex` module type and write the
// corresponding Go logic to handle this extra dependency.
//"libart_fake",
]
// - Debug variants (binaries for which a 32-bit version is preferred).
// FIXME: These modules are optional (the built product can decide to include them or not).
// Should they be moved to another APEX file?
art_runtime_debug_binaries_prefer32 = [
"dex2oatd",
"dexoptanalyzerd",
"profmand",
]
art_runtime_debug_native_shared_libs = [
"libartd",
"libartd-compiler",
"libopenjdkd",
"libopenjdkjvmd",
"libopenjdkjvmtid",
"libadbconnectiond",
"libjavacrypto",
]
// Files associated with bionic / managed core library time zone APIs.
art_runtime_time_zone_prebuilts = [
"apex_tz_version",
"apex_tzdata",
"apex_tzlookup.xml",
]
// Modules listed in LOCAL_REQUIRED_MODULES for module art-tools in art/Android.mk.
art_tools_common_binaries = [
"dexdiag",
"dexdump",
"dexlist",
]
art_tools_device_binaries = [
"oatdump",
]
// Host-only modules listed in LOCAL_REQUIRED_MODULES for module art-tools in art/Android.mk.
// TODO: Include these modules in the future "host APEX".
art_tools_host_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_binaries = art_tools_common_binaries + art_tools_device_binaries
apex_key {
name: "com.android.runtime.key",
public_key: "com.android.runtime.avbpubkey",
private_key: "com.android.runtime.pem",
}
prebuilt_etc {
name: "com.android.runtime.ld.config.txt",
src: "ld.config.txt",
filename: "ld.config.txt",
installable: false,
}
// TODO: Introduce `apex_defaults` to factor common parts of `apex`
// module definitions below?
// 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",
compile_multilib: "both",
manifest: "manifest.json",
native_shared_libs: art_runtime_base_native_shared_libs
+ art_runtime_fake_native_shared_libs
+ bionic_native_shared_libs,
multilib: {
both: {
// TODO: Add logic to create a `dalvikvm` symlink to `dalvikvm32` or `dalvikvm64`
// (see `symlink_preferred_arch` in art/dalvikvm/Android.bp).
binaries: art_runtime_base_binaries_both,
},
prefer32: {
binaries: art_runtime_base_binaries_prefer32,
},
first: {
binaries: [],
}
},
prebuilts: art_runtime_time_zone_prebuilts
+ ["com.android.runtime.ld.config.txt"],
key: "com.android.runtime.key",
}
// "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",
compile_multilib: "both",
manifest: "manifest.json",
native_shared_libs: art_runtime_base_native_shared_libs
+ art_runtime_fake_native_shared_libs
+ art_runtime_debug_native_shared_libs
+ bionic_native_shared_libs,
multilib: {
both: {
// TODO: Add logic to create a `dalvikvm` symlink to `dalvikvm32` or `dalvikvm64`
// (see `symlink_preferred_arch` in art/dalvikvm/Android.bp).
binaries: art_runtime_base_binaries_both,
},
prefer32: {
binaries: art_runtime_base_binaries_prefer32
+ art_runtime_debug_binaries_prefer32,
},
first: {
binaries: art_tools_binaries,
}
},
prebuilts: art_runtime_time_zone_prebuilts
+ ["com.android.runtime.ld.config.txt"],
key: "com.android.runtime.key",
}
// 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 {
name: "com.android.runtime.host",
compile_multilib: "both",
payload_type: "zip",
host_supported: true,
device_supported: false,
manifest: "manifest.json",
native_shared_libs: art_runtime_base_native_shared_libs
+ art_runtime_fake_native_shared_libs
+ art_runtime_debug_native_shared_libs,
multilib: {
both: {
// TODO: Add logic to create a `dalvikvm` symlink to `dalvikvm32` or `dalvikvm64`
// (see `symlink_preferred_arch` in art/dalvikvm/Android.bp).
binaries: art_runtime_base_binaries_both,
},
first: {
// TODO: oatdump cannot link with host linux_bionic due to not using clang ld
binaries: art_tools_common_binaries
+ art_runtime_base_binaries_prefer32
+ art_runtime_debug_binaries_prefer32,
}
},
key: "com.android.runtime.key",
target: {
darwin: {
enabled: false,
},
},
}