diff --git a/core/Makefile b/core/Makefile index 59432be31..3fe0922ed 100644 --- a/core/Makefile +++ b/core/Makefile @@ -368,6 +368,22 @@ ALL_DEFAULT_INSTALLED_MODULES += $(event_log_tags_file) # ################################################################# # Targets for boot/OS images # ################################################################# +ifneq ($(strip $(TARGET_NO_BOOTLOADER)),true) + INSTALLED_BOOTLOADER_MODULE := $(PRODUCT_OUT)/bootloader + ifeq ($(strip $(TARGET_BOOTLOADER_IS_2ND)),true) + INSTALLED_2NDBOOTLOADER_TARGET := $(PRODUCT_OUT)/2ndbootloader + else + INSTALLED_2NDBOOTLOADER_TARGET := + endif +else + INSTALLED_BOOTLOADER_MODULE := + INSTALLED_2NDBOOTLOADER_TARGET := +endif # TARGET_NO_BOOTLOADER +ifneq ($(strip $(TARGET_NO_KERNEL)),true) + INSTALLED_KERNEL_TARGET := $(PRODUCT_OUT)/kernel +else + INSTALLED_KERNEL_TARGET := +endif VERITY_SIGNER_CMD := $(HOST_OUT_EXECUTABLES)/verity_signer diff --git a/core/config.mk b/core/config.mk index 4780fe8fe..d44a42e2f 100644 --- a/core/config.mk +++ b/core/config.mk @@ -136,49 +136,6 @@ endif # are specific to the user's build configuration. include $(BUILD_SYSTEM)/envsetup.mk -# 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. -# Real boards should always be associated with an OEM vendor. -board_config_mk := \ - $(strip $(wildcard \ - $(SRC_TARGET_DIR)/board/$(TARGET_DEVICE)/BoardConfig.mk \ - $(shell test -d device && find device -maxdepth 4 -path '*/$(TARGET_DEVICE)/BoardConfig.mk') \ - $(shell test -d vendor && find vendor -maxdepth 4 -path '*/$(TARGET_DEVICE)/BoardConfig.mk') \ - )) -ifeq ($(board_config_mk),) - $(error No config file found for TARGET_DEVICE $(TARGET_DEVICE)) -endif -ifneq ($(words $(board_config_mk)),1) - $(error Multiple board config files for TARGET_DEVICE $(TARGET_DEVICE): $(board_config_mk)) -endif -include $(board_config_mk) -ifeq ($(TARGET_ARCH),) - $(error TARGET_ARCH not defined by board config: $(board_config_mk)) -endif -TARGET_DEVICE_DIR := $(patsubst %/,%,$(dir $(board_config_mk))) -board_config_mk := - -# Perhaps we should move this block to build/core/Makefile, -# once we don't have TARGET_NO_KERNEL reference in AndroidBoard.mk/Android.mk. -ifneq ($(strip $(TARGET_NO_BOOTLOADER)),true) - INSTALLED_BOOTLOADER_MODULE := $(PRODUCT_OUT)/bootloader - ifeq ($(strip $(TARGET_BOOTLOADER_IS_2ND)),true) - INSTALLED_2NDBOOTLOADER_TARGET := $(PRODUCT_OUT)/2ndbootloader - else - INSTALLED_2NDBOOTLOADER_TARGET := - endif -else - INSTALLED_BOOTLOADER_MODULE := - INSTALLED_2NDBOOTLOADER_TARGET := -endif # TARGET_NO_BOOTLOADER -ifneq ($(strip $(TARGET_NO_KERNEL)),true) - INSTALLED_KERNEL_TARGET := $(PRODUCT_OUT)/kernel -else - INSTALLED_KERNEL_TARGET := -endif - - # The build system exposes several variables for where to find the kernel # headers: # TARGET_DEVICE_KERNEL_HEADERS is automatically created for the current diff --git a/core/envsetup.mk b/core/envsetup.mk index 24174eb0b..1f87efa7d 100644 --- a/core/envsetup.mk +++ b/core/envsetup.mk @@ -120,6 +120,29 @@ $(warning bad TARGET_BUILD_VARIANT: $(TARGET_BUILD_VARIANT)) $(error must be empty or one of: eng user userdebug) endif +# 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. +# Real boards should always be associated with an OEM vendor. +board_config_mk := \ + $(strip $(wildcard \ + $(SRC_TARGET_DIR)/board/$(TARGET_DEVICE)/BoardConfig.mk \ + $(shell test -d device && find device -maxdepth 4 -path '*/$(TARGET_DEVICE)/BoardConfig.mk') \ + $(shell test -d vendor && find vendor -maxdepth 4 -path '*/$(TARGET_DEVICE)/BoardConfig.mk') \ + )) +ifeq ($(board_config_mk),) + $(error No config file found for TARGET_DEVICE $(TARGET_DEVICE)) +endif +ifneq ($(words $(board_config_mk)),1) + $(error Multiple board config files for TARGET_DEVICE $(TARGET_DEVICE): $(board_config_mk)) +endif +include $(board_config_mk) +ifeq ($(TARGET_ARCH),) + $(error TARGET_ARCH not defined by board config: $(board_config_mk)) +endif +TARGET_DEVICE_DIR := $(patsubst %/,%,$(dir $(board_config_mk))) +board_config_mk := + # --------------------------------------------------------------- # Set up configuration for target machine. # The following must be set: @@ -172,43 +195,49 @@ PRODUCT_OUT := $(TARGET_PRODUCT_OUT_ROOT)/$(TARGET_DEVICE) OUT_DOCS := $(TARGET_COMMON_OUT_ROOT)/docs -BUILD_OUT_EXECUTABLES:= $(BUILD_OUT)/bin +BUILD_OUT_EXECUTABLES := $(BUILD_OUT)/bin -HOST_OUT_EXECUTABLES:= $(HOST_OUT)/bin -HOST_OUT_SHARED_LIBRARIES:= $(HOST_OUT)/lib -HOST_OUT_JAVA_LIBRARIES:= $(HOST_OUT)/framework +HOST_OUT_EXECUTABLES := $(HOST_OUT)/bin +HOST_OUT_SHARED_LIBRARIES := $(HOST_OUT)/lib +HOST_OUT_JAVA_LIBRARIES := $(HOST_OUT)/framework HOST_OUT_SDK_ADDON := $(HOST_OUT)/sdk_addon HOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj -HOST_OUT_HEADERS:= $(HOST_OUT_INTERMEDIATES)/include +HOST_OUT_HEADERS := $(HOST_OUT_INTERMEDIATES)/include HOST_OUT_INTERMEDIATE_LIBRARIES := $(HOST_OUT_INTERMEDIATES)/lib -HOST_OUT_NOTICE_FILES:=$(HOST_OUT_INTERMEDIATES)/NOTICE_FILES +HOST_OUT_NOTICE_FILES := $(HOST_OUT_INTERMEDIATES)/NOTICE_FILES HOST_OUT_COMMON_INTERMEDIATES := $(HOST_COMMON_OUT_ROOT)/obj HOST_OUT_FAKE := $(HOST_OUT)/fake_packages TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj -TARGET_OUT_HEADERS:= $(TARGET_OUT_INTERMEDIATES)/include +TARGET_OUT_HEADERS := $(TARGET_OUT_INTERMEDIATES)/include TARGET_OUT_INTERMEDIATE_LIBRARIES := $(TARGET_OUT_INTERMEDIATES)/lib TARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj TARGET_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM) -TARGET_OUT_EXECUTABLES:= $(TARGET_OUT)/bin -TARGET_OUT_OPTIONAL_EXECUTABLES:= $(TARGET_OUT)/xbin -TARGET_OUT_SHARED_LIBRARIES:= $(TARGET_OUT)/lib -TARGET_OUT_JAVA_LIBRARIES:= $(TARGET_OUT)/framework -TARGET_OUT_APPS:= $(TARGET_OUT)/app +TARGET_OUT_EXECUTABLES := $(TARGET_OUT)/bin +TARGET_OUT_OPTIONAL_EXECUTABLES := $(TARGET_OUT)/xbin +ifneq ($(filter %64,$(TARGET_ARCH)),) +# /system/lib always contains 32-bit libraries, +# and /system/lib64 (if present) always contains 64-bit libraries. +TARGET_OUT_SHARED_LIBRARIES := $(TARGET_OUT)/lib64 +else +TARGET_OUT_SHARED_LIBRARIES := $(TARGET_OUT)/lib +endif +TARGET_OUT_JAVA_LIBRARIES := $(TARGET_OUT)/framework +TARGET_OUT_APPS := $(TARGET_OUT)/app TARGET_OUT_APPS_PRIVILEGED := $(TARGET_OUT)/priv-app TARGET_OUT_KEYLAYOUT := $(TARGET_OUT)/usr/keylayout TARGET_OUT_KEYCHARS := $(TARGET_OUT)/usr/keychars TARGET_OUT_ETC := $(TARGET_OUT)/etc -TARGET_OUT_NOTICE_FILES:=$(TARGET_OUT_INTERMEDIATES)/NOTICE_FILES +TARGET_OUT_NOTICE_FILES := $(TARGET_OUT_INTERMEDIATES)/NOTICE_FILES TARGET_OUT_FAKE := $(PRODUCT_OUT)/fake_packages TARGET_OUT_DATA := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DATA) -TARGET_OUT_DATA_EXECUTABLES:= $(TARGET_OUT_EXECUTABLES) -TARGET_OUT_DATA_SHARED_LIBRARIES:= $(TARGET_OUT_SHARED_LIBRARIES) -TARGET_OUT_DATA_JAVA_LIBRARIES:= $(TARGET_OUT_DATA)/framework -TARGET_OUT_DATA_APPS:= $(TARGET_OUT_DATA)/app +TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_EXECUTABLES) +TARGET_OUT_DATA_SHARED_LIBRARIES := $(TARGET_OUT_SHARED_LIBRARIES) +TARGET_OUT_DATA_JAVA_LIBRARIES := $(TARGET_OUT_DATA)/framework +TARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA)/app TARGET_OUT_DATA_KEYLAYOUT := $(TARGET_OUT_KEYLAYOUT) TARGET_OUT_DATA_KEYCHARS := $(TARGET_OUT_KEYCHARS) TARGET_OUT_DATA_ETC := $(TARGET_OUT_ETC) @@ -218,11 +247,15 @@ TARGET_OUT_DATA_FAKE := $(TARGET_OUT_DATA)/fake_packages TARGET_OUT_CACHE := $(PRODUCT_OUT)/cache TARGET_OUT_VENDOR := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR) -TARGET_OUT_VENDOR_EXECUTABLES:= $(TARGET_OUT_VENDOR)/bin -TARGET_OUT_VENDOR_OPTIONAL_EXECUTABLES:= $(TARGET_OUT_VENDOR)/xbin -TARGET_OUT_VENDOR_SHARED_LIBRARIES:= $(TARGET_OUT_VENDOR)/lib -TARGET_OUT_VENDOR_JAVA_LIBRARIES:= $(TARGET_OUT_VENDOR)/framework -TARGET_OUT_VENDOR_APPS:= $(TARGET_OUT_VENDOR)/app +TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR)/bin +TARGET_OUT_VENDOR_OPTIONAL_EXECUTABLES := $(TARGET_OUT_VENDOR)/xbin +ifneq ($(filter %64,$(TARGET_ARCH)),) +TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(TARGET_OUT_VENDOR)/lib64 +else +TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(TARGET_OUT_VENDOR)/lib +endif +TARGET_OUT_VENDOR_JAVA_LIBRARIES := $(TARGET_OUT_VENDOR)/framework +TARGET_OUT_VENDOR_APPS := $(TARGET_OUT_VENDOR)/app TARGET_OUT_VENDOR_ETC := $(TARGET_OUT_VENDOR)/etc TARGET_OUT_UNSTRIPPED := $(PRODUCT_OUT)/symbols