am 6b340ad0: am 7c945d24: Merge "Make error a warning for now"
* commit '6b340ad06c90ad80894bce720075e05f31b8f4cb':
Make error a warning for now
diff --git a/CleanSpec.mk b/CleanSpec.mk
index 6d81733..2bcc1b6 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -122,10 +122,18 @@
# Changing where ro.carrier value is instantiated for system/build.prop
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/build.prop)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/APPS/*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/app/*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/app/*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/build.prop)
+
# Now we switched to build against Mac OS X SDK 10.6
$(call add-clean-step, rm -rf $(OUT_DIR)/host/darwin-x86/obj)
$(call add-clean-step, rm -f $(OUT_DIR)/versions_checked.mk)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/app/*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/APPS/*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/build.prop)
# ************************************************
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
diff --git a/core/Makefile b/core/Makefile
index 17f45cf..4dde9f4 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -399,7 +399,7 @@
$(INSTALLED_BOOTIMAGE_TARGET): $(MKBOOTIMG) $(INTERNAL_BOOTIMAGE_FILES)
$(call pretty,"Target boot image: $@")
- $(hide) $(MKBOOTIMG) $(INTERNAL_BOOTIMAGE_ARGS) --output $@
+ $(hide) $(MKBOOTIMG) $(INTERNAL_BOOTIMAGE_ARGS) $(BOARD_MKBOOTIMG_ARGS) --output $@
$(hide) $(call assert-max-image-size,$@,$(BOARD_BOOTIMAGE_PARTITION_SIZE),raw)
endif # TARGET_BOOTIMAGE_USE_EXT2
@@ -640,29 +640,28 @@
$(recovery_fstab) \
$(RECOVERY_INSTALL_OTA_KEYS)
@echo ----- Making recovery image ------
- rm -rf $(TARGET_RECOVERY_OUT)
- mkdir -p $(TARGET_RECOVERY_OUT)
- mkdir -p $(TARGET_RECOVERY_ROOT_OUT)
- mkdir -p $(TARGET_RECOVERY_ROOT_OUT)/etc
- mkdir -p $(TARGET_RECOVERY_ROOT_OUT)/tmp
- echo Copying baseline ramdisk...
- cp -R $(TARGET_ROOT_OUT) $(TARGET_RECOVERY_OUT)
- rm $(TARGET_RECOVERY_ROOT_OUT)/init*.rc
- echo Modifying ramdisk contents...
- cp -f $(recovery_initrc) $(TARGET_RECOVERY_ROOT_OUT)/
- cp -f $(recovery_binary) $(TARGET_RECOVERY_ROOT_OUT)/sbin/
- cp -rf $(recovery_resources_common) $(TARGET_RECOVERY_ROOT_OUT)/
- $(foreach item,$(recovery_resources_private), \
+ $(hide) rm -rf $(TARGET_RECOVERY_OUT)
+ $(hide) mkdir -p $(TARGET_RECOVERY_OUT)
+ $(hide) mkdir -p $(TARGET_RECOVERY_ROOT_OUT)/etc $(TARGET_RECOVERY_ROOT_OUT)/tmp
+ @echo Copying baseline ramdisk...
+ $(hide) cp -R $(TARGET_ROOT_OUT) $(TARGET_RECOVERY_OUT)
+ @echo Modifying ramdisk contents...
+ $(hide) rm -f $(TARGET_RECOVERY_ROOT_OUT)/init*.rc
+ $(hide) cp -f $(recovery_initrc) $(TARGET_RECOVERY_ROOT_OUT)/
+ $(hide) -cp $(TARGET_ROOT_OUT)/init.recovery.*.rc $(TARGET_RECOVERY_ROOT_OUT)/
+ $(hide) cp -f $(recovery_binary) $(TARGET_RECOVERY_ROOT_OUT)/sbin/
+ $(hide) cp -rf $(recovery_resources_common) $(TARGET_RECOVERY_ROOT_OUT)/
+ $(hide) $(foreach item,$(recovery_resources_private), \
cp -rf $(item) $(TARGET_RECOVERY_ROOT_OUT)/)
- $(foreach item,$(recovery_fstab), \
+ $(hide) $(foreach item,$(recovery_fstab), \
cp -f $(item) $(TARGET_RECOVERY_ROOT_OUT)/etc/recovery.fstab)
- cp $(RECOVERY_INSTALL_OTA_KEYS) $(TARGET_RECOVERY_ROOT_OUT)/res/keys
- cat $(INSTALLED_DEFAULT_PROP_TARGET) $(recovery_build_prop) \
+ $(hide) cp $(RECOVERY_INSTALL_OTA_KEYS) $(TARGET_RECOVERY_ROOT_OUT)/res/keys
+ $(hide) cat $(INSTALLED_DEFAULT_PROP_TARGET) $(recovery_build_prop) \
> $(TARGET_RECOVERY_ROOT_OUT)/default.prop
- $(MKBOOTFS) $(TARGET_RECOVERY_ROOT_OUT) | $(MINIGZIP) > $(recovery_ramdisk)
- $(MKBOOTIMG) $(INTERNAL_RECOVERYIMAGE_ARGS) --output $@
- @echo ----- Made recovery image -------- $@
+ $(hide) $(MKBOOTFS) $(TARGET_RECOVERY_ROOT_OUT) | $(MINIGZIP) > $(recovery_ramdisk)
+ $(hide) $(MKBOOTIMG) $(INTERNAL_RECOVERYIMAGE_ARGS) $(BOARD_MKBOOTIMG_ARGS) --output $@
$(hide) $(call assert-max-image-size,$@,$(BOARD_RECOVERYIMAGE_PARTITION_SIZE),raw)
+ @echo ----- Made recovery image: $@ --------
else
INSTALLED_RECOVERYIMAGE_TARGET :=
@@ -687,13 +686,17 @@
# -----------------------------------------------------------------
# system image
#
+# Remove overridden packages from $(ALL_PDK_FUSION_FILES)
+PDK_FUSION_SYSIMG_FILES := \
+ $(filter-out $(foreach p,$(overridden_packages),$(p) %/$(p).apk), \
+ $(ALL_PDK_FUSION_FILES))
INTERNAL_SYSTEMIMAGE_FILES := $(filter $(TARGET_OUT)/%, \
$(ALL_PREBUILT) \
$(ALL_COPIED_HEADERS) \
$(ALL_GENERATED_SOURCES) \
$(ALL_DEFAULT_INSTALLED_MODULES)\
- $(ALL_PDK_FUSION_FILES))
+ $(PDK_FUSION_SYSIMG_FILES))
ifdef is_tests_build
# We don't want to install tests modules to the system partition
@@ -825,7 +828,8 @@
$(hide) rm -f $@
$(hide) cd $(dir $@) && zip -qry $(notdir $@) \
$(TARGET_COPY_OUT_SYSTEM) \
- $(patsubst $(PRODUCT_OUT)/%, %, $(TARGET_OUT_NOTICE_FILES))
+ $(patsubst $(PRODUCT_OUT)/%, %, $(TARGET_OUT_NOTICE_FILES)) \
+ $(addprefix symbols/,$(PDK_SYMBOL_FILES_LIST))
ifeq (true,$(PLATFORM_ZIP_ADD_JAVA))
$(hide) cd $(OUT_DIR) && zip -qry $(patsubst $(OUT_DIR)/%,%,$@) $(PDK_PLATFORM_JAVA_ZIP_CONTENTS)
endif
@@ -1121,6 +1125,7 @@
ifdef PRODUCT_EXTRA_RECOVERY_KEYS
$(hide) echo "extra_recovery_keys=$(PRODUCT_EXTRA_RECOVERY_KEYS)" >> $(zip_root)/META/misc_info.txt
endif
+ $(hide) echo "mkbootimg_args=$(BOARD_MKBOOTIMG_ARGS)" >> $(zip_root)/META/misc_info.txt
$(call generate-userimage-prop-dictionary, $(zip_root)/META/misc_info.txt)
@# Zip everything up, preserving symlinks
$(hide) (cd $(zip_root) && zip -qry ../$(notdir $@) .)
@@ -1211,10 +1216,11 @@
$(BUILT_TESTS_ZIP_PACKAGE): intermediates := $(intermediates)
$(BUILT_TESTS_ZIP_PACKAGE): zip_root := $(intermediates)/$(name)
-# Depending on the images guarantees that the underlying
-# directories are up-to-date.
+# Depending on the image dependency files, instead of the image files itself,
+# guarantees that the underlying directories are up-to-date,
+# but don't really build the image.
$(BUILT_TESTS_ZIP_PACKAGE): \
- $(INSTALLED_USERDATAIMAGE_TARGET) \
+ $(INTERNAL_USERDATAIMAGE_FILES) \
| $(ACP)
@echo "Package test files: $@"
$(hide) rm -rf $@ $(zip_root)
@@ -1281,12 +1287,16 @@
# A zip of emma code coverage meta files. Generated for fully emma
# instrumented build.
#
+ifeq (true,$(EMMA_INSTRUMENT))
EMMA_META_ZIP := $(PRODUCT_OUT)/emma_meta.zip
-$(EMMA_META_ZIP): $(INSTALLED_SYSTEMIMAGE)
+# the dependency will be set up later in build/core/main.mk.
+$(EMMA_META_ZIP) :
@echo "Collecting Emma coverage meta files."
$(hide) find $(TARGET_COMMON_OUT_ROOT) -name "coverage.em" | \
zip -@ -q $@
+endif # EMMA_INSTRUMENT=true
+
# -----------------------------------------------------------------
# dalvik something
.PHONY: dalvikfiles
diff --git a/core/armelf.xsc b/core/armelf.xsc
deleted file mode 100644
index 9fac3d2..0000000
--- a/core/armelf.xsc
+++ /dev/null
@@ -1,207 +0,0 @@
-/* Script for --shared -z combreloc: shared library, combine & sort relocs */
-OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
- "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- /* Read-only sections, merged into text segment: */
- . = 0 + SIZEOF_HEADERS;
- .hash : { *(.hash) }
- .dynsym : { *(.dynsym) }
- .dynstr : { *(.dynstr) }
- .gnu.version : { *(.gnu.version) }
- .gnu.version_d : { *(.gnu.version_d) }
- .gnu.version_r : { *(.gnu.version_r) }
- .rel.dyn :
- {
- *(.rel.init)
- *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
- *(.rel.fini)
- *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
- *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
- *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
- *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
- *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
- *(.rel.ctors)
- *(.rel.dtors)
- *(.rel.got)
- *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
- }
- .rela.dyn :
- {
- *(.rela.init)
- *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
- *(.rela.fini)
- *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
- *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
- *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
- *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
- *(.rela.ctors)
- *(.rela.dtors)
- *(.rela.got)
- *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
- }
- .rel.plt : { *(.rel.plt) }
- .rela.plt : { *(.rela.plt) }
- .init :
- {
- KEEP (*(.init))
- } =0
- .plt : { *(.plt) }
- .text :
- {
- *(.text .stub .text.* .gnu.linkonce.t.*)
- KEEP (*(.text.*personality*))
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.glue_7t) *(.glue_7)
- } =0
- .fini :
- {
- KEEP (*(.fini))
- } =0
- PROVIDE (__etext = .);
- PROVIDE (_etext = .);
- PROVIDE (etext = .);
- .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
- .rodata1 : { *(.rodata1) }
- /* We have to wrap extab and exidx sections with KEEP because we use
- --gc-sections. */
- .ARM.extab : { KEEP (*(.ARM.extab* .gnu.linkonce.armextab.*)) }
- __exidx_start = .;
- .ARM.exidx : { KEEP (*(.ARM.exidx* .gnu.linkonce.armexidx.*)) }
- __exidx_end = .;
- .eh_frame_hdr : { *(.eh_frame_hdr) }
- .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) }
- .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) }
- /* Adjust the address for the data segment. We want to align at exactly
- a page boundary to make life easier for apriori. */
- . = ALIGN(4096);
- /* Exception handling */
- .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) }
- .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
- /* Thread Local Storage sections */
- .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
- .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
- .preinit_array :
- {
- KEEP (*(.preinit_array))
- }
- .init_array :
- {
- KEEP (*(SORT(.init_array.*)))
- KEEP (*(.init_array))
- }
- .fini_array :
- {
- KEEP (*(.fini_array))
- KEEP (*(SORT(.fini_array.*)))
- }
- .ctors :
- {
- /* gcc uses crtbegin.o to find the start of
- the constructors, so we make sure it is
- first. Because this is a wildcard, it
- doesn't matter if the user does not
- actually link against crtbegin.o; the
- linker won't look for a file to match a
- wildcard. The wildcard also means that it
- doesn't matter which directory crtbegin.o
- is in. */
- KEEP (*crtbegin*.o(.ctors))
- /* We don't want to include the .ctor section from
- the crtend.o file until after the sorted ctors.
- The .ctor section from the crtend file contains the
- end of ctors marker and it must be last */
- KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors))
- KEEP (*(SORT(.ctors.*)))
- KEEP (*(.ctors))
- }
- .dtors :
- {
- KEEP (*crtbegin*.o(.dtors))
- KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors))
- KEEP (*(SORT(.dtors.*)))
- KEEP (*(.dtors))
- }
- .jcr : { KEEP (*(.jcr)) }
- .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
- .dynamic : { *(.dynamic) }
- .got : { *(.got.plt) *(.got) }
- .data :
- {
- __data_start = . ;
- *(.data .data.* .gnu.linkonce.d.*)
- KEEP (*(.gnu.linkonce.d.*personality*))
- SORT(CONSTRUCTORS)
- }
- .data1 : { *(.data1) }
- _edata = .; PROVIDE (edata = .);
- __bss_start = .;
- __bss_start__ = .;
- .bss :
- {
- *(.dynbss)
- *(.bss .bss.* .gnu.linkonce.b.*)
- *(COMMON)
- /* Align here to ensure that the .bss section occupies space up to
- _end. Align after .bss to ensure correct alignment even if the
- .bss section disappears because there are no input sections.
- FIXME: Why do we need it? When there is no .bss section, we don't
- pad the .data section. */
- . = ALIGN(. != 0 ? 32 / 8 : 1);
- }
- _bss_end__ = . ; __bss_end__ = . ;
- . = ALIGN(32 / 8);
- . = ALIGN(32 / 8);
- __end__ = . ;
- _end = .; PROVIDE (end = .);
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
- /* Adding the word ABSOLUTE below, so that the _stack below won't float
- into a random section. If _stack is not absolutely with .stack section,
- we saw that sometimes _stack got inserted into the .debug_frame section
- because it's processed by the linker at that moment. As a result, _stack
- symbol will get wrongly moved and gelf_update_symshndx() will return
- invalid data. */
- .stack 0x80000 :
- {
- _stack = ABSOLUTE(.);
- *(.stack)
- }
- .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }
- .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) }
- /DISCARD/ : { *(.note.GNU-stack) }
-}
diff --git a/core/base_rules.mk b/core/base_rules.mk
index ecb9c30..65679a9 100644
--- a/core/base_rules.mk
+++ b/core/base_rules.mk
@@ -82,8 +82,6 @@
$(warning unusual tags $(LOCAL_MODULE_TAGS) on $(LOCAL_MODULE) at $(LOCAL_PATH))
endif
-
-
# Add implicit tags.
#
# If the local directory or one of its parents contains a MODULE_LICENSE_GPL
diff --git a/core/binary.mk b/core/binary.mk
index 04e0128..e10ec9c 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -5,30 +5,20 @@
## The list of object files is exported in $(all_objects).
###########################################################
-######################################
-## Sanity check for LOCAL_NDK_VERSION
-######################################
my_ndk_version_root :=
-ifdef LOCAL_NDK_VERSION
+ifdef LOCAL_SDK_VERSION
+ ifdef LOCAL_NDK_VERSION
+ $(error $(LOCAL_PATH): LOCAL_NDK_VERSION is now retired.)
+ endif
ifdef LOCAL_IS_HOST_MODULE
- $(error $(LOCAL_PATH): LOCAL_NDK_VERSION can not be used in host module)
+ $(error $(LOCAL_PATH): LOCAL_SDK_VERSION can not be used in host module)
endif
ifneq ($(filter-out SHARED_LIBRARIES STATIC_LIBRARIES,$(LOCAL_MODULE_CLASS)),)
- $(error $(LOCAL_PATH): LOCAL_NDK_VERSION can only be used to build target shared/static libraries, \
+ $(error $(LOCAL_PATH): NDK can only be used to build target shared/static libraries, \
while your module is of class $(LOCAL_MODULE_CLASS))
endif
- ifeq ($(filter $(LOCAL_NDK_VERSION),$(TARGET_AVAILABLE_NDK_VERSIONS)),)
- $(error $(LOCAL_PATH): Invalid LOCAL_NDK_VERSION '$(LOCAL_NDK_VERSION)' \
- Choices are $(TARGET_AVAILABLE_NDK_VERSIONS))
- endif
- ifndef LOCAL_SDK_VERSION
- $(error $(LOCAL_PATH): LOCAL_NDK_VERSION must be defined with LOCAL_SDK_VERSION)
- endif
- my_ndk_source_root := $(HISTORICAL_NDK_VERSIONS_ROOT)/android-ndk-r$(LOCAL_NDK_VERSION)/sources
- my_ndk_version_root := $(HISTORICAL_NDK_VERSIONS_ROOT)/android-ndk-r$(LOCAL_NDK_VERSION)/platforms/android-$(LOCAL_SDK_VERSION)/arch-$(TARGET_ARCH)
- ifeq ($(wildcard $(my_ndk_version_root)),)
- $(error $(LOCAL_PATH): ndk version root does not exist: $(my_ndk_version_root))
- endif
+ my_ndk_source_root := $(HISTORICAL_NDK_VERSIONS_ROOT)/current/sources
+ my_ndk_version_root := $(HISTORICAL_NDK_VERSIONS_ROOT)/current/platforms/android-$(LOCAL_SDK_VERSION)/arch-$(TARGET_ARCH)
# Set up the NDK stl variant. Starting from NDK-r5 the c++ stl resides in a separate location.
# See ndk/docs/CPLUSPLUS-SUPPORT.html
@@ -40,7 +30,7 @@
LOCAL_NDK_STL_VARIANT := system
endif
ifneq (1,$(words $(filter system stlport_static stlport_shared gnustl_static, $(LOCAL_NDK_STL_VARIANT))))
- $(error $(LOCAL_PATH): Unkown LOCAL_NDK_STL_VARIANT $(LOCAL_NDK_STL_VARIANT))
+ $(error $(LOCAL_PATH): Unknown LOCAL_NDK_STL_VARIANT $(LOCAL_NDK_STL_VARIANT))
endif
ifeq (system,$(LOCAL_NDK_STL_VARIANT))
my_ndk_stl_include_path := $(my_ndk_source_root)/cxx-stl/system/include
@@ -58,7 +48,7 @@
# LOCAL_NDK_STL_VARIANT is gnustl_static
my_ndk_stl_include_path := $(my_ndk_source_root)/cxx-stl/gnu-libstdc++/libs/$(TARGET_CPU_ABI)/include \
$(my_ndk_source_root)/cxx-stl/gnu-libstdc++/include
- my_ndk_stl_static_lib := $(my_ndk_source_root)/cxx-stl/gnu-libstdc++/libs/$(TARGET_CPU_ABI)/libstdc++.a
+ my_ndk_stl_static_lib := $(my_ndk_source_root)/cxx-stl/gnu-libstdc++/libs/$(TARGET_CPU_ABI)/libgnustl_static.a
endif
endif
endif
@@ -106,7 +96,7 @@
LOCAL_WHOLE_STATIC_LIBRARIES := $(call insert-liblog,$(LOCAL_WHOLE_STATIC_LIBRARIES))
endif
-ifdef LOCAL_NDK_VERSION
+ifdef LOCAL_SDK_VERSION
# Get the list of INSTALLED libraries as module names.
# We can not compute the full path of the LOCAL_SHARED_LIBRARIES for
# they may cusomize their install path with LOCAL_MODULE_PATH
@@ -132,6 +122,11 @@
LOCAL_STATIC_LIBRARIES += $(ADDRESS_SANITIZER_CONFIG_EXTRA_STATIC_LIBRARIES)
endif
+# Add in libcompiler-rt for all regular device builds
+ifeq (,$(LOCAL_SDK_VERSION)$(LOCAL_IS_HOST_MODULE)$(BUILD_TINY_ANDROID))
+ LOCAL_STATIC_LIBRARIES += $(COMPILER_RT_CONFIG_EXTRA_STATIC_LIBRARIES)
+endif
+
my_compiler_dependencies :=
ifeq ($(strip $(LOCAL_CLANG)),true)
LOCAL_CFLAGS += $(CLANG_CONFIG_EXTRA_CFLAGS)
@@ -166,31 +161,29 @@
###########################################################
## Define PRIVATE_ variables from global vars
###########################################################
-ifeq ($(strip $(LOCAL_CLANG)),true)
-my_target_global_cflags := $(TARGET_GLOBAL_CLANG_FLAGS)
-else
-my_target_global_cflags := $(TARGET_GLOBAL_CFLAGS)
-endif
-
-ifdef LOCAL_NDK_VERSION
+ifdef LOCAL_SDK_VERSION
my_target_project_includes :=
my_target_c_includes := $(my_ndk_stl_include_path) $(my_ndk_version_root)/usr/include
-# TODO: more reliable way to remove platform stuff.
-my_target_global_cflags := $(filter-out -include -I system/%, $(my_target_global_cflags))
-my_target_global_cppflags := $(filter-out -include -I system/%, $(TARGET_GLOBAL_CPPFLAGS))
+
+# filter out including of AndroidConfig.h in system/core.
+TARGET_GLOBAL_CFLAGS_NO_ANDCONF ?= $(subst $(TARGET_ANDROID_CONFIG_CFLAGS),,\
+ $(TARGET_GLOBAL_CFLAGS))
+my_target_global_cflags := $(TARGET_GLOBAL_CFLAGS_NO_ANDCONF)
else
my_target_project_includes := $(TARGET_PROJECT_INCLUDES)
my_target_c_includes := $(TARGET_C_INCLUDES)
-my_target_global_cflags := $(my_target_global_cflags)
-my_target_global_cppflags := $(TARGET_GLOBAL_CPPFLAGS)
ifeq ($(strip $(LOCAL_CLANG)),true)
- my_target_c_includes += $(CLANG_CONFIG_EXTRA_TARGET_C_INCLUDES)
-endif
-endif
+my_target_c_includes += $(CLANG_CONFIG_EXTRA_TARGET_C_INCLUDES)
+my_target_global_cflags := $(TARGET_GLOBAL_CLANG_FLAGS)
+else
+my_target_global_cflags := $(TARGET_GLOBAL_CFLAGS)
+endif # LOCAL_CLANG
+endif # LOCAL_SDK_VERSION
+
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_PROJECT_INCLUDES := $(my_target_project_includes)
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_C_INCLUDES := $(my_target_c_includes)
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_GLOBAL_CFLAGS := $(my_target_global_cflags)
-$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_GLOBAL_CPPFLAGS := $(my_target_global_cppflags)
+$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_GLOBAL_CPPFLAGS := $(TARGET_GLOBAL_CPPFLAGS)
###########################################################
## Define PRIVATE_ variables used by multiple module types
@@ -306,8 +299,8 @@
proto_generated_headers := $(patsubst %.pb.cc,%.pb.h, $(proto_generated_cc_sources))
$(proto_generated_headers): $(proto_generated_cc_sources_dir)/%.pb.h: $(proto_generated_cc_sources_dir)/%.pb.cc
-$(proto_generated_cc_sources): PRIVATE_ARM_MODE := $(normal_objects_mode)
-$(proto_generated_cc_sources): PRIVATE_ARM_CFLAGS := $(normal_objects_cflags)
+$(proto_generated_objects): PRIVATE_ARM_MODE := $(normal_objects_mode)
+$(proto_generated_objects): PRIVATE_ARM_CFLAGS := $(normal_objects_cflags)
$(proto_generated_objects): $(proto_generated_cc_sources_dir)/%.o: $(proto_generated_cc_sources_dir)/%.cc $(proto_generated_headers)
$(transform-$(PRIVATE_HOST)cpp-to-o)
-include $(proto_generated_objects:%.o=%.P)
@@ -566,7 +559,7 @@
LOCAL_C_INCLUDES += $(TOPDIR)$(LOCAL_PATH) $(intermediates)
-ifndef LOCAL_NDK_VERSION
+ifndef LOCAL_SDK_VERSION
LOCAL_C_INCLUDES += $(JNI_H_INCLUDE)
endif
@@ -611,7 +604,7 @@
so_suffix := $($(my_prefix)SHLIB_SUFFIX)
a_suffix := $($(my_prefix)STATIC_LIB_SUFFIX)
-ifdef LOCAL_NDK_VERSION
+ifdef LOCAL_SDK_VERSION
built_shared_libraries := \
$(addprefix $($(my_prefix)OUT_INTERMEDIATE_LIBRARIES)/, \
$(addsuffix $(so_suffix), \
@@ -637,7 +630,7 @@
$(call intermediates-dir-for, \
STATIC_LIBRARIES,$(lib),$(LOCAL_IS_HOST_MODULE))/$(lib)$(a_suffix))
-ifdef LOCAL_NDK_VERSION
+ifdef LOCAL_SDK_VERSION
built_static_libraries += $(my_ndk_stl_static_lib)
endif
diff --git a/core/build_id.mk b/core/build_id.mk
index e954794..40bb35d 100644
--- a/core/build_id.mk
+++ b/core/build_id.mk
@@ -23,7 +23,7 @@
# (like "TC1-RC5"). It must be a single word, and is
# capitalized by convention.
#
-BUILD_ID := OPENMASTER
+BUILD_ID := MASTER
# DISPLAY_BUILD_NUMBER should only be set for development branches,
# If set, the BUILD_NUMBER (cl) is appended to the BUILD_ID for
diff --git a/core/clear_vars.mk b/core/clear_vars.mk
index 3137152..a564b3c 100644
--- a/core/clear_vars.mk
+++ b/core/clear_vars.mk
@@ -97,7 +97,6 @@
LOCAL_CERTIFICATE:=
LOCAL_SDK_VERSION:=
LOCAL_SDK_RES_VERSION:=
-LOCAL_NDK_VERSION:=
LOCAL_NDK_STL_VARIANT:=
LOCAL_NO_EMMA_INSTRUMENT:=
LOCAL_NO_EMMA_COMPILE:=
@@ -125,6 +124,7 @@
LOCAL_CLANG:=
LOCAL_ADDRESS_SANITIZER:=
LOCAL_JAR_EXCLUDE_FILES:=
+LOCAL_LINT_FLAGS:=
LOCAL_SOURCE_FILES_ALL_GENERATED:= # '',true
# Trim MAKEFILE_LIST so that $(call my-dir) doesn't need to
diff --git a/core/combo/HOST_darwin-x86.mk b/core/combo/HOST_darwin-x86.mk
index 85bb2cd..9e14b51 100644
--- a/core/combo/HOST_darwin-x86.mk
+++ b/core/combo/HOST_darwin-x86.mk
@@ -29,6 +29,11 @@
HOST_GLOBAL_LDFLAGS += -m32
endif # BUILD_HOST_64bit
+ifneq ($(strip $(BUILD_HOST_static)),)
+# Statically-linked binaries are desirable for sandboxed environment
+HOST_GLOBAL_LDFLAGS += -static
+endif # BUILD_HOST_static
+
build_mac_version := $(shell sw_vers -productVersion)
mac_sdk_version := 10.6
mac_sdk_root := /Developer/SDKs/MacOSX$(mac_sdk_version).sdk
@@ -44,10 +49,10 @@
mac_sdk_root := $(recent_xcode4_mac_sdk_root)
endif
-HOST_GLOBAL_CFLAGS += -isysroot $(mac_sdk_root) -mmacosx-version-min=$(mac_sdk_version)
-HOST_GLOBAL_LDFLAGS += -isysroot $(mac_sdk_root) -mmacosx-version-min=$(mac_sdk_version)
+HOST_GLOBAL_CFLAGS += -isysroot $(mac_sdk_root) -mmacosx-version-min=$(mac_sdk_version) -DMACOSX_DEPLOYMENT_TARGET=$(mac_sdk_version)
+HOST_GLOBAL_LDFLAGS += -isysroot $(mac_sdk_root) -Wl,-syslibroot,$(mac_sdk_root) -mmacosx-version-min=$(mac_sdk_version)
-HOST_GLOBAL_CFLAGS += -fPIC
+HOST_GLOBAL_CFLAGS += -fPIC -funwind-tables
HOST_NO_UNDEFINED_LDFLAGS := -Wl,-undefined,error
HOST_CC := gcc
@@ -59,8 +64,10 @@
HOST_SHLIB_SUFFIX := .dylib
HOST_JNILIB_SUFFIX := .jnilib
+ifeq (,$(TARGET_BUILD_APPS))
HOST_GLOBAL_CFLAGS += \
- -include $(call select-android-config-h,darwin-x86)
+ -include $(call select-android-config-h,darwin-x86)
+endif
ifneq ($(filter 10.7 10.7.% 10.8 10.8.%, $(build_mac_version)),)
HOST_RUN_RANLIB_AFTER_COPYING := false
else
@@ -71,31 +78,13 @@
HOST_CUSTOM_LD_COMMAND := true
-# Workaround for lack of "-Wl,--whole-archive" in MacOS's linker.
-define _darwin-extract-and-include-single-whole-static-lib
-@echo "preparing StaticLib: $(PRIVATE_MODULE) [including $(1)]"
-$(hide) ldir=$(PRIVATE_INTERMEDIATES_DIR)/WHOLE/$(basename $(notdir $(1)))_objs;\
- mkdir -p $$ldir; \
- for f in `$(HOST_AR) t $(1)`; do \
- $(HOST_AR) p $(1) $$f > $$ldir/$$f; \
- done ;
-
-endef
-
-define darwin-extract-and-include-whole-static-libs
-$(if $(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES), $(hide) rm -rf $(PRIVATE_INTERMEDIATES_DIR)/WHOLE)
-$(foreach lib,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES), \
- $(call _darwin-extract-and-include-single-whole-static-lib, $(lib)))
-endef
-
define transform-host-o-to-shared-lib-inner
-$(call darwin-extract-and-include-whole-static-libs)
$(hide) $(PRIVATE_CXX) \
-dynamiclib -single_module -read_only_relocs suppress \
$(HOST_GLOBAL_LD_DIRS) \
$(HOST_GLOBAL_LDFLAGS) \
$(PRIVATE_ALL_OBJECTS) \
- $(if $(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES), `find $(PRIVATE_INTERMEDIATES_DIR)/WHOLE -name '*.o' 2>/dev/null`) \
+ $(addprefix -force_load , $(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \
$(call normalize-host-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \
$(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \
$(call normalize-host-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \
diff --git a/core/combo/HOST_linux-x86.mk b/core/combo/HOST_linux-x86.mk
index a4da5ce..cb5f004 100644
--- a/core/combo/HOST_linux-x86.mk
+++ b/core/combo/HOST_linux-x86.mk
@@ -52,9 +52,16 @@
HOST_GLOBAL_LDFLAGS += -m32
endif # BUILD_HOST_64bit
+ifneq ($(strip $(BUILD_HOST_static)),)
+# Statically-linked binaries are desirable for sandboxed environment
+HOST_GLOBAL_LDFLAGS += -static
+endif # BUILD_HOST_static
+
HOST_GLOBAL_CFLAGS += -fPIC
+ifeq (,$(TARGET_BUILD_APPS))
HOST_GLOBAL_CFLAGS += \
-include $(call select-android-config-h,linux-x86)
+endif
# Disable new longjmp in glibc 2.11 and later. See bug 2967937.
HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
diff --git a/core/combo/HOST_windows-x86.mk b/core/combo/HOST_windows-x86.mk
index fe4bd66..85bc1e0 100644
--- a/core/combo/HOST_windows-x86.mk
+++ b/core/combo/HOST_windows-x86.mk
@@ -46,6 +46,10 @@
HOST_GLOBAL_CFLAGS += -include $(call select-android-config-h,windows)
HOST_GLOBAL_LDFLAGS += --enable-stdcall-fixup
+ifneq ($(strip $(BUILD_HOST_static)),)
+# Statically-linked binaries are desirable for sandboxed environment
+HOST_GLOBAL_LDFLAGS += -static
+endif # BUILD_HOST_static
# when building under Cygwin, ensure that we use Mingw compilation by default.
# you can disable this (i.e. to generate Cygwin executables) by defining the
diff --git a/core/combo/TARGET_linux-arm.mk b/core/combo/TARGET_linux-arm.mk
index 14c3d28..d47f95f 100644
--- a/core/combo/TARGET_linux-arm.mk
+++ b/core/combo/TARGET_linux-arm.mk
@@ -60,7 +60,7 @@
TARGET_STRIP_COMMAND = $(TARGET_STRIP) --strip-all $< -o $@
else
TARGET_STRIP_COMMAND = $(TARGET_STRIP) --strip-all $< -o $@ && \
- $(TARGET_OBJCOPY) --add-gnu-debuglink=$< $@
+ $(TARGET_OBJCOPY) --add-gnu-debuglink=$< $@
endif
endif
@@ -98,9 +98,6 @@
TARGET_thumb_CFLAGS += -marm -fno-omit-frame-pointer
endif
-android_config_h := $(call select-android-config-h,linux-arm)
-arch_include_dir := $(dir $(android_config_h))
-
TARGET_GLOBAL_CFLAGS += \
-msoft-float -fpic -fPIE \
-ffunction-sections \
@@ -109,10 +106,13 @@
-fstack-protector \
-Wa,--noexecstack \
-Werror=format-security \
+ -D_FORTIFY_SOURCE=1 \
-fno-short-enums \
- $(arch_variant_cflags) \
- -include $(android_config_h) \
- -I $(arch_include_dir)
+ $(arch_variant_cflags)
+
+android_config_h := $(call select-android-config-h,linux-arm)
+TARGET_ANDROID_CONFIG_CFLAGS := -include $(android_config_h) -I $(dir $(android_config_h))
+TARGET_GLOBAL_CFLAGS += $(TARGET_ANDROID_CONFIG_CFLAGS)
# This warning causes dalvik not to build with gcc 4.6.x and -Werror.
# We cannot turn it off blindly since the option is not available
@@ -137,6 +137,7 @@
-Wl,-z,noexecstack \
-Wl,-z,relro \
-Wl,-z,now \
+ -Wl,--warn-shared-textrel \
-Wl,--icf=safe \
$(arch_variant_ldflags)
@@ -145,9 +146,9 @@
# since sometimes thumb-interwork appears to be default), we
# specifically disable when thumb support is unavailable.
ifeq ($(ARCH_ARM_HAVE_THUMB_SUPPORT),true)
-TARGET_GLOBAL_CFLAGS += -mthumb-interwork
+TARGET_GLOBAL_CFLAGS += -mthumb-interwork
else
-TARGET_GLOBAL_CFLAGS += -mno-thumb-interwork
+TARGET_GLOBAL_CFLAGS += -mno-thumb-interwork
endif
TARGET_GLOBAL_CPPFLAGS += -fvisibility-inlines-hidden
@@ -228,12 +229,12 @@
$(libm_root)/include/arm \
$(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_STATIC_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_static.o
+TARGET_CRTBEGIN_DYNAMIC_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_dynamic.o
+TARGET_CRTEND_O := $(TARGET_OUT_INTERMEDIATE_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_CRTBEGIN_SO_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_so.o
+TARGET_CRTEND_SO_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtend_so.o
TARGET_STRIP_MODULE:=true
@@ -272,7 +273,7 @@
define transform-o-to-executable-inner
$(hide) $(PRIVATE_CXX) -nostdlib -Bdynamic -fPIE -pie \
-Wl,-dynamic-linker,/system/bin/linker \
- -Wl,--gc-sections \
+ -Wl,--gc-sections \
-Wl,-z,nocopyreloc \
-o $@ \
$(TARGET_GLOBAL_LD_DIRS) \
@@ -295,7 +296,7 @@
define transform-o-to-static-executable-inner
$(hide) $(PRIVATE_CXX) -nostdlib -Bstatic \
- -Wl,--gc-sections \
+ -Wl,--gc-sections \
-o $@ \
$(TARGET_GLOBAL_LD_DIRS) \
$(if $(filter true,$(PRIVATE_NO_CRT)),,$(TARGET_CRTBEGIN_STATIC_O)) \
diff --git a/core/combo/TARGET_linux-mips.mk b/core/combo/TARGET_linux-mips.mk
index a3a891e..0cf7964 100644
--- a/core/combo/TARGET_linux-mips.mk
+++ b/core/combo/TARGET_linux-mips.mk
@@ -60,7 +60,7 @@
TARGET_STRIP_COMMAND = $(TARGET_STRIP) --strip-all $< -o $@
else
TARGET_STRIP_COMMAND = $(TARGET_STRIP) --strip-all $< -o $@ && \
- $(TARGET_OBJCOPY) --add-gnu-debuglink=$< $@
+ $(TARGET_OBJCOPY) --add-gnu-debuglink=$< $@
endif
endif
@@ -78,9 +78,6 @@
TARGET_mips_CFLAGS += -fno-omit-frame-pointer
endif
-android_config_h := $(call select-android-config-h,linux-mips)
-arch_include_dir := $(dir $(android_config_h))
-
TARGET_GLOBAL_CFLAGS += \
$(TARGET_mips_CFLAGS) \
-Ulinux -U__unix -U__unix__ -Umips \
@@ -89,9 +86,11 @@
-fdata-sections \
-funwind-tables \
-Werror=format-security \
- $(arch_variant_cflags) \
- -include $(android_config_h) \
- -I $(arch_include_dir)
+ $(arch_variant_cflags)
+
+android_config_h := $(call select-android-config-h,linux-mips)
+TARGET_ANDROID_CONFIG_CFLAGS := -include $(android_config_h) -I $(dir $(android_config_h))
+TARGET_GLOBAL_CFLAGS += $(TARGET_ANDROID_CONFIG_CFLAGS)
# This warning causes dalvik not to build with gcc 4.6.x and -Werror.
# We cannot turn it off blindly since the option is not available
@@ -202,12 +201,12 @@
$(libm_root)/include/mips \
$(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_STATIC_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_static.o
+TARGET_CRTBEGIN_DYNAMIC_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_dynamic.o
+TARGET_CRTEND_O := $(TARGET_OUT_INTERMEDIATE_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_CRTBEGIN_SO_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_so.o
+TARGET_CRTEND_SO_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtend_so.o
TARGET_STRIP_MODULE:=true
diff --git a/core/combo/TARGET_linux-x86.mk b/core/combo/TARGET_linux-x86.mk
index 9c0f7b9..396bc3a 100644
--- a/core/combo/TARGET_linux-x86.mk
+++ b/core/combo/TARGET_linux-x86.mk
@@ -93,8 +93,11 @@
-fno-short-enums \
-fstrict-aliasing \
-funswitch-loops \
- -funwind-tables \
- -include $(call select-android-config-h,target_linux-x86)
+ -funwind-tables
+
+android_config_h := $(call select-android-config-h,target_linux-x86)
+TARGET_ANDROID_CONFIG_CFLAGS := -include $(android_config_h) -I $(dir $(android_config_h))
+TARGET_GLOBAL_CFLAGS += $(TARGET_ANDROID_CONFIG_CFLAGS)
# XXX: Not sure this is still needed. Must check with our toolchains.
TARGET_GLOBAL_CPPFLAGS += \
@@ -151,12 +154,12 @@
$(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_STATIC_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_static.o
+TARGET_CRTBEGIN_DYNAMIC_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_dynamic.o
+TARGET_CRTEND_O := $(TARGET_OUT_INTERMEDIATE_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_CRTBEGIN_SO_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_so.o
+TARGET_CRTEND_SO_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtend_so.o
TARGET_STRIP_MODULE:=true
@@ -185,7 +188,6 @@
$(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_SO_O))
endef
-
# Add -fuse-ld=bfd because ld.gold doesn't support "--copy-dt-needed-entries".
define transform-o-to-executable-inner
$(hide) $(PRIVATE_CXX) \
diff --git a/core/config.mk b/core/config.mk
index 03e4245..aa4e7f1 100644
--- a/core/config.mk
+++ b/core/config.mk
@@ -298,6 +298,7 @@
LLVM_RS_LINK := $(HOST_OUT_EXECUTABLES)/llvm-rs-link$(HOST_EXECUTABLE_SUFFIX)
DEXOPT := $(HOST_OUT_EXECUTABLES)/dexopt$(HOST_EXECUTABLE_SUFFIX)
DEXPREOPT := dalvik/tools/dex-preopt
+LINT := prebuilts/sdk/tools/lint
# ACP is always for the build OS, not for the host OS
ACP := $(BUILD_OUT_EXECUTABLES)/acp$(BUILD_EXECUTABLE_SUFFIX)
@@ -322,13 +323,6 @@
COLUMN:= column
endif
-dir := $(shell uname)
-ifeq ($(HOST_OS),windows)
-dir := $(HOST_OS)
-endif
-ifeq ($(HOST_OS),darwin)
-dir := $(HOST_OS)-$(HOST_ARCH)
-endif
OLD_FLEX := prebuilts/misc/$(HOST_PREBUILT_TAG)/flex/flex-2.5.4a$(HOST_EXECUTABLE_SUFFIX)
ifeq ($(HOST_OS),darwin)
@@ -439,10 +433,6 @@
$(patsubst $(HISTORICAL_SDK_VERSIONS_ROOT)/%/android.jar,%, \
$(wildcard $(HISTORICAL_SDK_VERSIONS_ROOT)/*/android.jar)))
-TARGET_AVAILABLE_NDK_VERSIONS := $(call numerically_sort,\
- $(patsubst $(HISTORICAL_NDK_VERSIONS_ROOT)/android-ndk-r%,%, \
- $(wildcard $(HISTORICAL_NDK_VERSIONS_ROOT)/android-ndk-r*)))
-
INTERNAL_PLATFORM_API_FILE := $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/public_api.txt
# This is the standard way to name a directory containing prebuilt target
diff --git a/core/definitions.mk b/core/definitions.mk
index 1508cc6..0f9dc30 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -1067,11 +1067,13 @@
endef
# Split long argument list into smaller groups and call the command repeatedly
+# Call the command at least once even if there are no arguments, as otherwise
+# the output file won't be created.
#
# $(1): the command without arguments
# $(2): the arguments
define split-long-arguments
-$(call _concat-if-arg2-not-empty,$(1),$(wordlist 1,500,$(2)))
+$(hide) $(1) $(wordlist 1,500,$(2))
$(call _concat-if-arg2-not-empty,$(1),$(wordlist 501,1000,$(2)))
$(call _concat-if-arg2-not-empty,$(1),$(wordlist 1001,1500,$(2)))
$(call _concat-if-arg2-not-empty,$(1),$(wordlist 1501,2000,$(2)))
@@ -1720,6 +1722,18 @@
$$(copy-file-to-target)
endef
+# Copies many files.
+# $(1): The files to copy. Each entry is a ':' separated src:dst pair
+# Evaluates to the list of the dst files (ie suitable for a dependency list)
+define copy-many-files
+$(foreach f, $(1), $(strip \
+ $(eval _cmf_tuple := $(subst :, ,$(f))) \
+ $(eval _cmf_src := $(word 1,$(_cmf_tuple))) \
+ $(eval _cmf_dest := $(word 2,$(_cmf_tuple))) \
+ $(eval $(call copy-one-file,$(_cmf_src),$(_cmf_dest))) \
+ $(_cmf_dest)))
+endef
+
# Copy the file only if it's a well-formed xml file. For use via $(eval).
# $(1): source file
# $(2): destination file, must end with .xml.
diff --git a/core/envsetup.mk b/core/envsetup.mk
index 97b4467..2ad6801 100644
--- a/core/envsetup.mk
+++ b/core/envsetup.mk
@@ -182,7 +182,6 @@
HOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj
HOST_OUT_HEADERS:= $(HOST_OUT_INTERMEDIATES)/include
HOST_OUT_INTERMEDIATE_LIBRARIES := $(HOST_OUT_INTERMEDIATES)/lib
-HOST_OUT_STATIC_LIBRARIES := $(HOST_OUT_INTERMEDIATE_LIBRARIES)
HOST_OUT_NOTICE_FILES:=$(HOST_OUT_INTERMEDIATES)/NOTICE_FILES
HOST_OUT_COMMON_INTERMEDIATES := $(HOST_COMMON_OUT_ROOT)/obj
@@ -200,7 +199,6 @@
TARGET_OUT_KEYLAYOUT := $(TARGET_OUT)/usr/keylayout
TARGET_OUT_KEYCHARS := $(TARGET_OUT)/usr/keychars
TARGET_OUT_ETC := $(TARGET_OUT)/etc
-TARGET_OUT_STATIC_LIBRARIES:= $(TARGET_OUT_INTERMEDIATES)/lib
TARGET_OUT_NOTICE_FILES:=$(TARGET_OUT_INTERMEDIATES)/NOTICE_FILES
TARGET_OUT_FAKE := $(PRODUCT_OUT)/fake_packages
@@ -212,7 +210,6 @@
TARGET_OUT_DATA_KEYLAYOUT := $(TARGET_OUT_KEYLAYOUT)
TARGET_OUT_DATA_KEYCHARS := $(TARGET_OUT_KEYCHARS)
TARGET_OUT_DATA_ETC := $(TARGET_OUT_ETC)
-TARGET_OUT_DATA_STATIC_LIBRARIES:= $(TARGET_OUT_STATIC_LIBRARIES)
TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest
TARGET_OUT_CACHE := $(PRODUCT_OUT)/cache
diff --git a/core/java.mk b/core/java.mk
index 9a4f3a2..4d85601 100644
--- a/core/java.mk
+++ b/core/java.mk
@@ -76,6 +76,21 @@
intermediates.COMMON := $(call local-intermediates-dir,COMMON)
# Emma source code coverage
+ifeq ($(EMMA_FULL_APP_INSTRUMENT),true)
+ # doing a full emma instrument here, i.e. all app packages instrumented
+ EMMA_INSTRUMENT := true
+ # do not instrument modules that are not app packages
+ ifneq ($(LOCAL_MODULE_CLASS),APPS)
+ LOCAL_NO_EMMA_INSTRUMENT := true
+ LOCAL_NO_EMMA_COMPILE := true
+ endif
+ # do not instrument modules that are marked tests
+ ifeq ($(LOCAL_MODULE_TAGS),tests)
+ LOCAL_NO_EMMA_INSTRUMENT := true
+ LOCAL_NO_EMMA_COMPILE := true
+ endif
+endif
+
ifneq ($(EMMA_INSTRUMENT),true)
LOCAL_NO_EMMA_INSTRUMENT := true
LOCAL_NO_EMMA_COMPILE := true
diff --git a/core/llvm_config.mk b/core/llvm_config.mk
index 4145028..6d08e78 100644
--- a/core/llvm_config.mk
+++ b/core/llvm_config.mk
@@ -67,7 +67,18 @@
$(call clang-flags-subst,-march=armv5te,-march=armv5t)
$(call clang-flags-subst,-march=armv5e,-march=armv5)
+# clang does not support -Wno-psabi and -Wno-unused-but-set-variable
+$(call clang-flags-subst,-Wno-psabi,)
+$(call clang-flags-subst,-Wno-unused-but-set-variable,)
+
+
ADDRESS_SANITIZER_CONFIG_EXTRA_CFLAGS := -faddress-sanitizer
ADDRESS_SANITIZER_CONFIG_EXTRA_LDFLAGS := -Wl,-u,__asan_preinit
ADDRESS_SANITIZER_CONFIG_EXTRA_SHARED_LIBRARIES := libdl libasan_preload
ADDRESS_SANITIZER_CONFIG_EXTRA_STATIC_LIBRARIES := libasan
+
+# This allows us to use the superset of functionality that compiler-rt
+# provides to Clang (for supporting features like -ftrapv).
+ifneq ($(TARGET_ARCH),mips)
+COMPILER_RT_CONFIG_EXTRA_STATIC_LIBRARIES := libcompiler-rt-extras
+endif
diff --git a/core/main.mk b/core/main.mk
index 874bb0b..6b766fb 100644
--- a/core/main.mk
+++ b/core/main.mk
@@ -615,9 +615,18 @@
# When modules are tagged with debug eng or tests, they are installed
# for those variants regardless of what the product spec says.
-debug_MODULES := $(sort $(call get-tagged-modules,debug))
-eng_MODULES := $(sort $(call get-tagged-modules,eng))
-tests_MODULES := $(sort $(call get-tagged-modules,tests))
+debug_MODULES := $(sort \
+ $(call get-tagged-modules,debug) \
+ $(call module-installed-files, $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES_DEBUG)) \
+ )
+eng_MODULES := $(sort \
+ $(call get-tagged-modules,eng) \
+ $(call module-installed-files, $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES_ENG)) \
+ )
+tests_MODULES := $(sort \
+ $(call get-tagged-modules,tests) \
+ $(call module-installed-files, $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES_TESTS)) \
+ )
# TODO: Remove the 3 places in the tree that use ALL_DEFAULT_INSTALLED_MODULES
# and get rid of it from this list.
@@ -656,10 +665,20 @@
modules_to_install := \
$(filter-out $(target_gnu_MODULES),$(modules_to_install))
- # Ensure every module listed in PRODUCT_PACKAGES gets something installed
+ # Ensure every module listed in PRODUCT_PACKAGES* gets something installed
+ # TODO: Should we do this for all builds and not just the sdk?
$(foreach m, $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES), \
- $(if $(strip $(ALL_MODULES.$(m).INSTALLED)),,\
- $(error $(ALL_MODULES.$(m).MAKEFILE): Module '$(m)' in PRODUCT_PACKAGES has nothing to install!)))
+ $(if $(strip $(ALL_MODULES.$(m).INSTALLED)),,\
+ $(error $(ALL_MODULES.$(m).MAKEFILE): Module '$(m)' in PRODUCT_PACKAGES has nothing to install!)))
+ $(foreach m, $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES_DEBUG), \
+ $(if $(strip $(ALL_MODULES.$(m).INSTALLED)),,\
+ $(error $(ALL_MODULES.$(m).MAKEFILE): Module '$(m)' in PRODUCT_PACKAGES_DEBUG has nothing to install!)))
+ $(foreach m, $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES_ENG), \
+ $(if $(strip $(ALL_MODULES.$(m).INSTALLED)),,\
+ $(error $(ALL_MODULES.$(m).MAKEFILE): Module '$(m)' in PRODUCT_PACKAGES_ENG has nothing to install!)))
+ $(foreach m, $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES_TESTS), \
+ $(if $(strip $(ALL_MODULES.$(m).INSTALLED)),,\
+ $(error $(ALL_MODULES.$(m).MAKEFILE): Module '$(m)' in PRODUCT_PACKAGES_TESTS has nothing to install!)))
endif
# Install all of the host modules
@@ -724,6 +743,9 @@
.PHONY: factory_ramdisk
factory_ramdisk: $(INSTALLED_FACTORY_RAMDISK_TARGET)
+.PHONY: factory_bundle
+factory_bundle: $(INSTALLED_FACTORY_BUNDLE_TARGET)
+
.PHONY: systemtarball
systemtarball: $(INSTALLED_SYSTEMTARBALL_TARGET)
@@ -763,10 +785,6 @@
# dist_files only for putting your library into the dist directory with a full build.
.PHONY: dist_files
-ifeq ($(EMMA_INSTRUMENT),true)
- $(call dist-for-goals, dist_files, $(EMMA_META_ZIP))
-endif
-
# Dist for droid if droid is among the cmd goals, or no cmd goal is given.
ifneq ($(filter droid,$(MAKECMDGOALS))$(filter ||,|$(filter-out $(INTERNAL_MODIFIER_TARGETS),$(MAKECMDGOALS))|),)
@@ -781,10 +799,15 @@
unbundled_build_modules := $(TARGET_BUILD_APPS)
endif
+ apps_only_installed_files := $(foreach m,$(unbundled_build_modules),$(ALL_MODULES.$(m).INSTALLED))
# dist the unbundled app.
- $(call dist-for-goals,apps_only, \
- $(foreach m,$(unbundled_build_modules),$(ALL_MODULES.$(m).INSTALLED)) \
- )
+ $(call dist-for-goals,apps_only, $(apps_only_installed_files))
+
+ ifeq ($(EMMA_INSTRUMENT),true)
+ $(EMMA_META_ZIP) : $(apps_only_installed_files)
+
+ $(call dist-for-goals,apps_only, $(EMMA_META_ZIP))
+ endif
.PHONY: apps_only
apps_only: $(unbundled_build_modules)
@@ -802,6 +825,7 @@
$(INSTALLED_ANDROID_INFO_TXT_TARGET) \
$(INSTALLED_RAMDISK_TARGET) \
$(INSTALLED_FACTORY_RAMDISK_TARGET) \
+ $(INSTALLED_FACTORY_BUNDLE_TARGET) \
)
ifneq ($(TARGET_BUILD_PDK),true)
@@ -812,6 +836,12 @@
)
endif
+ ifeq ($(EMMA_INSTRUMENT),true)
+ $(EMMA_META_ZIP) : $(INSTALLED_SYSTEMIMAGE)
+
+ $(call dist-for-goals, dist_files, $(EMMA_META_ZIP))
+ endif
+
# Building a full system-- the default is to build droidcore
droid: droidcore dist_files
@@ -839,6 +869,8 @@
)
endif
+.PHONY: lintall
+
.PHONY: samplecode
sample_MODULES := $(sort $(call get-tagged-modules,samples))
sample_APKS_DEST_PATH := $(TARGET_COMMON_OUT_ROOT)/samples
diff --git a/core/notice_files.mk b/core/notice_files.mk
index 74beb49..ee50394 100644
--- a/core/notice_files.mk
+++ b/core/notice_files.mk
@@ -4,6 +4,11 @@
notice_file:=$(strip $(wildcard $(LOCAL_PATH)/NOTICE))
+ifeq ($(LOCAL_MODULE_CLASS),NONE)
+ # We ignore NOTICE files for modules of type NONE.
+ notice_file :=
+endif
+
ifdef notice_file
# This relies on the name of the directory in PRODUCT_OUT matching where
diff --git a/core/package.mk b/core/package.mk
index c689031..a1d901e 100644
--- a/core/package.mk
+++ b/core/package.mk
@@ -307,12 +307,12 @@
# libstlport_shared.so should never go to the system image.
# Instead it should be packaged into the apk.
ifeq (stlport_shared,$(LOCAL_NDK_STL_VARIANT))
-ifndef LOCAL_NDK_VERSION
-$(error LOCAL_NDK_VERSION has to be defined together with LOCAL_NDK_STL_VARIANT, \
+ifndef LOCAL_SDK_VERSION
+$(error LOCAL_SDK_VERSION has to be defined together with LOCAL_NDK_STL_VARIANT, \
LOCAL_PACKAGE_NAME=$(LOCAL_PACKAGE_NAME))
endif
jni_shared_libraries += \
- $(HISTORICAL_NDK_VERSIONS_ROOT)/android-ndk-r$(LOCAL_NDK_VERSION)/sources/cxx-stl/stlport/libs/$(TARGET_CPU_ABI)/libstlport_shared.so
+ $(HISTORICAL_NDK_VERSIONS_ROOT)/current/sources/cxx-stl/stlport/libs/$(TARGET_CPU_ABI)/libstlport_shared.so
endif
# Set the abi directory used by the local JNI shared libraries.
@@ -407,4 +407,14 @@
PACKAGES := $(PACKAGES) $(LOCAL_PACKAGE_NAME)
+# Lint phony targets
+.PHONY: lint-$(LOCAL_PACKAGE_NAME)
+lint-$(LOCAL_PACKAGE_NAME): PRIVATE_PATH := $(LOCAL_PATH)
+lint-$(LOCAL_PACKAGE_NAME): PRIVATE_LINT_FLAGS := $(LOCAL_LINT_FLAGS)
+lint-$(LOCAL_PACKAGE_NAME) :
+ @echo lint $(PRIVATE_PATH)
+ $(LINT) $(PRIVATE_LINT_FLAGS) $(PRIVATE_PATH)
+
+lintall : lint-$(LOCAL_PACKAGE_NAME)
+
endif # skip_definition
diff --git a/core/pdk_config.mk b/core/pdk_config.mk
index 9df2ce2..894b626 100644
--- a/core/pdk_config.mk
+++ b/core/pdk_config.mk
@@ -5,9 +5,9 @@
# What to build:
# pdk fusion if:
-# 1) the platform.zip exists in the default location
+# 1) PDK_FUSION_PLATFORM_ZIP is passed in from the environment
# or
-# 2) PDK_FUSION_PLATFORM_ZIP is passed in from the environment
+# 2) the platform.zip exists in the default location
# or
# 3) fusion is a command line build goal,
# PDK_FUSION_PLATFORM_ZIP is needed anyway, then do we need the 'fusion' goal?
@@ -16,13 +16,15 @@
# or
# 2) TARGET_BUILD_PDK is passed in from the environment
-# TODO: what's the best default location?
+# if PDK_FUSION_PLATFORM_ZIP is specified, do not override.
+ifndef PDK_FUSION_PLATFORM_ZIP
_pdk_fusion_default_platform_zip := vendor/pdk/$(TARGET_DEVICE)/$(TARGET_PRODUCT)-$(TARGET_BUILD_VARIANT)/platform/platform.zip
ifneq (,$(wildcard $(_pdk_fusion_default_platform_zip)))
$(info $(_pdk_fusion_default_platform_zip) found, do a PDK fusion build.)
PDK_FUSION_PLATFORM_ZIP := $(_pdk_fusion_default_platform_zip)
TARGET_BUILD_PDK := true
endif
+endif # !PDK_FUSION_PLATFORM_ZIP
ifneq (,$(filter pdk fusion, $(MAKECMDGOALS)))
TARGET_BUILD_PDK := true
@@ -33,7 +35,7 @@
endif # fusion
endif # pdk or fusion
-
+ifneq (,$(filter platform-java, $(MAKECMDGOALS))$(PDK_FUSION_PLATFORM_ZIP))
# additional items to add to platform.zip for platform-java build
# For these dirs, add classes.jar and javalib.jar from the dir to platform.zip
# all paths under out dir
@@ -43,16 +45,19 @@
target/common/obj/JAVA_LIBRARIES/core-junit_intermediates \
target/common/obj/JAVA_LIBRARIES/ext_intermediates \
target/common/obj/JAVA_LIBRARIES/framework_intermediates \
- target/common/obj/JAVA_LIBRARIES/android.test.runner_intermediates
+ target/common/obj/JAVA_LIBRARIES/android.test.runner_intermediates \
+ target/common/obj/JAVA_LIBRARIES/telephony-common_intermediates \
+ target/common/obj/JAVA_LIBRARIES/mms-common_intermediates
# not java libraries
PDK_PLATFORM_JAVA_ZIP_CONTENTS := \
target/common/obj/APPS/framework-res_intermediates/package-export.apk \
target/common/obj/APPS/framework-res_intermediates/src/R.stamp
PDK_PLATFORM_JAVA_ZIP_CONTENTS += $(foreach lib_dir,$(PDK_PLATFORM_JAVA_ZIP_JAVA_LIB_DIR),\
$(lib_dir)/classes.jar $(lib_dir)/javalib.jar)
+endif # platform-java or FUSION build
# check and override java support level
-ifeq ($(TARGET_BUILD_PDK),true)
+ifneq ($(TARGET_BUILD_PDK)$(PDK_FUSION_PLATFORM_ZIP),)
ifneq ($(wildcard external/proguard),)
TARGET_BUILD_JAVA_SUPPORT_LEVEL := sdk
else # no proguard
@@ -136,7 +141,7 @@
endif # PDK_FUSION_PLATFORM_ZIP
ifeq ($(TARGET_BUILD_PDK),true)
-
+$(info PDK TARGET_BUILD_JAVA_SUPPORT_LEVEL $(TARGET_BUILD_JAVA_SUPPORT_LEVEL))
ifeq ($(TARGET_BUILD_PDK_JAVA_PLATFORM),)
# SDK used for Java build under PDK
@@ -150,3 +155,16 @@
endif # PDK_JAVA
endif # BUILD_PDK
+
+ifneq (,$(filter platform platform-java, $(MAKECMDGOALS))$(filter true,$(TARGET_BUILD_PDK)))
+# files under $(PRODUCT_OUT)/symbols to help debugging.
+# Source not included to PDK due to dependency issue, so provide symbols instead.
+PDK_SYMBOL_FILES_LIST := \
+ system/bin/app_process
+
+ifdef PDK_FUSION_PLATFORM_ZIP
+# symbols should be explicitly pulled for fusion build
+$(foreach f,$(PDK_SYMBOL_FILES_LIST),\
+ $(eval $(call add-dependency,$(PRODUCT_OUT)/$(f),$(PRODUCT_OUT)/symbols/$(f))))
+endif # PLATFORM_ZIP
+endif # platform.zip build or PDK
diff --git a/core/prebuilt.mk b/core/prebuilt.mk
index b06bb6e..f59a17b 100644
--- a/core/prebuilt.mk
+++ b/core/prebuilt.mk
@@ -35,6 +35,13 @@
prebuilt_module_is_a_library :=
endif
+# Don't install static libraries by default.
+ifndef LOCAL_UNINSTALLABLE_MODULE
+ifeq (STATIC_LIBRARIES,$(LOCAL_MODULE_CLASS))
+ LOCAL_UNINSTALLABLE_MODULE := true
+endif
+endif
+
ifeq ($(LOCAL_STRIP_MODULE),true)
ifdef LOCAL_IS_HOST_MODULE
$(error Cannot strip host module LOCAL_PATH=$(LOCAL_PATH))
diff --git a/core/product.mk b/core/product.mk
index d9e4186..20d1e97 100644
--- a/core/product.mk
+++ b/core/product.mk
@@ -66,6 +66,9 @@
PRODUCT_AAPT_CONFIG \
PRODUCT_AAPT_PREF_CONFIG \
PRODUCT_PACKAGES \
+ PRODUCT_PACKAGES_DEBUG \
+ PRODUCT_PACKAGES_ENG \
+ PRODUCT_PACKAGES_TESTS \
PRODUCT_DEVICE \
PRODUCT_MANUFACTURER \
PRODUCT_BRAND \
@@ -85,8 +88,9 @@
PRODUCT_DEFAULT_WIFI_CHANNELS \
PRODUCT_DEFAULT_DEV_CERTIFICATE \
PRODUCT_RESTRICT_VENDOR_FILES \
- PRODUCT_FACTORY_RAMDISK_MODULES \
PRODUCT_VENDOR_KERNEL_HEADERS \
+ PRODUCT_FACTORY_RAMDISK_MODULES \
+ PRODUCT_FACTORY_BUNDLE_MODULES
define dump-product
@@ -226,6 +230,7 @@
BOARD_KERNEL_BASE \
BOARD_HAVE_BLUETOOTH \
BOARD_HAVE_BLUETOOTH_BCM \
+ BOARD_HAVE_BLUETOOTH_QCOM \
BOARD_VENDOR_QCOM_AMSS_VERSION \
BOARD_VENDOR_USE_AKMD \
BOARD_EGL_CFG \
diff --git a/core/shared_library.mk b/core/shared_library.mk
index ab7480d..122cd29 100644
--- a/core/shared_library.mk
+++ b/core/shared_library.mk
@@ -46,7 +46,7 @@
my_target_libgcc := $(TARGET_LIBGCC)
my_target_crtbegin_so_o := $(TARGET_CRTBEGIN_SO_O)
my_target_crtend_so_o := $(TARGET_CRTEND_SO_O)
-ifdef LOCAL_NDK_VERSION
+ifdef LOCAL_SDK_VERSION
# Make sure the prebuilt NDK paths are put ahead of the TARGET_GLOBAL_LD_DIRS,
# so we don't have race condition when the system libraries (such as libc, libstdc++) are also built in the tree.
my_target_global_ld_dirs := \
diff --git a/core/tasks/factory_bundle.mk b/core/tasks/factory_bundle.mk
new file mode 100644
index 0000000..06d7a78
--- /dev/null
+++ b/core/tasks/factory_bundle.mk
@@ -0,0 +1,80 @@
+#
+# Copyright (C) 2011 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+ifeq (,$(ONE_SHOT_MAKEFILE))
+
+# PRODUCT_FACTORY_RAMDISK_MODULES consists of "<module_name>:<install_path>[:<install_path>...]" tuples.
+# <install_path> is relative to the staging directory for the bundle.
+#
+# Only host modules can be installed here.
+# (It's possible to relax this, but it's not needed and kind of tricky. We'll need to add
+# a better way of specifying the class. Really the answer is to stop having modules with
+# duplicate names)
+#
+# You can also add files with PRODUCT_COPY_FILES if necessary.
+#
+# For example:
+# PRODUCT_FACTORY_BUNDLE_MODULES := \
+# adb:adb fastboot:fastboot
+requested_modules := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_FACTORY_BUNDLE_MODULES))
+
+root_dir := $(PRODUCT_OUT)/factory_bundle
+leaf := $(strip $(TARGET_PRODUCT))-factory_bundle-$(FILE_NAME_TAG)
+named_dir := $(PRODUCT_OUT)/$(leaf)
+tarball := $(PRODUCT_OUT)/$(leaf).tgz
+
+copied_files := \
+ $(foreach _fb_m, $(requested_modules), $(strip \
+ $(eval _fb_m_tuple := $(subst :, ,$(_fb_m))) \
+ $(eval _fb_m_name := $(word 1,$(_fb_m_tuple))) \
+ $(eval _fb_dests := $(wordlist 2,999,$(_fb_m_tuple))) \
+ $(eval _fb_m_built := $(filter $(HOST_OUT)/%, $(ALL_MODULES.$(_fb_m_name).BUILT))) \
+ $(if $(_fb_m_built),,$(error no built file in requested_modules for '$(_fb_m_built)'))\
+ $(foreach _fb_f,$(_fb_dests),$(eval $(call copy-one-file,$(_fb_m_built),$(root_dir)/$(_fb_f))))\
+ $(addprefix $(root_dir)/,$(_fb_dests)) \
+ )) \
+ $(filter $(root_dir)/%, $(ALL_DEFAULT_INSTALLED_MODULES))
+
+ifneq (,$(strip $(copied_files)))
+
+#
+# These files are made by magic so we need to explicitly include them
+#
+$(eval $(call copy-one-file,$(TARGET_OUT)/build.prop,$(root_dir)/build.prop))
+copied_files += $(root_dir)/build.prop
+
+$(eval $(call copy-one-file,$(PRODUCT_OUT)/factory_ramdisk.img,$(root_dir)/factory_ramdisk.img))
+copied_files += $(root_dir)/factory_ramdisk.img
+#
+# End magic
+#
+
+$(tarball): PRIVATE_ROOT_DIR := $(root_dir)
+$(tarball): PRIVATE_NAMED_DIR := $(named_dir)
+
+$(tarball): $(copied_files)
+ @echo "Tarball: $@"
+ $(hide) rm -rf $(PRIVATE_NAMED_DIR)
+ $(hide) ( cp -r $(PRIVATE_ROOT_DIR) $(PRIVATE_NAMED_DIR) \
+ && tar cfz $@ -C $(dir $(PRIVATE_NAMED_DIR)) $(notdir $(PRIVATE_NAMED_DIR)) \
+ ) && rm -rf $(PRIVATE_NAMED_DIR)
+
+INSTALLED_FACTORY_BUNDLE_TARGET := $(tarball)
+
+endif
+
+endif # ONE_SHOT_MAKEFILE
+
diff --git a/core/tasks/factory_ramdisk.mk b/core/tasks/factory_ramdisk.mk
index 576a159..05d89b0 100644
--- a/core/tasks/factory_ramdisk.mk
+++ b/core/tasks/factory_ramdisk.mk
@@ -83,7 +83,7 @@
$(INSTALLED_FACTORY_RAMDISK_TARGET) : $(MKBOOTIMG) $(TARGET_RAMDISK_KERNEL) $(INSTALLED_FACTORY_RAMDISK_FS)
$(call pretty,"Target factory ram disk img format: $@")
$(MKBOOTIMG) --kernel $(TARGET_RAMDISK_KERNEL) --ramdisk $(INSTALLED_FACTORY_RAMDISK_FS) \
- --base $(BOARD_KERNEL_BASE) $(RAMDISK_CMDLINE) --output $@
+ --base $(BOARD_KERNEL_BASE) $(BOARD_MKBOOTIMG_ARGS) $(RAMDISK_CMDLINE) --output $@
endif
diff --git a/core/tasks/vendor_module_check.mk b/core/tasks/vendor_module_check.mk
index 095debc..9cbca41 100644
--- a/core/tasks/vendor_module_check.mk
+++ b/core/tasks/vendor_module_check.mk
@@ -24,8 +24,10 @@
google \
imgtec \
invensense \
+ lge \
nvidia \
nxp \
+ qcom \
samsung \
samsung_arm \
ti \
diff --git a/core/version_defaults.mk b/core/version_defaults.mk
index 6ebfcef..eb95114 100644
--- a/core/version_defaults.mk
+++ b/core/version_defaults.mk
@@ -41,7 +41,7 @@
# which is the version that we reveal to the end user.
# Update this value when the platform version changes (rather
# than overriding it somewhere else). Can be an arbitrary string.
- PLATFORM_VERSION := 4.0.9.99.999.9999.99999
+ PLATFORM_VERSION := JellyBeanMR1
endif
ifeq "" "$(PLATFORM_SDK_VERSION)"
@@ -59,7 +59,7 @@
ifeq "" "$(PLATFORM_VERSION_CODENAME)"
# This is the current development code-name, if the build is not a final
# release build. If this is a final release build, it is simply "REL".
- PLATFORM_VERSION_CODENAME := AOSP
+ PLATFORM_VERSION_CODENAME := JellyBeanMR1
endif
ifeq "" "$(DEFAULT_APP_TARGET_SDK)"
diff --git a/target/product/core.mk b/target/product/core.mk
index 8a7d6df..0b4dbea 100644
--- a/target/product/core.mk
+++ b/target/product/core.mk
@@ -42,6 +42,7 @@
TelephonyProvider \
UserDictionaryProvider \
VpnDialogs \
+ abcc \
apache-xml \
atrace \
bouncycastle \
@@ -75,6 +76,7 @@
libOpenSLES \
libaudiopreprocessing \
libaudioutils \
+ libbcc \
libcrypto \
libdownmix \
libdvm \
@@ -91,10 +93,13 @@
libmdnssd \
libnativehelper \
libnfc_ndef \
+ libportable \
libpowermanager \
libspeexresampler \
libsqlite_jni \
libssl \
+ libstagefright \
+ libstagefright_chromium_http \
libstagefright_soft_aacdec \
libstagefright_soft_aacenc \
libstagefright_soft_amrdec \
@@ -114,6 +119,7 @@
libwebrtc_audio_preprocessing \
libwilhelm \
libz \
+ make_ext4fs \
mdnsd \
requestsync \
screencap \
diff --git a/target/product/generic_no_telephony.mk b/target/product/generic_no_telephony.mk
index 049d7c0..3987e88 100644
--- a/target/product/generic_no_telephony.mk
+++ b/target/product/generic_no_telephony.mk
@@ -26,9 +26,11 @@
Calendar \
CertInstaller \
DrmProvider \
- Email \
+ Email2 \
Exchange2 \
+ FusedLocation \
Gallery2 \
+ Imap2 \
InputDevices \
LatinIME \
Launcher2 \
diff --git a/target/product/large_emu_hw.mk b/target/product/large_emu_hw.mk
index 91a9e08..88f5185 100644
--- a/target/product/large_emu_hw.mk
+++ b/target/product/large_emu_hw.mk
@@ -27,9 +27,10 @@
Calendar \
CertInstaller \
DrmProvider \
- Email \
- Exchange \
+ Email2 \
+ Exchange2 \
Gallery2 \
+ Imap2 \
LatinIME \
Launcher2 \
Music \
diff --git a/target/product/mini.mk b/target/product/mini.mk
index 5db6f3d..e3fc1b7 100644
--- a/target/product/mini.mk
+++ b/target/product/mini.mk
@@ -63,6 +63,7 @@
SettingsProvider \
TelephonyProvider \
UserDictionaryProvider \
+ abcc \
apache-xml \
audio \
bluetoothd \
@@ -98,6 +99,7 @@
libOpenSLES \
libaudiopreprocessing \
libaudioutils \
+ libbcc \
libcrypto \
libdownmix \
libdvm \
@@ -114,10 +116,13 @@
libmdnssd \
libnativehelper \
libnfc_ndef \
+ libportable \
libpowermanager \
libspeexresampler \
libsqlite_jni \
libssl \
+ libstagefright \
+ libstagefright_chromium_http \
libstagefright_soft_aacdec \
libstagefright_soft_aacenc \
libstagefright_soft_amrdec \
@@ -139,12 +144,14 @@
libz \
lint \
mdnsd \
+ mms-common \
network \
pand \
requestsync \
screencap \
sdptool \
sensorservice \
+ telephony-common \
wpa_supplicant
PRODUCT_COPY_FILES += \
@@ -154,6 +161,7 @@
PRODUCT_PACKAGES += \
Bluetooth \
+ FusedLocation \
InputDevices \
LatinIME \
Launcher2 \
@@ -201,7 +209,8 @@
PRODUCT_PACKAGES += \
drmserver \
libdrmframework \
- libdrmframework_jni
+ libdrmframework_jni \
+ WAPPushManager
# Additional settings used in all AOSP builds
@@ -214,3 +223,7 @@
$(call inherit-product-if-exists, frameworks/base/data/keyboards/keyboards.mk)
$(call inherit-product-if-exists, frameworks/base/data/fonts/fonts.mk)
$(call inherit-product-if-exists, frameworks/base/data/sounds/AudioPackage5.mk)
+
+#----------------- For PDK ------------------------------
+PRODUCT_PACKAGES += \
+ TestingCamera
diff --git a/target/product/sdk.mk b/target/product/sdk.mk
index 697d295..6b0dcb9 100644
--- a/target/product/sdk.mk
+++ b/target/product/sdk.mk
@@ -20,8 +20,10 @@
PRODUCT_PACKAGES := \
Calculator \
DeskClock \
- Email \
+ Email2 \
Exchange2 \
+ FusedLocation \
+ Imap2 \
Gallery \
Music \
Mms \
diff --git a/tools/post_process_props.py b/tools/post_process_props.py
index 01f9128..9d69736 100755
--- a/tools/post_process_props.py
+++ b/tools/post_process_props.py
@@ -21,7 +21,6 @@
def mangle_build_prop(prop):
pass
-
# Put the modifications that you need to make into the /system/build.prop into this
# function. The prop object has get(name) and put(name,value) methods.
def mangle_default_prop(prop):
@@ -34,7 +33,11 @@
else:
val = val + ",adb"
prop.put("persist.sys.usb.config", val)
-
+ # UsbDeviceManager expects a value here. If it doesn't get it, it will
+ # default to "adb". That might not the right policy there, but it's better
+ # to be explicit.
+ if not prop.get("persist.sys.usb.config"):
+ prop.put("persist.sys.usb.config", "none");
class PropFile:
def __init__(self, lines):
diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py
index 5e4055a..7681a60 100644
--- a/tools/releasetools/common.py
+++ b/tools/releasetools/common.py
@@ -196,7 +196,7 @@
for k, v in sorted(d.items()):
print "%-25s = (%s) %s" % (k, type(v).__name__, v)
-def BuildBootableImage(sourcedir, fs_config_file):
+def BuildBootableImage(sourcedir, fs_config_file, info_dict=None):
"""Take a kernel, cmdline, and ramdisk directory from the input (in
'sourcedir'), and turn them into a boot image. Return the image
data, or None if sourcedir does not appear to contains files for
@@ -206,6 +206,9 @@
not os.access(os.path.join(sourcedir, "kernel"), os.F_OK)):
return None
+ if info_dict is None:
+ info_dict = OPTIONS.info_dict
+
ramdisk_img = tempfile.NamedTemporaryFile()
img = tempfile.NamedTemporaryFile()
@@ -239,6 +242,10 @@
cmd.append("--pagesize")
cmd.append(open(fn).read().rstrip("\n"))
+ args = info_dict.get("mkbootimg_args", None)
+ if args and args.strip():
+ cmd.extend(args.split())
+
cmd.extend(["--ramdisk", ramdisk_img.name,
"--output", img.name])
@@ -256,7 +263,8 @@
return data
-def GetBootableImage(name, prebuilt_name, unpack_dir, tree_subdir):
+def GetBootableImage(name, prebuilt_name, unpack_dir, tree_subdir,
+ info_dict=None):
"""Return a File object (with name 'name') with the desired bootable
image. Look for it in 'unpack_dir'/BOOTABLE_IMAGES under the name
'prebuilt_name', otherwise construct it from the source files in
@@ -270,7 +278,8 @@
print "building image from target_files %s..." % (tree_subdir,)
fs_config = "META/" + tree_subdir.lower() + "_filesystem_config.txt"
return File(name, BuildBootableImage(os.path.join(unpack_dir, tree_subdir),
- os.path.join(unpack_dir, fs_config)))
+ os.path.join(unpack_dir, fs_config),
+ info_dict))
def UnzipTemp(filename, pattern=None):
@@ -738,10 +747,11 @@
}
class Difference(object):
- def __init__(self, tf, sf):
+ def __init__(self, tf, sf, diff_program=None):
self.tf = tf
self.sf = sf
self.patch = None
+ self.diff_program = diff_program
def ComputePatch(self):
"""Compute the patch (as a string of data) needed to turn sf into
@@ -750,8 +760,11 @@
tf = self.tf
sf = self.sf
- ext = os.path.splitext(tf.name)[1]
- diff_program = DIFF_PROGRAM_BY_EXT.get(ext, "bsdiff")
+ if self.diff_program:
+ diff_program = self.diff_program
+ else:
+ ext = os.path.splitext(tf.name)[1]
+ diff_program = DIFF_PROGRAM_BY_EXT.get(ext, "bsdiff")
ttemp = tf.WriteToTemp()
stemp = sf.WriteToTemp()
diff --git a/tools/releasetools/ota_from_target_files b/tools/releasetools/ota_from_target_files
index 3dcfbee..b8fe68c 100755
--- a/tools/releasetools/ota_from_target_files
+++ b/tools/releasetools/ota_from_target_files
@@ -531,13 +531,15 @@
script.AssertSomeFingerprint(source_fp, target_fp)
source_boot = common.GetBootableImage(
- "/tmp/boot.img", "boot.img", OPTIONS.source_tmp, "BOOT")
+ "/tmp/boot.img", "boot.img", OPTIONS.source_tmp, "BOOT",
+ OPTIONS.source_info_dict)
target_boot = common.GetBootableImage(
"/tmp/boot.img", "boot.img", OPTIONS.target_tmp, "BOOT")
updating_boot = (source_boot.data != target_boot.data)
source_recovery = common.GetBootableImage(
- "/tmp/recovery.img", "recovery.img", OPTIONS.source_tmp, "RECOVERY")
+ "/tmp/recovery.img", "recovery.img", OPTIONS.source_tmp, "RECOVERY",
+ OPTIONS.source_info_dict)
target_recovery = common.GetBootableImage(
"/tmp/recovery.img", "recovery.img", OPTIONS.target_tmp, "RECOVERY")
updating_recovery = (source_recovery.data != target_recovery.data)
diff --git a/tools/signapk/SignApk.java b/tools/signapk/SignApk.java
index d8d9bf1..cb19296 100644
--- a/tools/signapk/SignApk.java
+++ b/tools/signapk/SignApk.java
@@ -497,7 +497,16 @@
outputStream = outputFile = new FileOutputStream(args[argstart+3]);
}
outputJar = new JarOutputStream(outputStream);
- outputJar.setLevel(9);
+
+ // For signing .apks, use the maximum compression to make
+ // them as small as possible (since they live forever on
+ // the system partition). For OTA packages, use the
+ // default compression level, which is much much faster
+ // and produces output that is only a tiny bit larger
+ // (~0.1% on full OTA packages I tested).
+ if (!signWholeFile) {
+ outputJar.setLevel(9);
+ }
JarEntry je;
diff --git a/tools/zipalign/Android.mk b/tools/zipalign/Android.mk
index 9763bd2..089c68b 100644
--- a/tools/zipalign/Android.mk
+++ b/tools/zipalign/Android.mk
@@ -28,6 +28,10 @@
LOCAL_LDLIBS += -lz
endif
+ifneq ($(strip $(BUILD_HOST_static)),)
+LOCAL_LDLIBS += -lpthread
+endif # BUILD_HOST_static
+
LOCAL_MODULE := zipalign
include $(BUILD_HOST_EXECUTABLE)