diff options
-rw-r--r-- | CleanSpec.mk | 5 | ||||
-rw-r--r-- | core/Makefile | 7 | ||||
-rw-r--r-- | core/armelf.xsc | 207 | ||||
-rw-r--r-- | core/base_rules.mk | 3 | ||||
-rw-r--r-- | core/binary.mk | 9 | ||||
-rw-r--r-- | core/build_id.mk | 2 | ||||
-rw-r--r-- | core/clear_vars.mk | 1 | ||||
-rw-r--r-- | core/combo/HOST_darwin-x86.mk | 33 | ||||
-rw-r--r-- | core/combo/HOST_linux-x86.mk | 5 | ||||
-rw-r--r-- | core/combo/HOST_windows-x86.mk | 4 | ||||
-rw-r--r-- | core/combo/TARGET_linux-arm.mk | 11 | ||||
-rw-r--r-- | core/combo/TARGET_linux-sh.mk | 10 | ||||
-rw-r--r-- | core/combo/TARGET_linux-x86.mk | 10 | ||||
-rw-r--r-- | core/config.mk | 1 | ||||
-rw-r--r-- | core/definitions.mk | 16 | ||||
-rw-r--r-- | core/envsetup.mk | 3 | ||||
-rw-r--r-- | core/llvm_config.mk | 6 | ||||
-rw-r--r-- | core/main.mk | 33 | ||||
-rw-r--r-- | core/package.mk | 10 | ||||
-rw-r--r-- | core/pdk_config.mk | 7 | ||||
-rw-r--r-- | core/prebuilt.mk | 7 | ||||
-rw-r--r-- | core/product.mk | 6 | ||||
-rw-r--r-- | core/tasks/factory_bundle.mk | 80 | ||||
-rw-r--r-- | core/version_defaults.mk | 6 | ||||
-rw-r--r-- | target/board/generic_mips/device.mk | 4 | ||||
-rwxr-xr-x | tools/post_process_props.py | 7 | ||||
-rw-r--r-- | tools/zipalign/Android.mk | 4 |
27 files changed, 225 insertions, 272 deletions
diff --git a/CleanSpec.mk b/CleanSpec.mk index 74ad978..df09e2a 100644 --- a/CleanSpec.mk +++ b/CleanSpec.mk @@ -122,6 +122,11 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/build.prop) # 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) diff --git a/core/Makefile b/core/Makefile index f0b866a..9bdb785 100644 --- a/core/Makefile +++ b/core/Makefile @@ -1215,10 +1215,11 @@ BUILT_TESTS_ZIP_PACKAGE := $(intermediates)/$(name).zip $(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) 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 51fb398..09c2586 100644 --- a/core/base_rules.mk +++ b/core/base_rules.mk @@ -92,8 +92,7 @@ ifneq ($(filter $(LOCAL_MODULE_TAGS),user),) $(warning * Android.mk for the affected module, and add) $(warning * the LOCAL_MODULE value for that component) $(warning * into the PRODUCT_PACKAGES section of product) - $(warning * makefile(s) where it's necessary, if) - $(warning * appropriate.) + $(warning * makefile(s) where necessary, if appropriate.) $(warning * ) $(warning * If the component should be in EVERY build of ALL) $(warning * products, then add its LOCAL_MODULE value to the) diff --git a/core/binary.mk b/core/binary.mk index 04e0128..8918e47 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -132,6 +132,11 @@ ifeq ($(strip $(LOCAL_ADDRESS_SANITIZER)),true) LOCAL_STATIC_LIBRARIES += $(ADDRESS_SANITIZER_CONFIG_EXTRA_STATIC_LIBRARIES) endif +# Add in libcompiler-rt for all device builds +ifeq (,$(LOCAL_NDK_VERSION)$(LOCAL_IS_HOST_MODULE)) + LOCAL_STATIC_LIBRARIES += $(COMPILER_RT_CONFIG_EXTRA_STATIC_LIBRARIES) +endif + my_compiler_dependencies := ifeq ($(strip $(LOCAL_CLANG)),true) LOCAL_CFLAGS += $(CLANG_CONFIG_EXTRA_CFLAGS) @@ -306,8 +311,8 @@ $(proto_generated_cc_sources): $(proto_generated_cc_sources_dir)/%.pb.cc: %.prot 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) 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 1fdadad..feac28a 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -125,6 +125,7 @@ LOCAL_CTS_TEST_RUNNER:= LOCAL_CLANG:= LOCAL_ADDRESS_SANITIZER:= LOCAL_JAR_EXCLUDE_FILES:= +LOCAL_LINT_FLAGS:= # Trim MAKEFILE_LIST so that $(call my-dir) doesn't need to # iterate over thousands of entries every time. diff --git a/core/combo/HOST_darwin-x86.mk b/core/combo/HOST_darwin-x86.mk index 4602356..19a1e89 100644 --- a/core/combo/HOST_darwin-x86.mk +++ b/core/combo/HOST_darwin-x86.mk @@ -29,6 +29,11 @@ HOST_GLOBAL_CFLAGS += -m32 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 @@ endif 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 GCC_REALPATH = $(realpath $(shell which gcc)) @@ -70,7 +75,7 @@ HOST_SHLIB_SUFFIX := .dylib HOST_JNILIB_SUFFIX := .jnilib HOST_GLOBAL_CFLAGS += \ - -include $(call select-android-config-h,darwin-x86) + -include $(call select-android-config-h,darwin-x86) ifneq ($(filter 10.7 10.7.% 10.8 10.8.%, $(build_mac_version)),) HOST_RUN_RANLIB_AFTER_COPYING := false else @@ -81,31 +86,13 @@ HOST_GLOBAL_ARFLAGS := cqs 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..b369199 100644 --- a/core/combo/HOST_linux-x86.mk +++ b/core/combo/HOST_linux-x86.mk @@ -52,6 +52,11 @@ HOST_GLOBAL_CFLAGS += -m32 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 HOST_GLOBAL_CFLAGS += \ -include $(call select-android-config-h,linux-x86) 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_AR := $(TOOLS_PREFIX)ar$(TOOLS_EXE_SUFFIX) 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..bca442d 100644 --- a/core/combo/TARGET_linux-arm.mk +++ b/core/combo/TARGET_linux-arm.mk @@ -109,6 +109,7 @@ TARGET_GLOBAL_CFLAGS += \ -fstack-protector \ -Wa,--noexecstack \ -Werror=format-security \ + -D_FORTIFY_SOURCE=1 \ -fno-short-enums \ $(arch_variant_cflags) \ -include $(android_config_h) \ @@ -228,12 +229,12 @@ TARGET_C_INCLUDES := \ $(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 diff --git a/core/combo/TARGET_linux-sh.mk b/core/combo/TARGET_linux-sh.mk index 9ecd649..cb16194 100644 --- a/core/combo/TARGET_linux-sh.mk +++ b/core/combo/TARGET_linux-sh.mk @@ -108,12 +108,12 @@ TARGET_C_INCLUDES := \ $(libm_root)/include/sh \ $(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)/sobegin.o -TARGET_CRTEND_SO_O := $(TARGET_OUT_STATIC_LIBRARIES)/soend.o +TARGET_CRTBEGIN_SO_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/sobegin.o +TARGET_CRTEND_SO_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/soend.o TARGET_STRIP_MODULE:=true diff --git a/core/combo/TARGET_linux-x86.mk b/core/combo/TARGET_linux-x86.mk index 28c031d..82c5dc2 100644 --- a/core/combo/TARGET_linux-x86.mk +++ b/core/combo/TARGET_linux-x86.mk @@ -151,12 +151,12 @@ TARGET_C_INCLUDES := \ $(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 diff --git a/core/config.mk b/core/config.mk index b0b5082..2af4f6e 100644 --- a/core/config.mk +++ b/core/config.mk @@ -295,6 +295,7 @@ LLVM_RS_CC := $(HOST_OUT_EXECUTABLES)/llvm-rs-cc$(HOST_EXECUTABLE_SUFFIX) 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) diff --git a/core/definitions.mk b/core/definitions.mk index 9fe0a11..2565e6e 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -1062,11 +1062,13 @@ $(if $(2),$(hide) $(1) $(2)) 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))) @@ -1715,6 +1717,18 @@ $(2): $(1) | $(ACP) $$(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 74e9100..33c521e 100644 --- a/core/envsetup.mk +++ b/core/envsetup.mk @@ -185,7 +185,6 @@ HOST_OUT_SDK_ADDON := $(HOST_OUT)/sdk_addon 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 @@ -203,7 +202,6 @@ TARGET_OUT_APPS:= $(TARGET_OUT)/app 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 @@ -215,7 +213,6 @@ TARGET_OUT_DATA_APPS:= $(TARGET_OUT_DATA)/app TARGET_OUT_DATA_KEYLAYOUT := $(TARGET_OUT_KEYLAYOUT) TARGET_OUT_DATA_KEYCHARS := $(TARGET_OUT_KEYCHARS) TARGET_OUT_DATA_ETC := $(TARGET_OUT_ETC) -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/llvm_config.mk b/core/llvm_config.mk index 4145028..33cf6d1 100644 --- a/core/llvm_config.mk +++ b/core/llvm_config.mk @@ -71,3 +71,9 @@ 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 407a529..317660f 100644 --- a/core/main.mk +++ b/core/main.mk @@ -578,9 +578,18 @@ endif user_MODULES := $(sort $(call get-tagged-modules,user shell_$(TARGET_SHELL))) user_MODULES := $(user_MODULES) $(user_PACKAGES) -eng_MODULES := $(sort $(call get-tagged-modules,eng)) -debug_MODULES := $(sort $(call get-tagged-modules,debug)) -tests_MODULES := $(sort $(call get-tagged-modules,tests)) +eng_MODULES := $(sort \ + $(call get-tagged-modules,eng) \ + $(call module-installed-files, $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES_ENG)) \ + ) +debug_MODULES := $(sort \ + $(call get-tagged-modules,debug) \ + $(call module-installed-files, $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES_DEBUG)) \ + ) +tests_MODULES := $(sort \ + $(call get-tagged-modules,tests) \ + $(call module-installed-files, $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES_TESTS)) \ + ) ifeq ($(strip $(tags_to_install)),) $(error ASSERTION FAILED: tags_to_install should not be empty) @@ -614,10 +623,20 @@ ifdef is_sdk_build 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 Module '$(m)' in PRODUCT_PACKAGES has nothing to install!))) + $(foreach m, $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES_DEBUG), \ + $(if $(strip $(ALL_MODULES.$(m).INSTALLED)),,\ + $(error 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 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 Module '$(m)' in PRODUCT_PACKAGES_TESTS has nothing to install!))) endif @@ -679,6 +698,9 @@ ramdisk: $(INSTALLED_RAMDISK_TARGET) .PHONY: factory_ramdisk factory_ramdisk: $(INSTALLED_FACTORY_RAMDISK_TARGET) +.PHONY: factory_bundle +factory_bundle: $(INSTALLED_FACTORY_BUNDLE_TARGET) + .PHONY: systemtarball systemtarball: $(INSTALLED_SYSTEMTARBALL_TARGET) @@ -757,6 +779,7 @@ else # TARGET_BUILD_APPS $(INSTALLED_ANDROID_INFO_TXT_TARGET) \ $(INSTALLED_RAMDISK_TARGET) \ $(INSTALLED_FACTORY_RAMDISK_TARGET) \ + $(INSTALLED_FACTORY_BUNDLE_TARGET) \ ) ifneq ($(TARGET_BUILD_PDK),true) @@ -794,6 +817,8 @@ $(call dist-for-goals,sdk win_sdk, \ ) 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/package.mk b/core/package.mk index c689031..3f911fb 100644 --- a/core/package.mk +++ b/core/package.mk @@ -407,4 +407,14 @@ endif 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..71ddf7e 100644 --- a/core/pdk_config.mk +++ b/core/pdk_config.mk @@ -33,7 +33,7 @@ endif 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 @@ -50,9 +50,10 @@ PDK_PLATFORM_JAVA_ZIP_CONTENTS := \ 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 +137,7 @@ ALL_PDK_FUSION_FILES := $(addprefix $(PRODUCT_OUT)/, $(_pdk_fusion_file_list)) 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 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 @@ else 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..57db681 100644 --- a/core/product.mk +++ b/core/product.mk @@ -66,6 +66,9 @@ _product_var_list := \ 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_var_list := \ 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 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/version_defaults.mk b/core/version_defaults.mk index 02ac42c..021617d 100644 --- a/core/version_defaults.mk +++ b/core/version_defaults.mk @@ -41,7 +41,7 @@ ifeq "" "$(PLATFORM_VERSION)" # 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 := 4.1 endif ifeq "" "$(PLATFORM_SDK_VERSION)" @@ -53,13 +53,13 @@ ifeq "" "$(PLATFORM_SDK_VERSION)" # intermediate builds). During development, this number remains at the # SDK version the branch is based on and PLATFORM_VERSION_CODENAME holds # the code-name of the new development work. - PLATFORM_SDK_VERSION := 15 + PLATFORM_SDK_VERSION := 16 endif 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 := REL endif ifeq "" "$(DEFAULT_APP_TARGET_SDK)" diff --git a/target/board/generic_mips/device.mk b/target/board/generic_mips/device.mk index 6edcba6..eaaff80 100644 --- a/target/board/generic_mips/device.mk +++ b/target/board/generic_mips/device.mk @@ -22,8 +22,8 @@ PRODUCT_PROPERTY_OVERRIDES := \ ro.ril.gprsclass=10 PRODUCT_COPY_FILES := \ - development/data/etc/apns-conf.xml:system/etc/apns-conf.xml \ - development/data/etc/vold.conf:system/etc/vold.conf \ + device/generic/goldfish/data/etc/apns-conf.xml:system/etc/apns-conf.xml \ + device/generic/goldfish/data/etc/vold.conf:system/etc/vold.conf \ development/tools/emulator/system/camera/media_profiles.xml:system/etc/media_profiles.xml PRODUCT_PACKAGES := \ 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 @@ import sys 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 @@ def mangle_default_prop(prop): 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/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 @@ else LOCAL_LDLIBS += -lz endif +ifneq ($(strip $(BUILD_HOST_static)),) +LOCAL_LDLIBS += -lpthread +endif # BUILD_HOST_static + LOCAL_MODULE := zipalign include $(BUILD_HOST_EXECUTABLE) |