diff --git a/core/board_config.mk b/core/board_config.mk index 9c362f2777..fecb6f60c6 100644 --- a/core/board_config.mk +++ b/core/board_config.mk @@ -19,6 +19,15 @@ # and sanity-checks the variable defined therein. # ############################################################### +# ############################################################### +# Broken build defaults +# ############################################################### +BUILD_BROKEN_ANDROIDMK_EXPORTS := +BUILD_BROKEN_DUP_COPY_HEADERS := +BUILD_BROKEN_DUP_RULES := +BUILD_BROKEN_PHONY_TARGETS := +BUILD_BROKEN_ENG_DEBUG_TAGS := + # Boards may be defined under $(SRC_TARGET_DIR)/board/$(TARGET_DEVICE) # or under vendor/*/$(TARGET_DEVICE). Search in both places, but # make sure only one exists. @@ -54,6 +63,89 @@ ifneq ($(MALLOC_IMPL),) endif board_config_mk := +# Clean up/verify variables defined by the board config file. +TARGET_BOOTLOADER_BOARD_NAME := $(strip $(TARGET_BOOTLOADER_BOARD_NAME)) +TARGET_CPU_ABI := $(strip $(TARGET_CPU_ABI)) +TARGET_CPU_ABI2 := $(strip $(TARGET_CPU_ABI2)) +TARGET_CPU_VARIANT := $(strip $(TARGET_CPU_VARIANT)) +TARGET_CPU_VARIANT_RUNTIME := $(strip $(TARGET_CPU_VARIANT_RUNTIME)) + +TARGET_2ND_CPU_ABI := $(strip $(TARGET_2ND_CPU_ABI)) +TARGET_2ND_CPU_ABI2 := $(strip $(TARGET_2ND_CPU_ABI2)) +TARGET_2ND_CPU_VARIANT := $(strip $(TARGET_2ND_CPU_VARIANT)) +TARGET_2ND_CPU_VARIANT_RUNTIME := $(strip $(TARGET_2ND_CPU_VARIANT_RUNTIME)) + +# Default *_CPU_VARIANT_RUNTIME to CPU_VARIANT if unspecified. +TARGET_CPU_VARIANT_RUNTIME := $(or $(TARGET_CPU_VARIANT_RUNTIME),$(TARGET_CPU_VARIANT)) +TARGET_2ND_CPU_VARIANT_RUNTIME := $(or $(TARGET_2ND_CPU_VARIANT_RUNTIME),$(TARGET_2ND_CPU_VARIANT)) + +BOARD_KERNEL_BASE := $(strip $(BOARD_KERNEL_BASE)) +BOARD_KERNEL_PAGESIZE := $(strip $(BOARD_KERNEL_PAGESIZE)) + + +ifeq ($(TARGET_CPU_ABI),) + $(error No TARGET_CPU_ABI defined by board config: $(board_config_mk)) +endif +ifneq ($(filter %64,$(TARGET_ARCH)),) + TARGET_IS_64_BIT := true +endif + +ifeq (,$(filter true,$(TARGET_SUPPORTS_32_BIT_APPS) $(TARGET_SUPPORTS_64_BIT_APPS))) + TARGET_SUPPORTS_32_BIT_APPS := true +endif + +# Sanity check to warn about likely cryptic errors later in the build. +ifeq ($(TARGET_IS_64_BIT),true) + ifeq (,$(filter true false,$(TARGET_SUPPORTS_64_BIT_APPS))) + $(warning Building a 32-bit-app-only product on a 64-bit device. \ + If this is intentional, set TARGET_SUPPORTS_64_BIT_APPS := false) + endif +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 board configuration. +ifeq (,$(TARGET_CPU_ABI_LIST_64_BIT)) + ifeq (true|true,$(TARGET_IS_64_BIT)|$(TARGET_SUPPORTS_64_BIT_APPS)) + 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 + ifeq (true,$(TARGET_SUPPORTS_32_BIT_APPS)) + # 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 +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)) + ifeq ($(TARGET_IS_64_BIT)|$(TARGET_PREFER_32_BIT_APPS),true|true) + TARGET_CPU_ABI_LIST := $(TARGET_CPU_ABI_LIST_32_BIT) $(TARGET_CPU_ABI_LIST_64_BIT) + else + TARGET_CPU_ABI_LIST := $(TARGET_CPU_ABI_LIST_64_BIT) $(TARGET_CPU_ABI_LIST_32_BIT) + 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))) + ########################################### # Handle BUILD_BROKEN_* settings vars := \ diff --git a/core/config.mk b/core/config.mk index 5f08f2f947..e0bfe7553f 100644 --- a/core/config.mk +++ b/core/config.mk @@ -207,15 +207,6 @@ else JAVA_TMPDIR_ARG := endif -# ############################################################### -# Broken build defaults -# ############################################################### -BUILD_BROKEN_ANDROIDMK_EXPORTS := -BUILD_BROKEN_DUP_COPY_HEADERS := -BUILD_BROKEN_DUP_RULES := -BUILD_BROKEN_PHONY_TARGETS := -BUILD_BROKEN_ENG_DEBUG_TAGS := - # ############################################################### # Include sub-configuration files # ############################################################### @@ -297,29 +288,6 @@ TARGET_PRODUCT_KERNEL_HEADERS := $(strip $(wildcard $(PRODUCT_VENDOR_KERNEL_HEAD TARGET_PRODUCT_KERNEL_HEADERS := $(patsubst %/,%,$(TARGET_PRODUCT_KERNEL_HEADERS)) $(call validate-kernel-headers,$(TARGET_PRODUCT_KERNEL_HEADERS)) -# Clean up/verify variables defined by the board config file. -# TODO: Move this to right after the BoardConfig parsing. -TARGET_BOOTLOADER_BOARD_NAME := $(strip $(TARGET_BOOTLOADER_BOARD_NAME)) -TARGET_CPU_ABI := $(strip $(TARGET_CPU_ABI)) -ifeq ($(TARGET_CPU_ABI),) - $(error No TARGET_CPU_ABI defined by board config: $(board_config_mk)) -endif -TARGET_CPU_ABI2 := $(strip $(TARGET_CPU_ABI2)) -TARGET_CPU_VARIANT := $(strip $(TARGET_CPU_VARIANT)) -TARGET_CPU_VARIANT_RUNTIME := $(strip $(TARGET_CPU_VARIANT_RUNTIME)) - -TARGET_2ND_CPU_ABI := $(strip $(TARGET_2ND_CPU_ABI)) -TARGET_2ND_CPU_ABI2 := $(strip $(TARGET_2ND_CPU_ABI2)) -TARGET_2ND_CPU_VARIANT := $(strip $(TARGET_2ND_CPU_VARIANT)) -TARGET_2ND_CPU_VARIANT_RUNTIME := $(strip $(TARGET_2ND_CPU_VARIANT_RUNTIME)) - -# Default *_CPU_VARIANT_RUNTIME to CPU_VARIANT if unspecified. -TARGET_CPU_VARIANT_RUNTIME := $(or $(TARGET_CPU_VARIANT_RUNTIME),$(TARGET_CPU_VARIANT)) -TARGET_2ND_CPU_VARIANT_RUNTIME := $(or $(TARGET_2ND_CPU_VARIANT_RUNTIME),$(TARGET_2ND_CPU_VARIANT)) - -BOARD_KERNEL_BASE := $(strip $(BOARD_KERNEL_BASE)) -BOARD_KERNEL_PAGESIZE := $(strip $(BOARD_KERNEL_PAGESIZE)) - # Commands to generate .toc file common to ELF .so files. define _gen_toc_command_for_elf $(hide) ($($(PRIVATE_2ND_ARCH_VAR_PREFIX)$(PRIVATE_PREFIX)READELF) -d $(1) | grep SONAME || echo "No SONAME for $1") > $(2) @@ -380,62 +348,6 @@ TARGET_PREFER_32_BIT_APPS := true TARGET_PREFER_32_BIT_EXECUTABLES := true endif -ifeq (,$(filter true,$(TARGET_SUPPORTS_32_BIT_APPS) $(TARGET_SUPPORTS_64_BIT_APPS))) - TARGET_SUPPORTS_32_BIT_APPS := true -endif - -# Sanity check to warn about likely cryptic errors later in the build. -ifeq ($(TARGET_IS_64_BIT),true) - ifeq (,$(filter true false,$(TARGET_SUPPORTS_64_BIT_APPS))) - $(warning Building a 32-bit-app-only product on a 64-bit device. \ - If this is intentional, set TARGET_SUPPORTS_64_BIT_APPS := false) - endif -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 board configuration. -ifeq (,$(TARGET_CPU_ABI_LIST_64_BIT)) - ifeq (true|true,$(TARGET_IS_64_BIT)|$(TARGET_SUPPORTS_64_BIT_APPS)) - 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 - ifeq (true,$(TARGET_SUPPORTS_32_BIT_APPS)) - # 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 -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)) - ifeq ($(TARGET_IS_64_BIT)|$(TARGET_PREFER_32_BIT_APPS),true|true) - TARGET_CPU_ABI_LIST := $(TARGET_CPU_ABI_LIST_32_BIT) $(TARGET_CPU_ABI_LIST_64_BIT) - else - TARGET_CPU_ABI_LIST := $(TARGET_CPU_ABI_LIST_64_BIT) $(TARGET_CPU_ABI_LIST_32_BIT) - 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))) - # GCC version selection TARGET_GCC_VERSION := 4.9 ifdef TARGET_2ND_ARCH diff --git a/core/envsetup.mk b/core/envsetup.mk index 73856e0570..d072c6ed68 100644 --- a/core/envsetup.mk +++ b/core/envsetup.mk @@ -235,17 +235,7 @@ SDK_HOST_ARCH := x86 include $(BUILD_SYSTEM)/board_config.mk -# --------------------------------------------------------------- -# Set up configuration for target machine. -# The following must be set: -# TARGET_OS = { linux } -# TARGET_ARCH = { arm | x86 | mips } - TARGET_OS := linux -# TARGET_ARCH should be set by BoardConfig.mk and will be checked later -ifneq ($(filter %64,$(TARGET_ARCH)),) -TARGET_IS_64_BIT := true -endif # the target build type defaults to release ifneq ($(TARGET_BUILD_TYPE),debug)