diff options
Diffstat (limited to 'core')
40 files changed, 498 insertions, 331 deletions
diff --git a/core/Makefile b/core/Makefile index 556fe0d..fca06fa 100644 --- a/core/Makefile +++ b/core/Makefile @@ -96,10 +96,11 @@ endif # Both of these tags will be removed and replaced with "release-keys" # when the target-files is signed in a post-build step. ifeq ($(DEFAULT_SYSTEM_DEV_CERTIFICATE),build/target/product/security/testkey) -BUILD_VERSION_TAGS += test-keys +BUILD_KEYS := test-keys else -BUILD_VERSION_TAGS += dev-keys +BUILD_KEYS := dev-keys endif +BUILD_VERSION_TAGS += $(BUILD_KEYS) BUILD_VERSION_TAGS := $(subst $(space),$(comma),$(sort $(BUILD_VERSION_TAGS))) # A human-readable string that descibes this build in detail. @@ -121,9 +122,9 @@ ifeq ($(TARGET_BUILD_VARIANT),user) # Dev. branches should have DISPLAY_BUILD_NUMBER set ifeq "true" "$(DISPLAY_BUILD_NUMBER)" - BUILD_DISPLAY_ID := $(BUILD_ID).$(BUILD_NUMBER) + BUILD_DISPLAY_ID := $(BUILD_ID).$(BUILD_NUMBER) $(BUILD_KEYS) else - BUILD_DISPLAY_ID := $(BUILD_ID) + BUILD_DISPLAY_ID := $(BUILD_ID) $(BUILD_KEYS) endif else # Non-user builds should show detailed build information @@ -384,6 +385,10 @@ $(INSTALLED_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_RAMDISK_FILES) | $(MINIGZIP) $(call pretty,"Target ram disk: $@") $(hide) $(MKBOOTFS) $(TARGET_ROOT_OUT) | $(MINIGZIP) > $@ +.PHONY: ramdisk-nodeps +ramdisk-nodeps: $(MKBOOTFS) | $(MINIGZIP) + @echo "make $@: ignoring dependencies" + $(hide) $(MKBOOTFS) $(TARGET_ROOT_OUT) | $(MINIGZIP) > $(INSTALLED_RAMDISK_TARGET) ifneq ($(strip $(TARGET_NO_KERNEL)),true) @@ -421,12 +426,24 @@ $(INSTALLED_BOOTIMAGE_TARGET): $(MKEXT2IMG) $(INTERNAL_BOOTIMAGE_FILES) $(call pretty,"Target boot image: $@") $(hide) $(MKEXT2BOOTIMG) $(INTERNAL_BOOTIMAGE_ARGS) --output $@ +.PHONY: bootimage-nodeps +bootimage-nodeps: $(MKEXT2IMG) + @echo "make $@: ignoring dependencies" + $(hide) $(MKEXT2BOOTIMG) $(INTERNAL_BOOTIMAGE_ARGS) --output $(INSTALLED_BOOTIMAGE_TARGET) + else # TARGET_BOOTIMAGE_USE_EXT2 != true $(INSTALLED_BOOTIMAGE_TARGET): $(MKBOOTIMG) $(INTERNAL_BOOTIMAGE_FILES) $(call pretty,"Target boot image: $@") $(hide) $(MKBOOTIMG) $(INTERNAL_BOOTIMAGE_ARGS) $(BOARD_MKBOOTIMG_ARGS) --output $@ $(hide) $(call assert-max-image-size,$@,$(BOARD_BOOTIMAGE_PARTITION_SIZE),raw) + +.PHONY: bootimage-nodeps +bootimage-nodeps: $(MKBOOTIMG) + @echo "make $@: ignoring dependencies" + $(hide) $(MKBOOTIMG) $(INTERNAL_BOOTIMAGE_ARGS) $(BOARD_MKBOOTIMG_ARGS) --output $(INSTALLED_BOOTIMAGE_TARGET) + $(hide) $(call assert-max-image-size,$(INSTALLED_BOOTIMAGE_TARGET),$(BOARD_BOOTIMAGE_PARTITION_SIZE),raw) + endif # TARGET_BOOTIMAGE_USE_EXT2 else # TARGET_NO_KERNEL @@ -490,6 +507,7 @@ target_notice_file_html_gz := $(TARGET_OUT_INTERMEDIATES)/NOTICE.html.gz tools_notice_file_txt := $(HOST_OUT_INTERMEDIATES)/NOTICE.txt tools_notice_file_html := $(HOST_OUT_INTERMEDIATES)/NOTICE.html +ifndef TARGET_BUILD_APPS kernel_notice_file := $(TARGET_OUT_NOTICE_FILES)/src/kernel.txt pdk_fusion_notice_files := $(filter $(TARGET_OUT_NOTICE_FILES)/%, $(ALL_PDK_FUSION_FILES)) @@ -522,6 +540,7 @@ $(installed_notice_html_gz): $(target_notice_file_html_gz) | $(ACP) ifeq ($(ONE_SHOT_MAKEFILE),) ALL_DEFAULT_INSTALLED_MODULES += $(installed_notice_html_gz) endif +endif # TARGET_BUILD_APPS # The kernel isn't really a module, so to get its module file in there, we # make the target NOTICE files depend on this particular file too, which will @@ -875,6 +894,11 @@ endif ####### ## platform.zip: system, plus other files to be used in PDK fusion build, ## in a zip file +## +## PDK_PLATFORM_ZIP_PRODUCT_BINARIES is used to store specified files to platform.zip. +## The variable will be typically set from BoardConfig.mk. +## Files under out dir will be rejected to prevent possible conflicts with other rules. +PDK_PLATFORM_ZIP_PRODUCT_BINARIES := $(filter-out $(OUT_DIR)/%,$(PDK_PLATFORM_ZIP_PRODUCT_BINARIES)) INSTALLED_PLATFORM_ZIP := $(PRODUCT_OUT)/platform.zip $(INSTALLED_PLATFORM_ZIP) : $(INTERNAL_SYSTEMIMAGE_FILES) $(call pretty,"Platform zip package: $(INSTALLED_PLATFORM_ZIP)") @@ -886,7 +910,9 @@ $(INSTALLED_PLATFORM_ZIP) : $(INTERNAL_SYSTEMIMAGE_FILES) ifeq (true,$(PLATFORM_ZIP_ADD_JAVA)) $(hide) cd $(OUT_DIR) && zip -qry $(patsubst $(OUT_DIR)/%,%,$@) $(PDK_PLATFORM_JAVA_ZIP_CONTENTS) endif - +ifneq ($(PDK_PLATFORM_ZIP_PRODUCT_BINARIES),) + $(hide) zip -qry $@ $(PDK_PLATFORM_ZIP_PRODUCT_BINARIES) +endif .PHONY: platform platform: $(INSTALLED_PLATFORM_ZIP) @@ -1147,6 +1173,7 @@ $(BUILT_TARGET_FILES_PACKAGE): \ $(INSTALLED_CACHEIMAGE_TARGET) \ $(INSTALLED_VENDORIMAGE_TARGET) \ $(INSTALLED_ANDROID_INFO_TXT_TARGET) \ + $(SELINUX_FC) \ $(built_ota_tools) \ $(APKCERTS_FILE) \ $(HOST_OUT_EXECUTABLES)/fs_config \ @@ -1234,13 +1261,14 @@ 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 + $(hide) echo "use_set_metadata=1" >> $(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 $@) .) @# Run fs_config on all the system, boot ramdisk, and recovery ramdisk files in the zip, and save the output - $(hide) zipinfo -1 $@ | awk 'BEGIN { FS="SYSTEM/" } /^SYSTEM\// {print "system/" $$2}' | $(HOST_OUT_EXECUTABLES)/fs_config > $(zip_root)/META/filesystem_config.txt - $(hide) zipinfo -1 $@ | awk 'BEGIN { FS="BOOT/RAMDISK/" } /^BOOT\/RAMDISK\// {print $$2}' | $(HOST_OUT_EXECUTABLES)/fs_config > $(zip_root)/META/boot_filesystem_config.txt - $(hide) zipinfo -1 $@ | awk 'BEGIN { FS="RECOVERY/RAMDISK/" } /^RECOVERY\/RAMDISK\// {print $$2}' | $(HOST_OUT_EXECUTABLES)/fs_config > $(zip_root)/META/recovery_filesystem_config.txt + $(hide) zipinfo -1 $@ | awk 'BEGIN { FS="SYSTEM/" } /^SYSTEM\// {print "system/" $$2}' | $(HOST_OUT_EXECUTABLES)/fs_config -C -S $(SELINUX_FC) > $(zip_root)/META/filesystem_config.txt + $(hide) zipinfo -1 $@ | awk 'BEGIN { FS="BOOT/RAMDISK/" } /^BOOT\/RAMDISK\// {print $$2}' | $(HOST_OUT_EXECUTABLES)/fs_config -C -S $(SELINUX_FC) > $(zip_root)/META/boot_filesystem_config.txt + $(hide) zipinfo -1 $@ | awk 'BEGIN { FS="RECOVERY/RAMDISK/" } /^RECOVERY\/RAMDISK\// {print $$2}' | $(HOST_OUT_EXECUTABLES)/fs_config -C -S $(SELINUX_FC) > $(zip_root)/META/recovery_filesystem_config.txt $(hide) (cd $(zip_root) && zip -q ../$(notdir $@) META/*filesystem_config.txt) .PHONY: target-files-package @@ -1398,6 +1426,27 @@ $(EMMA_META_ZIP) : endif # EMMA_INSTRUMENT=true +#------------------------------------------------------------------ +# A zip of Proguard obfuscation dictionary files. +# Only for apps_only build. +# +ifdef TARGET_BUILD_APPS +PROGUARD_DICT_ZIP := $(PRODUCT_OUT)/$(TARGET_PRODUCT)-proguard-dict-$(FILE_NAME_TAG).zip +# the dependency will be set up later in build/core/main.mk. +$(PROGUARD_DICT_ZIP) : + @echo "Packaging Proguard obfuscation dictionary files." + $(hide) dict_files=`find $(TARGET_OUT_COMMON_INTERMEDIATES)/APPS -name proguard_dictionary`; \ + if [ -n "$$dict_files" ]; then \ + zip -q $@ $$dict_files; \ + else \ + touch $(dir $@)/dummy; \ + (cd $(dir $@) && zip -q $(notdir $@) dummy); \ + zip -qd $@ dummy; \ + rm $(dir $@)/dummy; \ + fi + +endif # TARGET_BUILD_APPS + # ----------------------------------------------------------------- # dalvik something .PHONY: dalvikfiles @@ -1587,16 +1636,18 @@ $(INTERNAL_FINDBUGS_XML_TARGET): $(ALL_FINDBUGS_FILES) $(INTERNAL_FINDBUGS_HTML_TARGET): $(INTERNAL_FINDBUGS_XML_TARGET) @echo ConvertXmlToText: $@ $(hide) prebuilt/common/findbugs/bin/convertXmlToText -html:fancy.xsl \ - $(INTERNAL_FINDBUGS_XML_TARGET) > $@ + $(INTERNAL_FINDBUGS_XML_TARGET) > $@ # ----------------------------------------------------------------- # Findbugs # ----------------------------------------------------------------- # These are some additional build tasks that need to be run. +ifneq ($(dont_bother),true) include $(sort $(wildcard $(BUILD_SYSTEM)/tasks/*.mk)) -include $(sort $(wildcard vendor/*/build/tasks/*.mk)) -include $(sort $(wildcard device/*/build/tasks/*.mk)) +endif # ----------------------------------------------------------------- # Create SDK repository packages. Must be done after tasks/* since diff --git a/core/base_rules.mk b/core/base_rules.mk index 8d230fb..783524d 100644 --- a/core/base_rules.mk +++ b/core/base_rules.mk @@ -98,23 +98,27 @@ ifneq ($(words $(LOCAL_MODULE_CLASS)),1) endif ifneq (true,$(LOCAL_UNINSTALLABLE_MODULE)) -ifdef LOCAL_IS_HOST_MODULE - partition_tag := -else -ifeq (true,$(LOCAL_PROPRIETARY_MODULE)) - partition_tag := _VENDOR -else - # The definition of should-install-to-system will be different depending - # on which goal (e.g., sdk or just droid) is being built. - partition_tag := $(if $(call should-install-to-system,$(LOCAL_MODULE_TAGS)),,_DATA) -endif -endif - LOCAL_MODULE_PATH := $(strip $(LOCAL_MODULE_PATH)) ifeq ($(LOCAL_MODULE_PATH),) - LOCAL_MODULE_PATH := $($(my_prefix)OUT$(partition_tag)_$(LOCAL_MODULE_CLASS)) + ifdef LOCAL_IS_HOST_MODULE + partition_tag := + else + ifeq (true,$(LOCAL_PROPRIETARY_MODULE)) + partition_tag := _VENDOR + else + # The definition of should-install-to-system will be different depending + # on which goal (e.g., sdk or just droid) is being built. + partition_tag := $(if $(call should-install-to-system,$(LOCAL_MODULE_TAGS)),,_DATA) + endif + endif + install_path_var := $(my_prefix)OUT$(partition_tag)_$(LOCAL_MODULE_CLASS) + ifeq (true,$(LOCAL_PRIVILEGED_MODULE)) + install_path_var := $(install_path_var)_PRIVILEGED + endif + + LOCAL_MODULE_PATH := $($(install_path_var)) ifeq ($(strip $(LOCAL_MODULE_PATH)),) - $(error $(LOCAL_PATH): unhandled LOCAL_MODULE_CLASS "$(LOCAL_MODULE_CLASS)") + $(error $(LOCAL_PATH): unhandled install path "$(install_path_var)") endif endif endif # not LOCAL_UNINSTALLABLE_MODULE @@ -137,15 +141,16 @@ intermediates.COMMON := $(call local-intermediates-dir,COMMON) ########################################################### # Pick a name for the intermediate and final targets ########################################################### -LOCAL_MODULE_STEM := $(strip $(LOCAL_MODULE_STEM)) -ifeq ($(LOCAL_MODULE_STEM),) +ifndef LOCAL_MODULE_STEM LOCAL_MODULE_STEM := $(LOCAL_MODULE) endif -LOCAL_INSTALLED_MODULE_STEM := $(LOCAL_MODULE_STEM)$(LOCAL_MODULE_SUFFIX) -LOCAL_BUILT_MODULE_STEM := $(strip $(LOCAL_BUILT_MODULE_STEM)) -ifeq ($(LOCAL_BUILT_MODULE_STEM),) - LOCAL_BUILT_MODULE_STEM := $(LOCAL_INSTALLED_MODULE_STEM) +ifndef LOCAL_BUILT_MODULE_STEM + LOCAL_BUILT_MODULE_STEM := $(LOCAL_MODULE_STEM)$(LOCAL_MODULE_SUFFIX) +endif + +ifndef LOCAL_INSTALLED_MODULE_STEM + LOCAL_INSTALLED_MODULE_STEM := $(LOCAL_MODULE_STEM)$(LOCAL_MODULE_SUFFIX) endif # OVERRIDE_BUILT_MODULE_PATH is only allowed to be used by the @@ -181,9 +186,6 @@ ifneq ($(strip $(aidl_sources)),) aidl_java_sources := $(patsubst %.aidl,%.java,$(addprefix $(intermediates.COMMON)/src/, $(aidl_sources))) aidl_sources := $(addprefix $(TOP_DIR)$(LOCAL_PATH)/, $(aidl_sources)) -ifeq (,$(TARGET_BUILD_APPS)) -LOCAL_AIDL_INCLUDES += $(FRAMEWORKS_BASE_JAVA_SRC_DIRS) -endif aidl_preprocess_import := LOCAL_SDK_VERSION:=$(strip $(LOCAL_SDK_VERSION)) ifdef LOCAL_SDK_VERSION @@ -193,6 +195,9 @@ ifeq ($(LOCAL_SDK_VERSION)$(TARGET_BUILD_APPS),current) else aidl_preprocess_import := $(HISTORICAL_SDK_VERSIONS_ROOT)/$(LOCAL_SDK_VERSION)/framework.aidl endif # !current +else +# build against the platform. +LOCAL_AIDL_INCLUDES += $(FRAMEWORKS_BASE_JAVA_SRC_DIRS) endif # LOCAL_SDK_VERSION $(aidl_java_sources): PRIVATE_AIDL_FLAGS := -b $(addprefix -p,$(aidl_preprocess_import)) -I$(LOCAL_PATH) -I$(LOCAL_PATH)/src $(addprefix -I,$(LOCAL_AIDL_INCLUDES)) @@ -349,8 +354,11 @@ else endif # java_resource_file_groups ## PRIVATE java vars ###################################### - -ifneq ($(strip $(all_java_sources)$(all_res_assets))$(LOCAL_STATIC_JAVA_LIBRARIES),) +# LOCAL_SOURCE_FILES_ALL_GENERATED is set only if the module does not have static source files, +# but generated source files in its LOCAL_INTERMEDIATE_SOURCE_DIR. +# You have to set up the dependency in some other way. +need_compile_java := $(strip $(all_java_sources)$(all_res_assets))$(LOCAL_STATIC_JAVA_LIBRARIES)$(filter true,$(LOCAL_SOURCE_FILES_ALL_GENERATED)) +ifdef need_compile_java full_static_java_libs := \ $(foreach lib,$(LOCAL_STATIC_JAVA_LIBRARIES), \ @@ -388,19 +396,20 @@ ifdef LOCAL_IS_HOST_MODULE ifeq ($(LOCAL_BUILD_HOST_DEX),true) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_BOOTCLASSPATH := -bootclasspath $(call java-lib-files,core-hostdex,$(LOCAL_IS_HOST_MODULE)) -full_java_libs := $(call java-lib-files,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE)) +full_shared_java_libs := $(call java-lib-files,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE)) full_java_lib_deps := $(call java-lib-deps,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE)) else $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_BOOTCLASSPATH := -full_java_libs := $(addprefix $(HOST_OUT_JAVA_LIBRARIES)/,$(addsuffix $(COMMON_JAVA_PACKAGE_SUFFIX),$(LOCAL_JAVA_LIBRARIES))) -full_java_lib_deps := $(full_java_libs) +full_shared_java_libs := $(addprefix $(HOST_OUT_JAVA_LIBRARIES)/,\ + $(addsuffix $(COMMON_JAVA_PACKAGE_SUFFIX),$(LOCAL_JAVA_LIBRARIES))) +full_java_lib_deps := $(full_shared_java_libs) endif # LOCAL_BUILD_HOST_DEX else -full_java_libs := $(call java-lib-files,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE)) +full_shared_java_libs := $(call java-lib-files,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE)) full_java_lib_deps := $(call java-lib-deps,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE)) endif # !LOCAL_IS_HOST_MODULE -full_java_libs += $(full_static_java_libs) $(LOCAL_CLASSPATH) +full_java_libs := $(full_shared_java_libs) $(full_static_java_libs) $(LOCAL_CLASSPATH) full_java_lib_deps += $(full_static_java_libs) $(LOCAL_CLASSPATH) # This is set by packages that are linking to other packages that export @@ -413,6 +422,7 @@ ifdef LOCAL_APK_LIBRARIES APPS,$(lib),,COMMON)/classes.jar) # link against the jar with full original names (before proguard processing). + full_shared_java_libs += $(link_apk_libraries) full_java_libs += $(link_apk_libraries) full_java_lib_deps += $(link_apk_libraries) endif @@ -427,14 +437,12 @@ ifdef LOCAL_INSTRUMENTATION_FOR $(LOCAL_PATH): Multiple LOCAL_INSTRUMENTATION_FOR members defined) endif - link_instr_intermediates_dir := $(call intermediates-dir-for, \ - APPS,$(LOCAL_INSTRUMENTATION_FOR)) link_instr_intermediates_dir.COMMON := $(call intermediates-dir-for, \ APPS,$(LOCAL_INSTRUMENTATION_FOR),,COMMON) - # link against the jar with full original names (before proguard processing). - full_java_libs += $(link_instr_intermediates_dir.COMMON)/classes.jar - full_java_lib_deps += $(link_instr_intermediates_dir.COMMON)/classes.jar + link_instr_classes_jar := $(link_instr_intermediates_dir.COMMON)/classes.jar + full_java_libs += $(link_instr_classes_jar) + full_java_lib_deps += $(link_instr_classes_jar) endif jar_manifest_file := @@ -445,7 +453,7 @@ else $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JAR_MANIFEST := endif -endif +endif # need_compile_java ########################################################### @@ -543,20 +551,16 @@ endif # !LOCAL_UNINSTALLABLE_MODULE ## CHECK_BUILD goals ########################################################### +ifdef java_alternative_checked_module + LOCAL_CHECKED_MODULE := $(java_alternative_checked_module) +endif + # If nobody has defined a more specific module for the # checked modules, use LOCAL_BUILT_MODULE. ifndef LOCAL_CHECKED_MODULE LOCAL_CHECKED_MODULE := $(LOCAL_BUILT_MODULE) endif -need_compile_java := -ifdef java_alternative_checked_module -ifneq (,$(strip $(all_java_sources)$(full_static_java_libs))$(filter true,$(LOCAL_SOURCE_FILES_ALL_GENERATED))) - need_compile_java := true - LOCAL_CHECKED_MODULE := $(java_alternative_checked_module) -endif -endif - # If they request that this module not be checked, then don't. # PLEASE DON'T SET THIS. ANY PLACES THAT SET THIS WITHOUT # GOOD REASON WILL HAVE IT REMOVED. diff --git a/core/binary.mk b/core/binary.mk index 71c49ed..8685060 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -90,6 +90,15 @@ $(my_prefix)DEPENDENCIES_ON_SHARED_LIBRARIES += $(LOCAL_MODULE):$(LOCAL_INSTALLE endif endif +# Add static HAL libraries +ifdef LOCAL_HAL_STATIC_LIBRARIES +$(foreach lib, $(LOCAL_HAL_STATIC_LIBRARIES), \ + $(eval b_lib := $(filter $(lib).%,$(BOARD_HAL_STATIC_LIBRARIES)))\ + $(if $(b_lib), $(eval LOCAL_STATIC_LIBRARIES += $(b_lib)),\ + $(eval LOCAL_STATIC_LIBRARIES += $(lib).default))) +b_lib := +endif + ifeq ($(strip $(LOCAL_ADDRESS_SANITIZER)),true) LOCAL_CLANG := true LOCAL_CFLAGS += $(ADDRESS_SANITIZER_CONFIG_EXTRA_CFLAGS) @@ -147,21 +156,17 @@ LOCAL_ASFLAGS += -D__ASSEMBLY__ ifdef LOCAL_SDK_VERSION my_target_project_includes := my_target_c_includes := $(my_ndk_stl_include_path) $(my_ndk_version_root)/usr/include - -# 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) -ifeq ($(strip $(LOCAL_CLANG)),true) -my_target_c_includes += $(CLANG_CONFIG_EXTRA_TARGET_C_INCLUDES) +endif # LOCAL_SDK_VERSION + +ifeq ($(LOCAL_CLANG),true) my_target_global_cflags := $(TARGET_GLOBAL_CLANG_FLAGS) +my_target_c_includes += $(CLANG_CONFIG_EXTRA_TARGET_C_INCLUDES) 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) @@ -627,7 +632,7 @@ endif # some rules depend on asm_objects being first. If your code depends on # being first, it's reasonable to require it to be assembly -all_objects := \ +normal_objects := \ $(asm_objects) \ $(cpp_objects) \ $(gen_cpp_objects) \ @@ -638,8 +643,9 @@ all_objects := \ $(yacc_objects) \ $(lex_objects) \ $(proto_generated_objects) \ - $(addprefix $(TOPDIR)$(LOCAL_PATH)/,$(LOCAL_PREBUILT_OBJ_FILES)) \ - $(gen_o_objects) + $(addprefix $(TOPDIR)$(LOCAL_PATH)/,$(LOCAL_PREBUILT_OBJ_FILES)) + +all_objects := $(normal_objects) $(gen_o_objects) LOCAL_C_INCLUDES += $(TOPDIR)$(LOCAL_PATH) $(intermediates) @@ -647,9 +653,12 @@ ifndef LOCAL_SDK_VERSION LOCAL_C_INCLUDES += $(JNI_H_INCLUDE) endif -# .o files need to be filtered out of LOCAL_GENERATED_SOURCES -# to avoid creating circular dependencies. -$(all_objects) : | $(filter-out %.o,$(LOCAL_GENERATED_SOURCES)) $(import_includes) +# all_objects includes gen_o_objects which were part of LOCAL_GENERATED_SOURCES; +# use normal_objects here to avoid creating circular dependencies. This assumes +# that custom build rules which generate .o files don't consume other generated +# sources as input (or if they do they take care of that dependency themselves). +$(normal_objects) : | $(LOCAL_GENERATED_SOURCES) +$(all_objects) : | $(import_includes) ALL_C_CPP_ETC_OBJECTS += $(all_objects) ########################################################### diff --git a/core/build_id.mk b/core/build_id.mk index e954794..64ad133 100644 --- a/core/build_id.mk +++ b/core/build_id.mk @@ -13,20 +13,11 @@ # See the License for the specific language governing permissions and # limitations under the License. # - -# -# Defines branch-specific values. -# - # BUILD_ID is usually used to specify the branch name # (like "MAIN") or a branch name and a release candidate -# (like "TC1-RC5"). It must be a single word, and is +# (like "CRB01"). It must be a single word, and is # capitalized by convention. -# -BUILD_ID := OPENMASTER -# DISPLAY_BUILD_NUMBER should only be set for development branches, -# If set, the BUILD_NUMBER (cl) is appended to the BUILD_ID for -# a more descriptive BUILD_ID_DISPLAY, otherwise BUILD_ID_DISPLAY -# is the same as BUILD_ID +BUILD_ID := KK + DISPLAY_BUILD_NUMBER := true diff --git a/core/cleanbuild.mk b/core/cleanbuild.mk index 1d17f77..fa67332 100644 --- a/core/cleanbuild.mk +++ b/core/cleanbuild.mk @@ -14,7 +14,7 @@ # # Don't bother with the cleanspecs if you are running mm/mmm -ifndef ONE_SHOT_MAKEFILE +ifeq ($(ONE_SHOT_MAKEFILE)$(dont_bother),) INTERNAL_CLEAN_STEPS := @@ -100,7 +100,7 @@ clean_steps_file := INTERNAL_CLEAN_STEPS := INTERNAL_CLEAN_BUILD_VERSION := -endif # ifndef ONE_SHOT_MAKEFILE +endif # if not ONE_SHOT_MAKEFILE dont_bother # Since products and build variants (unfortunately) share the same # PRODUCT_OUT staging directory, things can get out of sync if different @@ -182,6 +182,7 @@ installclean_files := \ $(PRODUCT_OUT)/*.txt \ $(PRODUCT_OUT)/*.xlb \ $(PRODUCT_OUT)/*.zip \ + $(PRODUCT_OUT)/kernel \ $(PRODUCT_OUT)/data \ $(PRODUCT_OUT)/obj/APPS \ $(PRODUCT_OUT)/obj/NOTICE_FILES \ diff --git a/core/cleanspec.mk b/core/cleanspec.mk index d4a8eed..500ce54 100644 --- a/core/cleanspec.mk +++ b/core/cleanspec.mk @@ -64,6 +64,6 @@ INTERNAL_CLEAN_BUILD_VERSION := 6 # ************************************************ subdir_cleanspecs := \ - $(shell build/tools/findleaves.py --prune=out --prune=.repo --prune=.git . CleanSpec.mk) + $(shell build/tools/findleaves.py --prune=$(OUT_DIR) --prune=.repo --prune=.git . CleanSpec.mk) include $(subdir_cleanspecs) subdir_cleanspecs := diff --git a/core/clear_vars.mk b/core/clear_vars.mk index 7530ea8..0a3517b 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -11,6 +11,7 @@ LOCAL_BUILT_MODULE:= LOCAL_BUILT_MODULE_STEM:= OVERRIDE_BUILT_MODULE_PATH:= LOCAL_INSTALLED_MODULE:= +LOCAL_INSTALLED_MODULE_STEM:= LOCAL_UNINSTALLABLE_MODULE:= LOCAL_INTERMEDIATE_TARGETS:= LOCAL_UNSTRIPPED_PATH:= @@ -102,7 +103,7 @@ LOCAL_SDK_VERSION:= LOCAL_SDK_RES_VERSION:= LOCAL_NDK_STL_VARIANT:= LOCAL_EMMA_INSTRUMENT:= -LOCAL_PROGUARD_ENABLED:= # '',full,custom,nosystem,disabled +LOCAL_PROGUARD_ENABLED:= # '',full,custom,nosystem,disabled,obfuscation,optimization LOCAL_PROGUARD_FLAGS:= LOCAL_PROGUARD_FLAG_FILES:= LOCAL_EMMA_COVERAGE_FILTER:= @@ -123,12 +124,14 @@ LOCAL_PROTOC_FLAGS:= LOCAL_PROTO_JAVA_OUTPUT_PARAMS:= LOCAL_NO_CRT:= LOCAL_PROPRIETARY_MODULE:= +LOCAL_PRIVILEGED_MODULE:= LOCAL_MODULE_OWNER:= LOCAL_CTS_TEST_PACKAGE:= LOCAL_CTS_TEST_RUNNER:= LOCAL_CLANG:= LOCAL_ADDRESS_SANITIZER:= LOCAL_JAR_EXCLUDE_FILES:= +LOCAL_JAR_PACKAGES:= LOCAL_LINT_FLAGS:= LOCAL_SOURCE_FILES_ALL_GENERATED:= # '',true # Don't delete the META_INF dir when merging static Java libraries. @@ -137,6 +140,7 @@ LOCAL_ADDITIONAL_CERTIFICATES:= LOCAL_PREBUILT_MODULE_FILE:= LOCAL_POST_INSTALL_CMD:= LOCAL_DIST_BUNDLED_BINARIES:= +LOCAL_HAL_STATIC_LIBRARIES:= LOCAL_NO_SYNTAX_CHECK:= LOCAL_NO_STATIC_ANALYZER:= diff --git a/core/combo/TARGET_linux-arm.mk b/core/combo/TARGET_linux-arm.mk index d92e381..6fbb778 100644 --- a/core/combo/TARGET_linux-arm.mk +++ b/core/combo/TARGET_linux-arm.mk @@ -93,6 +93,8 @@ ifeq ($(FORCE_ARM_DEBUGGING),true) TARGET_thumb_CFLAGS += -marm -fno-omit-frame-pointer endif +android_config_h := $(call select-android-config-h,linux-arm) + TARGET_GLOBAL_CFLAGS += \ -msoft-float -fpic -fPIE \ -ffunction-sections \ @@ -103,11 +105,9 @@ TARGET_GLOBAL_CFLAGS += \ -Werror=format-security \ -D_FORTIFY_SOURCE=2 \ -fno-short-enums \ - $(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) + $(arch_variant_cflags) \ + -include $(android_config_h) \ + -I $(dir $(android_config_h)) # The "-Wunused-but-set-variable" option often breaks projects that enable # "-Wall -Werror" due to a commom idiom "ALOGV(mesg)" where ALOGV is turned diff --git a/core/combo/TARGET_linux-mips.mk b/core/combo/TARGET_linux-mips.mk index 7e43faa..99ea022 100644 --- a/core/combo/TARGET_linux-mips.mk +++ b/core/combo/TARGET_linux-mips.mk @@ -80,6 +80,8 @@ ifeq ($(FORCE_MIPS_DEBUGGING),true) TARGET_mips_CFLAGS += -fno-omit-frame-pointer endif +android_config_h := $(call select-android-config-h,linux-mips) + TARGET_GLOBAL_CFLAGS += \ $(TARGET_mips_CFLAGS) \ -Ulinux -U__unix -U__unix__ -Umips \ @@ -90,11 +92,9 @@ TARGET_GLOBAL_CFLAGS += \ -Wa,--noexecstack \ -Werror=format-security \ -D_FORTIFY_SOURCE=2 \ - $(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) + $(arch_variant_cflags) \ + -include $(android_config_h) \ + -I $(dir $(android_config_h)) # This warning causes dalvik not to build with gcc 4.6+ and -Werror. # We cannot turn it off blindly since the option is not available diff --git a/core/combo/TARGET_linux-x86.mk b/core/combo/TARGET_linux-x86.mk index 873e0eb..b7a16d6 100755 --- a/core/combo/TARGET_linux-x86.mk +++ b/core/combo/TARGET_linux-x86.mk @@ -116,6 +116,8 @@ else endif KERNEL_HEADERS := $(KERNEL_HEADERS_COMMON) $(KERNEL_HEADERS_ARCH) $(KERNEL_HEADERS_AUX) +android_config_h := $(call select-android-config-h,target_linux-x86) + TARGET_GLOBAL_CFLAGS += \ -O2 \ -Ulinux \ @@ -133,11 +135,9 @@ TARGET_GLOBAL_CFLAGS += \ -funswitch-loops \ -funwind-tables \ -fstack-protector \ - -m32 - -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) + -m32 \ + -include $(android_config_h) \ + -I $(dir $(android_config_h)) TARGET_GLOBAL_CFLAGS += $(arch_variant_cflags) diff --git a/core/combo/arch/arm/armv7-a-neon.mk b/core/combo/arch/arm/armv7-a-neon.mk index 208c24c..1105330 100644 --- a/core/combo/arch/arm/armv7-a-neon.mk +++ b/core/combo/arch/arm/armv7-a-neon.mk @@ -9,12 +9,16 @@ ARCH_ARM_HAVE_NEON := true ifeq ($(TARGET_CPU_VARIANT),$(filter $(TARGET_CPU_VARIANT),cortex-a15 krait)) arch_variant_cflags := -mcpu=cortex-a15 else +ifeq ($(strip $(TARGET_CPU_VARIANT)),cortex-a8) + arch_variant_cflags := -mcpu=cortex-a8 +else ifeq ($(strip $(TARGET_CPU_VARIANT)),cortex-a7) arch_variant_cflags := -mcpu=cortex-a7 else arch_variant_cflags := -march=armv7-a endif endif +endif arch_variant_cflags += \ -mfloat-abi=softfp \ diff --git a/core/config.mk b/core/config.mk index 73acac9..67ca243 100644 --- a/core/config.mk +++ b/core/config.mk @@ -120,7 +120,7 @@ TARGET_COMPRESS_MODULE_SYMBOLS := false # --------------------------------------------------------------- # Try to include buildspec.mk, which will try to set stuff up. -# If this file doesn't exist, the environemnt variables will +# If this file doesn't exist, the environment variables will # be used, and if that doesn't work, then the default is an # arm build ifndef ANDROID_BUILDSPEC @@ -156,6 +156,26 @@ endif TARGET_DEVICE_DIR := $(patsubst %/,%,$(dir $(board_config_mk))) board_config_mk := +# Perhaps we should move this block to build/core/Makefile, +# once we don't have TARGET_NO_KERNEL reference in AndroidBoard.mk/Android.mk. +ifneq ($(strip $(TARGET_NO_BOOTLOADER)),true) + INSTALLED_BOOTLOADER_MODULE := $(PRODUCT_OUT)/bootloader + ifeq ($(strip $(TARGET_BOOTLOADER_IS_2ND)),true) + INSTALLED_2NDBOOTLOADER_TARGET := $(PRODUCT_OUT)/2ndbootloader + else + INSTALLED_2NDBOOTLOADER_TARGET := + endif +else + INSTALLED_BOOTLOADER_MODULE := + INSTALLED_2NDBOOTLOADER_TARGET := +endif # TARGET_NO_BOOTLOADER +ifneq ($(strip $(TARGET_NO_KERNEL)),true) + INSTALLED_KERNEL_TARGET := $(PRODUCT_OUT)/kernel +else + INSTALLED_KERNEL_TARGET := +endif + + # The build system exposes several variables for where to find the kernel # headers: # TARGET_DEVICE_KERNEL_HEADERS is automatically created for the current @@ -440,6 +460,11 @@ HOST_GLOBAL_CPPFLAGS += $(HOST_RELEASE_CPPFLAGS) TARGET_GLOBAL_CFLAGS += $(TARGET_RELEASE_CFLAGS) TARGET_GLOBAL_CPPFLAGS += $(TARGET_RELEASE_CPPFLAGS) +# allow overriding default Java libraries on a per-target basis +ifeq ($(TARGET_DEFAULT_JAVA_LIBRARIES),) + TARGET_DEFAULT_JAVA_LIBRARIES := core core-junit ext framework framework2 +endif + # define llvm tools and global flags include $(BUILD_SYSTEM)/llvm_config.mk diff --git a/core/definitions.mk b/core/definitions.mk index 3d19e72..290bb2f 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -147,7 +147,7 @@ endef # $(1): directory to search under # Ignores $(1)/Android.mk define first-makefiles-under -$(shell build/tools/findleaves.py --prune=out --prune=.repo --prune=.git \ +$(shell build/tools/findleaves.py --prune=$(OUT_DIR) --prune=.repo --prune=.git \ --mindepth=2 $(1) Android.mk) endef @@ -1511,6 +1511,10 @@ $(if $(PRIVATE_JAR_EXCLUDE_FILES), $(hide) find $(PRIVATE_CLASS_INTERMEDIATES_DI -name $(word 1, $(PRIVATE_JAR_EXCLUDE_FILES)) \ $(addprefix -o -name , $(wordlist 2, 999, $(PRIVATE_JAR_EXCLUDE_FILES))) \ | xargs rm -rf) +$(if $(PRIVATE_JAR_PACKAGES), $(hide) find $(PRIVATE_CLASS_INTERMEDIATES_DIR) -mindepth 1 -type d \ + $(foreach pkg, $(PRIVATE_JAR_PACKAGES), \ + -not -path $(PRIVATE_CLASS_INTERMEDIATES_DIR)/$(subst .,/,$(pkg))) \ + | xargs rm -rf) $(hide) jar $(if $(strip $(PRIVATE_JAR_MANIFEST)),-cfm,-cf) \ $@ $(PRIVATE_JAR_MANIFEST) -C $(PRIVATE_CLASS_INTERMEDIATES_DIR) . endef @@ -1558,6 +1562,10 @@ $(if $(PRIVATE_JAR_EXCLUDE_FILES), $(hide) find $(PRIVATE_CLASS_INTERMEDIATES_DI -name $(word 1, $(PRIVATE_JAR_EXCLUDE_FILES)) \ $(addprefix -o -name , $(wordlist 2, 999, $(PRIVATE_JAR_EXCLUDE_FILES))) \ | xargs rm -rf) +$(if $(PRIVATE_JAR_PACKAGES), $(hide) find $(PRIVATE_CLASS_INTERMEDIATES_DIR) -mindepth 1 -type d \ + $(foreach pkg, $(PRIVATE_JAR_PACKAGES), \ + -not -path $(PRIVATE_CLASS_INTERMEDIATES_DIR)/$(subst .,/,$(pkg))) \ + | xargs rm -rf) $(hide) jar $(if $(strip $(PRIVATE_JAR_MANIFEST)),-cfm,-cf) \ $@ $(PRIVATE_JAR_MANIFEST) -C $(PRIVATE_CLASS_INTERMEDIATES_DIR) . $(hide) mv $(PRIVATE_CLASS_INTERMEDIATES_DIR)/newstamp $(PRIVATE_CLASS_INTERMEDIATES_DIR)/stamp @@ -1716,35 +1724,6 @@ $(if $(PRIVATE_EXTRA_JAR_ARGS), $(call add-java-resources-to-package)) endef ########################################################### -## Obfuscate a jar file -########################################################### - -# PRIVATE_KEEP_FILE is a file containing a list of classes -# PRIVATE_INTERMEDIATES_DIR is a directory we can use for temporary files -# The module using this must depend on -# $(HOST_OUT_JAVA_LIBRARIES)/proguard-4.0.1.jar -define obfuscate-jar -@echo "Obfuscate jar: $(notdir $@) ($@)" -@mkdir -p $(dir $@) -@rm -f $@ -@mkdir -p $(PRIVATE_INTERMEDIATES_DIR) -$(hide) sed -e 's/^/-keep class /' < $(PRIVATE_KEEP_FILE) > \ - $(PRIVATE_INTERMEDIATES_DIR)/keep.pro -$(hide) java -Xmx512M -jar $(HOST_OUT_JAVA_LIBRARIES)/proguard-4.0.1.jar \ - -injars $< \ - -outjars $@ \ - -target 1.5 \ - -dontnote -dontwarn \ - -printmapping $(PRIVATE_INTERMEDIATES_DIR)/out.map \ - -forceprocessing \ - -renamesourcefileattribute SourceFile \ - -keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod \ - -repackageclasses \ - -keepclassmembers "class * { public protected *; }" \ - @$(PRIVATE_INTERMEDIATES_DIR)/keep.pro -endef - -########################################################### ## Commands for copying files ########################################################### @@ -1887,34 +1866,11 @@ endif ########################################################### ## Commands to call Proguard ########################################################### - -# Command to copy the file with acp, if proguard is disabled. -define proguard-disabled-commands -@echo Copying: $@ -$(hide) $(ACP) -fp $< $@ -endef - -# Command to call Proguard -# $(1): extra flags for instrumentation. -define proguard-enabled-commands -@echo Proguard: $@ -$(hide) $(PROGUARD) -injars $< -outjars $@ $(PRIVATE_PROGUARD_FLAGS) $(1) -endef - -# Figure out the proguard dictionary file of the module that is instrumentationed for. -define get-instrumentation-proguard-flags -$(if $(PRIVATE_INSTRUMENTATION_FOR),$(if $(ALL_MODULES.$(PRIVATE_INSTRUMENTATION_FOR).PROGUARD_ENABLED),-applymapping $(call intermediates-dir-for,APPS,$(PRIVATE_INSTRUMENTATION_FOR),,COMMON)/proguard_dictionary)) -endef - define transform-jar-to-proguard -$(eval _instrumentation_proguard_flags:=$(call get-instrumentation-proguard-flags)) -$(eval _enable_proguard:=$(PRIVATE_PROGUARD_ENABLED)$(_instrumentation_proguard_flags)) -$(if $(_enable_proguard),$(call proguard-enabled-commands,$(_instrumentation_proguard_flags)),$(call proguard-disabled-commands)) -$(eval _instrumentation_proguard_flags:=) -$(eval _enable_proguard:=) +@echo Proguard: $@ +$(hide) $(PROGUARD) -injars $< -outjars $@ $(PRIVATE_PROGUARD_FLAGS) endef - ########################################################### ## Stuff source generated from one-off tools ########################################################### diff --git a/core/dex_preopt.mk b/core/dex_preopt.mk index 0c9904a..e2e76b8 100644 --- a/core/dex_preopt.mk +++ b/core/dex_preopt.mk @@ -3,9 +3,9 @@ # #################################### -# TODO: replace it with device's BOOTCLASSPATH -DEXPREOPT_BOOT_JARS := core:conscrypt:okhttp:core-junit:bouncycastle:ext:framework:telephony-common:voip-common:mms-common:android.policy:services:apache-xml +DEXPREOPT_BOOT_JARS := $(PRODUCT_BOOT_JARS) DEXPREOPT_BOOT_JARS_MODULES := $(subst :, ,$(DEXPREOPT_BOOT_JARS)) +PRODUCT_BOOTCLASSPATH := $(subst $(space),:,$(foreach m,$(DEXPREOPT_BOOT_JARS_MODULES),/system/framework/$(m).jar)) DEXPREOPT_BUILD_DIR := $(OUT_DIR) DEXPREOPT_PRODUCT_DIR := $(patsubst $(DEXPREOPT_BUILD_DIR)/%,%,$(PRODUCT_OUT))/dex_bootjars @@ -56,7 +56,9 @@ $(_dbj_odex) : $(_dbj_src_jar) | $(ACP) $(DEXPREOPT) $(DEXOPT) $(_dbj_jar_no_dex) : $(_dbj_src_jar) | $(ACP) $(AAPT) $$(call copy-file-to-target) +ifneq ($(DEX_PREOPT_DEFAULT),nostripping) $$(call dexpreopt-remove-classes.dex,$$@) +endif $(eval _dbj_jar :=) $(eval _dbj_odex :=) diff --git a/core/droiddoc.mk b/core/droiddoc.mk index 8a5c556..0d3094d 100644 --- a/core/droiddoc.mk +++ b/core/droiddoc.mk @@ -69,7 +69,7 @@ ifneq ($(LOCAL_SDK_VERSION),) LOCAL_JAVA_LIBRARIES := sdk_v$(LOCAL_SDK_VERSION) $(LOCAL_JAVA_LIBRARIES) endif else - LOCAL_JAVA_LIBRARIES := core ext framework $(LOCAL_JAVA_LIBRARIES) + LOCAL_JAVA_LIBRARIES := core ext framework framework2 $(LOCAL_JAVA_LIBRARIES) endif # LOCAL_SDK_VERSION LOCAL_JAVA_LIBRARIES := $(sort $(LOCAL_JAVA_LIBRARIES)) diff --git a/core/dynamic_binary.mk b/core/dynamic_binary.mk index 6ede57f..7778477 100644 --- a/core/dynamic_binary.mk +++ b/core/dynamic_binary.mk @@ -26,12 +26,17 @@ endif # TODO: This duplicates logic from base_rules.mk because we need to # know its results before base_rules.mk is included. # Consolidate the duplicates. -LOCAL_MODULE_STEM := $(strip $(LOCAL_MODULE_STEM)) -ifeq ($(LOCAL_MODULE_STEM),) +ifndef LOCAL_MODULE_STEM LOCAL_MODULE_STEM := $(LOCAL_MODULE) endif -LOCAL_INSTALLED_MODULE_STEM := $(LOCAL_MODULE_STEM)$(LOCAL_MODULE_SUFFIX) -LOCAL_BUILT_MODULE_STEM := $(LOCAL_INSTALLED_MODULE_STEM) + +ifndef LOCAL_BUILT_MODULE_STEM + LOCAL_BUILT_MODULE_STEM := $(LOCAL_MODULE_STEM)$(LOCAL_MODULE_SUFFIX) +endif + +ifndef LOCAL_INSTALLED_MODULE_STEM + LOCAL_INSTALLED_MODULE_STEM := $(LOCAL_MODULE_STEM)$(LOCAL_MODULE_SUFFIX) +endif # base_rules.make defines $(intermediates), but we need its value # before we include base_rules. Make a guess, and verify that @@ -90,7 +95,7 @@ endif ## Store a copy with symbols for symbolic debugging ########################################################### symbolic_input := $(compress_output) -symbolic_output := $(LOCAL_UNSTRIPPED_PATH)/$(LOCAL_BUILT_MODULE_STEM) +symbolic_output := $(LOCAL_UNSTRIPPED_PATH)/$(LOCAL_INSTALLED_MODULE_STEM) $(symbolic_output) : $(symbolic_input) | $(ACP) @echo "target Symbolic: $(PRIVATE_MODULE) ($@)" $(copy-file-to-target) diff --git a/core/envsetup.mk b/core/envsetup.mk index f861586..8ac437e 100644 --- a/core/envsetup.mk +++ b/core/envsetup.mk @@ -196,6 +196,7 @@ TARGET_OUT_OPTIONAL_EXECUTABLES:= $(TARGET_OUT)/xbin TARGET_OUT_SHARED_LIBRARIES:= $(TARGET_OUT)/lib TARGET_OUT_JAVA_LIBRARIES:= $(TARGET_OUT)/framework TARGET_OUT_APPS:= $(TARGET_OUT)/app +TARGET_OUT_APPS_PRIVILEGED := $(TARGET_OUT)/priv-app TARGET_OUT_KEYLAYOUT := $(TARGET_OUT)/usr/keylayout TARGET_OUT_KEYCHARS := $(TARGET_OUT)/usr/keychars TARGET_OUT_ETC := $(TARGET_OUT)/etc @@ -211,6 +212,7 @@ TARGET_OUT_DATA_KEYLAYOUT := $(TARGET_OUT_KEYLAYOUT) TARGET_OUT_DATA_KEYCHARS := $(TARGET_OUT_KEYCHARS) TARGET_OUT_DATA_ETC := $(TARGET_OUT_ETC) TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest +TARGET_OUT_DATA_FAKE := $(TARGET_OUT_DATA)/fake_packages TARGET_OUT_CACHE := $(PRODUCT_OUT)/cache diff --git a/core/help.mk b/core/help.mk index 9e37f82..6e0b2c0 100644 --- a/core/help.mk +++ b/core/help.mk @@ -14,13 +14,6 @@ # limitations under the License. # -ifeq ($(MAKECMDGOALS),help) -dont_bother := true -endif -ifeq ($(MAKECMDGOALS),out) -dont_bother := true -endif - .PHONY: help help: @echo @@ -39,4 +32,3 @@ help: .PHONY: out out: @echo "I'm sure you're nice and all, but no thanks." - diff --git a/core/host_java_library.mk b/core/host_java_library.mk index 02274e4..391050c 100644 --- a/core/host_java_library.mk +++ b/core/host_java_library.mk @@ -23,14 +23,32 @@ LOCAL_MODULE_SUFFIX := $(COMMON_JAVA_PACKAGE_SUFFIX) LOCAL_IS_HOST_MODULE := true LOCAL_BUILT_MODULE_STEM := javalib.jar -ifeq ($(LOCAL_BUILD_HOST_DEX),true) -ifneq ($(LOCAL_NO_STANDARD_LIBRARIES),true) - LOCAL_JAVA_LIBRARIES := $(sort core-hostdex $(LOCAL_JAVA_LIBRARIES)) +# base_rules.mk looks at this +all_res_assets := + +proto_sources := $(filter %.proto,$(LOCAL_SRC_FILES)) +ifneq ($(proto_sources),) +ifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),micro) + LOCAL_JAVA_LIBRARIES += host-libprotobuf-java-2.3.0-micro +else + ifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),nano) + LOCAL_JAVA_LIBRARIES += host-libprotobuf-java-2.3.0-nano + else + LOCAL_JAVA_LIBRARIES += host-libprotobuf-java-2.3.0-lite + endif +endif endif intermediates := $(call local-intermediates-dir) intermediates.COMMON := $(call local-intermediates-dir,COMMON) +LOCAL_INTERMEDIATE_SOURCE_DIR := $(intermediates.COMMON)/src + +ifeq ($(LOCAL_BUILD_HOST_DEX),true) +ifneq ($(LOCAL_NO_STANDARD_LIBRARIES),true) + LOCAL_JAVA_LIBRARIES += core-hostdex +endif + full_classes_compiled_jar := $(intermediates.COMMON)/classes-full-debug.jar full_classes_jarjar_jar := $(intermediates.COMMON)/classes-jarjar.jar full_classes_jar := $(intermediates.COMMON)/classes.jar @@ -42,13 +60,15 @@ LOCAL_INTERMEDIATE_TARGETS += \ $(full_classes_jar) \ $(built_dex) -LOCAL_INTERMEDIATE_SOURCE_DIR := $(intermediates.COMMON)/src # See comment in java.mk java_alternative_checked_module := $(full_classes_compiled_jar) - endif # LOCAL_BUILD_HOST_DEX +LOCAL_JAVA_LIBRARIES := $(sort $(LOCAL_JAVA_LIBRARIES)) + +####################################### include $(BUILD_SYSTEM)/base_rules.mk +####################################### $(full_classes_compiled_jar): PRIVATE_JAVAC_DEBUG_FLAGS := -g @@ -70,13 +90,13 @@ $(full_classes_compiled_jar): PRIVATE_JAVA_LAYERS_FILE := $(layers_file) $(full_classes_compiled_jar): PRIVATE_JAVACFLAGS := $(LOCAL_JAVACFLAGS) $(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_FILES := $(full_classes_compiled_jar): $(java_sources) $(java_resource_sources) $(full_java_lib_deps) \ - $(jar_manifest_file) $(LOCAL_ADDITIONAL_DEPENDENCIES) + $(jar_manifest_file) $(proto_java_sources_file_stamp) $(LOCAL_ADDITIONAL_DEPENDENCIES) $(transform-host-java-to-package) # Run jarjar if necessary, otherwise just copy the file. ifneq ($(strip $(LOCAL_JARJAR_RULES)),) $(full_classes_jarjar_jar): PRIVATE_JARJAR_RULES := $(LOCAL_JARJAR_RULES) -$(full_classes_jarjar_jar): $(full_classes_compiled_jar) | $(JARJAR) +$(full_classes_jarjar_jar): $(full_classes_compiled_jar) $(LOCAL_JARJAR_RULES) | $(JARJAR) @echo JarJar: $@ $(hide) java -jar $(JARJAR) process $(PRIVATE_JARJAR_RULES) $< $@ else @@ -109,6 +129,6 @@ $(LOCAL_BUILT_MODULE): PRIVATE_JAVACFLAGS := $(LOCAL_JAVACFLAGS) $(LOCAL_BUILT_MODULE): PRIVATE_JAR_EXCLUDE_FILES := $(LOCAL_BUILT_MODULE): PRIVATE_JAVA_LAYERS_FILE := $(layers_file) $(LOCAL_BUILT_MODULE): $(java_sources) $(java_resource_sources) $(full_java_lib_deps) \ - $(jar_manifest_file) $(LOCAL_ADDITIONAL_DEPENDENCIES) + $(jar_manifest_file) $(proto_java_sources_file_stamp) $(LOCAL_ADDITIONAL_DEPENDENCIES) $(transform-host-java-to-package) endif # LOCAL_BUILD_HOST_DEX diff --git a/core/java.mk b/core/java.mk index f43bf3b..f237965 100644 --- a/core/java.mk +++ b/core/java.mk @@ -12,16 +12,6 @@ endif endif # !PDK_JAVA endif #PDK - -# Make sure there's something to build. -# It's possible to build a package that doesn't contain any classes. -# LOCAL_SOURCE_FILES_ALL_GENERATED is set only if the module does not have static source files, -# but generated source files in its LOCAL_INTERMEDIATE_SOURCE_DIR. -# You have to set up the dependency in some other way. -ifeq (,$(strip $(LOCAL_SRC_FILES)$(all_res_assets)$(LOCAL_STATIC_JAVA_LIBRARIES))$(filter true,$(LOCAL_SOURCE_FILES_ALL_GENERATED))) -$(warning $(LOCAL_PATH): Target java module does not define any source or resource files) -endif - LOCAL_NO_STANDARD_LIBRARIES:=$(strip $(LOCAL_NO_STANDARD_LIBRARIES)) LOCAL_SDK_VERSION:=$(strip $(LOCAL_SDK_VERSION)) @@ -43,7 +33,7 @@ ifneq ($(LOCAL_SDK_VERSION),) endif else ifneq ($(LOCAL_NO_STANDARD_LIBRARIES),true) - LOCAL_JAVA_LIBRARIES := core core-junit ext framework $(LOCAL_JAVA_LIBRARIES) + LOCAL_JAVA_LIBRARIES := $(TARGET_DEFAULT_JAVA_LIBRARIES) $(LOCAL_JAVA_LIBRARIES) endif endif @@ -88,23 +78,14 @@ full_classes_compiled_jar_leaf := classes-full-debug.jar built_dex_intermediate_leaf := classes-with-local.dex endif -LOCAL_PROGUARD_ENABLED:=$(strip $(LOCAL_PROGUARD_ENABLED)) ifeq ($(LOCAL_PROGUARD_ENABLED),disabled) LOCAL_PROGUARD_ENABLED := endif -# By giving different file name, files can be updated correctly when switching -# between builds with and without Proguard enabled. -# Note that ANY intermediate targets between the proguard and -# the final built_dex should be differently named! ifdef LOCAL_PROGUARD_ENABLED proguard_jar_leaf := proguard.classes.jar -built_dex_intermediate_leaf := proguard.$(built_dex_intermediate_leaf) -built_dex_leaf := proguard.classes.dex else proguard_jar_leaf := noproguard.classes.jar -built_dex_intermediate_leaf := noproguard.$(built_dex_intermediate_leaf) -built_dex_leaf := noproguard.classes.dex endif full_classes_compiled_jar := $(intermediates.COMMON)/$(full_classes_compiled_jar_leaf) @@ -118,9 +99,14 @@ full_classes_proguard_jar := $(intermediates.COMMON)/$(proguard_jar_leaf) built_dex_intermediate := $(intermediates.COMMON)/$(built_dex_intermediate_leaf) full_classes_stubs_jar := $(intermediates.COMMON)/stubs.jar -# full_classes_jar and built_dex are cleared below, and re-set if we really need them. +ifeq ($(LOCAL_MODULE_CLASS)$(LOCAL_SRC_FILES)$(LOCAL_STATIC_JAVA_LIBRARIES)$(LOCAL_SOURCE_FILES_ALL_GENERATED),APPS) +# If this is an apk without any Java code (e.g. framework-res), we should skip compiling Java. +full_classes_jar := +built_dex := +else full_classes_jar := $(intermediates.COMMON)/classes.jar -built_dex := $(intermediates.COMMON)/$(built_dex_leaf) +built_dex := $(intermediates.COMMON)/classes.dex +endif LOCAL_INTERMEDIATE_TARGETS += \ $(full_classes_compiled_jar) \ @@ -249,7 +235,11 @@ endif # to fail except for bugs in their respective tools. If you would # like to run these rules, add the "all" modifier goal to the make # command line. +ifdef full_classes_jar java_alternative_checked_module := $(full_classes_compiled_jar) +else +java_alternative_checked_module := +endif # TODO: It looks like the only thing we need from base_rules is # all_java_sources. See if we can get that by adding a @@ -262,6 +252,13 @@ include $(BUILD_SYSTEM)/base_rules.mk java_alternative_checked_module := +# Make sure there's something to build. +ifdef full_classes_jar +ifndef need_compile_java +$(error $(LOCAL_PATH): Target java module does not define any source or resource files) +endif +endif + # Install the RS compatibility libraries to /system/lib/ if necessary ifdef rs_compatibility_jni_libs installed_rs_compatibility_jni_libs := $(addprefix $(TARGET_OUT_SHARED_LIBRARIES)/,\ @@ -297,19 +294,7 @@ $(LOCAL_INTERMEDIATE_TARGETS): \ # properly. $(cleantarget): PRIVATE_CLEAN_FILES += $(intermediates.COMMON) -# If the module includes java code (i.e., it's not framework-res), compile it. -full_classes_jar := -built_dex := -# need_compile_java is set in base_rules.mk -ifeq ($(need_compile_java),true) - -# If LOCAL_BUILT_MODULE_STEM wasn't overridden by our caller, -# full_classes_jar will be the same module as LOCAL_BUILT_MODULE. -# Otherwise, the caller will define it as a prerequisite of -# LOCAL_BUILT_MODULE, so it will inherit the necessary PRIVATE_* -# variable definitions. -full_classes_jar := $(intermediates.COMMON)/classes.jar -built_dex := $(intermediates.COMMON)/$(built_dex_leaf) +ifdef full_classes_jar # Droiddoc isn't currently able to generate stubs for modules, so we're just # allowing it to use the classes.jar as the "stubs" that would be use to link @@ -337,6 +322,7 @@ $(full_classes_compiled_jar): PRIVATE_WARNINGS_ENABLE := $(LOCAL_WARNINGS_ENABLE # via deps on the target that generates the sources. $(full_classes_compiled_jar): PRIVATE_JAVACFLAGS := $(LOCAL_JAVACFLAGS) $(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_FILES := $(LOCAL_JAR_EXCLUDE_FILES) +$(full_classes_compiled_jar): PRIVATE_JAR_PACKAGES := $(LOCAL_JAR_PACKAGES) $(full_classes_compiled_jar): PRIVATE_DONT_DELETE_JAR_META_INF := $(LOCAL_DONT_DELETE_JAR_META_INF) $(full_classes_compiled_jar): $(java_sources) $(java_resource_sources) $(full_java_lib_deps) \ $(jar_manifest_file) $(layers_file) $(RenderScript_file_stamp) \ @@ -348,7 +334,7 @@ $(full_classes_compiled_jar): PRIVATE_JAVAC_DEBUG_FLAGS := -g # Run jarjar if necessary, otherwise just copy the file. ifneq ($(strip $(LOCAL_JARJAR_RULES)),) $(full_classes_jarjar_jar): PRIVATE_JARJAR_RULES := $(LOCAL_JARJAR_RULES) -$(full_classes_jarjar_jar): $(full_classes_compiled_jar) | $(JARJAR) +$(full_classes_jarjar_jar): $(full_classes_compiled_jar) $(LOCAL_JARJAR_RULES) | $(JARJAR) @echo JarJar: $@ $(hide) java -jar $(JARJAR) process $(PRIVATE_JARJAR_RULES) $< $@ else @@ -386,42 +372,75 @@ $(full_classes_jar): $(full_classes_emma_jar) | $(ACP) $(hide) $(ACP) -fp $< $@ # Run proguard if necessary, otherwise just copy the file. +ifdef LOCAL_PROGUARD_ENABLED +ifneq ($(filter-out full custom nosystem obfuscation optimization,$(LOCAL_PROGUARD_ENABLED)),) + $(warning while processing: $(LOCAL_MODULE)) + $(error invalid value for LOCAL_PROGUARD_ENABLED: $(LOCAL_PROGUARD_ENABLED)) +endif proguard_dictionary := $(intermediates.COMMON)/proguard_dictionary -# Proguard doesn't like a class in both library and the jar to be processed. -proguard_full_java_libs := $(filter-out $(full_static_java_libs),$(full_java_libs)) -proguard_flags := $(addprefix -libraryjars ,$(proguard_full_java_libs)) \ +proguard_flags := $(addprefix -libraryjars ,$(full_shared_java_libs)) \ -forceprocessing \ -printmapping $(proguard_dictionary) -ifneq ($(LOCAL_PROGUARD_ENABLED),nosystem) + +ifeq ($(filter nosystem,$(LOCAL_PROGUARD_ENABLED)),) proguard_flags += -include $(BUILD_SYSTEM)/proguard.flags ifeq ($(LOCAL_EMMA_INSTRUMENT),true) proguard_flags += -include $(BUILD_SYSTEM)/proguard.emma.flags endif # If this is a test package, add proguard keep flags for tests. -ifneq ($(strip $(LOCAL_INSTRUMENTATION_FOR)$(filter tests,$(LOCAL_MODULE_TAGS))$(filter android.test.runner,$(LOCAL_JAVA_LIBRARIES))),) -proguard_flags := $(proguard_flags) -include $(BUILD_SYSTEM)/proguard_tests.flags +ifneq ($(LOCAL_INSTRUMENTATION_FOR)$(filter tests,$(LOCAL_MODULE_TAGS)),) +proguard_flags += -include $(BUILD_SYSTEM)/proguard_tests.flags endif # test package -else # LOCAL_PROGUARD_ENABLED is nosystem -proguard_flags += -include $(BUILD_SYSTEM)/proguard_basic_keeps.flags -endif # LOCAL_PROGUARD_ENABLED is not nosystem - -ifneq ($(LOCAL_PROGUARD_ENABLED),) -ifeq ($(filter full custom nosystem, $(LOCAL_PROGUARD_ENABLED)),) - $(warning while processing: $(LOCAL_MODULE)) - $(error invalid value for LOCAL_PROGUARD_ENABLED: $(LOCAL_PROGUARD_ENABLED)) -endif # not a legal value -endif # LOCAL_PROGUARD_ENABLED +ifeq ($(filter obfuscation,$(LOCAL_PROGUARD_ENABLED)),) +# By default no obfuscation +proguard_flags += -dontobfuscate +endif # No obfuscation +ifeq ($(filter optimization,$(LOCAL_PROGUARD_ENABLED)),) +# By default no optimization +proguard_flags += -dontoptimize +endif # No optimization + +ifdef LOCAL_INSTRUMENTATION_FOR +ifeq ($(filter obfuscation,$(LOCAL_PROGUARD_ENABLED)),) +# If no obfuscation, link in the instrmented package's classes.jar as a library. +# link_instr_classes_jar is defined in base_rule.mk +proguard_flags += -libraryjars $(link_instr_classes_jar) +else # obfuscation +# If obfuscation is enabled, the main app must be obfuscated too. +# We need to run obfuscation using the main app's dictionary, +# and treat the main app's class.jar as injars instead of libraryjars. +proguard_flags := -injars $(link_instr_classes_jar) \ + -outjars $(intermediates.COMMON)/proguard.$(LOCAL_INSTRUMENTATION_FOR).jar \ + -include $(link_instr_intermediates_dir.COMMON)/proguard_options \ + -applymapping $(link_instr_intermediates_dir.COMMON)/proguard_dictionary \ + -verbose \ + $(proguard_flags) + +# Sometimes (test + main app) uses different keep rules from the main app - +# apply the main app's dictionary anyway. +proguard_flags += -ignorewarnings + +# Make sure we run Proguard on the main app first +$(full_classes_proguard_jar) : $(link_instr_intermediates_dir.COMMON)/proguard.classes.jar + +endif # no obfuscation +endif # LOCAL_INSTRUMENTATION_FOR +endif # LOCAL_PROGUARD_ENABLED is not nosystem proguard_flag_files := $(addprefix $(LOCAL_PATH)/, $(LOCAL_PROGUARD_FLAG_FILES)) LOCAL_PROGUARD_FLAGS += $(addprefix -include , $(proguard_flag_files)) -$(full_classes_proguard_jar): PRIVATE_PROGUARD_ENABLED:=$(LOCAL_PROGUARD_ENABLED) $(full_classes_proguard_jar): PRIVATE_PROGUARD_FLAGS := $(proguard_flags) $(LOCAL_PROGUARD_FLAGS) -$(full_classes_proguard_jar): PRIVATE_INSTRUMENTATION_FOR:=$(strip $(LOCAL_INSTRUMENTATION_FOR)) $(full_classes_proguard_jar) : $(full_classes_jar) $(proguard_flag_files) | $(ACP) $(PROGUARD) $(call transform-jar-to-proguard) -ALL_MODULES.$(LOCAL_MODULE).PROGUARD_ENABLED:=$(LOCAL_PROGUARD_ENABLED) +else # LOCAL_PROGUARD_ENABLED not defined +$(full_classes_proguard_jar) : $(full_classes_jar) + @echo Copying: $@ + $(hide) $(ACP) -fp $< $@ + +endif # LOCAL_PROGUARD_ENABLED defined + # Override PRIVATE_INTERMEDIATES_DIR so that install-dex-debug # will work even when intermediates != intermediates.COMMON. @@ -472,4 +491,4 @@ $(findbugs_html) : $(findbugs_xml) $(LOCAL_MODULE)-findbugs : $(findbugs_html) -endif +endif # full_classes_jar is defined diff --git a/core/java_library.mk b/core/java_library.mk index 67c1bcb..4c6b652 100644 --- a/core/java_library.mk +++ b/core/java_library.mk @@ -18,10 +18,9 @@ ifneq (true,$(LOCAL_IS_STATIC_JAVA_LIBRARY)) ifneq (,$(LOCAL_RESOURCE_DIR)) $(error $(LOCAL_PATH): Target java libraries may not set LOCAL_RESOURCE_DIR) endif -endif - -#xxx base_rules.mk looks at this +# base_rules.mk looks at this all_res_assets := +endif LOCAL_BUILT_MODULE_STEM := javalib.jar @@ -41,7 +40,7 @@ else ifeq (,$(TARGET_BUILD_APPS)) ifeq (,$(LOCAL_APK_LIBRARIES)) ifndef LOCAL_DEX_PREOPT -LOCAL_DEX_PREOPT := true +LOCAL_DEX_PREOPT := $(DEX_PREOPT_DEFAULT) endif endif endif diff --git a/core/legacy_prebuilts.mk b/core/legacy_prebuilts.mk index f767644..c477900 100644 --- a/core/legacy_prebuilts.mk +++ b/core/legacy_prebuilts.mk @@ -34,8 +34,6 @@ GRANDFATHERED_ALL_PREBUILT := \ cdt.bin \ chat-ril \ cpcap-key.kl \ - data \ - dev \ egl.cfg \ firmware_error.565 \ firmware_install.565 \ @@ -45,13 +43,11 @@ GRANDFATHERED_ALL_PREBUILT := \ gps.stingray.so \ gralloc.omap3.so \ gralloc.tegra.so \ - hosts \ hwcomposer.tegra.so \ ime \ init.goldfish.rc \ init.goldfish.sh \ init.olympus.rc \ - init.rc \ init.sholes.rc \ init.stingray.rc \ input \ @@ -76,23 +72,18 @@ GRANDFATHERED_ALL_PREBUILT := \ pm \ pppd-ril \ pppd-ril.options \ - proc \ qwerty.kl \ radio.img \ rdl.bin \ RFFspeed_501.bmd \ RFFstd_501.bmd \ savebpver \ - sbin \ sholes-keypad.kl \ suplcerts.bks \ svc \ - sys \ - system \ tcmd \ ueventd.goldfish.rc \ ueventd.olympus.rc \ - ueventd.rc \ ueventd.stingray.rc \ vold.fstab \ wl1271.bin diff --git a/core/main.mk b/core/main.mk index 82aa062..eac2a01 100644 --- a/core/main.mk +++ b/core/main.mk @@ -71,6 +71,22 @@ $(DEFAULT_GOAL): .PHONY: FORCE FORCE: +# These goals don't need to collect and include Android.mks/CleanSpec.mks +# in the source tree. +dont_bother_goals := clean clobber dataclean installclean \ + help out \ + snod systemimage-nodeps \ + stnod systemtarball-nodeps \ + userdataimage-nodeps userdatatarball-nodeps \ + cacheimage-nodeps \ + vendorimage-nodeps \ + ramdisk-nodeps \ + bootimage-nodeps + +ifneq ($(filter $(dont_bother_goals), $(MAKECMDGOALS)),) +dont_bother := true +endif + # Targets that provide quick help on the build system. include $(BUILD_SYSTEM)/help.mk @@ -84,21 +100,6 @@ include $(BUILD_SYSTEM)/config.mk # be generated correctly include $(BUILD_SYSTEM)/cleanbuild.mk -# These targets are going to delete stuff, don't bother including -# the whole directory tree if that's all we're going to do -ifeq ($(MAKECMDGOALS),clean) -dont_bother := true -endif -ifeq ($(MAKECMDGOALS),clobber) -dont_bother := true -endif -ifeq ($(MAKECMDGOALS),dataclean) -dont_bother := true -endif -ifeq ($(MAKECMDGOALS),installclean) -dont_bother := true -endif - # Include the google-specific config -include vendor/google/build/config.mk @@ -183,6 +184,7 @@ $(info ************************************************************) $(error stop) endif +ifndef BUILD_EMULATOR ifeq (darwin,$(HOST_OS)) GCC_REALPATH = $(realpath $(shell which $(HOST_CC))) ifneq ($(findstring llvm-gcc,$(GCC_REALPATH)),) @@ -199,10 +201,11 @@ endif else # HOST_OS is not darwin BUILD_EMULATOR := true endif # HOST_OS is darwin +endif $(shell echo 'VERSIONS_CHECKED := $(VERSION_CHECK_SEQUENCE_NUMBER)' \ > $(OUT_DIR)/versions_checked.mk) -$(shell echo 'BUILD_EMULATOR := $(BUILD_EMULATOR)' \ +$(shell echo 'BUILD_EMULATOR ?= $(BUILD_EMULATOR)' \ >> $(OUT_DIR)/versions_checked.mk) endif @@ -357,7 +360,7 @@ ifdef is_sdk_build sdk_repo_goal := $(strip $(filter sdk_repo,$(MAKECMDGOALS))) MAKECMDGOALS := $(strip $(filter-out sdk_repo,$(MAKECMDGOALS))) -ifneq ($(words $(filter-out $(INTERNAL_MODIFIER_TARGETS),$(MAKECMDGOALS))),1) +ifneq ($(words $(filter-out $(INTERNAL_MODIFIER_TARGETS) checkbuild,$(MAKECMDGOALS))),1) $(error The 'sdk' target may not be specified with any other targets) endif @@ -414,8 +417,6 @@ $(INTERNAL_MODIFIER_TARGETS): $(DEFAULT_GOAL) endif # Bring in all modules that need to be built. -ifneq ($(dont_bother),true) - ifeq ($(HOST_OS)-$(HOST_ARCH),darwin-ppc) SDK_ONLY := true $(info Building the SDK under darwin-ppc is actually obsolete and unsupported.) @@ -468,8 +469,15 @@ FULL_BUILD := NOTICE-HOST-%: ; NOTICE-TARGET-%: ; +# A helper goal printing out install paths +.PHONY: GET-INSTALL-PATH +GET-INSTALL-PATH: + @$(foreach m, $(ALL_MODULES), $(if $(ALL_MODULES.$(m).INSTALLED), \ + echo 'INSTALL-PATH: $(m) $(ALL_MODULES.$(m).INSTALLED)';)) + else # ONE_SHOT_MAKEFILE +ifneq ($(dont_bother),true) # # Include all of the makefiles in the system # @@ -477,9 +485,11 @@ else # ONE_SHOT_MAKEFILE # Can't use first-makefiles-under here because # --mindepth=2 makes the prunes not work. subdir_makefiles := \ - $(shell build/tools/findleaves.py --prune=out --prune=.repo --prune=.git $(subdirs) Android.mk) + $(shell build/tools/findleaves.py --prune=$(OUT_DIR) --prune=.repo --prune=.git $(subdirs) Android.mk) -include $(subdir_makefiles) +$(foreach mk, $(subdir_makefiles), $(info including $(mk) ...)$(eval include $(mk))) + +endif # dont_bother endif # ONE_SHOT_MAKEFILE @@ -510,16 +520,6 @@ endif # All module makefiles have been included at this point. # ------------------------------------------------------------------- -# ------------------------------------------------------------------- -# Include any makefiles that must happen after the module makefiles -# have been included. -# TODO: have these files register themselves via a global var rather -# than hard-coding the list here. -ifdef FULL_BUILD - # Only include this during a full build, otherwise we can't be - # guaranteed that any policies were included. - -include frameworks/policies/base/PolicyConfig.mk -endif # ------------------------------------------------------------------- # Fix up CUSTOM_MODULES to refer to installed files rather than @@ -680,8 +680,6 @@ include $(BUILD_SYSTEM)/Makefile modules_to_install := $(sort $(ALL_DEFAULT_INSTALLED_MODULES)) ALL_DEFAULT_INSTALLED_MODULES := -endif # dont_bother - # These are additional goals that we build, in order to make sure that there # is as little code as possible in the tree that doesn't build. @@ -808,7 +806,7 @@ ifneq ($(TARGET_BUILD_APPS),) # For uninstallable modules such as static Java library, we have to dist the built file, # as <module_name>.<suffix> apps_only_dist_built_files := $(foreach m,$(unbundled_build_modules),$(if $(ALL_MODULES.$(m).INSTALLED),,\ - $(ALL_MODULES.$(m).BUILT):$(m)$(suffix $(ALL_MODULES.$(m).BUILT)))) + $(if $(ALL_MODULES.$(m).BUILT),$(ALL_MODULES.$(m).BUILT):$(m)$(suffix $(ALL_MODULES.$(m).BUILT))))) $(call dist-for-goals,apps_only, $(apps_only_dist_built_files)) ifeq ($(EMMA_INSTRUMENT),true) @@ -817,11 +815,23 @@ ifneq ($(TARGET_BUILD_APPS),) $(call dist-for-goals,apps_only, $(EMMA_META_ZIP)) endif + $(PROGUARD_DICT_ZIP) : $(apps_only_installed_files) + $(call dist-for-goals,apps_only, $(PROGUARD_DICT_ZIP)) + .PHONY: apps_only apps_only: $(unbundled_build_modules) droid: apps_only +# Combine the NOTICE files for a apps_only build +$(eval $(call combine-notice-files, \ + $(target_notice_file_txt), \ + $(target_notice_file_html), \ + "Notices for files for apps:", \ + $(TARGET_OUT_NOTICE_FILES), \ + $(apps_only_installed_files))) + + else # TARGET_BUILD_APPS $(call dist-for-goals, droidcore, \ $(INTERNAL_UPDATE_PACKAGE_TARGET) \ diff --git a/core/multi_prebuilt.mk b/core/multi_prebuilt.mk index 50a4a38..be60e2f 100644 --- a/core/multi_prebuilt.mk +++ b/core/multi_prebuilt.mk @@ -14,6 +14,11 @@ # limitations under the License. # +ifneq ($(LOCAL_MODULE)$(LOCAL_MODULE_CLASS),) +$(error $(LOCAL_PATH): LOCAL_MODULE or LOCAL_MODULE_CLASS not needed by \ + BUILD_MULTI_PREBUILT, use BUILD_PREBUILT instead!) +endif + # Save these before they get cleared by CLEAR_VARS. prebuilt_static_libs := $(filter %.a,$(LOCAL_PREBUILT_LIBS)) prebuilt_shared_libs := $(filter-out %.a,$(LOCAL_PREBUILT_LIBS)) diff --git a/core/notice_files.mk b/core/notice_files.mk index 7e61c1e..5af0113 100644 --- a/core/notice_files.mk +++ b/core/notice_files.mk @@ -73,6 +73,19 @@ ifdef LOCAL_INSTALLED_MODULE $(LOCAL_INSTALLED_MODULE): | $(installed_notice_file) endif +# To facilitate collecting NOTICE files for apps_only build, +# we install the NOTICE file even if a module gets built but not installed, +# because shared jni libraries won't be installed to the system image. +ifdef TARGET_BUILD_APPS +# for static Java libraries, we don't need to even build LOCAL_BUILT_MODULE, +# but just javalib.jar in the common intermediate dir. +ifeq ($(LOCAL_MODULE_CLASS),JAVA_LIBRARIES) +$(intermediates.COMMON)/javalib.jar : | $(installed_notice_file) +else +$(LOCAL_BUILT_MODULE): | $(installed_notice_file) +endif # JAVA_LIBRARIES +endif # TARGET_BUILD_APPS + else # NOTICE file does not exist installed_notice_file := diff --git a/core/package.mk b/core/package.mk index 36fb54c..551028c 100644 --- a/core/package.mk +++ b/core/package.mk @@ -131,12 +131,9 @@ LOCAL_BUILT_MODULE_STEM := package.apk LOCAL_PROGUARD_ENABLED:=$(strip $(LOCAL_PROGUARD_ENABLED)) ifndef LOCAL_PROGUARD_ENABLED ifneq ($(DISABLE_PROGUARD),true) -ifneq ($(filter user userdebug, $(TARGET_BUILD_VARIANT)),) - # turn on Proguard by default for user & userdebug build LOCAL_PROGUARD_ENABLED :=full endif endif -endif ifeq ($(LOCAL_PROGUARD_ENABLED),disabled) # the package explicitly request to disable proguard. LOCAL_PROGUARD_ENABLED := @@ -156,7 +153,7 @@ ifeq (,$(TARGET_BUILD_APPS)) ifeq (,$(LOCAL_APK_LIBRARIES)) ifneq (,$(LOCAL_SRC_FILES)) ifndef LOCAL_DEX_PREOPT -LOCAL_DEX_PREOPT := true +LOCAL_DEX_PREOPT := $(DEX_PREOPT_DEFAULT) endif endif endif @@ -483,3 +480,6 @@ lint-$(LOCAL_PACKAGE_NAME) : lintall : lint-$(LOCAL_PACKAGE_NAME) endif # skip_definition + +# Reset internal variables. +all_res_assets := diff --git a/core/pathmap.mk b/core/pathmap.mk index 7024e3e..5dfc543 100644 --- a/core/pathmap.mk +++ b/core/pathmap.mk @@ -34,7 +34,6 @@ pathmap_INCL := \ frameworks-native:frameworks/native/include \ graphics:external/skia/include/core \ libc:bionic/libc/include \ - libdrm1:frameworks/base/media/libdrm/mobile1/include \ libhardware:hardware/libhardware/include \ libhardware_legacy:hardware/libhardware_legacy/include \ libhost:build/libs/host/include \ @@ -76,11 +75,6 @@ JNI_H_INCLUDE := $(call include-path-for,libnativehelper)/nativehelper # A list of all source roots under frameworks/base, which will be # built into the android.jar. # -# Note - "common" is included here, even though it is also built -# into a static library (android-common) for unbundled use. This -# is so common and the other framework libraries can have mutual -# interdependencies. -# FRAMEWORKS_BASE_SUBDIRS := \ $(addsuffix /java, \ core \ @@ -115,6 +109,7 @@ FRAMEWORKS_SUPPORT_SUBDIRS := \ v7/gridlayout \ v7/appcompat \ v7/mediarouter \ + v8/renderscript \ v13 # diff --git a/core/pdk_config.mk b/core/pdk_config.mk index 41a82d4..9590d70 100644 --- a/core/pdk_config.mk +++ b/core/pdk_config.mk @@ -47,10 +47,12 @@ PDK_PLATFORM_JAVA_ZIP_JAVA_LIB_DIR := \ 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/framework2_intermediates \ target/common/obj/JAVA_LIBRARIES/android.test.runner_intermediates \ target/common/obj/JAVA_LIBRARIES/telephony-common_intermediates \ target/common/obj/JAVA_LIBRARIES/voip-common_intermediates \ - target/common/obj/JAVA_LIBRARIES/mms-common_intermediates + target/common/obj/JAVA_LIBRARIES/mms-common_intermediates \ + target/common/obj/JAVA_LIBRARIES/android-ex-camera2_intermediates # not java libraries PDK_PLATFORM_JAVA_ZIP_CONTENTS := \ target/common/obj/APPS/framework-res_intermediates/package-export.apk \ @@ -117,9 +119,14 @@ $(PRODUCT_OUT)/% : $(_pdk_fusion_intermediates)/% $(_pdk_fusion_stamp) ifeq (true,$(TARGET_BUILD_PDK_JAVA_PLATFORM)) +PDK_FUSION_OUT_DIR := $(OUT_DIR) +ifeq (debug,$(TARGET_BUILD_TYPE)) +PDK_FUSION_OUT_DIR := $(DEBUG_OUT_DIR) +endif + define JAVA_dependency_template -$(OUT_DIR)/$(strip $(1)): $(_pdk_fusion_intermediates)/$(strip $(1)) $(OUT_DIR)/$(strip $(2)) \ - $(_pdk_fusion_stamp) +$(PDK_FUSION_OUT_DIR)/$(strip $(1)): $(_pdk_fusion_intermediates)/$(strip $(1)) \ + $(PDK_FUSION_OUT_DIR)/$(strip $(2)) $(_pdk_fusion_stamp) @mkdir -p $$(dir $$@) $(hide) cp -fpPR $$< $$@ endef diff --git a/core/phony_package.mk b/core/phony_package.mk index 70b6aac..b534335 100644 --- a/core/phony_package.mk +++ b/core/phony_package.mk @@ -7,7 +7,7 @@ LOCAL_MODULE_SUFFIX := -timestamp include $(BUILD_SYSTEM)/base_rules.mk -$(LOCAL_BUILT_MODULE): +$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES) $(hide) echo "Fake: $@" $(hide) mkdir -p $(dir $@) $(hide) touch $@ diff --git a/core/prebuilt.mk b/core/prebuilt.mk index 197b54a..e34fa55 100644 --- a/core/prebuilt.mk +++ b/core/prebuilt.mk @@ -16,6 +16,9 @@ ifneq ($(LOCAL_PREBUILT_JAVA_LIBRARIES),) $(error dont use LOCAL_PREBUILT_JAVA_LIBRARIES anymore LOCAL_PATH=$(LOCAL_PATH)) endif +# Not much sense to check build prebuilts +LOCAL_DONT_CHECK_MODULE := true + ifdef LOCAL_PREBUILT_MODULE_FILE my_prebuilt_src_file := $(LOCAL_PREBUILT_MODULE_FILE) else diff --git a/core/product.mk b/core/product.mk index bbd0c31..a2f4abc 100644 --- a/core/product.mk +++ b/core/product.mk @@ -95,7 +95,9 @@ _product_var_list := \ PRODUCT_RESTRICT_VENDOR_FILES \ PRODUCT_VENDOR_KERNEL_HEADERS \ PRODUCT_FACTORY_RAMDISK_MODULES \ - PRODUCT_FACTORY_BUNDLE_MODULES + PRODUCT_FACTORY_BUNDLE_MODULES \ + PRODUCT_RUNTIMES \ + PRODUCT_BOOT_JARS define dump-product @@ -207,6 +209,7 @@ endef _product_stash_var_list := $(_product_var_list) \ + PRODUCT_BOOTCLASSPATH \ TARGET_ARCH \ TARGET_ARCH_VARIANT \ TARGET_CPU_VARIANT \ @@ -235,9 +238,6 @@ _product_stash_var_list += \ BOARD_KERNEL_CMDLINE \ 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 \ BOARD_BOOTIMAGE_PARTITION_SIZE \ @@ -248,8 +248,6 @@ _product_stash_var_list += \ BOARD_CACHEIMAGE_PARTITION_SIZE \ BOARD_FLASH_BLOCK_SIZE \ BOARD_SYSTEMIMAGE_PARTITION_SIZE \ - BOARD_VENDOR_QCOM_GPS_LOC_API_HARDWARE \ - BOARD_VENDOR_QCOM_GPS_LOC_API_AMSS_VERSION \ BOARD_INSTALLER_CMDLINE \ diff --git a/core/product_config.mk b/core/product_config.mk index bfbdf78..e4b68cf 100644 --- a/core/product_config.mk +++ b/core/product_config.mk @@ -246,6 +246,31 @@ current_product_makefile := all_product_makefiles := all_product_configs := + +############################################################################# +# TODO: Remove this hack once only 1 runtime is left. +# Include the runtime product makefile based on the product's PRODUCT_RUNTIMES +$(call clear-var-list, $(_product_var_list)) + +# Set PRODUCT_RUNTIMES, allowing buildspec to override using OVERRIDE_RUNTIMES +product_runtimes := $(sort $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_RUNTIMES)) +ifneq ($(OVERRIDE_RUNTIMES),) + $(info Overriding PRODUCT_RUNTIMES=$(product_runtimes) with $(OVERRIDE_RUNTIMES)) + product_runtimes := $(OVERRIDE_RUNTIMES) +endif +$(foreach runtime, $(product_runtimes), $(eval include $(SRC_TARGET_DIR)/product/$(runtime).mk)) +$(foreach v, $(_product_var_list), $(if $($(v)),\ + $(eval PRODUCTS.$(INTERNAL_PRODUCT).$(v) += $(sort $($(v)))))) + +$(call clear-var-list, $(_product_var_list)) +# Now we can assign to PRODUCT_RUNTIMES +PRODUCT_RUNTIMES := $(product_runtimes) +product_runtimes := +############################################################################# + +# A list of module names of BOOTCLASSPATH (jar files) +PRODUCT_BOOT_JARS := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_BOOT_JARS) + # Find the device that this product maps to. TARGET_DEVICE := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEVICE) diff --git a/core/proguard.flags b/core/proguard.flags index 1e3951b..0641627 100644 --- a/core/proguard.flags +++ b/core/proguard.flags @@ -1,9 +1,10 @@ +# We have moved -dontobfuscate and -dontoptimize to the makefiles. # dex does not like code run through proguard optimize and preverify steps. --dontoptimize +# -dontoptimize -dontpreverify # Don't obfuscate. We only need dead code striping. --dontobfuscate +# -dontobfuscate # Add this flag in your package's own configuration if it's needed. #-flattenpackagehierarchy diff --git a/core/proguard_basic_keeps.flags b/core/proguard_basic_keeps.flags index 0ce81ef..af0e05d 100644 --- a/core/proguard_basic_keeps.flags +++ b/core/proguard_basic_keeps.flags @@ -1,7 +1,6 @@ # see http://sourceforge.net/tracker/?func=detail&aid=2787465&group_id=54750&atid=474707 -optimizations !code/simplification/arithmetic -optimizations !code/simplification/cast --allowaccessmodification # To prevent name conflict in incremental obfuscation. -useuniqueclassmembernames diff --git a/core/proguard_tests.flags b/core/proguard_tests.flags index f4063d6..4481a1b 100644 --- a/core/proguard_tests.flags +++ b/core/proguard_tests.flags @@ -1,5 +1,9 @@ # Keep everything for tests --dontshrink -dontobfuscate +-dontshrink + +# But we may want to obfuscate if the main app gets obfuscated. +# This flag has been moved to the makefiles. +#-dontobfuscate #-keep class * extends junit.framework.TestCase { # public void test*(); diff --git a/core/static_java_library.mk b/core/static_java_library.mk index c3c5c86..f95a382 100644 --- a/core/static_java_library.mk +++ b/core/static_java_library.mk @@ -59,6 +59,8 @@ LOCAL_PROGUARD_FLAGS := $(addprefix -include ,$(proguard_options_file)) $(LOCAL_ endif # all_resources endif # LOCAL_RESOURCE_DIR +all_res_assets := $(all_resources) + include $(BUILD_SYSTEM)/java_library.mk ifneq (,$(all_resources)) @@ -124,4 +126,6 @@ endif endif # $(all_resources) not empty +# Reset internal variables. +all_res_assets := LOCAL_IS_STATIC_JAVA_LIBRARY := diff --git a/core/tasks/cts.mk b/core/tasks/cts.mk index c1f1d2a..ed8c125 100644 --- a/core/tasks/cts.mk +++ b/core/tasks/cts.mk @@ -46,10 +46,9 @@ CTS_CORE_CASES := $(foreach pkg,$(CTS_CORE_CASE_LIST),$(call intermediates-dir-f CTS_CASE_LIST := $(CTS_CORE_CASE_LIST) $(CTS_TEST_CASE_LIST) DEFAULT_TEST_PLAN := $(cts_dir)/$(cts_name)/resource/plans - +CTS_TEST_CASE_LIST_FILES := $(foreach c, $(CTS_TEST_CASE_LIST), $(call intermediates-dir-for,APPS,$(c))/package.apk) $(cts_dir)/all_cts_files_stamp: PRIVATE_JUNIT_HOST_JAR := $(junit_host_jar) - -$(cts_dir)/all_cts_files_stamp: $(CTS_CORE_CASES) $(CTS_TEST_CASES) $(CTS_TEST_CASE_LIST) $(junit_host_jar) $(HOSTTESTLIB_JAR) $(CTS_HOST_LIBRARY_JARS) $(TF_JAR) $(VMTESTSTF_JAR) $(CTS_TF_JAR) $(CTS_TF_EXEC_PATH) $(CTS_TF_README_PATH) $(ACP) +$(cts_dir)/all_cts_files_stamp: $(CTS_CORE_CASES) $(CTS_TEST_CASES) $(CTS_TEST_CASE_LIST_FILES) $(junit_host_jar) $(HOSTTESTLIB_JAR) $(CTS_HOST_LIBRARY_JARS) $(TF_JAR) $(VMTESTSTF_JAR) $(CTS_TF_JAR) $(CTS_TF_EXEC_PATH) $(CTS_TF_README_PATH) $(ACP) # Make necessary directory for CTS $(hide) rm -rf $(PRIVATE_CTS_DIR) $(hide) mkdir -p $(TMP_DIR) @@ -108,32 +107,52 @@ $(CTS_CORE_XMLS): PRIVATE_CLASSPATH:=$(GEN_CLASSPATH) # build system requires that dependencies use javalib.jar. If # javalib.jar is up-to-date, then classes.jar is as well. Depending # on classes.jar will build the files incorrectly. -$(CTS_CORE_XMLS): $(CTS_CORE_CASES) $(HOST_OUT_JAVA_LIBRARIES)/descGen.jar $(HOST_OUT_JAVA_LIBRARIES)/junit.jar $(CORE_INTERMEDIATES)/javalib.jar $(BOUNCYCASTLE_INTERMEDIATES)/javalib.jar $(APACHEXML_INTERMEDIATES)/javalib.jar $(OKHTTP_INTERMEDIATES)/javalib.jar $(SQLITEJDBC_INTERMEDIATES)/javalib.jar $(JUNIT_INTERMEDIATES)/javalib.jar $(CORETESTS_INTERMEDIATES)/javalib.jar $(CONSCRYPTTESTS_INTERMEDIATES)/javalib.jar | $(ACP) +CTS_CORE_XMLS_DEPS := $(CTS_CORE_CASES) $(HOST_OUT_JAVA_LIBRARIES)/descGen.jar $(HOST_OUT_JAVA_LIBRARIES)/junit.jar $(CORE_INTERMEDIATES)/javalib.jar $(BOUNCYCASTLE_INTERMEDIATES)/javalib.jar $(APACHEXML_INTERMEDIATES)/javalib.jar $(OKHTTP_INTERMEDIATES)/javalib.jar $(SQLITEJDBC_INTERMEDIATES)/javalib.jar $(JUNIT_INTERMEDIATES)/javalib.jar $(CORETESTS_INTERMEDIATES)/javalib.jar $(CONSCRYPTTESTS_INTERMEDIATES)/javalib.jar | $(ACP) + +$(CTS_TESTCASES_OUT)/android.core.tests.libcore.package.dalvik.xml: $(CTS_CORE_XMLS_DEPS) $(hide) mkdir -p $(CTS_TESTCASES_OUT) $(call generate-core-test-description,$(CTS_TESTCASES_OUT)/android.core.tests.libcore.package.dalvik,\ cts/tests/core/libcore/dalvik/AndroidManifest.xml,\ $(CORETESTS_INTERMEDIATES)/javalib.jar,dalvik,\ libcore/expectations) + +$(CTS_TESTCASES_OUT)/android.core.tests.libcore.package.com.xml: $(CTS_CORE_XMLS_DEPS) + $(hide) mkdir -p $(CTS_TESTCASES_OUT) $(call generate-core-test-description,$(CTS_TESTCASES_OUT)/android.core.tests.libcore.package.com,\ cts/tests/core/libcore/com/AndroidManifest.xml,\ $(CORETESTS_INTERMEDIATES)/javalib.jar,com,\ libcore/expectations) + +$(CTS_TESTCASES_OUT)/android.core.tests.libcore.package.conscrypt.xml: $(CTS_CORE_XMLS_DEPS) + $(hide) mkdir -p $(CTS_TESTCASES_OUT) $(call generate-core-test-description,$(CTS_TESTCASES_OUT)/android.core.tests.libcore.package.conscrypt,\ cts/tests/core/libcore/conscrypt/AndroidManifest.xml,\ $(CONSCRYPTTESTS_INTERMEDIATES)/javalib.jar,,\ libcore/expectations) + +$(CTS_TESTCASES_OUT)/android.core.tests.libcore.package.sun.xml: $(CTS_CORE_XMLS_DEPS) + $(hide) mkdir -p $(CTS_TESTCASES_OUT) $(call generate-core-test-description,$(CTS_TESTCASES_OUT)/android.core.tests.libcore.package.sun,\ cts/tests/core/libcore/sun/AndroidManifest.xml,\ $(CORETESTS_INTERMEDIATES)/javalib.jar,sun,\ libcore/expectations) + +$(CTS_TESTCASES_OUT)/android.core.tests.libcore.package.tests.xml: $(CTS_CORE_XMLS_DEPS) + $(hide) mkdir -p $(CTS_TESTCASES_OUT) $(call generate-core-test-description,$(CTS_TESTCASES_OUT)/android.core.tests.libcore.package.tests,\ cts/tests/core/libcore/tests/AndroidManifest.xml,\ $(CORETESTS_INTERMEDIATES)/javalib.jar,tests,\ libcore/expectations) + +$(CTS_TESTCASES_OUT)/android.core.tests.libcore.package.org.xml: $(CTS_CORE_XMLS_DEPS) + $(hide) mkdir -p $(CTS_TESTCASES_OUT) $(call generate-core-test-description,$(CTS_TESTCASES_OUT)/android.core.tests.libcore.package.org,\ cts/tests/core/libcore/org/AndroidManifest.xml,\ $(CORETESTS_INTERMEDIATES)/javalib.jar,org,\ libcore/expectations) + +$(CTS_TESTCASES_OUT)/android.core.tests.libcore.package.libcore.xml: $(CTS_CORE_XMLS_DEPS) + $(hide) mkdir -p $(CTS_TESTCASES_OUT) $(call generate-core-test-description,$(CTS_TESTCASES_OUT)/android.core.tests.libcore.package.libcore,\ cts/tests/core/libcore/libcore/AndroidManifest.xml,\ $(CORETESTS_INTERMEDIATES)/javalib.jar,libcore,\ @@ -166,6 +185,7 @@ $(DEFAULT_TEST_PLAN): $(cts_dir)/all_cts_files_stamp $(cts_tools_src_dir)/utils/ $(hide) $(ACP) -fp $(CTS_CORE_XMLS) $(CTS_TEST_XMLS) $(CORE_VM_TEST_TF_DESC) $(PRIVATE_DIR)/repository/testcases $(hide) $(cts_tools_src_dir)/utils/buildCts.py cts/tests/tests/ $(PRIVATE_DIR) $(TMP_DIR) \ $(TOP) $(HOST_OUT_JAVA_LIBRARIES)/descGen.jar + $(hide) mkdir -p $(dir $@) && touch $@ # Package CTS and clean up. # diff --git a/core/tasks/product-graph.mk b/core/tasks/product-graph.mk index 1ccb20b..fcec277 100644 --- a/core/tasks/product-graph.mk +++ b/core/tasks/product-graph.mk @@ -51,26 +51,33 @@ endif really_all_products := $(call gather-all-products) +open_parethesis := ( +close_parenthesis := ) + +# Emit properties of a product node to a file. +# $(1) the product +# $(2) the output file +define emit-product-node-props +$(hide) echo \"$(1)\" [ \ +label=\"$(dir $(1))\\n$(notdir $(1))\\n\\n$(subst $(close_parenthesis),,$(subst $(open_parethesis),,$(PRODUCTS.$(strip $(1)).PRODUCT_MODEL)))\\n$(PRODUCTS.$(strip $(1)).PRODUCT_DEVICE)\" \ +$(if $(filter $(1),$(PRIVATE_PRODUCTS_FILTER)), style=\"filled\" fillcolor=\"#FFFDB0\",) \ +fontcolor=\"darkblue\" href=\"products/$(1).html\" \ +] >> $(2) + +endef + $(products_graph): PRIVATE_PRODUCTS := $(really_all_products) $(products_graph): PRIVATE_PRODUCTS_FILTER := $(products_list) $(products_graph): $(this_makefile) @echo Product graph DOT: $@ for $(PRIVATE_PRODUCTS_FILTER) - $(hide) ( \ - echo 'digraph {'; \ - echo 'graph [ ratio=.5 ];'; \ - $(foreach p,$(PRIVATE_PRODUCTS), \ - $(foreach d,$(PRODUCTS.$(strip $(p)).INHERITS_FROM), echo \"$(d)\" -\> \"$(p)\";)) \ - $(foreach prod, $(PRIVATE_PRODUCTS), \ - echo \"$(prod)\" [ \ - label=\"$(dir $(prod))\\n$(notdir $(prod))\\n\\n$(PRODUCTS.$(strip $(prod)).PRODUCT_MODEL)\\n$(PRODUCTS.$(strip $(prod)).PRODUCT_DEVICE)\" \ - $(if $(filter $(prod),$(PRIVATE_PRODUCTS_FILTER)), style=\"filled\" fillcolor=\"#FFFDB0\",) \ - fontcolor=\"darkblue\" href=\"products/$(prod).html\" \ - ];) \ - echo '}' \ - ) \ - | ./build/tools/filter-product-graph.py $(PRIVATE_PRODUCTS_FILTER) \ - > $@ + $(hide) echo 'digraph {' > $@.in + $(hide) echo 'graph [ ratio=.5 ];' >> $@.in + $(hide) $(foreach p,$(PRIVATE_PRODUCTS), \ + $(foreach d,$(PRODUCTS.$(strip $(p)).INHERITS_FROM), echo \"$(d)\" -\> \"$(p)\" >> $@.in;)) + $(foreach p,$(PRIVATE_PRODUCTS),$(call emit-product-node-props,$(p),$@.in)) + $(hide) echo '}' >> $@.in + $(hide) ./build/tools/filter-product-graph.py $(PRIVATE_PRODUCTS_FILTER) < $@.in > $@ # Evaluates to the name of the product file # $(1) product file @@ -137,4 +144,3 @@ $(products_svg): $(products_graph) $(product_debug_files) dot -Tsvg -Nshape=box -o $@ $< product-graph: $(products_pdf) $(products_svg) - diff --git a/core/tasks/vendor_module_check.mk b/core/tasks/vendor_module_check.mk index fcf2bbe..c51a40c 100644 --- a/core/tasks/vendor_module_check.mk +++ b/core/tasks/vendor_module_check.mk @@ -85,10 +85,12 @@ ifneq (,$(filter path all, $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_RESTRICT_VENDO $(foreach m, $(_vendor_check_modules), \ $(if $(filter vendor/%, $(ALL_MODULES.$(m).PATH)),\ - $(if $(filter $(TARGET_OUT_VENDOR)/%, $(ALL_MODULES.$(m).INSTALLED)),,\ - $(error Error: vendor module "$(m)" in $(ALL_MODULES.$(m).PATH) \ - in product "$(TARGET_PRODUCT)" being installed to \ - $(ALL_MODULES.$(m).INSTALLED) which is not in the vendor tree)))) + $(if $(filter-out FAKE, $(ALL_MODULES.$(m).CLASS)),\ + $(if $(filter-out ,$(ALL_MODULES.$(m).INSTALLED)),\ + $(if $(filter $(TARGET_OUT_VENDOR)/% $(HOST_OUT)/%, $(ALL_MODULES.$(m).INSTALLED)),,\ + $(error Error: vendor module "$(m)" in $(ALL_MODULES.$(m).PATH) \ + in product "$(TARGET_PRODUCT)" being installed to \ + $(ALL_MODULES.$(m).INSTALLED) which is not in the vendor tree)))))) endif diff --git a/core/version_defaults.mk b/core/version_defaults.mk index b9e1456..faa12d2 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.3.2.1.000.000 + PLATFORM_VERSION := 4.4 endif ifeq "" "$(PLATFORM_SDK_VERSION)" @@ -53,7 +53,7 @@ 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 := 18 + PLATFORM_SDK_VERSION := 19 endif ifeq "" "$(PLATFORM_VERSION_CODENAME)" |