2009-03-04 11:28:42 +08:00
|
|
|
# Variables we check:
|
|
|
|
# HOST_BUILD_TYPE = { release debug }
|
|
|
|
# TARGET_BUILD_TYPE = { release debug }
|
|
|
|
# and we output a bunch of variables, see the case statement at
|
|
|
|
# the bottom for the full list
|
|
|
|
# OUT_DIR is also set to "out" if it's not already set.
|
|
|
|
# this allows you to set it to somewhere else if you like
|
2015-06-10 01:35:45 +08:00
|
|
|
# SCAN_EXCLUDE_DIRS is an optional, whitespace separated list of
|
|
|
|
# directories that will also be excluded from full checkout tree
|
|
|
|
# searches for source or make files, in addition to OUT_DIR.
|
|
|
|
# This can be useful if you set OUT_DIR to be a different directory
|
|
|
|
# than other outputs of your build system.
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2009-05-13 12:45:23 +08:00
|
|
|
# Set up version information.
|
|
|
|
include $(BUILD_SYSTEM)/version_defaults.mk
|
|
|
|
|
2009-03-04 11:28:42 +08:00
|
|
|
# ---------------------------------------------------------------
|
|
|
|
# If you update the build system such that the environment setup
|
|
|
|
# or buildspec.mk need to be updated, increment this number, and
|
|
|
|
# people who haven't re-run those will have to do so before they
|
|
|
|
# can build. Make sure to also update the corresponding value in
|
|
|
|
# buildspec.mk.default and envsetup.sh.
|
2010-06-22 07:26:38 +08:00
|
|
|
CORRECT_BUILD_ENV_SEQUENCE_NUMBER := 10
|
2009-03-04 11:28:42 +08:00
|
|
|
|
|
|
|
# ---------------------------------------------------------------
|
2011-07-12 13:11:46 +08:00
|
|
|
# The product defaults to generic on hardware
|
2009-03-04 11:28:42 +08:00
|
|
|
# NOTE: This will be overridden in product_config.mk if make
|
|
|
|
# was invoked with a PRODUCT-xxx-yyy goal.
|
|
|
|
ifeq ($(TARGET_PRODUCT),)
|
2015-06-09 02:57:26 +08:00
|
|
|
TARGET_PRODUCT := aosp_arm
|
2009-03-04 11:28:42 +08:00
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
# the variant -- the set of files that are included for a build
|
|
|
|
ifeq ($(strip $(TARGET_BUILD_VARIANT)),)
|
|
|
|
TARGET_BUILD_VARIANT := eng
|
|
|
|
endif
|
|
|
|
|
|
|
|
# ---------------------------------------------------------------
|
|
|
|
# Set up configuration for host machine. We don't do cross-
|
2012-07-26 10:57:22 +08:00
|
|
|
# compiles except for arm/mips, so the HOST is whatever we are
|
2009-03-04 11:28:42 +08:00
|
|
|
# running on
|
|
|
|
|
|
|
|
UNAME := $(shell uname -sm)
|
|
|
|
|
|
|
|
# HOST_OS
|
|
|
|
ifneq (,$(findstring Linux,$(UNAME)))
|
2014-04-18 01:03:35 +08:00
|
|
|
HOST_OS := linux
|
2009-03-04 11:28:42 +08:00
|
|
|
endif
|
|
|
|
ifneq (,$(findstring Darwin,$(UNAME)))
|
2014-04-18 01:03:35 +08:00
|
|
|
HOST_OS := darwin
|
2009-03-04 11:28:42 +08:00
|
|
|
endif
|
|
|
|
ifneq (,$(findstring Macintosh,$(UNAME)))
|
2014-04-18 01:03:35 +08:00
|
|
|
HOST_OS := darwin
|
2009-03-04 11:28:42 +08:00
|
|
|
endif
|
2010-04-17 08:50:09 +08:00
|
|
|
|
|
|
|
# BUILD_OS is the real host doing the build.
|
|
|
|
BUILD_OS := $(HOST_OS)
|
|
|
|
|
2015-08-15 03:59:50 +08:00
|
|
|
HOST_CROSS_OS :=
|
|
|
|
# We can cross-build Windows binaries on Linux
|
2010-04-17 08:50:09 +08:00
|
|
|
ifeq ($(HOST_OS),linux)
|
2015-08-15 03:59:50 +08:00
|
|
|
HOST_CROSS_OS := windows
|
|
|
|
HOST_CROSS_ARCH := x86
|
2010-04-17 08:50:09 +08:00
|
|
|
endif
|
2009-03-04 11:28:42 +08:00
|
|
|
|
|
|
|
ifeq ($(HOST_OS),)
|
|
|
|
$(error Unable to determine HOST_OS from uname -sm: $(UNAME)!)
|
|
|
|
endif
|
|
|
|
|
|
|
|
# HOST_ARCH
|
2014-04-18 01:03:35 +08:00
|
|
|
ifneq (,$(findstring x86_64,$(UNAME)))
|
2014-06-10 03:31:12 +08:00
|
|
|
HOST_ARCH := x86_64
|
|
|
|
HOST_2ND_ARCH := x86
|
2014-07-09 08:07:36 +08:00
|
|
|
HOST_IS_64_BIT := true
|
2015-03-21 02:39:00 +08:00
|
|
|
else
|
|
|
|
ifneq (,$(findstring x86,$(UNAME)))
|
|
|
|
$(error Building on a 32-bit x86 host is not supported: $(UNAME)!)
|
|
|
|
endif
|
2009-03-04 11:28:42 +08:00
|
|
|
endif
|
|
|
|
|
2010-04-17 08:50:09 +08:00
|
|
|
BUILD_ARCH := $(HOST_ARCH)
|
2014-04-18 01:03:35 +08:00
|
|
|
BUILD_2ND_ARCH := $(HOST_2ND_ARCH)
|
2010-04-17 08:50:09 +08:00
|
|
|
|
2009-03-04 11:28:42 +08:00
|
|
|
ifeq ($(HOST_ARCH),)
|
|
|
|
$(error Unable to determine HOST_ARCH from uname -sm: $(UNAME)!)
|
|
|
|
endif
|
|
|
|
|
|
|
|
# the host build defaults to release, and it must be release or debug
|
|
|
|
ifeq ($(HOST_BUILD_TYPE),)
|
|
|
|
HOST_BUILD_TYPE := release
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifneq ($(HOST_BUILD_TYPE),release)
|
|
|
|
ifneq ($(HOST_BUILD_TYPE),debug)
|
|
|
|
$(error HOST_BUILD_TYPE must be either release or debug, not '$(HOST_BUILD_TYPE)')
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2014-04-18 01:03:35 +08:00
|
|
|
# We don't want to move all the prebuilt host tools to a $(HOST_OS)-x86_64 dir.
|
|
|
|
HOST_PREBUILT_ARCH := x86
|
2009-03-04 11:28:42 +08:00
|
|
|
# This is the standard way to name a directory containing prebuilt host
|
|
|
|
# objects. E.g., prebuilt/$(HOST_PREBUILT_TAG)/cc
|
2015-05-05 03:44:44 +08:00
|
|
|
HOST_PREBUILT_TAG := $(BUILD_OS)-$(HOST_PREBUILT_ARCH)
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2011-10-28 06:18:39 +08:00
|
|
|
# TARGET_COPY_OUT_* are all relative to the staging directory, ie PRODUCT_OUT.
|
|
|
|
# Define them here so they can be used in product config files.
|
|
|
|
TARGET_COPY_OUT_SYSTEM := system
|
|
|
|
TARGET_COPY_OUT_DATA := data
|
2014-03-12 08:13:27 +08:00
|
|
|
TARGET_COPY_OUT_OEM := oem
|
Support to configure and build multiple custom images.
Build additional images requested by the product makefile.
This script gives the ability to build multiple additional images and
you can configure what modules/files to include in each image.
1. Define PRODUCT_CUSTOM_IMAGE_MAKEFILES in your product makefile.
PRODUCT_CUSTOM_IMAGE_MAKEFILES is a list of makefiles.
Each makefile configures an image.
For image configuration makefile foo/bar/xyz.mk, the built image
file name
will be xyz.img. So make sure they won't conflict.
2. In each image's configuration makefile, you can define variables:
- CUSTOM_IMAGE_MOUNT_POINT, the mount point, such as "oem", "odm"
etc.
- CUSTOM_IMAGE_PARTITION_SIZE
- CUSTOM_IMAGE_FILE_SYSTEM_TYPE
- CUSTOM_IMAGE_DICT_FILE, a text file defining a dictionary
accepted by BuildImage() in tools/releasetools/build_image.py.
- CUSTOM_IMAGE_MODULES, a list of module names you want to include
in the image; Not only the module itself will be installed to proper
path in the image, you can also piggyback additional files/directories
with the module's LOCAL_PICKUP_FILES.
- CUSTOM_IMAGE_COPY_FILES, a list of "<src>:<dest>" to be copied to
the image. <dest> is relativ to the root of the image.
To build all those images, run "make custom_images".
Bug: 19609718
Change-Id: Ic73587e08503a251be27797c7b00329716051927
(cherry picked from commit 5fcf1094f9cf4d57c2598237f99621f254130d71)
2015-03-13 09:30:39 +08:00
|
|
|
TARGET_COPY_OUT_ODM := odm
|
2011-10-28 06:18:39 +08:00
|
|
|
TARGET_COPY_OUT_ROOT := root
|
|
|
|
TARGET_COPY_OUT_RECOVERY := recovery
|
2014-07-24 11:20:49 +08:00
|
|
|
###########################################
|
|
|
|
# Define TARGET_COPY_OUT_VENDOR to a placeholder, for at this point
|
|
|
|
# we don't know if the device wants to build a separate vendor.img
|
|
|
|
# or just build vendor stuff into system.img.
|
|
|
|
# A device can set up TARGET_COPY_OUT_VENDOR to "vendor" in its
|
|
|
|
# BoardConfig.mk.
|
|
|
|
# We'll substitute with the real value after loading BoardConfig.mk.
|
|
|
|
_vendor_path_placeholder := ||VENDOR-PATH-PH||
|
|
|
|
TARGET_COPY_OUT_VENDOR := $(_vendor_path_placeholder)
|
|
|
|
###########################################
|
|
|
|
|
|
|
|
# Read the product specs so we can get TARGET_DEVICE and other
|
2011-06-17 07:58:11 +08:00
|
|
|
# variables that we need in order to locate the output files.
|
|
|
|
include $(BUILD_SYSTEM)/product_config.mk
|
2010-09-23 01:59:10 +08:00
|
|
|
|
2011-11-18 06:51:12 +08:00
|
|
|
build_variant := $(filter-out eng user userdebug,$(TARGET_BUILD_VARIANT))
|
2011-06-17 07:58:11 +08:00
|
|
|
ifneq ($(build_variant)-$(words $(TARGET_BUILD_VARIANT)),-1)
|
|
|
|
$(warning bad TARGET_BUILD_VARIANT: $(TARGET_BUILD_VARIANT))
|
2011-11-18 06:51:12 +08:00
|
|
|
$(error must be empty or one of: eng user userdebug)
|
2011-06-17 07:58:11 +08:00
|
|
|
endif
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2014-09-03 06:11:20 +08:00
|
|
|
SDK_HOST_ARCH := x86
|
|
|
|
|
2014-01-14 08:14:20 +08:00
|
|
|
# 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 := \
|
2015-09-30 07:30:21 +08:00
|
|
|
$(strip $(sort $(wildcard \
|
2014-01-14 08:14:20 +08:00
|
|
|
$(SRC_TARGET_DIR)/board/$(TARGET_DEVICE)/BoardConfig.mk \
|
2015-10-07 10:40:11 +08:00
|
|
|
$(shell test -d device && find -L device -maxdepth 4 -path '*/$(TARGET_DEVICE)/BoardConfig.mk') \
|
|
|
|
$(shell test -d vendor && find -L vendor -maxdepth 4 -path '*/$(TARGET_DEVICE)/BoardConfig.mk') \
|
2015-09-30 07:30:21 +08:00
|
|
|
)))
|
2014-01-14 08:14:20 +08:00
|
|
|
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 :=
|
|
|
|
|
2014-07-24 11:20:49 +08:00
|
|
|
###########################################
|
|
|
|
# Now we can substitute with the real value of TARGET_COPY_OUT_VENDOR
|
|
|
|
ifeq ($(TARGET_COPY_OUT_VENDOR),$(_vendor_path_placeholder))
|
|
|
|
TARGET_COPY_OUT_VENDOR := system/vendor
|
|
|
|
else ifeq ($(filter vendor system/vendor,$(TARGET_COPY_OUT_VENDOR)),)
|
|
|
|
$(error TARGET_COPY_OUT_VENDOR must be either 'vendor' or 'system/vendor', seeing '$(TARGET_COPY_OUT_VENDOR)'.)
|
|
|
|
endif
|
|
|
|
PRODUCT_COPY_FILES := $(subst $(_vendor_path_placeholder),$(TARGET_COPY_OUT_VENDOR),$(PRODUCT_COPY_FILES))
|
|
|
|
###########################################
|
|
|
|
|
|
|
|
|
2009-03-04 11:28:42 +08:00
|
|
|
# ---------------------------------------------------------------
|
|
|
|
# Set up configuration for target machine.
|
|
|
|
# The following must be set:
|
|
|
|
# TARGET_OS = { linux }
|
2012-07-26 10:57:22 +08:00
|
|
|
# TARGET_ARCH = { arm | x86 | mips }
|
2009-03-04 11:28:42 +08:00
|
|
|
|
|
|
|
TARGET_OS := linux
|
2012-07-26 10:57:22 +08:00
|
|
|
# TARGET_ARCH should be set by BoardConfig.mk and will be checked later
|
2014-07-09 08:07:36 +08:00
|
|
|
ifneq ($(filter %64,$(TARGET_ARCH)),)
|
|
|
|
TARGET_IS_64_BIT := true
|
|
|
|
endif
|
2009-03-04 11:28:42 +08:00
|
|
|
|
|
|
|
# the target build type defaults to release
|
|
|
|
ifneq ($(TARGET_BUILD_TYPE),debug)
|
|
|
|
TARGET_BUILD_TYPE := release
|
|
|
|
endif
|
|
|
|
|
|
|
|
# ---------------------------------------------------------------
|
|
|
|
# figure out the output directories
|
|
|
|
|
|
|
|
ifeq (,$(strip $(OUT_DIR)))
|
2011-12-07 02:29:46 +08:00
|
|
|
ifeq (,$(strip $(OUT_DIR_COMMON_BASE)))
|
2009-03-04 11:28:42 +08:00
|
|
|
OUT_DIR := $(TOPDIR)out
|
2011-12-07 02:29:46 +08:00
|
|
|
else
|
|
|
|
OUT_DIR := $(OUT_DIR_COMMON_BASE)/$(notdir $(PWD))
|
|
|
|
endif
|
2009-03-04 11:28:42 +08:00
|
|
|
endif
|
|
|
|
|
|
|
|
DEBUG_OUT_DIR := $(OUT_DIR)/debug
|
|
|
|
|
|
|
|
# Move the host or target under the debug/ directory
|
|
|
|
# if necessary.
|
|
|
|
TARGET_OUT_ROOT_release := $(OUT_DIR)/target
|
|
|
|
TARGET_OUT_ROOT_debug := $(DEBUG_OUT_DIR)/target
|
|
|
|
TARGET_OUT_ROOT := $(TARGET_OUT_ROOT_$(TARGET_BUILD_TYPE))
|
|
|
|
|
|
|
|
HOST_OUT_ROOT_release := $(OUT_DIR)/host
|
|
|
|
HOST_OUT_ROOT_debug := $(DEBUG_OUT_DIR)/host
|
|
|
|
HOST_OUT_ROOT := $(HOST_OUT_ROOT_$(HOST_BUILD_TYPE))
|
|
|
|
|
2014-04-18 01:03:35 +08:00
|
|
|
# We want to avoid two host bin directories in multilib build.
|
|
|
|
HOST_OUT_release := $(HOST_OUT_ROOT_release)/$(HOST_OS)-$(HOST_PREBUILT_ARCH)
|
|
|
|
HOST_OUT_debug := $(HOST_OUT_ROOT_debug)/$(HOST_OS)-$(HOST_PREBUILT_ARCH)
|
2009-03-04 11:28:42 +08:00
|
|
|
HOST_OUT := $(HOST_OUT_$(HOST_BUILD_TYPE))
|
2015-08-15 03:59:50 +08:00
|
|
|
# TODO: remove
|
|
|
|
BUILD_OUT := $(HOST_OUT)
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2015-08-15 03:59:50 +08:00
|
|
|
HOST_CROSS_OUT_release := $(HOST_OUT_ROOT_release)/windows-$(HOST_PREBUILT_ARCH)
|
|
|
|
HOST_CROSS_OUT_debug := $(HOST_OUT_ROOT_debug)/windows-$(HOST_PREBUILT_ARCH)
|
|
|
|
HOST_CROSS_OUT := $(HOST_CROSS_OUT_$(HOST_BUILD_TYPE))
|
2010-04-17 08:50:09 +08:00
|
|
|
|
2011-07-12 13:11:46 +08:00
|
|
|
TARGET_PRODUCT_OUT_ROOT := $(TARGET_OUT_ROOT)/product
|
2009-03-04 11:28:42 +08:00
|
|
|
|
|
|
|
TARGET_COMMON_OUT_ROOT := $(TARGET_OUT_ROOT)/common
|
|
|
|
HOST_COMMON_OUT_ROOT := $(HOST_OUT_ROOT)/common
|
|
|
|
|
|
|
|
PRODUCT_OUT := $(TARGET_PRODUCT_OUT_ROOT)/$(TARGET_DEVICE)
|
|
|
|
|
|
|
|
OUT_DOCS := $(TARGET_COMMON_OUT_ROOT)/docs
|
|
|
|
|
2014-01-14 08:14:20 +08:00
|
|
|
BUILD_OUT_EXECUTABLES := $(BUILD_OUT)/bin
|
2010-04-17 08:50:09 +08:00
|
|
|
|
2014-01-14 08:14:20 +08:00
|
|
|
HOST_OUT_EXECUTABLES := $(HOST_OUT)/bin
|
2014-07-01 08:06:21 +08:00
|
|
|
HOST_OUT_SHARED_LIBRARIES := $(HOST_OUT)/lib64
|
2014-01-14 08:14:20 +08:00
|
|
|
HOST_OUT_JAVA_LIBRARIES := $(HOST_OUT)/framework
|
2009-04-10 10:31:12 +08:00
|
|
|
HOST_OUT_SDK_ADDON := $(HOST_OUT)/sdk_addon
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2015-08-15 03:59:50 +08:00
|
|
|
HOST_CROSS_OUT_EXECUTABLES := $(HOST_CROSS_OUT)/bin
|
|
|
|
HOST_CROSS_OUT_SHARED_LIBRARIES := $(HOST_CROSS_OUT)/lib
|
|
|
|
|
2009-03-04 11:28:42 +08:00
|
|
|
HOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj
|
2014-01-14 08:14:20 +08:00
|
|
|
HOST_OUT_HEADERS := $(HOST_OUT_INTERMEDIATES)/include
|
2009-03-04 11:28:42 +08:00
|
|
|
HOST_OUT_INTERMEDIATE_LIBRARIES := $(HOST_OUT_INTERMEDIATES)/lib
|
2014-01-14 08:14:20 +08:00
|
|
|
HOST_OUT_NOTICE_FILES := $(HOST_OUT_INTERMEDIATES)/NOTICE_FILES
|
2009-03-04 11:28:42 +08:00
|
|
|
HOST_OUT_COMMON_INTERMEDIATES := $(HOST_COMMON_OUT_ROOT)/obj
|
2013-11-14 07:56:18 +08:00
|
|
|
HOST_OUT_FAKE := $(HOST_OUT)/fake_packages
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2015-08-15 03:59:50 +08:00
|
|
|
HOST_CROSS_OUT_INTERMEDIATES := $(HOST_CROSS_OUT)/obj
|
|
|
|
HOST_CROSS_OUT_HEADERS := $(HOST_CROSS_OUT_INTERMEDIATES)/include
|
|
|
|
HOST_CROSS_OUT_INTERMEDIATE_LIBRARIES := $(HOST_CROSS_OUT_INTERMEDIATES)/lib
|
|
|
|
HOST_CROSS_OUT_NOTICE_FILES := $(HOST_CROSS_OUT_INTERMEDIATES)/NOTICE_FILES
|
|
|
|
|
2014-01-25 15:17:21 +08:00
|
|
|
HOST_OUT_GEN := $(HOST_OUT)/gen
|
|
|
|
HOST_OUT_COMMON_GEN := $(HOST_COMMON_OUT_ROOT)/gen
|
|
|
|
|
2015-08-15 03:59:50 +08:00
|
|
|
HOST_CROSS_OUT_GEN := $(HOST_CROSS_OUT)/gen
|
|
|
|
|
2014-04-18 01:03:35 +08:00
|
|
|
# Out for HOST_2ND_ARCH
|
|
|
|
HOST_2ND_ARCH_VAR_PREFIX := 2ND_
|
|
|
|
HOST_2ND_ARCH_MODULE_SUFFIX := _32
|
|
|
|
$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj32
|
|
|
|
$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATE_LIBRARIES := $($(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATES)/lib
|
2014-05-21 05:43:51 +08:00
|
|
|
$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES := $(HOST_OUT)/lib
|
2014-04-18 01:03:35 +08:00
|
|
|
$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_EXECUTABLES := $(HOST_OUT_EXECUTABLES)
|
2015-05-05 09:17:52 +08:00
|
|
|
$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_JAVA_LIBRARIES := $(HOST_OUT_JAVA_LIBRARIES)
|
2014-04-18 01:03:35 +08:00
|
|
|
|
2014-06-11 03:04:56 +08:00
|
|
|
# The default host library path.
|
|
|
|
# It always points to the path where we build libraries in the default bitness.
|
2014-08-15 02:03:56 +08:00
|
|
|
ifeq ($(HOST_PREFER_32_BIT),true)
|
|
|
|
HOST_LIBRARY_PATH := $($(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES)
|
|
|
|
else
|
|
|
|
HOST_LIBRARY_PATH := $(HOST_OUT_SHARED_LIBRARIES)
|
|
|
|
endif
|
2014-04-18 01:03:35 +08:00
|
|
|
|
2009-03-04 11:28:42 +08:00
|
|
|
TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj
|
2014-01-14 08:14:20 +08:00
|
|
|
TARGET_OUT_HEADERS := $(TARGET_OUT_INTERMEDIATES)/include
|
2009-03-04 11:28:42 +08:00
|
|
|
TARGET_OUT_INTERMEDIATE_LIBRARIES := $(TARGET_OUT_INTERMEDIATES)/lib
|
|
|
|
TARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj
|
|
|
|
|
2014-01-25 15:17:21 +08:00
|
|
|
TARGET_OUT_GEN := $(PRODUCT_OUT)/gen
|
|
|
|
TARGET_OUT_COMMON_GEN := $(TARGET_COMMON_OUT_ROOT)/gen
|
|
|
|
|
2011-10-28 06:18:39 +08:00
|
|
|
TARGET_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM)
|
2015-09-19 02:54:43 +08:00
|
|
|
ifneq ($(filter address,$(SANITIZE_TARGET)),)
|
2015-06-12 08:32:31 +08:00
|
|
|
target_out_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DATA)
|
|
|
|
else
|
|
|
|
target_out_shared_libraries_base := $(TARGET_OUT)
|
|
|
|
endif
|
|
|
|
|
2014-01-14 08:14:20 +08:00
|
|
|
TARGET_OUT_EXECUTABLES := $(TARGET_OUT)/bin
|
|
|
|
TARGET_OUT_OPTIONAL_EXECUTABLES := $(TARGET_OUT)/xbin
|
2014-07-09 08:07:36 +08:00
|
|
|
ifeq ($(TARGET_IS_64_BIT),true)
|
2014-01-14 08:14:20 +08:00
|
|
|
# /system/lib always contains 32-bit libraries,
|
|
|
|
# and /system/lib64 (if present) always contains 64-bit libraries.
|
2015-06-12 08:32:31 +08:00
|
|
|
TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib64
|
2014-01-14 08:14:20 +08:00
|
|
|
else
|
2015-06-12 08:32:31 +08:00
|
|
|
TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib
|
2014-01-14 08:14:20 +08:00
|
|
|
endif
|
|
|
|
TARGET_OUT_JAVA_LIBRARIES := $(TARGET_OUT)/framework
|
|
|
|
TARGET_OUT_APPS := $(TARGET_OUT)/app
|
2013-05-09 06:49:08 +08:00
|
|
|
TARGET_OUT_APPS_PRIVILEGED := $(TARGET_OUT)/priv-app
|
2009-03-04 11:28:42 +08:00
|
|
|
TARGET_OUT_KEYLAYOUT := $(TARGET_OUT)/usr/keylayout
|
|
|
|
TARGET_OUT_KEYCHARS := $(TARGET_OUT)/usr/keychars
|
|
|
|
TARGET_OUT_ETC := $(TARGET_OUT)/etc
|
2014-01-14 08:14:20 +08:00
|
|
|
TARGET_OUT_NOTICE_FILES := $(TARGET_OUT_INTERMEDIATES)/NOTICE_FILES
|
2010-09-28 08:37:17 +08:00
|
|
|
TARGET_OUT_FAKE := $(PRODUCT_OUT)/fake_packages
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2013-12-28 03:09:36 +08:00
|
|
|
# Out for TARGET_2ND_ARCH
|
2014-06-11 03:04:56 +08:00
|
|
|
TARGET_2ND_ARCH_VAR_PREFIX := $(HOST_2ND_ARCH_VAR_PREFIX)
|
|
|
|
TARGET_2ND_ARCH_MODULE_SUFFIX := $(HOST_2ND_ARCH_MODULE_SUFFIX)
|
2013-12-28 03:09:36 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH)
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATE_LIBRARIES := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES)/lib
|
2015-06-12 08:32:31 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib
|
2014-01-18 08:17:28 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_EXECUTABLES := $(TARGET_OUT_EXECUTABLES)
|
2014-01-25 05:37:07 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS := $(TARGET_OUT_APPS)
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS_PRIVILEGED := $(TARGET_OUT_APPS_PRIVILEGED)
|
2013-12-28 03:09:36 +08:00
|
|
|
|
2011-10-28 06:18:39 +08:00
|
|
|
TARGET_OUT_DATA := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DATA)
|
2014-01-14 08:14:20 +08:00
|
|
|
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
|
2009-03-04 11:28:42 +08:00
|
|
|
TARGET_OUT_DATA_KEYLAYOUT := $(TARGET_OUT_KEYLAYOUT)
|
|
|
|
TARGET_OUT_DATA_KEYCHARS := $(TARGET_OUT_KEYCHARS)
|
|
|
|
TARGET_OUT_DATA_ETC := $(TARGET_OUT_ETC)
|
2014-07-09 08:07:36 +08:00
|
|
|
ifeq ($(TARGET_IS_64_BIT),true)
|
|
|
|
TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest64
|
|
|
|
else
|
2010-07-21 02:08:47 +08:00
|
|
|
TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest
|
2014-07-09 08:07:36 +08:00
|
|
|
endif
|
2012-07-14 04:47:09 +08:00
|
|
|
TARGET_OUT_DATA_FAKE := $(TARGET_OUT_DATA)/fake_packages
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2014-01-24 07:09:04 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_DATA_EXECUTABLES)
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_SHARED_LIBRARIES := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES)
|
2014-01-25 05:37:07 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA_APPS)
|
2014-07-09 08:07:36 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest
|
2014-01-24 07:09:04 +08:00
|
|
|
|
2011-11-05 02:37:01 +08:00
|
|
|
TARGET_OUT_CACHE := $(PRODUCT_OUT)/cache
|
|
|
|
|
2011-10-28 06:18:39 +08:00
|
|
|
TARGET_OUT_VENDOR := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR)
|
2015-09-19 02:54:43 +08:00
|
|
|
ifneq ($(filter address,$(SANITIZE_TARGET)),)
|
2015-07-01 05:02:02 +08:00
|
|
|
target_out_vendor_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DATA)/vendor
|
|
|
|
else
|
|
|
|
target_out_vendor_shared_libraries_base := $(TARGET_OUT_VENDOR)
|
|
|
|
endif
|
|
|
|
|
2014-01-14 08:14:20 +08:00
|
|
|
TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR)/bin
|
|
|
|
TARGET_OUT_VENDOR_OPTIONAL_EXECUTABLES := $(TARGET_OUT_VENDOR)/xbin
|
2014-07-09 08:07:36 +08:00
|
|
|
ifeq ($(TARGET_IS_64_BIT),true)
|
2015-07-01 05:02:02 +08:00
|
|
|
TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib64
|
2014-01-14 08:14:20 +08:00
|
|
|
else
|
2015-07-01 05:02:02 +08:00
|
|
|
TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib
|
2014-01-14 08:14:20 +08:00
|
|
|
endif
|
|
|
|
TARGET_OUT_VENDOR_JAVA_LIBRARIES := $(TARGET_OUT_VENDOR)/framework
|
|
|
|
TARGET_OUT_VENDOR_APPS := $(TARGET_OUT_VENDOR)/app
|
2011-09-14 04:57:26 +08:00
|
|
|
TARGET_OUT_VENDOR_ETC := $(TARGET_OUT_VENDOR)/etc
|
|
|
|
|
2014-01-24 07:09:04 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR_EXECUTABLES)
|
2014-01-16 08:02:16 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(TARGET_OUT_VENDOR)/lib
|
2014-01-25 05:37:07 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS := $(TARGET_OUT_VENDOR_APPS)
|
2014-01-16 08:02:16 +08:00
|
|
|
|
2014-03-12 08:13:27 +08:00
|
|
|
TARGET_OUT_OEM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_OEM)
|
2014-06-27 05:12:35 +08:00
|
|
|
TARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM)/bin
|
Support to configure and build multiple custom images.
Build additional images requested by the product makefile.
This script gives the ability to build multiple additional images and
you can configure what modules/files to include in each image.
1. Define PRODUCT_CUSTOM_IMAGE_MAKEFILES in your product makefile.
PRODUCT_CUSTOM_IMAGE_MAKEFILES is a list of makefiles.
Each makefile configures an image.
For image configuration makefile foo/bar/xyz.mk, the built image
file name
will be xyz.img. So make sure they won't conflict.
2. In each image's configuration makefile, you can define variables:
- CUSTOM_IMAGE_MOUNT_POINT, the mount point, such as "oem", "odm"
etc.
- CUSTOM_IMAGE_PARTITION_SIZE
- CUSTOM_IMAGE_FILE_SYSTEM_TYPE
- CUSTOM_IMAGE_DICT_FILE, a text file defining a dictionary
accepted by BuildImage() in tools/releasetools/build_image.py.
- CUSTOM_IMAGE_MODULES, a list of module names you want to include
in the image; Not only the module itself will be installed to proper
path in the image, you can also piggyback additional files/directories
with the module's LOCAL_PICKUP_FILES.
- CUSTOM_IMAGE_COPY_FILES, a list of "<src>:<dest>" to be copied to
the image. <dest> is relativ to the root of the image.
To build all those images, run "make custom_images".
Bug: 19609718
Change-Id: Ic73587e08503a251be27797c7b00329716051927
(cherry picked from commit 5fcf1094f9cf4d57c2598237f99621f254130d71)
2015-03-13 09:30:39 +08:00
|
|
|
ifeq ($(TARGET_IS_64_BIT),true)
|
2014-06-27 05:12:35 +08:00
|
|
|
TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib64
|
|
|
|
else
|
|
|
|
TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib
|
|
|
|
endif
|
2014-03-12 08:13:27 +08:00
|
|
|
# We don't expect Java libraries in the oem.img.
|
|
|
|
# TARGET_OUT_OEM_JAVA_LIBRARIES:= $(TARGET_OUT_OEM)/framework
|
2014-06-27 05:12:35 +08:00
|
|
|
TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM)/app
|
2014-03-12 08:13:27 +08:00
|
|
|
TARGET_OUT_OEM_ETC := $(TARGET_OUT_OEM)/etc
|
|
|
|
|
2014-06-27 05:12:35 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM_EXECUTABLES)
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM_APPS)
|
|
|
|
|
Support to configure and build multiple custom images.
Build additional images requested by the product makefile.
This script gives the ability to build multiple additional images and
you can configure what modules/files to include in each image.
1. Define PRODUCT_CUSTOM_IMAGE_MAKEFILES in your product makefile.
PRODUCT_CUSTOM_IMAGE_MAKEFILES is a list of makefiles.
Each makefile configures an image.
For image configuration makefile foo/bar/xyz.mk, the built image
file name
will be xyz.img. So make sure they won't conflict.
2. In each image's configuration makefile, you can define variables:
- CUSTOM_IMAGE_MOUNT_POINT, the mount point, such as "oem", "odm"
etc.
- CUSTOM_IMAGE_PARTITION_SIZE
- CUSTOM_IMAGE_FILE_SYSTEM_TYPE
- CUSTOM_IMAGE_DICT_FILE, a text file defining a dictionary
accepted by BuildImage() in tools/releasetools/build_image.py.
- CUSTOM_IMAGE_MODULES, a list of module names you want to include
in the image; Not only the module itself will be installed to proper
path in the image, you can also piggyback additional files/directories
with the module's LOCAL_PICKUP_FILES.
- CUSTOM_IMAGE_COPY_FILES, a list of "<src>:<dest>" to be copied to
the image. <dest> is relativ to the root of the image.
To build all those images, run "make custom_images".
Bug: 19609718
Change-Id: Ic73587e08503a251be27797c7b00329716051927
(cherry picked from commit 5fcf1094f9cf4d57c2598237f99621f254130d71)
2015-03-13 09:30:39 +08:00
|
|
|
TARGET_OUT_ODM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ODM)
|
|
|
|
TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM)/bin
|
|
|
|
ifeq ($(TARGET_IS_64_BIT),true)
|
|
|
|
TARGET_OUT_ODM_SHARED_LIBRARIES := $(TARGET_OUT_ODM)/lib64
|
|
|
|
else
|
|
|
|
TARGET_OUT_ODM_SHARED_LIBRARIES := $(TARGET_OUT_ODM)/lib
|
|
|
|
endif
|
|
|
|
TARGET_OUT_ODM_APPS := $(TARGET_OUT_ODM)/app
|
|
|
|
TARGET_OUT_ODM_ETC := $(TARGET_OUT_ODM)/etc
|
|
|
|
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM_EXECUTABLES)
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(TARGET_OUT_ODM)/lib
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS := $(TARGET_OUT_ODM_APPS)
|
|
|
|
|
2015-09-25 09:12:33 +08:00
|
|
|
TARGET_OUT_BREAKPAD := $(PRODUCT_OUT)/breakpad
|
|
|
|
|
2009-03-04 11:28:42 +08:00
|
|
|
TARGET_OUT_UNSTRIPPED := $(PRODUCT_OUT)/symbols
|
|
|
|
TARGET_OUT_EXECUTABLES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/bin
|
|
|
|
TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/lib
|
2014-06-21 04:33:36 +08:00
|
|
|
TARGET_OUT_VENDOR_SHARED_LIBRARIES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/$(TARGET_COPY_OUT_VENDOR)/lib
|
2009-03-04 11:28:42 +08:00
|
|
|
TARGET_ROOT_OUT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)
|
|
|
|
TARGET_ROOT_OUT_SBIN_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/sbin
|
|
|
|
TARGET_ROOT_OUT_BIN_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/bin
|
|
|
|
|
2011-10-28 06:18:39 +08:00
|
|
|
TARGET_ROOT_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ROOT)
|
2009-03-04 11:28:42 +08:00
|
|
|
TARGET_ROOT_OUT_BIN := $(TARGET_ROOT_OUT)/bin
|
|
|
|
TARGET_ROOT_OUT_SBIN := $(TARGET_ROOT_OUT)/sbin
|
|
|
|
TARGET_ROOT_OUT_ETC := $(TARGET_ROOT_OUT)/etc
|
|
|
|
TARGET_ROOT_OUT_USR := $(TARGET_ROOT_OUT)/usr
|
|
|
|
|
2011-10-28 06:18:39 +08:00
|
|
|
TARGET_RECOVERY_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_RECOVERY)
|
2009-03-04 11:28:42 +08:00
|
|
|
TARGET_RECOVERY_ROOT_OUT := $(TARGET_RECOVERY_OUT)/root
|
|
|
|
|
|
|
|
TARGET_SYSLOADER_OUT := $(PRODUCT_OUT)/sysloader
|
|
|
|
TARGET_SYSLOADER_ROOT_OUT := $(TARGET_SYSLOADER_OUT)/root
|
|
|
|
TARGET_SYSLOADER_SYSTEM_OUT := $(TARGET_SYSLOADER_OUT)/root/system
|
|
|
|
|
|
|
|
TARGET_INSTALLER_OUT := $(PRODUCT_OUT)/installer
|
|
|
|
TARGET_INSTALLER_DATA_OUT := $(TARGET_INSTALLER_OUT)/data
|
|
|
|
TARGET_INSTALLER_ROOT_OUT := $(TARGET_INSTALLER_OUT)/root
|
|
|
|
TARGET_INSTALLER_SYSTEM_OUT := $(TARGET_INSTALLER_OUT)/root/system
|
|
|
|
|
2010-09-25 09:09:04 +08:00
|
|
|
COMMON_MODULE_CLASSES := TARGET-NOTICE_FILES HOST-NOTICE_FILES HOST-JAVA_LIBRARIES
|
2009-03-04 11:28:42 +08:00
|
|
|
|
|
|
|
ifeq (,$(strip $(DIST_DIR)))
|
|
|
|
DIST_DIR := $(OUT_DIR)/dist
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(PRINT_BUILD_CONFIG),)
|
|
|
|
PRINT_BUILD_CONFIG := true
|
|
|
|
endif
|
2016-01-20 03:43:44 +08:00
|
|
|
|
|
|
|
ifeq ($(USE_CLANG_PLATFORM_BUILD),)
|
|
|
|
USE_CLANG_PLATFORM_BUILD := true
|
|
|
|
endif
|