Commit dcc08f07 authored by The Android Open Source Project's avatar The Android Open Source Project
Browse files

Code drop from //branches/cupcake/...@124589

parent d3aa4000
......@@ -53,7 +53,7 @@ endif
# Choose a product to build for. Look in the products directory for ones
# that work.
ifndef TARGET_PRODUCT
#TARGET_PRODUCT:=sooner
#TARGET_PRODUCT:=generic
endif
# Choose additional targets to always install, even when building
......@@ -74,8 +74,14 @@ endif
# This mechanism does not currently support values containing spaces.
#ADDITIONAL_BUILD_PROPERTIES +=
# If you want to reduce the system.img size by several meg, and are willing to
# lose access to CJK (and other) character sets, define NO_FALLBACK_FONT:=true
ifndef NO_FALLBACK_FONT
#NO_FALLBACK_FONT:=true
endif
# when the build system changes such that this file must be updated, this
# variable will be changed. After you have modified this file with the new
# changes (see buildspec.mk.default), update this to the new value from
# buildspec.mk.default.
BUILD_ENV_SEQUENCE_NUMBER := 8
BUILD_ENV_SEQUENCE_NUMBER := 9
......@@ -18,7 +18,7 @@
# WHEN DOING SO, DELETE ANY "add-clean-step" ENTRIES THAT HAVE PILED UP.
# **********************************************************************
#
INTERNAL_CLEAN_BUILD_VERSION := 1
INTERNAL_CLEAN_BUILD_VERSION := 2
#
# ***********************************************************************
# Do not touch INTERNAL_CLEAN_BUILD_VERSION if you've added a clean step!
......
# Put some miscellaneous rules here
ifeq (,$(REQUESTED_PRODUCT))
REQUESTED_PRODUCT := $(TARGET_PRODUCT)
endif
# Pick a reasonable string to use to identify files.
ifneq "" "$(filter eng.%,$(BUILD_NUMBER))"
# BUILD_NUMBER has a timestamp in it, which means that
......@@ -57,14 +53,6 @@ ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_BUILD_PROP_TARGET)
ADDITIONAL_BUILD_PROPERTIES := \
$(call collapse-pairs, $(ADDITIONAL_BUILD_PROPERTIES))
build_target := $(strip $(firstword \
$(filter user userdebug sdk tests all, $(MAKECMDGOALS))))
ifeq ($(build_target),)
# eng, droid, or nothing
build_target := eng
endif
$(INSTALLED_BUILD_PROP_TARGET): PRIVATE_BUILD_TARGET := $(build_target)
# A list of arbitrary tags describing the build configuration.
# Force ":=" so we can use +=
BUILD_VERSION_TAGS := $(BUILD_VERSION_TAGS)
......@@ -80,12 +68,12 @@ endif
BUILD_VERSION_TAGS := $(subst $(space),$(comma),$(sort $(BUILD_VERSION_TAGS)))
# A human-readable string that descibes this build in detail.
build_desc := $(REQUESTED_PRODUCT)-$(build_target) $(PLATFORM_VERSION) $(BUILD_ID) $(BUILD_NUMBER) $(BUILD_VERSION_TAGS)
build_desc := $(TARGET_PRODUCT)-$(TARGET_BUILD_VARIANT) $(PLATFORM_VERSION) $(BUILD_ID) $(BUILD_NUMBER) $(BUILD_VERSION_TAGS)
$(INSTALLED_BUILD_PROP_TARGET): PRIVATE_BUILD_DESC := $(build_desc)
# The string used to uniquely identify this build; used by the OTA server.
ifeq (,$(strip $(BUILD_FINGERPRINT)))
BUILD_FINGERPRINT := $(PRODUCT_BRAND)/$(REQUESTED_PRODUCT)/$(TARGET_PRODUCT)/$(TARGET_BOOTLOADER_BOARD_NAME):$(PLATFORM_VERSION)/$(BUILD_ID)/$(BUILD_NUMBER):$(build_target)/$(BUILD_VERSION_TAGS)
BUILD_FINGERPRINT := $(PRODUCT_BRAND)/$(TARGET_PRODUCT)/$(TARGET_DEVICE)/$(TARGET_BOOTLOADER_BOARD_NAME):$(PLATFORM_VERSION)/$(BUILD_ID)/$(BUILD_NUMBER):$(TARGET_BUILD_VARIANT)/$(BUILD_VERSION_TAGS)
endif
# Selects the first locale in the list given as the argument,
......@@ -108,9 +96,9 @@ BUILDINFO_SH := build/tools/buildinfo.sh
$(INSTALLED_BUILD_PROP_TARGET): $(BUILDINFO_SH) $(INTERNAL_BUILD_ID_MAKEFILE)
@echo Target buildinfo: $@
@mkdir -p $(dir $@)
$(hide) TARGET_BUILD_TYPE="$(PRIVATE_BUILD_TARGET)" \
TARGET_PRODUCT="$(TARGET_PRODUCT)" \
PRODUCT_NAME="$(REQUESTED_PRODUCT)" \
$(hide) TARGET_BUILD_TYPE="$(TARGET_BUILD_VARIANT)" \
TARGET_DEVICE="$(TARGET_DEVICE)" \
PRODUCT_NAME="$(TARGET_PRODUCT)" \
PRODUCT_BRAND="$(PRODUCT_BRAND)" \
PRODUCT_DEFAULT_LANGUAGE="$(call default-locale-language,$(PRODUCT_LOCALES))" \
PRODUCT_DEFAULT_REGION="$(call default-locale-region,$(PRODUCT_LOCALES))" \
......@@ -125,8 +113,8 @@ $(INSTALLED_BUILD_PROP_TARGET): $(BUILDINFO_SH) $(INTERNAL_BUILD_ID_MAKEFILE)
TARGET_BOOTLOADER_BOARD_NAME="$(TARGET_BOOTLOADER_BOARD_NAME)" \
BUILD_FINGERPRINT="$(BUILD_FINGERPRINT)" \
bash $(BUILDINFO_SH) > $@
$(hide) if [ -f $(TARGET_PRODUCT_DIR)/system.prop ]; then \
cat $(TARGET_PRODUCT_DIR)/system.prop >> $@; \
$(hide) if [ -f $(TARGET_DEVICE_DIR)/system.prop ]; then \
cat $(TARGET_DEVICE_DIR)/system.prop >> $@; \
fi
$(if $(ADDITIONAL_BUILD_PROPERTIES), \
$(hide) echo >> $@; \
......@@ -137,7 +125,6 @@ $(INSTALLED_BUILD_PROP_TARGET): $(BUILDINFO_SH) $(INTERNAL_BUILD_ID_MAKEFILE)
echo "$(line)" >> $@;)
build_desc :=
build_target :=
# -----------------------------------------------------------------
# sdk-build.prop
......@@ -175,14 +162,14 @@ $(PACKAGE_STATS_FILE): $(PACKAGES_TO_STAT)
@echo Package stats: $@
@mkdir -p $(dir $@)
$(hide) rm -f $@
$(hide) tools/dump-package-stats $^ > $@
$(hide) build/tools/dump-package-stats $^ > $@
.PHONY: package-stats
package-stats: $(PACKAGE_STATS_FILE)
# -----------------------------------------------------------------
# Cert-to-package mapping. Used by the post-build signing tools.
name := $(REQUESTED_PRODUCT)
name := $(TARGET_PRODUCT)
ifeq ($(TARGET_BUILD_TYPE),debug)
name := $(name)_debug
endif
......@@ -275,10 +262,22 @@ ifdef BOARD_KERNEL_CMDLINE
endif
INSTALLED_BOOTIMAGE_TARGET := $(PRODUCT_OUT)/boot.img
ifeq ($(TARGET_BOOTIMAGE_USE_EXT2),true)
tmp_dir_for_image := $(call intermediates-dir-for,EXECUTABLES,boot_img)/bootimg
INTERNAL_BOOTIMAGE_ARGS += --tmpdir $(tmp_dir_for_image)
INTERNAL_BOOTIMAGE_ARGS += --genext2fs $(MKEXT2IMG)
$(INSTALLED_BOOTIMAGE_TARGET): $(MKEXT2IMG) $(INTERNAL_BOOTIMAGE_FILES)
$(call pretty,"Target boot image: $@")
$(hide) $(MKEXT2BOOTIMG) $(INTERNAL_BOOTIMAGE_ARGS) --output $@
else # TARGET_BOOTIMAGE_USE_EXT2 != true
$(INSTALLED_BOOTIMAGE_TARGET): $(MKBOOTIMG) $(INTERNAL_BOOTIMAGE_FILES)
$(call pretty,"Target boot image: $@")
$(hide) $(MKBOOTIMG) $(INTERNAL_BOOTIMAGE_ARGS) --output $@
$(hide) $(call assert-max-file-size,$@,$(BOARD_BOOTIMAGE_MAX_SIZE))
endif # TARGET_BOOTIMAGE_USE_EXT2
else # TARGET_NO_KERNEL
# HACK: The top-level targets depend on the bootimage. Not all targets
......@@ -315,7 +314,7 @@ endif
# it changes, they'll run again.
#
# TODO: We could clean this up so that we just record the locations of the
# original notice files instead of making rules to copy them somwehere.
# original notice files instead of making rules to copy them somwehere.
# Then we could traverse that without quite as much bash drama.
define combine-notice-files
$(1) $(2): PRIVATE_MESSAGE := $(3)
......@@ -403,7 +402,7 @@ target_notice_file_html := $(TARGET_OUT_INTERMEDIATES)/NOTICE.html
tools_notice_file_txt := $(HOST_OUT_INTERMEDIATES)/NOTICE.txt
tools_notice_file_html := $(HOST_OUT_INTERMEDIATES)/NOTICE.html
kernel_notice_file := $(TARGET_OUT_NOTICE_FILES)/src/kernel.txt
kernel_notice_file := $(TARGET_OUT_NOTICE_FILES)/src/kernel.txt
$(eval $(call combine-notice-files, \
$(target_notice_file_txt), \
......@@ -444,6 +443,13 @@ $(kernel_notice_file): \
# Targets for user images
# #################################################################
ifeq ($(TARGET_USERIMAGES_USE_EXT2),true)
include external/genext2fs/Config.mk
INTERNAL_MKUSERFS := $(MKEXT2IMG)
else
INTERNAL_MKUSERFS := $(MKYAFFS2)
endif
# -----------------------------------------------------------------
# system yaffs image
#
......@@ -460,14 +466,26 @@ INTERNAL_SYSTEMIMAGE_FILES := $(filter $(TARGET_OUT)/%, \
$(ALL_GENERATED_SOURCES) \
$(ALL_DEFAULT_INSTALLED_MODULES))
ifeq ($(TARGET_USERIMAGES_USE_EXT2),true)
## generate an ext2 image
# $(1): output file
define build-systemimage-target
@echo "Target system fs image: $(1)"
$(call build-userimage-ext2-target,$(TARGET_OUT),$(1),system,)
endef
else # TARGET_USERIMAGES_USE_EXT2 != true
## generate a yaffs2 image
# $(1): output file
define build-systemimage-target
@echo "Target system fs image: $(1)"
@mkdir -p $(dir $(1))
$(hide) $(MKYAFFS2) -f $(TARGET_OUT) $(1)
endef
endif # TARGET_USERIMAGES_USE_EXT2
$(BUILT_SYSTEMIMAGE_UNOPT): $(INTERNAL_SYSTEMIMAGE_FILES) | $(MKYAFFS2)
$(BUILT_SYSTEMIMAGE_UNOPT): $(INTERNAL_SYSTEMIMAGE_FILES) $(INTERNAL_MKUSERFS)
$(call build-systemimage-target,$@)
# The installed image, which may be optimized or unoptimized.
......@@ -481,7 +499,7 @@ ifdef WITH_DEXPREOPT
endif
ifdef with_dexpreopt
# This file will set BUILT_SYSTEMIMAGE and SYSTEMIMAGE_SOURCE_DIR
include tools/dexpreopt/Config.mk
include build/tools/dexpreopt/Config.mk
else
BUILT_SYSTEMIMAGE := $(BUILT_SYSTEMIMAGE_UNOPT)
SYSTEMIMAGE_SOURCE_DIR := $(TARGET_OUT)
......@@ -492,34 +510,91 @@ $(INSTALLED_SYSTEMIMAGE): $(BUILT_SYSTEMIMAGE) | $(ACP)
$(copy-file-to-target)
$(hide) $(call assert-max-file-size,$@,$(BOARD_SYSTEMIMAGE_MAX_SIZE))
systemimage: $(INSTALLED_SYSTEMIMAGE) report_config
systemimage: $(INSTALLED_SYSTEMIMAGE)
.PHONY: systemimage-nodeps snod
systemimage-nodeps snod: $(filter-out systemimage-nodeps snod,$(MAKECMDGOALS)) \
report_config | $(MKYAFFS2)
| $(INTERNAL_MKUSERFS)
@echo "make $@: ignoring dependencies"
$(call build-systemimage-target,$(INSTALLED_SYSTEMIMAGE))
$(hide) $(call assert-max-file-size,$(INSTALLED_SYSTEMIMAGE),$(BOARD_SYSTEMIMAGE_MAX_SIZE))
#######
## system tarball
define build-systemtarball-target
$(call pretty,"Target system fs tarball: $(INSTALLED_SYSTEMTARBALL_TARGET)")
$(MKTARBALL) $(FS_GET_STATS) \
$(PRODUCT_OUT) system $(PRIVATE_SYSTEM_TAR) \
$(INSTALLED_SYSTEMTARBALL_TARGET)
endef
system_tar := $(PRODUCT_OUT)/system.tar
INSTALLED_SYSTEMTARBALL_TARGET := $(system_tar).bz2
$(INSTALLED_SYSTEMTARBALL_TARGET): PRIVATE_SYSTEM_TAR := $(system_tar)
$(INSTALLED_SYSTEMTARBALL_TARGET): $(FS_GET_STATS) $(INTERNAL_SYSTEMIMAGE_FILES)
$(build-systemtarball-target)
.PHONY: systemtarball-nodeps
systemtarball-nodeps: $(FS_GET_STATS) \
$(filter-out systemtarball-nodeps stnod,$(MAKECMDGOALS))
$(build-systemtarball-target)
.PHONY: stnod
stnod: systemtarball-nodeps
# -----------------------------------------------------------------
# data partition image
INTERNAL_USERDATAIMAGE_FILES := \
$(filter $(TARGET_OUT_DATA)/%,$(ALL_DEFAULT_INSTALLED_MODULES))
ifeq ($(TARGET_USERIMAGES_USE_EXT2),true)
## Generate an ext2 image
define build-userdataimage-target
$(call pretty,"Target userdata fs image: $(INSTALLED_USERDATAIMAGE_TARGET)")
$(call build-userimage-ext2-target,$(TARGET_OUT_DATA),$(INSTALLED_USERDATAIMAGE_TARGET),userdata,)
$(hide) $(call assert-max-file-size,$(INSTALLED_USERDATAIMAGE_TARGET),$(BOARD_USERDATAIMAGE_MAX_SIZE))
endef
else # TARGET_USERIMAGES_USE_EXT2 != true
## Generate a yaffs2 image
define build-userdataimage-target
$(call pretty,"Target userdata fs image: $(INSTALLED_USERDATAIMAGE_TARGET)")
$(hide) $(MKYAFFS2) -f $(TARGET_OUT_DATA) $(INSTALLED_USERDATAIMAGE_TARGET)
$(hide) $(call assert-max-file-size,$(INSTALLED_USERDATAIMAGE_TARGET),$(BOARD_USERDATAIMAGE_MAX_SIZE))
endef
endif # TARGET_USERIMAGES_USE_EXT2
INSTALLED_USERDATAIMAGE_TARGET := $(PRODUCT_OUT)/userdata.img
$(INSTALLED_USERDATAIMAGE_TARGET): $(MKYAFFS2) $(INTERNAL_USERDATAIMAGE_FILES)
$(INSTALLED_USERDATAIMAGE_TARGET): $(INTERNAL_MKUSERFS) \
$(INTERNAL_USERDATAIMAGE_FILES)
$(build-userdataimage-target)
.PHONY: userdataimage-nodeps
userdataimage-nodeps: $(MKYAFFS2)
userdataimage-nodeps: $(INTERNAL_MKUSERFS)
$(build-userdataimage-target)
#######
## data partition tarball
define build-userdatatarball-target
$(call pretty,"Target userdata fs tarball: " \
"$(INSTALLED_USERDATATARBALL_TARGET)")
$(MKTARBALL) $(FS_GET_STATS) \
$(PRODUCT_OUT) data $(PRIVATE_USERDATA_TAR) \
$(INSTALLED_USERDATATARBALL_TARGET)
endef
userdata_tar := $(PRODUCT_OUT)/userdata.tar
INSTALLED_USERDATATARBALL_TARGET := $(userdata_tar).bz2
$(INSTALLED_USERDATATARBALL_TARGET): PRIVATE_USERDATA_TAR := $(userdata_tar)
$(INSTALLED_USERDATATARBALL_TARGET): $(FS_GET_STATS) $(INTERNAL_USERDATAIMAGE_FILES)
$(build-userdatatarball-target)
.PHONY: userdatatarball-nodeps
userdatatarball-nodeps: $(FS_GET_STATS)
$(build-userdatatarball-target)
# If neither TARGET_NO_KERNEL nor TARGET_NO_RECOVERY are true
ifeq (,$(filter true, $(TARGET_NO_KERNEL) $(TARGET_NO_RECOVERY)))
......@@ -578,9 +653,15 @@ endif
.PHONY: recoveryimage
recoveryimage: $(INSTALLED_RECOVERYIMAGE_TARGET)
# -----------------------------------------------------------------
# bring in the installer image generation defines if necessary
ifeq ($(TARGET_USE_DISKINSTALLER),true)
include bootable/diskinstaller/config.mk
endif
# -----------------------------------------------------------------
# OTA update package
name := $(REQUESTED_PRODUCT)
name := $(TARGET_PRODUCT)
ifeq ($(TARGET_BUILD_TYPE),debug)
name := $(name)_debug
endif
......@@ -588,7 +669,13 @@ name := $(name)-ota-$(FILE_NAME_TAG)
INTERNAL_OTA_PACKAGE_TARGET := $(PRODUCT_OUT)/$(name).zip
INTERNAL_OTA_INTERMEDIATES_DIR := $(call intermediates-dir-for,PACKAGING,ota)
# If neither TARGET_NO_KERNEL nor TARGET_NO_RECOVERY are true
ifeq (,$(filter true, $(TARGET_NO_KERNEL) $(TARGET_NO_RECOVERY)))
INTERNAL_OTA_RECOVERYIMAGE_TARGET := $(INTERNAL_OTA_INTERMEDIATES_DIR)/system/recovery.img
else
INTERNAL_OTA_RECOVERYIMAGE_TARGET :=
endif
INTERNAL_OTA_SCRIPT_TARGET := $(INTERNAL_OTA_INTERMEDIATES_DIR)/META-INF/com/google/android/update-script
# Sign OTA packages with the test key by default.
......@@ -635,16 +722,18 @@ $(INTERNAL_OTA_SCRIPT_TARGET): \
@mkdir -p $(dir $@)
@rm -rf $@
@echo "Update script: $@"
$(hide) TARGET_PRODUCT=$(TARGET_PRODUCT) \
$(hide) TARGET_DEVICE=$(TARGET_DEVICE) \
$< $(SYSTEMIMAGE_SOURCE_DIR) \
$(INSTALLED_ANDROID_INFO_TXT_TARGET) \
> $@
ifneq (,$(INTERNAL_OTA_RECOVERYIMAGE_TARGET))
# This copy is so recovery.img can be in /system within the OTA package.
# That way it gets installed into the system image, which in turn installs it.
$(INTERNAL_OTA_RECOVERYIMAGE_TARGET): $(INSTALLED_RECOVERYIMAGE_TARGET)
$(INTERNAL_OTA_RECOVERYIMAGE_TARGET): $(INSTALLED_RECOVERYIMAGE_TARGET) | $(ACP)
@mkdir -p $(dir $@)
$(hide) $(ACP) $< $@
endif
.PHONY: otapackage
otapackage: $(INTERNAL_OTA_PACKAGE_TARGET)
......@@ -667,12 +756,12 @@ $(TARGET_OUT_ETC)/security/otacerts.zip: $(OTA_PUBLIC_KEYS)
$(hide) mkdir -p $(dir $@)
zip -qj $@ $(OTA_PUBLIC_KEYS)
# The device does not support JKS, see bug 857840.
# $(hide) for f in $(OTA_PUBLIC_KEYS); do \
# echo "keytool: $@ <= $$f" && \
# keytool -keystore $@ -storepass $(notdir $@) -noprompt \
# -import -file $$f -alias $(notdir $$f) || exit 1; \
# done
# The device does not support JKS.
# $(hide) for f in $(OTA_PUBLIC_KEYS); do \
# echo "keytool: $@ <= $$f" && \
# keytool -keystore $@ -storepass $(notdir $@) -noprompt \
# -import -file $$f -alias $(notdir $$f) || exit 1; \
# done
ifdef RECOVERY_INSTALL_OTA_KEYS_INC
# Generate a C-includable file containing the keys.
......@@ -694,7 +783,7 @@ endif
# This zip can be used to create an OTA package or filesystem image
# as a post-build step.
#
name := $(REQUESTED_PRODUCT)
name := $(TARGET_PRODUCT)
ifeq ($(TARGET_BUILD_TYPE),debug)
name := $(name)_debug
endif
......@@ -736,7 +825,9 @@ $(BUILT_TARGET_FILES_PACKAGE): \
$(hide) mkdir -p $(zip_root)/RECOVERY
$(hide) $(call package_files-copy-root, \
$(TARGET_RECOVERY_ROOT_OUT),$(zip_root)/RECOVERY/RAMDISK)
ifdef INSTALLED_KERNEL_TARGET
$(hide) $(ACP) $(INSTALLED_KERNEL_TARGET) $(zip_root)/RECOVERY/kernel
endif
ifdef INSTALLED_2NDBOOTLOADER_TARGET
$(hide) $(ACP) \
$(INSTALLED_2NDBOOTLOADER_TARGET) $(zip_root)/RECOVERY/second
......@@ -748,7 +839,9 @@ endif
$(hide) mkdir -p $(zip_root)/BOOT
$(hide) $(call package_files-copy-root, \
$(TARGET_ROOT_OUT),$(zip_root)/BOOT/RAMDISK)
ifdef INSTALLED_KERNEL_TARGET
$(hide) $(ACP) $(INSTALLED_KERNEL_TARGET) $(zip_root)/BOOT/kernel
endif
ifdef INSTALLED_2NDBOOTLOADER_TARGET
$(hide) $(ACP) \
$(INSTALLED_2NDBOOTLOADER_TARGET) $(zip_root)/BOOT/second
......@@ -786,7 +879,7 @@ target-files-package: $(BUILT_TARGET_FILES_PACKAGE)
# This is very similar to BUILT_TARGET_FILES_PACKAGE, but we
# only grab SYSTEM and DATA, and it's called "*-tests-*.zip".
#
name := $(REQUESTED_PRODUCT)
name := $(TARGET_PRODUCT)
ifeq ($(TARGET_BUILD_TYPE),debug)
name := $(name)_debug
endif
......@@ -826,7 +919,7 @@ tests-zip-package: $(BUILT_TESTS_ZIP_PACKAGE)
# A zip of the symbols directory. Keep the full paths to make it
# more obvious where these files came from.
#
name := $(REQUESTED_PRODUCT)
name := $(TARGET_PRODUCT)
ifeq ($(TARGET_BUILD_TYPE),debug)
name := $(name)_debug
endif
......@@ -843,7 +936,7 @@ $(SYMBOLS_ZIP): $(INSTALLED_SYSTEMIMAGE) $(INSTALLED_BOOTIMAGE_TARGET)
# A zip of the Android Apps. Not keeping full path so that we don't
# include product names when distributing
#
name := $(REQUESTED_PRODUCT)
name := $(TARGET_PRODUCT)
ifeq ($(TARGET_BUILD_TYPE),debug)
name := $(name)_debug
endif
......@@ -875,7 +968,7 @@ INTERNAL_UPDATE_PACKAGE_FILES += \
ifneq ($(strip $(INTERNAL_UPDATE_PACKAGE_FILES)),)
name := $(REQUESTED_PRODUCT)
name := $(TARGET_PRODUCT)
ifeq ($(TARGET_BUILD_TYPE),debug)
name := $(name)_debug
endif
......@@ -898,12 +991,12 @@ ifneq ($(TARGET_SIMULATOR),true)
INTERNAL_EMULATOR_PACKAGE_FILES += \
$(HOST_OUT_EXECUTABLES)/emulator$(HOST_EXECUTABLE_SUFFIX) \
prebuilt/android-arm/kernel-qemu \
prebuilt/android-arm/kernel/kernel-qemu \
$(INSTALLED_RAMDISK_TARGET) \
$(INSTALLED_SYSTEMIMAGE) \
$(INSTALLED_USERDATAIMAGE_TARGET)
name := $(REQUESTED_PRODUCT)-emulator-$(FILE_NAME_TAG)
name := $(TARGET_PRODUCT)-emulator-$(FILE_NAME_TAG)
INTERNAL_EMULATOR_PACKAGE_TARGET := $(PRODUCT_OUT)/$(name).zip
......@@ -917,7 +1010,7 @@ endif
# The pdk package (Platform Development Kit)
ifneq (,$(filter pdk,$(MAKECMDGOALS)))
include pdk/Pdk.mk
include development/pdk/Pdk.mk
endif
# -----------------------------------------------------------------
......@@ -972,7 +1065,7 @@ sdk_atree_files := \
deps := \
$(target_notice_file_txt) \
$(tools_notice_file_txt) \
$(OUT_DOCS)/framework-timestamp \
$(OUT_DOCS)/offline-sdk-timestamp \
$(INTERNAL_UPDATE_PACKAGE_TARGET) \
$(INSTALLED_SDK_BUILD_PROP_TARGET) \
$(ATREE_FILES) \
......@@ -1009,10 +1102,10 @@ $(INTERNAL_SDK_TARGET): $(deps)
-I $(PRODUCT_OUT) \
-I $(HOST_OUT) \
-I $(TARGET_COMMON_OUT_ROOT) \
-v "PLATFORM_NAME=android-$(PLATFORM_VERSION)" \
-o $(PRIVATE_DIR) && \
mkdir -p $(PRIVATE_DIR)/tools/lib/images/ && \
cp -f $(target_notice_file_txt) \
$(PRIVATE_DIR)/tools/lib/images/NOTICE.txt && \
$(PRIVATE_DIR)/platforms/android-$(PLATFORM_VERSION)/images/NOTICE.txt && \
cp -f $(tools_notice_file_txt) $(PRIVATE_DIR)/tools/NOTICE.txt && \
HOST_OUT_EXECUTABLES=$(HOST_OUT_EXECUTABLES) HOST_OS=$(HOST_OS) \
development/tools/scripts/sdk_clean.sh $(PRIVATE_DIR) && \
......@@ -1041,5 +1134,3 @@ $(INTERNAL_FINDBUGS_HTML_TARGET): $(INTERNAL_FINDBUGS_XML_TARGET)
# -----------------------------------------------------------------
# These are some additional build tasks that need to be run.
include $(sort $(wildcard $(BUILD_SYSTEM)/tasks/*.mk))
This diff is collapsed.
This diff is collapsed.
......@@ -8,10 +8,11 @@ To make these errors go away, you have two choices:
2) You can update current.xml by executing the following commands:
p4 edit config/api/current.xml
p4 edit frameworks/base/api/current.xml
make update-api
To check in the revised current.xml, you will need OWNERS approval.
******************************
......@@ -124,10 +124,15 @@ intermediates.COMMON := $(call local-intermediates-dir,COMMON)
###########################################################
# Pick a name for the intermediate and final targets
###########################################################
LOCAL_INSTALLED_MODULE_STEM := $(LOCAL_MODULE)$(LOCAL_MODULE_SUFFIX)
LOCAL_BUILT_MODULE_STEM:= $(strip $(LOCAL_BUILT_MODULE_STEM))
LOCAL_MODULE_STEM := $(strip $(LOCAL_MODULE_STEM))
ifeq ($(LOCAL_MODULE_STEM),)
LOCAL_MODULE_STEM := $(LOCAL_MODULE)
endif
LOCAL_INSTALLED_MODULE_STEM := $(LOCAL_MODULE_STEM)$(LOCAL_MODULE_SUFFIX)
LOCAL_BUILT_MODULE_STEM := $(strip $(LOCAL_BUILT_MODULE_STEM))
ifeq ($(LOCAL_BUILT_MODULE_STEM),)
LOCAL_BUILT_MODULE_STEM:= $(LOCAL_INSTALLED_MODULE_STEM)
LOCAL_BUILT_MODULE_STEM := $(LOCAL_INSTALLED_MODULE_STEM)
endif
# OVERRIDE_BUILT_MODULE_PATH is only allowed to be used by the
......
......@@ -34,9 +34,11 @@ $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CPP_EXTENSION := $(LOCAL_CPP_EXTENSION)
# Certain modules like libdl have to have symbols resolved at runtime and blow
# up if --no-undefined is passed to the linker.
ifeq ($(strip $(LOCAL_NO_DEFAULT_COMPILER_FLAGS)),)
ifeq ($(strip $(LOCAL_ALLOW_UNDEFINED_SYMBOLS)),)
LOCAL_LDFLAGS := $(LOCAL_LDFLAGS) $($(my_prefix)NO_UNDEFINED_LDFLAGS)
endif
endif
###########################################################
## Define arm-vs-thumb-mode flags.
......
......@@ -23,4 +23,4 @@
# (like "TC1-RC5"). It must be a single word, and is
# capitalized by convention.
#
BUILD_ID := TC3
BUILD_ID := MAIN
......@@ -4,6 +4,7 @@
LOCAL_MODULE:=
LOCAL_MODULE_PATH:=
LOCAL_MODULE_STEM:=
LOCAL_BUILT_MODULE:=
LOCAL_BUILT_MODULE_STEM:=
OVERRIDE_BUILT_MODULE_PATH:=
......@@ -74,6 +75,7 @@ LOCAL_JAR_MANIFEST:=
LOCAL_INSTRUMENTATION_FOR:=
LOCAL_INSTRUMENTATION_FOR_PACKAGE_NAME:=
LOCAL_AIDL_INCLUDES:=
LOCAL_JARJAR_RULES:=
LOCAL_ADDITIONAL_JAVA_DIR:=
LOCAL_ALLOW_UNDEFINED_SYMBOLS:=
LOCAL_DX_FLAGS:=
......
......@@ -9,7 +9,7 @@
# Whatever compiler is on this system.
ifeq ($(HOST_OS), windows)
COMMON_JAVAC := prebuilt/windows/host/bin/javawrap.exe -J-Xmx256m \
COMMON_JAVAC := development/host/windows/prebuilt/javawrap.exe -J-Xmx256m \
-target 1.5 -Xmaxerrs 9999999
else
COMMON_JAVAC := javac -J-Xmx256m -target 1.5 -Xmaxerrs 9999999
......
......@@ -7,13 +7,6 @@ $(combo_target)CC := $(CC)
$(combo_target)CXX := $(CXX)
$(combo_target)AR := $(AR)
$(combo_target)GLOBAL_CFLAGS += -fPIC -m32
$(combo_target)GLOBAL_CFLAGS += \
-include $(call select-android-config-h,linux-x86)
$(combo_target)GLOBAL_LDFLAGS += -m32
$(combo_target)NO_UNDEFINED_LDFLAGS := -Wl,--no-undefined
ifeq ($(combo_target),HOST_)
# $(1): The file to check
define get-file-size
......@@ -23,5 +16,23 @@ endef
# Which gcc to use to build qemu, which doesn't work right when
# built with 4.2.1 or later.
GCCQEMU := prebuilt/linux-x86/toolchain/i686-linux-gnu-3.4.6/bin/gcc
endif # _HOST
# On the sim, we build the "host" tools in 64 bit iff the compiler
# does it for us automatically. In other words, that means on 64 bit
# system, they're 64 bit and on 32 bit systems, they're 32 bits. In
# all other cases, we build 32 bit, since this is what we release.
ifneq ($(combo_target)$(TARGET_SIMULATOR),HOST_true)
$(combo_target)GLOBAL_CFLAGS := $($(combo_target)GLOBAL_CFLAGS) -m32
$(combo_target)GLOBAL_LDFLAGS := $($(combo_target)GLOBAL_LDFLAGS) -m32
endif
$(combo_target)GLOBAL_CFLAGS += -fPIC
$(combo_target)GLOBAL_CFLAGS += \
-include $(call select-android-config-h,linux-x86)
$(combo_target)NO_UNDEFINED_LDFLAGS := -Wl,--no-undefined
endif # HOST
......@@ -50,8 +50,28 @@ $(combo_target)STATIC_LIB_SUFFIX := .a
$(combo_target)PRELINKER_MAP := $(BUILD_SYSTEM)/prelink-$(combo_os_arch).map
# We try to find a target or host specific file for the os/arch specified, and
# default to just looking for the os/arch one. This will allow us to define
# things separately for targets and hosts that have the same architecture
# but need different defines. e.g. target_linux-x86 and host_linux-x86
ifneq ($(TARGET_SIMULATOR),true)
# Convert the combo_target string to lowercase
combo_target_lc := $(shell echo $(combo_target) | tr '[A-Z]' '[a-z]')
# form combo makefile name like "<path>/target_linux-x86.make",
# "<path>/host_darwin-x86.make", etc.
combo_target_os_arch := $(BUILD_COMBOS)/$(combo_target_lc)$(combo_os_arch).mk
else
combo_target_os_arch :=
endif
# Now include the combo for this specific target.
ifneq ($(wildcard $(combo_target_os_arch)),)
include $(combo_target_os_arch)
else
include $(BUILD_COMBOS)/$(combo_os_arch).mk
endif
ifneq ($(USE_CCACHE),)
ccache := prebuilt/$(HOST_PREBUILT_TAG)/ccache/ccache
......
# Configuration for Linux on x86 as a target.
# Included by combo/select.make
# You can set TARGET_TOOLS_PREFIX to get gcc from somewhere else
ifeq ($(strip $($(combo_target)TOOLS_PREFIX)),)
$(combo_target)TOOLS_PREFIX := \
prebuilt/$(HOST_PREBUILT_TAG)/toolchain/i686-unknown-linux-gnu-4.2.1/bin/i686-unknown-linux-gnu-
endif
$(combo_target)CC := $($(combo_target)TOOLS_PREFIX)gcc$(HOST_EXECUTABLE_SUFFIX)
$(combo_target)CXX := $($(combo_target)TOOLS_PREFIX)g++$(HOST_EXECUTABLE_SUFFIX)
$(combo_target)AR := $($(combo_target)TOOLS_PREFIX)ar$(HOST_EXECUTABLE_SUFFIX)
$(combo_target)OBJCOPY := $($(combo_target)TOOLS_PREFIX)objcopy$(HOST_EXECUTABLE_SUFFIX)
$(combo_target)LD := $($(combo_target)TOOLS_PREFIX)ld$(HOST_EXECUTABLE_SUFFIX)
ifneq ($(wildcard $($(combo_target)CC)),)
$(combo_target)LIBGCC := \
$(shell $($(combo_target)CC) -m32 -print-file-name=libgcc.a) \
$(shell $($(combo_target)CC) -m32 -print-file-name=libgcc_eh.a)
endif
$(combo_target)NO_UNDEFINED_LDFLAGS := -Wl,--no-undefined
libc_root := bionic/libc
libm_root := bionic/libm
libstdc++_root := bionic/libstdc++
libthread_db_root := bionic/libthread_db
# unless CUSTOM_KERNEL_HEADERS is defined, we're going to use
# symlinks located in out/ to point to the appropriate kernel
# headers. see 'config/kernel_headers.make' for more details
#
ifneq ($(CUSTOM_KERNEL_HEADERS),)
KERNEL_HEADERS_COMMON := $(CUSTOM_KERNEL_HEADERS)
KERNEL_HEADERS_ARCH := $(CUSTOM_KERNEL_HEADERS)
else
KERNEL_HEADERS_COMMON := $(libc_root)/kernel/common
KERNEL_HEADERS_ARCH := $(libc_root)/kernel/arch-$(TARGET_ARCH)
endif
KERNEL_HEADERS := $(KERNEL_HEADERS_COMMON) $(KERNEL_HEADERS_ARCH)
$(combo_target)GLOBAL_CFLAGS += \
-march=i686 \
-m32 \
-fPIC \
-include $(call select-android-config-h,target_linux-x86)
$(combo_target)GLOBAL_CPPFLAGS += \
-fno-use-cxa-atexit
$(combo_target)C_INCLUDES := \
$(libc_root)/arch-x86/include \
$(libc_root)/include \
$(libstdc++_root)/include \
$(KERNEL_HEADERS) \
$(libm_root)/include \
$(libm_root)/include/i387 \
$(libthread_db_root)/include
TARGET_CRTBEGIN_STATIC_O := $(TARGET_OUT_STATIC_LIBRARIES)/crtbegin_static.o
TARGET_CRTBEGIN_DYNAMIC_O := $(TARGET_OUT_STATIC_LIBRARIES)/crtbegin_dynamic.o
TARGET_CRTEND_O := $(TARGET_OUT_STATIC_LIBRARIES)/crtend_android.o
TARGET_CRTBEGIN_SO_O := $(TARGET_OUT_STATIC_LIBRARIES)/crtbegin_so.o
TARGET_CRTEND_SO_O := $(TARGET_OUT_STATIC_LIBRARIES)/crtend_so.o
# TARGET_STRIP_MODULE:=true
$(combo_target)DEFAULT_SYSTEM_SHARED_LIBRARIES := libc libstdc++ libm
$(combo_target)CUSTOM_LD_COMMAND := true
define transform-o-to-shared-lib-inner
$(TARGET_CXX) \
$(TARGET_GLOBAL_LDFLAGS) \
-nostdlib -Wl,-soname,$(notdir $@) \
-shared -Bsymbolic \
-fPIC -march=i686 \
$(TARGET_GLOBAL_LD_DIRS) \
$(TARGET_CRTBEGIN_SO_O) \
$(PRIVATE_ALL_OBJECTS) \
-Wl,--whole-archive \
$(call normalize-host-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \
-Wl,--no-whole-archive \
$(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \
$(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \
-o $@ \
$(PRIVATE_LDFLAGS) \
$(TARGET_LIBGCC) \
$(TARGET_CRTEND_SO_O)
endef
define transform-o-to-executable-inner
$(TARGET_CXX) \
$(TARGET_GLOBAL_LDFLAGS) \
-nostdlib -Bdynamic \
-Wl,-dynamic-linker,/system/bin/linker \
-Wl,-z,nocopyreloc \
-o $@ \
$(TARGET_GLOBAL_LD_DIRS) \
-Wl,-rpath-link=$(TARGET_OUT_INTERMEDIATE_LIBRARIES) \
$(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \
$(TARGET_CRTBEGIN_DYNAMIC_O) \
$(PRIVATE_ALL_OBJECTS) \
$(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \
$(PRIVATE_LDFLAGS) \
$(TARGET_LIBGCC) \
$(TARGET_CRTEND_O)
endef
define transform-o-to-static-executable-inner
$(TARGET_CXX) \
$(TARGET_GLOBAL_LDFLAGS) \
-nostdlib -Bstatic \
-o $@ \
$(TARGET_GLOBAL_LD_DIRS) \
$(TARGET_CRTBEGIN_STATIC_O) \
$(PRIVATE_LDFLAGS) \
$(PRIVATE_ALL_OBJECTS) \
-Wl,--start-group \
$(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \
$(TARGET_LIBGCC) \
-Wl,--end-group \
$(TARGET_CRTEND_O)
endef
$(combo_target)GLOBAL_CFLAGS += -m32
$(combo_target)GLOBAL_LDFLAGS += -m32
......@@ -18,8 +18,8 @@ SRC_HEADERS := \
SRC_HOST_HEADERS:=$(TOPDIR)tools/include
SRC_LIBRARIES:= $(TOPDIR)libs
SRC_SERVERS:= $(TOPDIR)servers
SRC_TOOLS:= $(TOPDIR)tools
SRC_TARGET_DIR := $(TOPDIR)build/target
SRC_API_DIR := $(TOPDIR)frameworks/base/api
# Some specific paths to tools
SRC_DROIDDOC_DIR := $(TOPDIR)build/tools/droiddoc
......@@ -94,11 +94,8 @@ COMMON_ANDROID_PACKAGE_SUFFIX := .apk
-include $(TOPDIR)buildspec.mk
# ---------------------------------------------------------------
# Handle the setup of TARGET_PRODUCT and related variables.
include $(BUILD_SYSTEM)/product_config.mk
# ---------------------------------------------------------------
# Define most of the global variables.
# Define most of the global variables. These are the ones that
# are specific to the user's build configuration.
include $(BUILD_SYSTEM)/envsetup.mk
# $(1): os/arch
......@@ -121,7 +118,10 @@ include $(BUILD_SYSTEM)/combo/javac.mk
# ---------------------------------------------------------------
# Check that the configuration is current. We check that
# BUILD_ENV_SEQUENCE_NUMBER is current against this value.
# Don't fail if we're called from envsetup, so they have a
# chance to update their environment.
ifeq (,$(strip $(CALLED_FROM_SETUP)))
ifneq (,$(strip $(BUILD_ENV_SEQUENCE_NUMBER)))
ifneq ($(BUILD_ENV_SEQUENCE_NUMBER),$(CORRECT_BUILD_ENV_SEQUENCE_NUMBER))
$(warning BUILD_ENV_SEQUENCE_NUMBER is set incorrectly.)
......@@ -134,6 +134,7 @@ $(info *** - Update BUILD_ENV_SEQUENCE_NUMBER to "$(CORRECT_BUILD_ENV_SEQUENCE
$(error bailing..)
endif
endif
endif
# ---------------------------------------------------------------
......@@ -151,6 +152,13 @@ MKBOOTFS := $(HOST_OUT_EXECUTABLES)/mkbootfs$(HOST_EXECUTABLE_SUFFIX)
MKBOOTIMG := $(HOST_OUT_EXECUTABLES)/mkbootimg$(HOST_EXECUTABLE_SUFFIX)
MKYAFFS2 := $(HOST_OUT_EXECUTABLES)/mkyaffs2image$(HOST_EXECUTABLE_SUFFIX)
APICHECK := $(HOST_OUT_EXECUTABLES)/apicheck$(HOST_EXECUTABLE_SUFFIX)
FS_GET_STATS := $(HOST_OUT_EXECUTABLES)/fs_get_stats$(HOST_EXECUTABLE_SUFFIX)
MKEXT2IMG := $(HOST_OUT_EXECUTABLES)/genext2fs$(HOST_EXECUTABLE_SUFFIX)
MKEXT2BOOTIMG := external/genext2fs/mkbootimg_ext2.sh
MKTARBALL := build/tools/mktarball.sh
TUNE2FS := tune2fs
E2FSCK := e2fsck
JARJAR := java -jar $(HOST_OUT_JAVA_LIBRARIES)/jarjar.jar
# dx is java behind a shell script; no .exe necessary.
DX := $(HOST_OUT_EXECUTABLES)/dx
......@@ -271,9 +279,9 @@ TARGET_AVAILABLE_SDK_VERSIONS := current \
$(shell function sgrax() { \
while [ -n "$$1" ] ; do echo $$1 ; shift ; done \
} ; \
( sgrax $(patsubst $(BUILD_SYSTEM)/api/%.xml,%, \
$(filter-out $(BUILD_SYSTEM)/api/current.xml, \
$(shell find $(BUILD_SYSTEM)/api -name "*.xml"))) | sort -g ) )
( sgrax $(patsubst $(SRC_API_DIR)/%.xml,%, \
$(filter-out $(SRC_API_DIR)/current.xml, \
$(shell find $(SRC_API_DIR) -name "*.xml"))) | sort -g ) )
INTERNAL_PLATFORM_API_FILE := $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/public_api.xml
......
......@@ -20,23 +20,6 @@
## are used by others to construct the final targets.
##
# You can be dependent on this target to print to the
# user the current configuration being used.
.PHONY: report_config
report_config:
@echo -e "============================================"\
"\nTARGET_PRODUCT="$(TARGET_PRODUCT)\
"\nTARGET_SIMULATOR="$(TARGET_SIMULATOR)\
"\nTARGET_BUILD_TYPE="$(TARGET_BUILD_TYPE)\
"\nTARGET_ARCH="$(TARGET_ARCH)\
"\nTARGET_OS="$(TARGET_OS)\
"\nHOST_ARCH="$(HOST_ARCH)\
"\nHOST_OS="$(HOST_OS)\
"\nHOST_BUILD_TYPE="$(HOST_BUILD_TYPE)\
"\nBUILD_ID="$(BUILD_ID)\
"\n============================================"
# These are variables we use to collect overall lists
# of things being processed.
......@@ -180,6 +163,28 @@ define all-subdir-java-files
$(call all-java-files-under,.)
endef
###########################################################
## Find all of the c files under the named directories.
## Meant to be used like:
## SRC_FILES := $(call all-c-files-under,src tests)
###########################################################
define all-c-files-under
$(patsubst ./%,%, \
$(shell cd $(LOCAL_PATH) ; \
find $(1) -name "*.c" -and -not -name ".*") \
)
endef
###########################################################
## Find all of the c files from here. Meant to be used like:
## SRC_FILES := $(call all-subdir-c-files)
###########################################################
define all-subdir-c-files
$(call all-c-files-under,.)
endef
###########################################################
## Find all files named "I*.aidl" under the named directories,
## which must be relative to $(LOCAL_PATH). The returned list
......@@ -669,10 +674,10 @@ $(hide) $(PRIVATE_CXX) \
$(TARGET_GLOBAL_CPPFLAGS) \
$(PRIVATE_ARM_CFLAGS) \
) \
-fno-rtti \
$(PRIVATE_CFLAGS) \
$(PRIVATE_CPPFLAGS) \
$(PRIVATE_DEBUG_CFLAGS) \
-fno-rtti \
-MD -o $@ $<
$(hide) $(transform-d-to-p)
endef
......@@ -889,6 +894,7 @@ endef
ifneq ($(TARGET_CUSTOM_LD_COMMAND),true)
define transform-o-to-shared-lib-inner
$(TARGET_CXX) \
$(TARGET_GLOBAL_LDFLAGS) \
-Wl,-rpath-link=$(TARGET_OUT_INTERMEDIATE_LIBRARIES) \
-Wl,-rpath,\$$ORIGIN/../lib \
-shared -Wl,-soname,$(notdir $@) \
......@@ -949,7 +955,9 @@ endef
ifneq ($(TARGET_CUSTOM_LD_COMMAND),true)
define transform-o-to-executable-inner
$(TARGET_CXX) -Wl,-rpath-link=$(TARGET_OUT_INTERMEDIATE_LIBRARIES) \
$(TARGET_CXX) \
$(TARGET_GLOBAL_LDFLAGS) \
-Wl,-rpath-link=$(TARGET_OUT_INTERMEDIATE_LIBRARIES) \
$(TARGET_GLOBAL_LD_DIRS) \
-Wl,-rpath-link=$(TARGET_OUT_INTERMEDIATE_LIBRARIES) \
-Wl,-rpath,\$$ORIGIN/../lib \
......@@ -1002,7 +1010,10 @@ $(HOST_CXX) \
-Wl,-rpath-link=$(TARGET_OUT_INTERMEDIATE_LIBRARIES) \
-Wl,-rpath,\$$ORIGIN/../lib \
$(HOST_GLOBAL_LD_DIRS) \
$(PRIVATE_LDFLAGS) $(HOST_GLOBAL_LDFLAGS) \
$(PRIVATE_LDFLAGS) \
$(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \
$(HOST_GLOBAL_LDFLAGS) \
) \
$(PRIVATE_ALL_OBJECTS) \
-Wl,--whole-archive \
$(call normalize-host-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \
......
......@@ -14,15 +14,6 @@
# limitations under the License.
#
# HACK HACK HACK
# *** Do not use any of the following as an example for anything else ***
# TODO: remove this hack once the build machine no longer needs "user-dist"
user-dist: user
ifneq (,$(filter user-dist,$(MAKECMDGOALS)))
MAKECMDGOALS := $(patsubst user-dist,user dist,$(MAKECMDGOALS))
endif
# When specifying "dist", the user has asked that we copy the important
# files from this build into DIST_DIR.
......@@ -34,7 +25,7 @@ MAKECMDGOALS := $(strip $(filter-out dist,$(MAKECMDGOALS)))
ifeq (,$(strip $(filter-out $(INTERNAL_MODIFIER_TARGETS),$(MAKECMDGOALS))))
# The commandline was something like "make dist" or "make dist showcommands".
# Add a dependency on a real target.
dist: $(DEFAULT_TARGET)
dist: $(DEFAULT_GOAL)
endif
ifdef dist_goal
......@@ -54,7 +45,7 @@ endef
# certain files with certain goals. When those goals are built
# and "dist" is specified, the marked files will be copied to DIST_DIR.
#
# $(1): a list of goals (e.g., "user all")
# $(1): a list of goals (e.g. droid, sdk, pdk, ndk)
# $(2): the dist files to add to those goals
define dist-for-goals
$(foreach file,$(2), \
......
......@@ -13,7 +13,36 @@
# 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.
CORRECT_BUILD_ENV_SEQUENCE_NUMBER := 8
CORRECT_BUILD_ENV_SEQUENCE_NUMBER := 9
# ---------------------------------------------------------------
# The product defaults to generic on hardware and sim on sim
# NOTE: This will be overridden in product_config.mk if make
# was invoked with a PRODUCT-xxx-yyy goal.
ifeq ($(TARGET_PRODUCT),)
ifeq ($(TARGET_SIMULATOR),true)
TARGET_PRODUCT := sim
else
TARGET_PRODUCT := generic
endif
endif
# the variant -- the set of files that are included for a build
ifeq ($(strip $(TARGET_BUILD_VARIANT)),)
TARGET_BUILD_VARIANT := eng
endif
# Read the product specs so we an get TARGET_DEVICE and other
# variables that we need in order to locate the output files.
include $(BUILD_SYSTEM)/product_config.mk
build_variant := $(filter-out eng user userdebug tests,$(TARGET_BUILD_VARIANT))
ifneq ($(build_variant)-$(words $(TARGET_BUILD_VARIANT)),-1)
$(warning bad TARGET_BUILD_VARIANT: $(TARGET_BUILD_VARIANT))
$(error must be empty or one of: eng user userdebug tests)
endif
# ---------------------------------------------------------------
......@@ -83,11 +112,10 @@ endif
# The following must be set:
# TARGET_OS = { linux }
# TARGET_ARCH = { arm | x86 }
# TARGET_ARCH==arm means that it's not the simulator, and the others
# mean it is the simulator.
# if we're build the simulator, HOST_* is TARGET_* (except for BUILD_TYPE)
# otherwise it's arm-linux
# otherwise it's <arch>-linux
ifeq ($(TARGET_SIMULATOR),true)
ifneq ($(HOST_OS),linux)
$(error TARGET_SIMULATOR=true is only supported under Linux)
......@@ -95,7 +123,9 @@ endif
TARGET_ARCH := $(HOST_ARCH)
TARGET_OS := $(HOST_OS)
else
ifeq ($(TARGET_ARCH),)
TARGET_ARCH := arm
endif
TARGET_OS := linux
endif
......@@ -112,15 +142,6 @@ else
TARGET_PREBUILT_TAG := android-$(TARGET_ARCH)
endif
# the product defaults to sooner on ARM and nothing on sim
ifeq ($(TARGET_PRODUCT),)
ifeq ($(TARGET_SIMULATOR),true)
TARGET_PRODUCT := sim
else
TARGET_PRODUCT := sooner
endif
endif
# ---------------------------------------------------------------
# figure out the output directories
......@@ -157,7 +178,7 @@ endif
TARGET_COMMON_OUT_ROOT := $(TARGET_OUT_ROOT)/common
HOST_COMMON_OUT_ROOT := $(HOST_OUT_ROOT)/common
PRODUCT_OUT := $(TARGET_PRODUCT_OUT_ROOT)/$(TARGET_PRODUCT)
PRODUCT_OUT := $(TARGET_PRODUCT_OUT_ROOT)/$(TARGET_DEVICE)
OUT_DOCS := $(TARGET_COMMON_OUT_ROOT)/docs
......@@ -215,12 +236,25 @@ TARGET_ROOT_OUT_USR := $(TARGET_ROOT_OUT)/usr
TARGET_RECOVERY_OUT := $(PRODUCT_OUT)/recovery
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
COMMON_MODULE_CLASSES := JAVA_LIBRARIES NOTICE_FILES
ifeq (,$(strip $(DIST_DIR)))
DIST_DIR := $(OUT_DIR)/dist
endif
ifeq ($(PRINT_BUILD_CONFIG),)
PRINT_BUILD_CONFIG := true
endif
# ---------------------------------------------------------------
# the setpath shell function in envsetup.sh uses this to figure out
# what to add to the path given the config we have chosen.
......@@ -275,4 +309,25 @@ $(dumpvar_target):
endif # dumpvar_goals
ifneq ($(dumpvar_goals),report_config)
PRINT_BUILD_CONFIG:=
endif
endif # CALLED_FROM_SETUP
ifneq ($(PRINT_BUILD_CONFIG),)
$(info ============================================)
$(info TARGET_PRODUCT=$(TARGET_PRODUCT))
$(info TARGET_BUILD_VARIANT=$(TARGET_BUILD_VARIANT))
$(info TARGET_SIMULATOR=$(TARGET_SIMULATOR))
$(info TARGET_BUILD_TYPE=$(TARGET_BUILD_TYPE))
$(info TARGET_ARCH=$(TARGET_ARCH))
$(info HOST_ARCH=$(HOST_ARCH))
$(info HOST_OS=$(HOST_OS))
$(info HOST_BUILD_TYPE=$(HOST_BUILD_TYPE))
$(info BUILD_ID=$(BUILD_ID))
$(info ============================================)
endif
......@@ -33,8 +33,8 @@ LOCAL_BUILT_MODULE_STEM := $(strip $(LOCAL_BUILT_MODULE_STEM))
ifeq ($(LOCAL_BUILT_MODULE_STEM),)
$(error $(LOCAL_PATH): Target java template must define LOCAL_BUILT_MODULE_STEM)
endif
ifeq ($(LOCAL_BUILT_MODULE_STEM),classes.jar)
$(error LOCAL_BUILT_MODULE_STEM may not be "classes.jar")
ifneq ($(filter classes-compiled.jar classes.jar,$(LOCAL_BUILT_MODULE_STEM)),)
$(error LOCAL_BUILT_MODULE_STEM may not be "$(LOCAL_BUILT_MODULE_STEM)")
endif
#######################################
......@@ -64,14 +64,31 @@ ifneq (,$(strip $(all_java_sources)))
# Otherwise, the caller will define it as a prerequisite of
# LOCAL_BUILT_MODULE, so it will inherit the necessary PRIVATE_*
# variable definitions.
#
full_classes_jar := $(intermediates.COMMON)/classes.jar
# Compile the java files to a .jar file.
# This intentionally depends on java_sources, not all_java_sources.
# Deps for generated source files must be handled separately,
# via deps on the target that generates the sources.
full_classes_jar := $(intermediates.COMMON)/classes.jar
$(full_classes_jar): $(java_sources) $(full_java_lib_deps)
full_classes_compiled_jar := $(intermediates.COMMON)/classes-compiled.jar
$(full_classes_compiled_jar): $(java_sources) $(full_java_lib_deps)
$(transform-java-to-classes.jar)
# Run jarjar if necessary, otherwise just copy the file. This is the last
# part of this step, so the output of this command is full_classes_jar.
full_classes_jarjar_jar := $(full_classes_jar)
ifneq ($(strip $(LOCAL_JARJAR_RULES)),)
$(full_classes_jarjar_jar): PRIVATE_JARJAR_RULES := $(LOCAL_JARJAR_RULES)
$(full_classes_jarjar_jar): $(full_classes_compiled_jar) | jarjar
@echo JarJar: $@
$(hide) $(JARJAR) process $(PRIVATE_JARJAR_RULES) $< $@
else
$(full_classes_jarjar_jar): $(full_classes_compiled_jar) | $(ACP)
@echo Copying: $@
$(hide) $(ACP) $< $@
endif
built_dex := $(intermediates.COMMON)/classes.dex
# Override PRIVATE_INTERMEDIATES_DIR so that install-dex-debug
......
......@@ -38,6 +38,10 @@ TOPDIR :=
BUILD_SYSTEM := $(TOPDIR)build/core
# This is the default target. It must be the first declared target.
DEFAULT_GOAL := droid
$(DEFAULT_GOAL):
# Set up various standard variables based on configuration
# and host information.
include $(BUILD_SYSTEM)/config.mk
......@@ -87,37 +91,37 @@ include $(BUILD_SYSTEM)/version_defaults.mk
# (must be defined before including definitions.make)
INTERNAL_MODIFIER_TARGETS := showcommands
# This is the default target. It must be the first declared target
DEFAULT_TARGET := droid
.PHONY: $(DEFAULT_TARGET)
$(DEFAULT_TARGET):
# Bring in standard build system definitions.
include $(BUILD_SYSTEM)/definitions.mk
ifneq ($(filter eng user userdebug tests,$(MAKECMDGOALS)),)
$(info ***************************************************************)
$(info ***************************************************************)
$(info Don't pass '$(filter eng user userdebug tests,$(MAKECMDGOALS))' on \
the make command line.)
$(info Set TARGET_BUILD_VARIANT in buildspec.mk, or use lunch or)
$(info choosecombo.)
$(info ***************************************************************)
$(info ***************************************************************)
$(error stopping)
endif
###
### DO NOT USE THIS AS AN EXAMPLE FOR ANYTHING ELSE;
### ONLY 'user'/'userdebug'/'tests'/'sdk' GOALS
### SHOULD REFER TO MAKECMDGOALS.
### In this section we set up the things that are different
### between the build variants
###
## user/userdebug ##
user_goal := $(filter userdebug user,$(MAKECMDGOALS))
user_variant := $(filter userdebug user,$(TARGET_BUILD_VARIANT))
enable_target_debugging := true
ifneq (,$(user_goal))
# Make sure that exactly one of {userdebug,user} has been specified,
# and that no non-INTERNAL_MODIFIER_TARGETS goals have been specified.
non_user_goals := \
$(filter-out $(INTERNAL_MODIFIER_TARGETS) $(user_goal),$(MAKECMDGOALS))
ifneq ($(words $(non_user_goals) $(user_goal)),1)
$(error The '$(word 1,$(user_goal))' target may not be specified with any other targets)
endif
ifneq (,$(user_variant))
# Target is secure in user builds.
ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1
override_build_tags := user
ifeq ($(user_goal),userdebug)
ifeq ($(user_variant),userdebug)
# Pick up some extra useful tools
override_build_tags += debug
else
......@@ -130,12 +134,12 @@ ifneq (,$(user_goal))
ifeq ($(HOST_OS)-$(WITH_DEXPREOPT_buildbot),linux-true)
WITH_DEXPREOPT := true
endif
else # !user_goal
else # !user_variant
# Turn on checkjni for non-user builds.
ADDITIONAL_BUILD_PROPERTIES += ro.kernel.android.checkjni=1
# Set device insecure for non-user builds.
ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=0
endif # !user_goal
endif # !user_variant
ifeq (true,$(strip $(enable_target_debugging)))
# Target is more debuggable and adbd is on by default
......@@ -149,10 +153,7 @@ endif # !enable_target_debugging
## tests ##
ifneq ($(filter tests,$(MAKECMDGOALS)),)
ifneq ($(words $(filter-out $(INTERNAL_MODIFIER_TARGETS),$(MAKECMDGOALS))),1)
$(error The 'tests' target may not be specified with any other targets)
endif
ifeq ($(TARGET_BUILD_VARIANT),tests)
override_build_tags := eng debug user development tests
endif
......@@ -165,15 +166,19 @@ endif
override_build_tags := development
ADDITIONAL_BUILD_PROPERTIES += xmpp.auto-presence=true
ADDITIONAL_BUILD_PROPERTIES += ro.config.nocheckin=yes
ifeq "" "$(filter %:system/etc/apns-conf.xml, $(PRODUCT_COPY_FILES))"
# Install an apns-conf.xml file if one's not already being installed.
PRODUCT_COPY_FILES += development/data/etc/apns-conf_sdk.xml:system/etc/apns-conf.xml
endif
else # !sdk
# Enable sync for non-sdk builds only (sdk builds lack SubscribedFeedsProvider).
ADDITIONAL_BUILD_PROPERTIES += ro.config.sync=yes
endif
ifeq "" "$(filter %:system/etc/apns-conf.xml, $(PRODUCT_COPY_FILES))"
# Install an apns-conf.xml file if one's not already being installed.
PRODUCT_COPY_FILES += development/data/etc/apns-conf_sdk.xml:system/etc/apns-conf.xml
ifeq ($(filter sdk,$(MAKECMDGOALS)),)
$(warning implicitly installing apns-conf_sdk.xml)
endif
endif
ADDITIONAL_BUILD_PROPERTIES += net.bt.name=Android
# enable vm tracing in files for now to help track
......@@ -199,8 +204,8 @@ $(if $(filter samples,$(1)),,$(filter eng debug user development,$(1)))
endef
endif
ifneq (,$(filter user,$(MAKECMDGOALS)))
# For the user goal, everything should be installed in /system.
ifeq ($(TARGET_BUILD_VARIANT),)
# For the default goal, everything should be installed in /system.
define should-install-to-system
true
endef
......@@ -211,7 +216,7 @@ endif
# the default target.
ifeq ($(MAKECMDGOALS),showcommands)
.PHONY: showcommands
showcommands: $(DEFAULT_TARGET)
showcommands: $(DEFAULT_GOAL)
endif
# These targets are going to delete stuff, don't bother including
......@@ -244,6 +249,7 @@ endif
ifeq ($(SDK_ONLY),true)
subdirs := \
prebuilt \
build/libs/host \
dalvik/dexdump \
dalvik/libdex \
......@@ -251,6 +257,7 @@ subdirs := \
development/emulator/mksdcard \
development/tools/activitycreator \
development/tools/line_endings \
development/host \
external/expat \
external/libpng \
external/qemu \
......@@ -281,8 +288,10 @@ subdirs += \
development/tools/layoutlib_utils \
development/tools/ninepatch \
development/tools/sdkstats \
development/tools/sdkmanager \
frameworks/base \
frameworks/base/tools/layoutlib \
external/googleclient \
packages
else
$(warning sdk-only: javac not available.)
......@@ -312,8 +321,12 @@ else # !BUILD_TINY_ANDROID
#
# Typical build; include any Android.mk files we can find.
#
INTERNAL_DEFAULT_DOCS_TARGETS := framework-docs
INTERNAL_DEFAULT_DOCS_TARGETS := offline-sdk-docs
subdirs := $(TOP)
# Only include Android.mk files directly under vendor/*, not
# *all* Android.mk files under vendor (which is what would happen
# if we didn't prune vendor in the findleaves call).
subdir_makefiles += $(wildcard vendor/*/Android.mk)
FULL_BUILD := true
......@@ -327,38 +340,40 @@ subdir_makefiles += \
$(shell build/tools/findleaves.sh \
--prune="./vendor" --prune="./out" $(subdirs) Android.mk)
# Boards may be defined under $(SRC_TARGET_DIR)/board/$(TARGET_PRODUCT)
# or under vendor/*/$(TARGET_PRODUCT). Search in both places, but
# 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_PRODUCT)/BoardConfig.mk \
vendor/*/$(TARGET_PRODUCT)/BoardConfig.mk \
$(SRC_TARGET_DIR)/board/$(TARGET_DEVICE)/BoardConfig.mk \
vendor/*/$(TARGET_DEVICE)/BoardConfig.mk \
))
ifeq ($(board_config_mk),)
$(error No config file found for TARGET_PRODUCT $(TARGET_PRODUCT))
$(error No config file found for TARGET_DEVICE $(TARGET_DEVICE))
endif
ifneq ($(words $(board_config_mk)),1)
$(error Multiple board config files for TARGET_PRODUCT $(TARGET_PRODUCT): $(board_config_mk))
$(error Multiple board config files for TARGET_DEVICE $(TARGET_DEVICE): $(board_config_mk))
endif
include $(board_config_mk)
TARGET_PRODUCT_DIR := $(patsubst %/,%,$(dir $(board_config_mk)))
TARGET_DEVICE_DIR := $(patsubst %/,%,$(dir $(board_config_mk)))
board_config_mk :=
ifdef CUSTOM_PKG
$(info ***************************************************************)
$(info ***************************************************************)
$(error CUSTOM_PKG is obsolete; use CUSTOM_MODULES)
$(info CUSTOM_PKG is obsolete; use CUSTOM_MODULES)
$(info ***************************************************************)
$(info ***************************************************************)
$(error stopping)
endif
ifdef CUSTOM_TARGETS
$(info ***************************************************************)
$(info ***************************************************************)
$(error CUSTOM_TARGETS is obsolete; use CUSTOM_MODULES)
$(info CUSTOM_TARGETS is obsolete; use CUSTOM_MODULES)
$(info ***************************************************************)
$(info ***************************************************************)
$(error stopping)
endif
#
......@@ -388,6 +403,17 @@ endif
# All module makefiles have been included at this point.
# -------------------------------------------------------------------
# -------------------------------------------------------------------
# Include any makefiles that must happen after the module makefiles
# have been included.
# TODO: have these files register themselves via a global var rather
# than hard-coding the list here.
ifdef FULL_BUILD
# Only include this during a full build, otherwise we can't be
# guaranteed that any policies were included.
-include frameworks/policies/base/PolicyConfig.mk
endif
# -------------------------------------------------------------------
# Fix up CUSTOM_MODULES to refer to installed files rather than
# just bare module names. Leave unknown modules alone in case
......@@ -440,7 +466,7 @@ ifdef FULL_BUILD
user_PACKAGES := $(call module-installed-files, \
$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES))
ifeq (0,1)
$(info user packages for $(TARGET_PRODUCT) ($(INTERNAL_PRODUCT)):)
$(info user packages for $(TARGET_DEVICE) ($(INTERNAL_PRODUCT)):)
$(foreach p,$(user_PACKAGES),$(info : $(p)))
$(error done)
endif
......@@ -524,7 +550,7 @@ endif # dont_bother
# but they're considered undocumented, so don't complain if their
# behavior changes.
.PHONY: prebuilt
prebuilt: $(ALL_PREBUILT) report_config
prebuilt: $(ALL_PREBUILT)
# An internal target that depends on all copied headers
# (see copy_headers.make). Other targets that need the
......@@ -536,18 +562,24 @@ $(ALL_C_CPP_ETC_OBJECTS): | all_copied_headers
# All the droid stuff, in directories
.PHONY: files
files: report_config prebuilt $(modules_to_build) $(INSTALLED_ANDROID_INFO_TXT_TARGET)
files: prebuilt $(modules_to_build) $(INSTALLED_ANDROID_INFO_TXT_TARGET)
# -------------------------------------------------------------------
.PHONY: ramdisk
ramdisk: $(INSTALLED_RAMDISK_TARGET) report_config
ramdisk: $(INSTALLED_RAMDISK_TARGET)
.PHONY: systemtarball
systemtarball: $(INSTALLED_SYSTEMTARBALL_TARGET)
.PHONY: userdataimage
userdataimage: $(INSTALLED_USERDATAIMAGE_TARGET) report_config
userdataimage: $(INSTALLED_USERDATAIMAGE_TARGET)
.PHONY: userdatatarball
userdatatarball: $(INSTALLED_USERDATATARBALL_TARGET)
.PHONY: bootimage
bootimage: $(INSTALLED_BOOTIMAGE_TARGET) report_config
bootimage: $(INSTALLED_BOOTIMAGE_TARGET)
ifeq ($(BUILD_TINY_ANDROID), true)
INSTALLED_RECOVERYIMAGE_TARGET :=
......@@ -555,7 +587,7 @@ endif
# Build files and then package it into the rom formats
.PHONY: droidcore
droidcore: report_config files \
droidcore: files \
systemimage \
$(INSTALLED_BOOTIMAGE_TARGET) \
$(INSTALLED_RECOVERYIMAGE_TARGET) \
......@@ -563,45 +595,44 @@ droidcore: report_config files \
$(INTERNAL_DEFAULT_DOCS_TARGETS)
# The actual files built by the droidcore target changes depending
# on MAKECMDGOALS. THIS IS A TOTAL HACK AND SHOULD NOT BE USED AS AN EXAMPLE
.PHONY: droid user userdebug tests
droid user userdebug tests: droidcore
# on the build variant.
.PHONY: droid tests
droid tests: droidcore
$(call dist-for-goals,user userdebug droid, \
$(call dist-for-goals, droid, \
$(INTERNAL_UPDATE_PACKAGE_TARGET) \
$(INTERNAL_OTA_PACKAGE_TARGET) \
$(SYMBOLS_ZIP) \
$(APPS_ZIP) \
$(HOST_OUT_EXECUTABLES)/adb$(HOST_EXECUTABLE_SUFFIX) \
$(INTERNAL_EMULATOR_PACKAGE_TARGET) \
$(PACKAGE_STATS_FILE) \
$(INSTALLED_FILES_FILE) \
$(INSTALLED_BUILD_PROP_TARGET) \
$(BUILT_TARGET_FILES_PACKAGE) \
)
# Tests are installed in userdata.img; copy it for "make tests dist".
# Also copy a zip of the contents of userdata.img, so that people can
# easily extract a single .apk.
$(call dist-for-goals,tests, \
# Tests are installed in userdata.img. If we're building the tests
# variant, copy it for "make tests dist". Also copy a zip of the
# contents of userdata.img, so that people can easily extract a
# single .apk.
ifeq ($(TARGET_BUILD_VARIANT),tests)
$(call dist-for-goals, droid, \
$(INSTALLED_USERDATAIMAGE_TARGET) \
$(BUILT_TESTS_ZIP_PACKAGE) \
)
endif
.PHONY: docs
docs: $(ALL_DOCS)
.PHONY: sdk
ALL_SDK_TARGETS := $(INTERNAL_SDK_TARGET)
sdk: report_config $(ALL_SDK_TARGETS)
sdk: $(ALL_SDK_TARGETS)
$(call dist-for-goals,sdk,$(ALL_SDK_TARGETS))
.PHONY: findbugs
findbugs: $(INTERNAL_FINDBUGS_HTML_TARGET) $(INTERNAL_FINDBUGS_XML_TARGET)
# Also do the targets not built by "make droid".
.PHONY: all
all: droid $(nonDroid_MODULES) docs sdk
.PHONY: clean
dirs_to_clean := \
$(PRODUCT_OUT) \
......@@ -666,4 +697,3 @@ modules:
showcommands:
@echo >/dev/null
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment