From 7303ebda84f64a2823f76282e8e1d6886da08cf0 Mon Sep 17 00:00:00 2001 From: Narayan Kamath Date: Mon, 7 Apr 2014 11:01:54 +0100 Subject: [PATCH] Add 32 / 64 bit abi lists to system properties. Introduce ro.product.cpu.abilist32 / abilist64, which are comma separated lists of the 32 and 64 bit ABIs that the device supports. These properties are used by the zygote and system server to determine what ABI an app should be started with. This changes move abilist related make steps out of envsetup.mk and into config.mk because they depend on variables set by core/combo/***. Additionally, config.mk performs a few additional cleanups of these variables (like stripping them) after the inclusion of envsetup.mk so this seems like a better place to put them. bug: 13647418 Change-Id: I3db39bdd761220c5b4966f651892fb592396f9a1 --- CleanSpec.mk | 3 +++ core/Makefile | 2 ++ core/config.mk | 38 ++++++++++++++++++++++++++++++++++++++ core/envsetup.mk | 22 ---------------------- tools/buildinfo.sh | 2 ++ 5 files changed, 45 insertions(+), 22 deletions(-) diff --git a/CleanSpec.mk b/CleanSpec.mk index f001da947..ee8599553 100644 --- a/CleanSpec.mk +++ b/CleanSpec.mk @@ -214,6 +214,9 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/build.prop) # Rename persist.sys.dalvik.vm.lib to allow new default $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/build.prop) +# Add ro.product.cpu.abilist{32,64} to build.prop. +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/build.prop) + # ************************************************ # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST # ************************************************ diff --git a/core/Makefile b/core/Makefile index 918a94f21..d22312289 100644 --- a/core/Makefile +++ b/core/Makefile @@ -192,6 +192,8 @@ $(INSTALLED_BUILD_PROP_TARGET): $(BUILDINFO_SH) $(INTERNAL_BUILD_ID_MAKEFILE) $( BUILD_FINGERPRINT="$(BUILD_FINGERPRINT)" \ TARGET_BOARD_PLATFORM="$(TARGET_BOARD_PLATFORM)" \ TARGET_CPU_ABI_LIST="$(TARGET_CPU_ABI_LIST)" \ + TARGET_CPU_ABI_LIST_32_BIT="$(TARGET_CPU_ABI_LIST_32_BIT)" \ + TARGET_CPU_ABI_LIST_64_BIT="$(TARGET_CPU_ABI_LIST_64_BIT)" \ TARGET_CPU_ABI="$(TARGET_CPU_ABI)" \ TARGET_CPU_ABI2="$(TARGET_CPU_ABI2)" \ TARGET_AAPT_CHARACTERISTICS="$(TARGET_AAPT_CHARACTERISTICS)" \ diff --git a/core/config.mk b/core/config.mk index 4b91e3665..653a9bc03 100644 --- a/core/config.mk +++ b/core/config.mk @@ -231,6 +231,44 @@ combo_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX) include $(BUILD_SYSTEM)/combo/select.mk endif +# "ro.product.cpu.abilist" is a comma separated list of ABIs (in order +# of preference) that the target supports. If a TARGET_CPU_ABI_LIST +# is specified by the board configuration, we use that. If not, we +# build a list out of the TARGET_CPU_ABIs specified by the config. +ifeq (,$(TARGET_CPU_ABI_LIST)) + TARGET_CPU_ABI_LIST := $(TARGET_CPU_ABI) $(TARGET_CPU_ABI2) $(TARGET_2ND_CPU_ABI) $(TARGET_2ND_CPU_ABI2) +endif + +# "ro.product.cpu.abilist32" and "ro.product.cpu.abilist64" are +# comma separated lists of the 32 and 64 bit ABIs (in order of +# preference) that the target supports. If TARGET_CPU_ABI_LIST_{32,64}_BIT +# are defined by the board config, we use them. Else, we construct +# these lists based on whether TARGET_IS_64_BIT is set. +# +# Note that this assumes that the 2ND_CPU_ABI for a 64 bit target +# is always 32 bits. If this isn't the case, these variables should +# be overriden in the boarc configuration. +ifeq (,$(TARGET_CPU_ABI_LIST_64_BIT)) + ifeq (true,$(TARGET_IS_64_BIT)) + TARGET_CPU_ABI_LIST_64_BIT := $(TARGET_CPU_ABI) $(TARGET_CPU_ABI2) + endif +endif + +ifeq (,$(TARGET_CPU_ABI_LIST_32_BIT)) + ifneq (true,$(TARGET_IS_64_BIT)) + TARGET_CPU_ABI_LIST_32_BIT := $(TARGET_CPU_ABI) $(TARGET_CPU_ABI2) + else + # For a 64 bit target, assume that the 2ND_CPU_ABI + # is a 32 bit ABI. + TARGET_CPU_ABI_LIST_32_BIT := $(TARGET_2ND_CPU_ABI) $(TARGET_2ND_CPU_ABI2) + endif +endif + +# Strip whitespace from the ABI list string. +TARGET_CPU_ABI_LIST := $(subst $(space),$(comma),$(strip $(TARGET_CPU_ABI_LIST))) +TARGET_CPU_ABI_LIST_32_BIT := $(subst $(space),$(comma),$(strip $(TARGET_CPU_ABI_LIST_32_BIT))) +TARGET_CPU_ABI_LIST_64_BIT := $(subst $(space),$(comma),$(strip $(TARGET_CPU_ABI_LIST_64_BIT))) + # Compute TARGET_TOOLCHAIN_ROOT from TARGET_TOOLS_PREFIX # if only TARGET_TOOLS_PREFIX is passed to the make command. ifndef TARGET_TOOLCHAIN_ROOT diff --git a/core/envsetup.mk b/core/envsetup.mk index 628c95b26..4cb389bf4 100644 --- a/core/envsetup.mk +++ b/core/envsetup.mk @@ -143,28 +143,6 @@ endif TARGET_DEVICE_DIR := $(patsubst %/,%,$(dir $(board_config_mk))) board_config_mk := -# "ro.product.cpu.abilist" is a comma separated list of ABIs (in order -# of preference) that the target supports. If a TARGET_CPU_ABI_LIST -# is specified by the board configuration, we use that. If not, we -# build a list out of the TARGET_CPU_ABIs specified by the config. -ifeq (,$(TARGET_CPU_ABI_LIST)) - TARGET_CPU_ABI_LIST := $(TARGET_CPU_ABI) - ifneq (,$(TARGET_CPU_ABI2)) - TARGET_CPU_ABI_LIST += ,$(TARGET_CPU_ABI2) - endif - ifneq (,$(TARGET_2ND_CPU_ABI)) - TARGET_CPU_ABI_LIST += ,$(TARGET_2ND_CPU_ABI) - endif - ifneq (,$(TARGET_2ND_CPU_ABI2)) - TARGET_CPU_ABI_LIST += ,$(TARGET_2ND_CPU_ABI2) - endif - - # Strip whitespace from the ABI list string. - empty := - space := $(empty) $(empty) - TARGET_CPU_ABI_LIST := $(subst $(space),,$(TARGET_CPU_ABI_LIST)) -endif - # --------------------------------------------------------------- # Set up configuration for target machine. # The following must be set: diff --git a/tools/buildinfo.sh b/tools/buildinfo.sh index 39ddc668c..46a73f848 100755 --- a/tools/buildinfo.sh +++ b/tools/buildinfo.sh @@ -30,6 +30,8 @@ if [ -n "$TARGET_CPU_ABI2" ] ; then echo "ro.product.cpu.abi2=$TARGET_CPU_ABI2" fi echo "ro.product.cpu.abilist=$TARGET_CPU_ABI_LIST" +echo "ro.product.cpu.abilist32=$TARGET_CPU_ABI_LIST_32_BIT" +echo "ro.product.cpu.abilist64=$TARGET_CPU_ABI_LIST_64_BIT" echo "ro.product.manufacturer=$PRODUCT_MANUFACTURER" if [ -n "$PRODUCT_DEFAULT_LANGUAGE" ] ; then