From c92f1407a1cc32e81971d89086f84a6dc643ef9d Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Thu, 6 Feb 2014 14:45:37 -0800 Subject: add support for module supported or unsupported target architectures Add four new variables for module makefiles: LOCAL_MODULE_TARGET_ARCH specifies that a module is only supported for one or more architectures. Any architecture not in the list will be not attempt to build the module. The expected use case is prebuilts that are only suitable for a single architecture, or modules like llvm that need per-architecture support. LOCAL_MODULE_UNSUPPORTED_TARGET_ARCH specifies that a module cannot be built for one or more architectures. LOCAL_MODULE_TARGET_ARCH_WARN and LOCAL_MODULE_UNSUPPORTED_TARGET_ARCH_WARN are the same, but warn that the arch is not supported, which is useful for modules that are critical but not yet working. The logic for whether or not to build an architecture is fairly complicated, so this patch consolidates it into module_arch_supported.mk Change-Id: I120caf4a375f484e1fd6017b60c2f53882ae01e6 --- core/clear_vars.mk | 4 + core/executable.mk | 21 +- core/module_arch_supported.mk | 52 +++++ core/package.mk | 494 ++---------------------------------------- core/package_internal.mk | 469 +++++++++++++++++++++++++++++++++++++++ core/shared_library.mk | 16 +- core/static_library.mk | 16 +- 7 files changed, 583 insertions(+), 489 deletions(-) create mode 100644 core/module_arch_supported.mk create mode 100644 core/package_internal.mk diff --git a/core/clear_vars.mk b/core/clear_vars.mk index b78c8b5..cdbaf8e 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -146,6 +146,10 @@ LOCAL_NO_SYNTAX_CHECK:= LOCAL_NO_STATIC_ANALYZER:= LOCAL_32_BIT_ONLY:= # '',true LOCAL_NO_2ND_ARCH:= # '',true +LOCAL_MODULE_TARGET_ARCH:= +LOCAL_MODULE_TARGET_ARCH_WARN:= +LOCAL_MODULE_UNSUPPORTED_TARGET_ARCH:= +LOCAL_MODULE_UNSUPPORTED_TARGET_ARCH_WARN:= # arch specific variables LOCAL_SRC_FILES_$(TARGET_ARCH):= diff --git a/core/executable.mk b/core/executable.mk index 65319ef..899a02f 100644 --- a/core/executable.mk +++ b/core/executable.mk @@ -9,13 +9,24 @@ LOCAL_32_BIT_ONLY := true endif endif -ifeq ($(TARGET_IS_64_BIT)|$(LOCAL_32_BIT_ONLY),true|true) +LOCAL_NO_2ND_ARCH_MODULE_SUFFIX := true + +# check if primary arch is supported +include $(BUILD_SYSTEM)/module_arch_supported.mk +ifeq ($(my_module_arch_supported),true) +# primary arch is supported +include $(BUILD_SYSTEM)/executable_internal.mk +else ifneq (,$(TARGET_2ND_ARCH)) +# check if secondary arch is supported LOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX) -else -LOCAL_2ND_ARCH_VAR_PREFIX := +include $(BUILD_SYSTEM)/module_arch_supported.mk +ifeq ($(my_module_arch_supported),true) +# secondary arch is supported +include $(BUILD_SYSTEM)/executable_internal.mk endif +endif # TARGET_2ND_ARCH -LOCAL_NO_2ND_ARCH_MODULE_SUFFIX := true -include $(BUILD_SYSTEM)/executable_internal.mk LOCAL_2ND_ARCH_VAR_PREFIX := LOCAL_NO_2ND_ARCH_MODULE_SUFFIX := + +my_module_arch_supported := diff --git a/core/module_arch_supported.mk b/core/module_arch_supported.mk new file mode 100644 index 0000000..49cf8dd --- /dev/null +++ b/core/module_arch_supported.mk @@ -0,0 +1,52 @@ +########################################################### +## Determine if a module can be built for an arch +## +## Inputs from module makefile: +## LOCAL_32_BIT_ONLY +## LOCAL_NO_2ND_ARCH +## LOCAL_MODULE_TARGET_ARCH +## LOCAL_MODULE_TARGET_ARCH_WARN +## LOCAL_MODULE_UNSUPPORTED_TARGET_ARCH +## LOCAL_MODULE_UNSUPPORTED_TARGET_ARCH_WARN +## +## Inputs from build system: +## TARGET_IS_64_BIT +## LOCAL_2ND_ARCH_VAR_PREFIX +## +## Outputs: +## my_module_arch_supported := (true|false) +########################################################### + +my_module_arch_supported := true + +ifeq ($(LOCAL_2ND_ARCH_VAR_PREFIX),) +ifeq ($(TARGET_IS_64_BIT)|$(LOCAL_32_BIT_ONLY),true|true) +my_module_arch_supported := false +endif +else # LOCAL_2ND_ARCH_VAR_PREFIX +ifeq ($(LOCAL_NO_2ND_ARCH),true) +my_module_arch_supported := false +endif +endif # !LOCAL_2ND_ARCH_VAR_PREFIX + +ifneq (,$(LOCAL_MODULE_TARGET_ARCH)) +ifeq (,$(filter $(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH),$(LOCAL_MODULE_TARGET_ARCH))) +my_module_arch_supported := false +endif +endif + +ifneq (,$(LOCAL_MODULE_TARGET_ARCH_WARN)) +ifeq (,$(filter $(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH),$(LOCAL_MODULE_TARGET_ARCH_WARN))) +my_module_arch_supported := false +$(warning $(LOCAL_MODULE): architecture $(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH) not supported) +endif +endif + +ifneq (,$(filter $(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH),$(LOCAL_MODULE_UNSUPPORTED_TARGET_ARCH))) +my_module_arch_supported := false +endif + +ifneq (,$(filter $(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH),$(LOCAL_MODULE_UNSUPPORTED_TARGET_ARCH_WARN))) +my_module_arch_supported := false +$(warning $(LOCAL_MODULE): architecture $(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH) unsupported) +endif diff --git a/core/package.mk b/core/package.mk index f678b3c..b40ac37 100644 --- a/core/package.mk +++ b/core/package.mk @@ -1,481 +1,27 @@ -# -# Copyright (C) 2008 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. -# - -########################################################### -## Standard rules for building an application package. -## -## Additional inputs from base_rules.make: -## LOCAL_PACKAGE_NAME: The name of the package; the directory -## will be called this. -## -## MODULE, MODULE_PATH, and MODULE_SUFFIX will -## be set for you. -########################################################### - -ifeq ($(TARGET_IS_64_BIT)|$(LOCAL_32_BIT_ONLY),true|true) -LOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX) -else -LOCAL_2ND_ARCH_VAR_PREFIX := -endif +# We don't automatically set up rules to build packages for both +# TARGET_ARCH and TARGET_2ND_ARCH. +# By default, an package is built for TARGET_ARCH. +# To build it for TARGET_2ND_ARCH in a 64bit product, use "LOCAL_32_BIT_ONLY := true". LOCAL_NO_2ND_ARCH_MODULE_SUFFIX := true -# If this makefile is being read from within an inheritance, -# use the new values. -skip_definition:= -ifdef LOCAL_PACKAGE_OVERRIDES - package_overridden := $(call set-inherited-package-variables) - ifeq ($(strip $(package_overridden)),) - skip_definition := true - endif -endif - -ifndef skip_definition - -LOCAL_PACKAGE_NAME := $(strip $(LOCAL_PACKAGE_NAME)) -ifeq ($(LOCAL_PACKAGE_NAME),) -$(error $(LOCAL_PATH): Package modules must define LOCAL_PACKAGE_NAME) -endif - -ifneq ($(strip $(LOCAL_MODULE_SUFFIX)),) -$(error $(LOCAL_PATH): Package modules may not define LOCAL_MODULE_SUFFIX) -endif -LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX) - -ifneq ($(strip $(LOCAL_MODULE)),) -$(error $(LOCAL_PATH): Package modules may not define LOCAL_MODULE) -endif -LOCAL_MODULE := $(LOCAL_PACKAGE_NAME) - -ifeq ($(strip $(LOCAL_MANIFEST_FILE)),) -LOCAL_MANIFEST_FILE := AndroidManifest.xml -endif - -# If you need to put the MANIFEST_FILE outside of LOCAL_PATH -# you can use FULL_MANIFEST_FILE -ifeq ($(strip $(LOCAL_FULL_MANIFEST_FILE)),) -LOCAL_FULL_MANIFEST_FILE := $(LOCAL_PATH)/$(LOCAL_MANIFEST_FILE) -endif - -ifneq ($(strip $(LOCAL_MODULE_CLASS)),) -$(error $(LOCAL_PATH): Package modules may not set LOCAL_MODULE_CLASS) -endif -LOCAL_MODULE_CLASS := APPS - -# Package LOCAL_MODULE_TAGS default to optional -LOCAL_MODULE_TAGS := $(strip $(LOCAL_MODULE_TAGS)) -ifeq ($(LOCAL_MODULE_TAGS),) -LOCAL_MODULE_TAGS := optional -endif - -ifeq ($(filter tests, $(LOCAL_MODULE_TAGS)),) -# Force localization check if it's not tagged as tests. -LOCAL_AAPT_FLAGS := $(LOCAL_AAPT_FLAGS) -z -endif - -ifeq (,$(LOCAL_ASSET_DIR)) -LOCAL_ASSET_DIR := $(LOCAL_PATH)/assets -endif - -ifeq (,$(LOCAL_RESOURCE_DIR)) - LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res -endif - -package_resource_overlays := $(strip \ - $(wildcard $(foreach dir, $(PRODUCT_PACKAGE_OVERLAYS), \ - $(addprefix $(dir)/, $(LOCAL_RESOURCE_DIR)))) \ - $(wildcard $(foreach dir, $(DEVICE_PACKAGE_OVERLAYS), \ - $(addprefix $(dir)/, $(LOCAL_RESOURCE_DIR))))) - -LOCAL_RESOURCE_DIR := $(package_resource_overlays) $(LOCAL_RESOURCE_DIR) - -all_assets := $(call find-subdir-assets,$(LOCAL_ASSET_DIR)) -all_assets := $(addprefix $(LOCAL_ASSET_DIR)/,$(patsubst assets/%,%,$(all_assets))) - -all_resources := $(strip \ - $(foreach dir, $(LOCAL_RESOURCE_DIR), \ - $(addprefix $(dir)/, \ - $(patsubst res/%,%, \ - $(call find-subdir-assets,$(dir)) \ - ) \ - ) \ - )) - -all_res_assets := $(strip $(all_assets) $(all_resources)) - -package_expected_intermediates_COMMON := $(call local-intermediates-dir,COMMON) -# If no assets or resources were found, clear the directory variables so -# we don't try to build them. -ifeq (,$(all_assets)) -LOCAL_ASSET_DIR:= -endif -ifeq (,$(all_resources)) -LOCAL_RESOURCE_DIR:= -R_file_stamp := -else -# Make sure that R_file_stamp inherits the proper PRIVATE vars. -# If R.stamp moves, be sure to update the framework makefile, -# which has intimate knowledge of its location. -R_file_stamp := $(package_expected_intermediates_COMMON)/src/R.stamp -LOCAL_INTERMEDIATE_TARGETS += $(R_file_stamp) -endif - -LOCAL_BUILT_MODULE_STEM := package.apk - -LOCAL_PROGUARD_ENABLED:=$(strip $(LOCAL_PROGUARD_ENABLED)) -ifndef LOCAL_PROGUARD_ENABLED -ifneq ($(DISABLE_PROGUARD),true) - LOCAL_PROGUARD_ENABLED :=full -endif -endif -ifeq ($(LOCAL_PROGUARD_ENABLED),disabled) - # the package explicitly request to disable proguard. - LOCAL_PROGUARD_ENABLED := -endif -proguard_options_file := -ifneq ($(LOCAL_PROGUARD_ENABLED),custom) -ifneq ($(all_resources),) - proguard_options_file := $(package_expected_intermediates_COMMON)/proguard_options -endif # all_resources -endif # !custom -LOCAL_PROGUARD_FLAGS := $(addprefix -include ,$(proguard_options_file)) $(LOCAL_PROGUARD_FLAGS) - -ifeq (true,$(EMMA_INSTRUMENT)) -ifndef LOCAL_EMMA_INSTRUMENT -# No emma for test apks. -ifeq (,$(filer tests,$(LOCAL_MODULE_TAGS))$(LOCAL_INSTRUMENTATION_FOR)) -LOCAL_EMMA_INSTRUMENT := true -endif # No test apk -endif # LOCAL_EMMA_INSTRUMENT is not set -else -LOCAL_EMMA_INSTRUMENT := false -endif # EMMA_INSTRUMENT is true - -ifeq (true,$(LOCAL_EMMA_INSTRUMENT)) -ifeq (true,$(EMMA_INSTRUMENT_STATIC)) -LOCAL_STATIC_JAVA_LIBRARIES += emma -else -ifdef LOCAL_SDK_VERSION -ifdef TARGET_BUILD_APPS -# In unbundled build merge the emma library into the apk. -LOCAL_STATIC_JAVA_LIBRARIES += emma -else -# If build against the SDK in full build, core.jar is not used, -# we have to use prebiult emma.jar to make Proguard happy; -# Otherwise emma classes are included in core.jar. -LOCAL_PROGUARD_FLAGS += -libraryjars $(EMMA_JAR) -endif # full build -endif # LOCAL_SDK_VERSION -endif # EMMA_INSTRUMENT_STATIC -endif # LOCAL_EMMA_INSTRUMENT - -rs_compatibility_jni_libs := - -################################# -include $(BUILD_SYSTEM)/java.mk -################################# - -LOCAL_SDK_RES_VERSION:=$(strip $(LOCAL_SDK_RES_VERSION)) -ifeq ($(LOCAL_SDK_RES_VERSION),) - LOCAL_SDK_RES_VERSION:=$(LOCAL_SDK_VERSION) -endif - -full_android_manifest := $(LOCAL_FULL_MANIFEST_FILE) -$(LOCAL_INTERMEDIATE_TARGETS): \ - PRIVATE_ANDROID_MANIFEST := $(full_android_manifest) -ifneq (,$(filter-out current, $(LOCAL_SDK_VERSION))) -$(LOCAL_INTERMEDIATE_TARGETS): \ - PRIVATE_DEFAULT_APP_TARGET_SDK := $(LOCAL_SDK_VERSION) -else -$(LOCAL_INTERMEDIATE_TARGETS): \ - PRIVATE_DEFAULT_APP_TARGET_SDK := $(DEFAULT_APP_TARGET_SDK) -endif - -ifneq ($(all_resources),) - -# Since we don't know where the real R.java file is going to end up, -# we need to use another file to stand in its place. We'll just -# copy the generated file to src/R.stamp, which means it will -# have the same contents and timestamp as the actual file. -# -# At the same time, this will copy the R.java file to a central -# 'R' directory to make it easier to add the files to an IDE. -# -#TODO: use PRIVATE_SOURCE_INTERMEDIATES_DIR instead of -# $(intermediates.COMMON)/src -ifneq ($(package_expected_intermediates_COMMON),$(intermediates.COMMON)) - $(error $(LOCAL_MODULE): internal error: expected intermediates.COMMON "$(package_expected_intermediates_COMMON)" != intermediates.COMMON "$(intermediates.COMMON)") -endif - -$(R_file_stamp): PRIVATE_RESOURCE_PUBLICS_OUTPUT := \ - $(intermediates.COMMON)/public_resources.xml -$(R_file_stamp): PRIVATE_PROGUARD_OPTIONS_FILE := $(proguard_options_file) -$(R_file_stamp): $(all_res_assets) $(full_android_manifest) $(RenderScript_file_stamp) $(AAPT) | $(ACP) - @echo "target R.java/Manifest.java: $(PRIVATE_MODULE) ($@)" - @rm -f $@ - $(create-resource-java-files) - $(hide) for GENERATED_MANIFEST_FILE in `find $(PRIVATE_SOURCE_INTERMEDIATES_DIR) \ - -name Manifest.java 2> /dev/null`; do \ - dir=`awk '/package/{gsub(/\./,"/",$$2);gsub(/;/,"",$$2);print $$2;exit}' $$GENERATED_MANIFEST_FILE`; \ - mkdir -p $(TARGET_COMMON_OUT_ROOT)/R/$$dir; \ - $(ACP) -fp $$GENERATED_MANIFEST_FILE $(TARGET_COMMON_OUT_ROOT)/R/$$dir; \ - done; - $(hide) for GENERATED_R_FILE in `find $(PRIVATE_SOURCE_INTERMEDIATES_DIR) \ - -name R.java 2> /dev/null`; do \ - dir=`awk '/package/{gsub(/\./,"/",$$2);gsub(/;/,"",$$2);print $$2;exit}' $$GENERATED_R_FILE`; \ - mkdir -p $(TARGET_COMMON_OUT_ROOT)/R/$$dir; \ - $(ACP) -fp $$GENERATED_R_FILE $(TARGET_COMMON_OUT_ROOT)/R/$$dir \ - || exit 31; \ - $(ACP) -fp $$GENERATED_R_FILE $@ || exit 32; \ - done; \ - -$(proguard_options_file): $(R_file_stamp) - -ifdef LOCAL_EXPORT_PACKAGE_RESOURCES -# Put this module's resources into a PRODUCT-agnositc package that -# other packages can use to build their own PRODUCT-agnostic R.java (etc.) -# files. -resource_export_package := $(intermediates.COMMON)/package-export.apk -$(R_file_stamp): $(resource_export_package) - -# add-assets-to-package looks at PRODUCT_AAPT_CONFIG, but this target -# can't know anything about PRODUCT. Clear it out just for this target. -$(resource_export_package): PRIVATE_PRODUCT_AAPT_CONFIG := -$(resource_export_package): PRIVATE_PRODUCT_AAPT_PREF_CONFIG := -$(resource_export_package): $(all_res_assets) $(full_android_manifest) $(RenderScript_file_stamp) $(AAPT) - @echo "target Export Resources: $(PRIVATE_MODULE) ($@)" - $(create-empty-package) - $(add-assets-to-package) -endif - -# Other modules should depend on the BUILT module if -# they want to use this module's R.java file. -$(LOCAL_BUILT_MODULE): $(R_file_stamp) - -ifneq ($(full_classes_jar),) -# If full_classes_jar is non-empty, we're building sources. -# If we're building sources, the initial javac step (which -# produces full_classes_compiled_jar) needs to ensure the -# R.java and Manifest.java files have been generated first. -$(full_classes_compiled_jar): $(R_file_stamp) -endif - -endif # all_resources - -ifeq ($(LOCAL_NO_STANDARD_LIBRARIES),true) -# We need to explicitly clear this var so that we don't -# inherit the value from whomever caused us to be built. -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_AAPT_INCLUDES := -else -# Most packages should link against the resources defined by framework-res. -# Even if they don't have their own resources, they may use framework -# resources. -ifneq ($(filter-out current,$(LOCAL_SDK_RES_VERSION))$(if $(TARGET_BUILD_APPS),$(filter current,$(LOCAL_SDK_RES_VERSION))),) -# for released sdk versions, the platform resources were built into android.jar. -framework_res_package_export := \ - $(HISTORICAL_SDK_VERSIONS_ROOT)/$(LOCAL_SDK_RES_VERSION)/android.jar -framework_res_package_export_deps := $(framework_res_package_export) -else # LOCAL_SDK_RES_VERSION -framework_res_package_export := \ - $(call intermediates-dir-for,APPS,framework-res,,COMMON)/package-export.apk -# We can't depend directly on the export.apk file; it won't get its -# PRIVATE_ vars set up correctly if we do. Instead, depend on the -# corresponding R.stamp file, which lists the export.apk as a dependency. -framework_res_package_export_deps := \ - $(dir $(framework_res_package_export))src/R.stamp -endif # LOCAL_SDK_RES_VERSION -$(R_file_stamp): $(framework_res_package_export_deps) -$(LOCAL_INTERMEDIATE_TARGETS): \ - PRIVATE_AAPT_INCLUDES := $(framework_res_package_export) -endif # LOCAL_NO_STANDARD_LIBRARIES - -ifneq ($(full_classes_jar),) -$(LOCAL_BUILT_MODULE): PRIVATE_DEX_FILE := $(built_dex) -$(LOCAL_BUILT_MODULE): $(built_dex) -endif # full_classes_jar - - -# Get the list of jni libraries to be included in the apk file. - -so_suffix := $($(my_prefix)SHLIB_SUFFIX) - -jni_shared_libraries := \ - $(addprefix $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)OUT_INTERMEDIATE_LIBRARIES)/, \ - $(addsuffix $(so_suffix), \ - $(LOCAL_JNI_SHARED_LIBRARIES))) - -# Include RS dynamically-generated libraries as well -# Keep this ifneq, as the += otherwise adds spaces that need to be stripped. -ifneq ($(rs_compatibility_jni_libs),) -jni_shared_libraries += $(rs_compatibility_jni_libs) -endif - -# App explicitly requires the prebuilt NDK libstlport_shared.so. -# libstlport_shared.so should never go to the system image. -# Instead it should be packaged into the apk. -ifeq (stlport_shared,$(LOCAL_NDK_STL_VARIANT)) -ifndef LOCAL_SDK_VERSION -$(error LOCAL_SDK_VERSION has to be defined together with LOCAL_NDK_STL_VARIANT, \ - LOCAL_PACKAGE_NAME=$(LOCAL_PACKAGE_NAME)) -endif -jni_shared_libraries += \ - $(HISTORICAL_NDK_VERSIONS_ROOT)/current/sources/cxx-stl/stlport/libs/$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)CPU_ABI)/libstlport_shared.so -endif - -# Set the abi directory used by the local JNI shared libraries. -# (Doesn't change how the local shared libraries are compiled, just -# sets where they are stored in the apk.) - -ifeq ($(LOCAL_JNI_SHARED_LIBRARIES_ABI),) - jni_shared_libraries_abi := $(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)CPU_ABI) -else - jni_shared_libraries_abi := $(LOCAL_JNI_SHARED_LIBRARIES_ABI) -endif - -# Pick a key to sign the package with. If this package hasn't specified -# an explicit certificate, use the default. -# Secure release builds will have their packages signed after the fact, -# so it's ok for these private keys to be in the clear. -ifeq ($(LOCAL_CERTIFICATE),) - LOCAL_CERTIFICATE := $(DEFAULT_SYSTEM_DEV_CERTIFICATE) -endif - -ifeq ($(LOCAL_CERTIFICATE),EXTERNAL) - # The special value "EXTERNAL" means that we will sign it with the - # default devkey, apply predexopt, but then expect the final .apk - # (after dexopting) to be signed by an outside tool. - LOCAL_CERTIFICATE := $(DEFAULT_SYSTEM_DEV_CERTIFICATE) - PACKAGES.$(LOCAL_PACKAGE_NAME).EXTERNAL_KEY := 1 -endif - -# If this is not an absolute certificate, assign it to a generic one. -ifeq ($(dir $(strip $(LOCAL_CERTIFICATE))),./) - LOCAL_CERTIFICATE := $(dir $(DEFAULT_SYSTEM_DEV_CERTIFICATE))$(LOCAL_CERTIFICATE) -endif -private_key := $(LOCAL_CERTIFICATE).pk8 -certificate := $(LOCAL_CERTIFICATE).x509.pem - -$(LOCAL_BUILT_MODULE): $(private_key) $(certificate) $(SIGNAPK_JAR) -$(LOCAL_BUILT_MODULE): PRIVATE_PRIVATE_KEY := $(private_key) -$(LOCAL_BUILT_MODULE): PRIVATE_CERTIFICATE := $(certificate) - -PACKAGES.$(LOCAL_PACKAGE_NAME).PRIVATE_KEY := $(private_key) -PACKAGES.$(LOCAL_PACKAGE_NAME).CERTIFICATE := $(certificate) - -$(LOCAL_BUILT_MODULE): PRIVATE_ADDITIONAL_CERTIFICATES := $(foreach c,\ - $(LOCAL_ADDITIONAL_CERTIFICATES), $(c).x509.pem $(c).pk8) - -# Define the rule to build the actual package. -$(LOCAL_BUILT_MODULE): $(AAPT) | $(ZIPALIGN) -ifdef LOCAL_DEX_PREOPT -$(LOCAL_BUILT_MODULE): PRIVATE_DEX_LOCATION := $(patsubst $(PRODUCT_OUT)%,%,$(LOCAL_INSTALLED_MODULE)) -$(LOCAL_BUILT_MODULE): PRIVATE_BUILT_ODEX := $(built_odex) -$(LOCAL_BUILT_MODULE): PRIVATE_DEX_PREOPT_IMAGE := $(LOCAL_DEX_PREOPT_IMAGE) -# Make sure the boot jars get dexpreopt-ed first -$(LOCAL_BUILT_MODULE) : $(DEXPREOPT_ONE_FILE_DEPENDENCY_BUILT_BOOT_PREOPT) -$(LOCAL_BUILT_MODULE) : $(DEXPREOPT_ONE_FILE_DEPENDENCY_TOOLS) -$(LOCAL_BUILT_MODULE) : $(LOCAL_DEX_PREOPT_IMAGE) - -# built_odex is byproduct of LOCAL_BUILT_MODULE without its own build recipe. -$(built_odex) : $(LOCAL_BUILT_MODULE) -endif -$(LOCAL_BUILT_MODULE): PRIVATE_JNI_SHARED_LIBRARIES := $(jni_shared_libraries) -$(LOCAL_BUILT_MODULE): PRIVATE_JNI_SHARED_LIBRARIES_ABI := $(jni_shared_libraries_abi) -ifneq ($(TARGET_BUILD_APPS),) - # Include all resources for unbundled apps. - LOCAL_AAPT_INCLUDE_ALL_RESOURCES := true -endif -ifeq ($(LOCAL_AAPT_INCLUDE_ALL_RESOURCES),true) - $(LOCAL_BUILT_MODULE): PRIVATE_PRODUCT_AAPT_CONFIG := - $(LOCAL_BUILT_MODULE): PRIVATE_PRODUCT_AAPT_PREF_CONFIG := -else - $(LOCAL_BUILT_MODULE): PRIVATE_PRODUCT_AAPT_CONFIG := $(PRODUCT_AAPT_CONFIG) - $(LOCAL_BUILT_MODULE): PRIVATE_PRODUCT_AAPT_PREF_CONFIG := $(PRODUCT_AAPT_PREF_CONFIG) -endif -$(LOCAL_BUILT_MODULE): $(all_res_assets) $(jni_shared_libraries) $(full_android_manifest) - @echo "target Package: $(PRIVATE_MODULE) ($@)" - $(create-empty-package) - $(add-assets-to-package) -ifneq ($(jni_shared_libraries),) - $(add-jni-shared-libs-to-package) -endif -ifneq ($(full_classes_jar),) - $(add-dex-to-package) -endif - $(add-carried-java-resources) -ifneq ($(extra_jar_args),) - $(add-java-resources-to-package) -endif - $(sign-package) -ifdef LOCAL_DEX_PREOPT - $(call dexpreopt-one-file,$(PRIVATE_DEX_PREOPT_IMAGE),$@,$(PRIVATE_DEX_LOCATION),$(PRIVATE_BUILT_ODEX)) -ifneq (nostripping,$(LOCAL_DEX_PREOPT)) - $(call dexpreopt-remove-classes.dex,$@) -endif -endif - @# Alignment must happen after all other zip operations. - $(align-package) - -# Save information about this package -PACKAGES.$(LOCAL_PACKAGE_NAME).OVERRIDES := $(strip $(LOCAL_OVERRIDES_PACKAGES)) -PACKAGES.$(LOCAL_PACKAGE_NAME).RESOURCE_FILES := $(all_resources) -ifdef package_resource_overlays -PACKAGES.$(LOCAL_PACKAGE_NAME).RESOURCE_OVERLAYS := $(package_resource_overlays) +# check if primary arch is supported +LOCAL_2ND_ARCH_VAR_PREFIX := +include $(BUILD_SYSTEM)/module_arch_supported.mk +ifeq ($(my_module_arch_supported),true) +# primary arch is supported +include $(BUILD_SYSTEM)/package_internal.mk +else ifneq (,$(TARGET_2ND_ARCH)) +# check if secondary arch is supported +LOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX) +include $(BUILD_SYSTEM)/module_arch_supported.mk +ifeq ($(my_module_arch_supported),true) +# secondary arch is supported +include $(BUILD_SYSTEM)/package_internal.mk endif +endif # TARGET_2ND_ARCH -PACKAGES := $(PACKAGES) $(LOCAL_PACKAGE_NAME) - -# Dist the files that can be bundled in system.img. -# They include the jni shared libraries and the apk with jni libraries stripped. -ifeq ($(LOCAL_DIST_BUNDLED_BINARIES),true) -ifneq ($(filter $(LOCAL_PACKAGE_NAME),$(TARGET_BUILD_APPS)),) -ifneq ($(strip $(jni_shared_libraries)),) -dist_subdir := bundled_$(LOCAL_PACKAGE_NAME) -$(foreach f, $(jni_shared_libraries), \ - $(call dist-for-goals, apps_only, $(f):$(dist_subdir)/$(notdir $(f)))) - -apk_jni_stripped := $(intermediates)/jni_stripped/package.apk -$(apk_jni_stripped): PRIVATE_JNI_SHARED_LIBRARIES := $(notdir $(jni_shared_libraries)) -$(apk_jni_stripped) : $(LOCAL_BUILT_MODULE) | $(ZIPALIGN) - @rm -rf $(dir $@) && mkdir -p $(dir $@) - $(hide) cp $< $@ - $(hide) zip -d $@ $(foreach f,$(PRIVATE_JNI_SHARED_LIBRARIES),\*/$(f)) - $(call align-package) - -$(call dist-for-goals, apps_only, $(apk_jni_stripped):$(dist_subdir)/$(LOCAL_PACKAGE_NAME).apk) - -endif # jni_shared_libraries -endif # apps_only build -endif # LOCAL_DIST_BUNDLED_BINARIES - -# 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 - -# Reset internal variables. -all_res_assets := - +LOCAL_2ND_ARCH_VAR_PREFIX := LOCAL_NO_2ND_ARCH_MODULE_SUFFIX := -LOCAL_2ND_ARCH_VAR_PREFIX := +my_module_arch_supported := diff --git a/core/package_internal.mk b/core/package_internal.mk new file mode 100644 index 0000000..65c35cc --- /dev/null +++ b/core/package_internal.mk @@ -0,0 +1,469 @@ +# +# Copyright (C) 2008 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. +# + +########################################################### +## Standard rules for building an application package. +## +## Additional inputs from base_rules.make: +## LOCAL_PACKAGE_NAME: The name of the package; the directory +## will be called this. +## +## MODULE, MODULE_PATH, and MODULE_SUFFIX will +## be set for you. +########################################################### + +# If this makefile is being read from within an inheritance, +# use the new values. +skip_definition:= +ifdef LOCAL_PACKAGE_OVERRIDES + package_overridden := $(call set-inherited-package-variables) + ifeq ($(strip $(package_overridden)),) + skip_definition := true + endif +endif + +ifndef skip_definition + +LOCAL_PACKAGE_NAME := $(strip $(LOCAL_PACKAGE_NAME)) +ifeq ($(LOCAL_PACKAGE_NAME),) +$(error $(LOCAL_PATH): Package modules must define LOCAL_PACKAGE_NAME) +endif + +ifneq ($(strip $(LOCAL_MODULE_SUFFIX)),) +$(error $(LOCAL_PATH): Package modules may not define LOCAL_MODULE_SUFFIX) +endif +LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX) + +ifneq ($(strip $(LOCAL_MODULE)),) +$(error $(LOCAL_PATH): Package modules may not define LOCAL_MODULE) +endif +LOCAL_MODULE := $(LOCAL_PACKAGE_NAME) + +ifeq ($(strip $(LOCAL_MANIFEST_FILE)),) +LOCAL_MANIFEST_FILE := AndroidManifest.xml +endif + +# If you need to put the MANIFEST_FILE outside of LOCAL_PATH +# you can use FULL_MANIFEST_FILE +ifeq ($(strip $(LOCAL_FULL_MANIFEST_FILE)),) +LOCAL_FULL_MANIFEST_FILE := $(LOCAL_PATH)/$(LOCAL_MANIFEST_FILE) +endif + +ifneq ($(strip $(LOCAL_MODULE_CLASS)),) +$(error $(LOCAL_PATH): Package modules may not set LOCAL_MODULE_CLASS) +endif +LOCAL_MODULE_CLASS := APPS + +# Package LOCAL_MODULE_TAGS default to optional +LOCAL_MODULE_TAGS := $(strip $(LOCAL_MODULE_TAGS)) +ifeq ($(LOCAL_MODULE_TAGS),) +LOCAL_MODULE_TAGS := optional +endif + +ifeq ($(filter tests, $(LOCAL_MODULE_TAGS)),) +# Force localization check if it's not tagged as tests. +LOCAL_AAPT_FLAGS := $(LOCAL_AAPT_FLAGS) -z +endif + +ifeq (,$(LOCAL_ASSET_DIR)) +LOCAL_ASSET_DIR := $(LOCAL_PATH)/assets +endif + +ifeq (,$(LOCAL_RESOURCE_DIR)) + LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res +endif + +package_resource_overlays := $(strip \ + $(wildcard $(foreach dir, $(PRODUCT_PACKAGE_OVERLAYS), \ + $(addprefix $(dir)/, $(LOCAL_RESOURCE_DIR)))) \ + $(wildcard $(foreach dir, $(DEVICE_PACKAGE_OVERLAYS), \ + $(addprefix $(dir)/, $(LOCAL_RESOURCE_DIR))))) + +LOCAL_RESOURCE_DIR := $(package_resource_overlays) $(LOCAL_RESOURCE_DIR) + +all_assets := $(call find-subdir-assets,$(LOCAL_ASSET_DIR)) +all_assets := $(addprefix $(LOCAL_ASSET_DIR)/,$(patsubst assets/%,%,$(all_assets))) + +all_resources := $(strip \ + $(foreach dir, $(LOCAL_RESOURCE_DIR), \ + $(addprefix $(dir)/, \ + $(patsubst res/%,%, \ + $(call find-subdir-assets,$(dir)) \ + ) \ + ) \ + )) + +all_res_assets := $(strip $(all_assets) $(all_resources)) + +package_expected_intermediates_COMMON := $(call local-intermediates-dir,COMMON) +# If no assets or resources were found, clear the directory variables so +# we don't try to build them. +ifeq (,$(all_assets)) +LOCAL_ASSET_DIR:= +endif +ifeq (,$(all_resources)) +LOCAL_RESOURCE_DIR:= +R_file_stamp := +else +# Make sure that R_file_stamp inherits the proper PRIVATE vars. +# If R.stamp moves, be sure to update the framework makefile, +# which has intimate knowledge of its location. +R_file_stamp := $(package_expected_intermediates_COMMON)/src/R.stamp +LOCAL_INTERMEDIATE_TARGETS += $(R_file_stamp) +endif + +LOCAL_BUILT_MODULE_STEM := package.apk + +LOCAL_PROGUARD_ENABLED:=$(strip $(LOCAL_PROGUARD_ENABLED)) +ifndef LOCAL_PROGUARD_ENABLED +ifneq ($(DISABLE_PROGUARD),true) + LOCAL_PROGUARD_ENABLED :=full +endif +endif +ifeq ($(LOCAL_PROGUARD_ENABLED),disabled) + # the package explicitly request to disable proguard. + LOCAL_PROGUARD_ENABLED := +endif +proguard_options_file := +ifneq ($(LOCAL_PROGUARD_ENABLED),custom) +ifneq ($(all_resources),) + proguard_options_file := $(package_expected_intermediates_COMMON)/proguard_options +endif # all_resources +endif # !custom +LOCAL_PROGUARD_FLAGS := $(addprefix -include ,$(proguard_options_file)) $(LOCAL_PROGUARD_FLAGS) + +ifeq (true,$(EMMA_INSTRUMENT)) +ifndef LOCAL_EMMA_INSTRUMENT +# No emma for test apks. +ifeq (,$(filer tests,$(LOCAL_MODULE_TAGS))$(LOCAL_INSTRUMENTATION_FOR)) +LOCAL_EMMA_INSTRUMENT := true +endif # No test apk +endif # LOCAL_EMMA_INSTRUMENT is not set +else +LOCAL_EMMA_INSTRUMENT := false +endif # EMMA_INSTRUMENT is true + +ifeq (true,$(LOCAL_EMMA_INSTRUMENT)) +ifeq (true,$(EMMA_INSTRUMENT_STATIC)) +LOCAL_STATIC_JAVA_LIBRARIES += emma +else +ifdef LOCAL_SDK_VERSION +ifdef TARGET_BUILD_APPS +# In unbundled build merge the emma library into the apk. +LOCAL_STATIC_JAVA_LIBRARIES += emma +else +# If build against the SDK in full build, core.jar is not used, +# we have to use prebiult emma.jar to make Proguard happy; +# Otherwise emma classes are included in core.jar. +LOCAL_PROGUARD_FLAGS += -libraryjars $(EMMA_JAR) +endif # full build +endif # LOCAL_SDK_VERSION +endif # EMMA_INSTRUMENT_STATIC +endif # LOCAL_EMMA_INSTRUMENT + +rs_compatibility_jni_libs := + +################################# +include $(BUILD_SYSTEM)/java.mk +################################# + +LOCAL_SDK_RES_VERSION:=$(strip $(LOCAL_SDK_RES_VERSION)) +ifeq ($(LOCAL_SDK_RES_VERSION),) + LOCAL_SDK_RES_VERSION:=$(LOCAL_SDK_VERSION) +endif + +full_android_manifest := $(LOCAL_FULL_MANIFEST_FILE) +$(LOCAL_INTERMEDIATE_TARGETS): \ + PRIVATE_ANDROID_MANIFEST := $(full_android_manifest) +ifneq (,$(filter-out current, $(LOCAL_SDK_VERSION))) +$(LOCAL_INTERMEDIATE_TARGETS): \ + PRIVATE_DEFAULT_APP_TARGET_SDK := $(LOCAL_SDK_VERSION) +else +$(LOCAL_INTERMEDIATE_TARGETS): \ + PRIVATE_DEFAULT_APP_TARGET_SDK := $(DEFAULT_APP_TARGET_SDK) +endif + +ifneq ($(all_resources),) + +# Since we don't know where the real R.java file is going to end up, +# we need to use another file to stand in its place. We'll just +# copy the generated file to src/R.stamp, which means it will +# have the same contents and timestamp as the actual file. +# +# At the same time, this will copy the R.java file to a central +# 'R' directory to make it easier to add the files to an IDE. +# +#TODO: use PRIVATE_SOURCE_INTERMEDIATES_DIR instead of +# $(intermediates.COMMON)/src +ifneq ($(package_expected_intermediates_COMMON),$(intermediates.COMMON)) + $(error $(LOCAL_MODULE): internal error: expected intermediates.COMMON "$(package_expected_intermediates_COMMON)" != intermediates.COMMON "$(intermediates.COMMON)") +endif + +$(R_file_stamp): PRIVATE_RESOURCE_PUBLICS_OUTPUT := \ + $(intermediates.COMMON)/public_resources.xml +$(R_file_stamp): PRIVATE_PROGUARD_OPTIONS_FILE := $(proguard_options_file) +$(R_file_stamp): $(all_res_assets) $(full_android_manifest) $(RenderScript_file_stamp) $(AAPT) | $(ACP) + @echo "target R.java/Manifest.java: $(PRIVATE_MODULE) ($@)" + @rm -f $@ + $(create-resource-java-files) + $(hide) for GENERATED_MANIFEST_FILE in `find $(PRIVATE_SOURCE_INTERMEDIATES_DIR) \ + -name Manifest.java 2> /dev/null`; do \ + dir=`awk '/package/{gsub(/\./,"/",$$2);gsub(/;/,"",$$2);print $$2;exit}' $$GENERATED_MANIFEST_FILE`; \ + mkdir -p $(TARGET_COMMON_OUT_ROOT)/R/$$dir; \ + $(ACP) -fp $$GENERATED_MANIFEST_FILE $(TARGET_COMMON_OUT_ROOT)/R/$$dir; \ + done; + $(hide) for GENERATED_R_FILE in `find $(PRIVATE_SOURCE_INTERMEDIATES_DIR) \ + -name R.java 2> /dev/null`; do \ + dir=`awk '/package/{gsub(/\./,"/",$$2);gsub(/;/,"",$$2);print $$2;exit}' $$GENERATED_R_FILE`; \ + mkdir -p $(TARGET_COMMON_OUT_ROOT)/R/$$dir; \ + $(ACP) -fp $$GENERATED_R_FILE $(TARGET_COMMON_OUT_ROOT)/R/$$dir \ + || exit 31; \ + $(ACP) -fp $$GENERATED_R_FILE $@ || exit 32; \ + done; \ + +$(proguard_options_file): $(R_file_stamp) + +ifdef LOCAL_EXPORT_PACKAGE_RESOURCES +# Put this module's resources into a PRODUCT-agnositc package that +# other packages can use to build their own PRODUCT-agnostic R.java (etc.) +# files. +resource_export_package := $(intermediates.COMMON)/package-export.apk +$(R_file_stamp): $(resource_export_package) + +# add-assets-to-package looks at PRODUCT_AAPT_CONFIG, but this target +# can't know anything about PRODUCT. Clear it out just for this target. +$(resource_export_package): PRIVATE_PRODUCT_AAPT_CONFIG := +$(resource_export_package): PRIVATE_PRODUCT_AAPT_PREF_CONFIG := +$(resource_export_package): $(all_res_assets) $(full_android_manifest) $(RenderScript_file_stamp) $(AAPT) + @echo "target Export Resources: $(PRIVATE_MODULE) ($@)" + $(create-empty-package) + $(add-assets-to-package) +endif + +# Other modules should depend on the BUILT module if +# they want to use this module's R.java file. +$(LOCAL_BUILT_MODULE): $(R_file_stamp) + +ifneq ($(full_classes_jar),) +# If full_classes_jar is non-empty, we're building sources. +# If we're building sources, the initial javac step (which +# produces full_classes_compiled_jar) needs to ensure the +# R.java and Manifest.java files have been generated first. +$(full_classes_compiled_jar): $(R_file_stamp) +endif + +endif # all_resources + +ifeq ($(LOCAL_NO_STANDARD_LIBRARIES),true) +# We need to explicitly clear this var so that we don't +# inherit the value from whomever caused us to be built. +$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_AAPT_INCLUDES := +else +# Most packages should link against the resources defined by framework-res. +# Even if they don't have their own resources, they may use framework +# resources. +ifneq ($(filter-out current,$(LOCAL_SDK_RES_VERSION))$(if $(TARGET_BUILD_APPS),$(filter current,$(LOCAL_SDK_RES_VERSION))),) +# for released sdk versions, the platform resources were built into android.jar. +framework_res_package_export := \ + $(HISTORICAL_SDK_VERSIONS_ROOT)/$(LOCAL_SDK_RES_VERSION)/android.jar +framework_res_package_export_deps := $(framework_res_package_export) +else # LOCAL_SDK_RES_VERSION +framework_res_package_export := \ + $(call intermediates-dir-for,APPS,framework-res,,COMMON)/package-export.apk +# We can't depend directly on the export.apk file; it won't get its +# PRIVATE_ vars set up correctly if we do. Instead, depend on the +# corresponding R.stamp file, which lists the export.apk as a dependency. +framework_res_package_export_deps := \ + $(dir $(framework_res_package_export))src/R.stamp +endif # LOCAL_SDK_RES_VERSION +$(R_file_stamp): $(framework_res_package_export_deps) +$(LOCAL_INTERMEDIATE_TARGETS): \ + PRIVATE_AAPT_INCLUDES := $(framework_res_package_export) +endif # LOCAL_NO_STANDARD_LIBRARIES + +ifneq ($(full_classes_jar),) +$(LOCAL_BUILT_MODULE): PRIVATE_DEX_FILE := $(built_dex) +$(LOCAL_BUILT_MODULE): $(built_dex) +endif # full_classes_jar + + +# Get the list of jni libraries to be included in the apk file. + +so_suffix := $($(my_prefix)SHLIB_SUFFIX) + +jni_shared_libraries := \ + $(addprefix $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)OUT_INTERMEDIATE_LIBRARIES)/, \ + $(addsuffix $(so_suffix), \ + $(LOCAL_JNI_SHARED_LIBRARIES))) + +# Include RS dynamically-generated libraries as well +# Keep this ifneq, as the += otherwise adds spaces that need to be stripped. +ifneq ($(rs_compatibility_jni_libs),) +jni_shared_libraries += $(rs_compatibility_jni_libs) +endif + +# App explicitly requires the prebuilt NDK libstlport_shared.so. +# libstlport_shared.so should never go to the system image. +# Instead it should be packaged into the apk. +ifeq (stlport_shared,$(LOCAL_NDK_STL_VARIANT)) +ifndef LOCAL_SDK_VERSION +$(error LOCAL_SDK_VERSION has to be defined together with LOCAL_NDK_STL_VARIANT, \ + LOCAL_PACKAGE_NAME=$(LOCAL_PACKAGE_NAME)) +endif +jni_shared_libraries += \ + $(HISTORICAL_NDK_VERSIONS_ROOT)/current/sources/cxx-stl/stlport/libs/$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)CPU_ABI)/libstlport_shared.so +endif + +# Set the abi directory used by the local JNI shared libraries. +# (Doesn't change how the local shared libraries are compiled, just +# sets where they are stored in the apk.) + +ifeq ($(LOCAL_JNI_SHARED_LIBRARIES_ABI),) + jni_shared_libraries_abi := $(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)CPU_ABI) +else + jni_shared_libraries_abi := $(LOCAL_JNI_SHARED_LIBRARIES_ABI) +endif + +# Pick a key to sign the package with. If this package hasn't specified +# an explicit certificate, use the default. +# Secure release builds will have their packages signed after the fact, +# so it's ok for these private keys to be in the clear. +ifeq ($(LOCAL_CERTIFICATE),) + LOCAL_CERTIFICATE := $(DEFAULT_SYSTEM_DEV_CERTIFICATE) +endif + +ifeq ($(LOCAL_CERTIFICATE),EXTERNAL) + # The special value "EXTERNAL" means that we will sign it with the + # default devkey, apply predexopt, but then expect the final .apk + # (after dexopting) to be signed by an outside tool. + LOCAL_CERTIFICATE := $(DEFAULT_SYSTEM_DEV_CERTIFICATE) + PACKAGES.$(LOCAL_PACKAGE_NAME).EXTERNAL_KEY := 1 +endif + +# If this is not an absolute certificate, assign it to a generic one. +ifeq ($(dir $(strip $(LOCAL_CERTIFICATE))),./) + LOCAL_CERTIFICATE := $(dir $(DEFAULT_SYSTEM_DEV_CERTIFICATE))$(LOCAL_CERTIFICATE) +endif +private_key := $(LOCAL_CERTIFICATE).pk8 +certificate := $(LOCAL_CERTIFICATE).x509.pem + +$(LOCAL_BUILT_MODULE): $(private_key) $(certificate) $(SIGNAPK_JAR) +$(LOCAL_BUILT_MODULE): PRIVATE_PRIVATE_KEY := $(private_key) +$(LOCAL_BUILT_MODULE): PRIVATE_CERTIFICATE := $(certificate) + +PACKAGES.$(LOCAL_PACKAGE_NAME).PRIVATE_KEY := $(private_key) +PACKAGES.$(LOCAL_PACKAGE_NAME).CERTIFICATE := $(certificate) + +$(LOCAL_BUILT_MODULE): PRIVATE_ADDITIONAL_CERTIFICATES := $(foreach c,\ + $(LOCAL_ADDITIONAL_CERTIFICATES), $(c).x509.pem $(c).pk8) + +# Define the rule to build the actual package. +$(LOCAL_BUILT_MODULE): $(AAPT) | $(ZIPALIGN) +ifdef LOCAL_DEX_PREOPT +$(LOCAL_BUILT_MODULE): PRIVATE_DEX_LOCATION := $(patsubst $(PRODUCT_OUT)%,%,$(LOCAL_INSTALLED_MODULE)) +$(LOCAL_BUILT_MODULE): PRIVATE_BUILT_ODEX := $(built_odex) +$(LOCAL_BUILT_MODULE): PRIVATE_DEX_PREOPT_IMAGE := $(LOCAL_DEX_PREOPT_IMAGE) +# Make sure the boot jars get dexpreopt-ed first +$(LOCAL_BUILT_MODULE) : $(DEXPREOPT_ONE_FILE_DEPENDENCY_BUILT_BOOT_PREOPT) +$(LOCAL_BUILT_MODULE) : $(DEXPREOPT_ONE_FILE_DEPENDENCY_TOOLS) +$(LOCAL_BUILT_MODULE) : $(LOCAL_DEX_PREOPT_IMAGE) + +# built_odex is byproduct of LOCAL_BUILT_MODULE without its own build recipe. +$(built_odex) : $(LOCAL_BUILT_MODULE) +endif +$(LOCAL_BUILT_MODULE): PRIVATE_JNI_SHARED_LIBRARIES := $(jni_shared_libraries) +$(LOCAL_BUILT_MODULE): PRIVATE_JNI_SHARED_LIBRARIES_ABI := $(jni_shared_libraries_abi) +ifneq ($(TARGET_BUILD_APPS),) + # Include all resources for unbundled apps. + LOCAL_AAPT_INCLUDE_ALL_RESOURCES := true +endif +ifeq ($(LOCAL_AAPT_INCLUDE_ALL_RESOURCES),true) + $(LOCAL_BUILT_MODULE): PRIVATE_PRODUCT_AAPT_CONFIG := + $(LOCAL_BUILT_MODULE): PRIVATE_PRODUCT_AAPT_PREF_CONFIG := +else + $(LOCAL_BUILT_MODULE): PRIVATE_PRODUCT_AAPT_CONFIG := $(PRODUCT_AAPT_CONFIG) + $(LOCAL_BUILT_MODULE): PRIVATE_PRODUCT_AAPT_PREF_CONFIG := $(PRODUCT_AAPT_PREF_CONFIG) +endif +$(LOCAL_BUILT_MODULE): $(all_res_assets) $(jni_shared_libraries) $(full_android_manifest) + @echo "target Package: $(PRIVATE_MODULE) ($@)" + $(create-empty-package) + $(add-assets-to-package) +ifneq ($(jni_shared_libraries),) + $(add-jni-shared-libs-to-package) +endif +ifneq ($(full_classes_jar),) + $(add-dex-to-package) +endif + $(add-carried-java-resources) +ifneq ($(extra_jar_args),) + $(add-java-resources-to-package) +endif + $(sign-package) +ifdef LOCAL_DEX_PREOPT + $(call dexpreopt-one-file,$(PRIVATE_DEX_PREOPT_IMAGE),$@,$(PRIVATE_DEX_LOCATION),$(PRIVATE_BUILT_ODEX)) +ifneq (nostripping,$(LOCAL_DEX_PREOPT)) + $(call dexpreopt-remove-classes.dex,$@) +endif +endif + @# Alignment must happen after all other zip operations. + $(align-package) + +# Save information about this package +PACKAGES.$(LOCAL_PACKAGE_NAME).OVERRIDES := $(strip $(LOCAL_OVERRIDES_PACKAGES)) +PACKAGES.$(LOCAL_PACKAGE_NAME).RESOURCE_FILES := $(all_resources) +ifdef package_resource_overlays +PACKAGES.$(LOCAL_PACKAGE_NAME).RESOURCE_OVERLAYS := $(package_resource_overlays) +endif + +PACKAGES := $(PACKAGES) $(LOCAL_PACKAGE_NAME) + +# Dist the files that can be bundled in system.img. +# They include the jni shared libraries and the apk with jni libraries stripped. +ifeq ($(LOCAL_DIST_BUNDLED_BINARIES),true) +ifneq ($(filter $(LOCAL_PACKAGE_NAME),$(TARGET_BUILD_APPS)),) +ifneq ($(strip $(jni_shared_libraries)),) +dist_subdir := bundled_$(LOCAL_PACKAGE_NAME) +$(foreach f, $(jni_shared_libraries), \ + $(call dist-for-goals, apps_only, $(f):$(dist_subdir)/$(notdir $(f)))) + +apk_jni_stripped := $(intermediates)/jni_stripped/package.apk +$(apk_jni_stripped): PRIVATE_JNI_SHARED_LIBRARIES := $(notdir $(jni_shared_libraries)) +$(apk_jni_stripped) : $(LOCAL_BUILT_MODULE) | $(ZIPALIGN) + @rm -rf $(dir $@) && mkdir -p $(dir $@) + $(hide) cp $< $@ + $(hide) zip -d $@ $(foreach f,$(PRIVATE_JNI_SHARED_LIBRARIES),\*/$(f)) + $(call align-package) + +$(call dist-for-goals, apps_only, $(apk_jni_stripped):$(dist_subdir)/$(LOCAL_PACKAGE_NAME).apk) + +endif # jni_shared_libraries +endif # apps_only build +endif # LOCAL_DIST_BUNDLED_BINARIES + +# 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 + +# Reset internal variables. +all_res_assets := diff --git a/core/shared_library.mk b/core/shared_library.mk index 6d6cf8f..87b6068 100644 --- a/core/shared_library.mk +++ b/core/shared_library.mk @@ -10,14 +10,19 @@ $(warning $(LOCAL_MODULE): LOCAL_UNSTRIPPED_PATH for shared libraries is unsuppo endif endif -ifneq ($(TARGET_IS_64_BIT)|$(LOCAL_32_BIT_ONLY),true|true) -# Build for TARGET_ARCH LOCAL_2ND_ARCH_VAR_PREFIX := +include $(BUILD_SYSTEM)/module_arch_supported.mk + +ifeq ($(my_module_arch_supported),true) include $(BUILD_SYSTEM)/shared_library_internal.mk endif ifdef TARGET_2ND_ARCH -ifneq ($(LOCAL_NO_2ND_ARCH),true) + +LOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX) +include $(BUILD_SYSTEM)/module_arch_supported.mk + +ifeq ($(my_module_arch_supported),true) # Build for TARGET_2ND_ARCH OVERRIDE_BUILT_MODULE_PATH := LOCAL_BUILT_MODULE := @@ -27,11 +32,12 @@ LOCAL_BUILT_MODULE_STEM := LOCAL_INSTALLED_MODULE_STEM := LOCAL_INTERMEDIATE_TARGETS := -LOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX) include $(BUILD_SYSTEM)/shared_library_internal.mk + +endif + LOCAL_2ND_ARCH_VAR_PREFIX := -endif # LOCAL_NO_2ND_ARCH endif # TARGET_2ND_ARCH my_module_arch_supported := diff --git a/core/static_library.mk b/core/static_library.mk index 8eff16d..d6e8d51 100644 --- a/core/static_library.mk +++ b/core/static_library.mk @@ -1,11 +1,16 @@ -ifneq ($(TARGET_IS_64_BIT)|$(LOCAL_32_BIT_ONLY),true|true) -# Build for TARGET_ARCH LOCAL_2ND_ARCH_VAR_PREFIX := +include $(BUILD_SYSTEM)/module_arch_supported.mk + +ifeq ($(my_module_arch_supported),true) include $(BUILD_SYSTEM)/static_library_internal.mk endif ifdef TARGET_2ND_ARCH -ifneq ($(LOCAL_NO_2ND_ARCH),true) + +LOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX) +include $(BUILD_SYSTEM)/module_arch_supported.mk + +ifeq ($(my_module_arch_supported),true) # Build for TARGET_2ND_ARCH OVERRIDE_BUILT_MODULE_PATH := LOCAL_BUILT_MODULE := @@ -15,11 +20,12 @@ LOCAL_BUILT_MODULE_STEM := LOCAL_INSTALLED_MODULE_STEM := LOCAL_INTERMEDIATE_TARGETS := -LOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX) include $(BUILD_SYSTEM)/static_library_internal.mk + +endif + LOCAL_2ND_ARCH_VAR_PREFIX := -endif # LOCAL_NO_2ND_ARCH endif # TARGET_2ND_ARCH my_module_arch_supported := -- cgit v1.1 From 9bdcdff615f4e21eca818768cc7549a3e2bb8830 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Fri, 24 Jan 2014 13:38:08 -0800 Subject: HACK: add 64-bit directory blacklist Change-Id: I431e8b220db81d51930dc0b3d95995df120c179a --- core/64_bit_blacklist.mk | 53 +++++++++++++++++++++++++++++++++++++++ core/Makefile | 4 +++ core/definitions.mk | 8 +++--- core/main.mk | 2 ++ core/module_arch_supported.mk | 2 ++ core/tasks/vendor_module_check.mk | 11 ++++---- 6 files changed, 72 insertions(+), 8 deletions(-) create mode 100644 core/64_bit_blacklist.mk diff --git a/core/64_bit_blacklist.mk b/core/64_bit_blacklist.mk new file mode 100644 index 0000000..71a5cf3 --- /dev/null +++ b/core/64_bit_blacklist.mk @@ -0,0 +1,53 @@ +ifneq ($(TARGET_2ND_ARCH),) + +# JNI - needs 64-bit VM +_64_bit_directory_blacklist += \ + external/conscrypt \ + external/neven \ + external/svox \ + libcore \ + packages \ + +# Chromium/V8: needs 64-bit support +_64_bit_directory_blacklist += \ + external/chromium \ + external/chromium-libpac \ + external/chromium_org \ + external/skia \ + external/v8 \ + frameworks/webview \ + +# misc build errors +_64_bit_directory_blacklist += \ + external/bluetooth/bluedroid \ + external/oprofile/opcontrol \ + external/tcpdump \ + frameworks/av \ + frameworks/base \ + frameworks/ex \ + frameworks/ml \ + frameworks/opt \ + frameworks/wilhelm \ + device/generic/goldfish/opengl \ + device/generic/goldfish/camera \ + +# depends on libnl_2 +_64_bit_directory_blacklist += \ + external/android-clat \ + external/wpa_suplicant_8 + +# depends on frameworks/av +_64_bit_directory_blacklist += \ + external/srec \ + hardware/libhardware_legacy/audio \ + hardware/libhardware/modules/audio_remote_submix \ + +_64_bit_directory_blacklist_pattern := $(addsuffix %,$(_64_bit_directory_blacklist)) + +define directory_is_64_bit_blacklisted +$(if $(filter $(_64_bit_directory_blacklist_pattern),$(1)),true) +endef +else +define directory_is_64_bit_blacklisted +endef +endif diff --git a/core/Makefile b/core/Makefile index 8add332..8a6b14c 100644 --- a/core/Makefile +++ b/core/Makefile @@ -648,6 +648,10 @@ ifeq (,$(filter true, $(TARGET_NO_KERNEL) $(TARGET_NO_RECOVERY))) INSTALLED_RECOVERYIMAGE_TARGET := $(PRODUCT_OUT)/recovery.img +# HACK: clear LOCAL_PATH from including last build target before calling +# intermedites-dir-for +LOCAL_PATH := $(call my-dir) + recovery_initrc := $(call include-path-for, recovery)/etc/init.rc recovery_kernel := $(INSTALLED_KERNEL_TARGET) # same as a non-recovery system recovery_ramdisk := $(PRODUCT_OUT)/ramdisk-recovery.img diff --git a/core/definitions.mk b/core/definitions.mk index 1b53163..afb8e2e 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -423,11 +423,13 @@ $(strip \ $(if $(_idfName),, \ $(error $(LOCAL_PATH): Name not defined in call to intermediates-dir-for)) \ $(eval _idfPrefix := $(if $(strip $(3)),HOST,TARGET)) \ - $(eval _idf2ndArchPrefix := $(if $(strip $(5)),$(TARGET_2ND_ARCH_VAR_PREFIX))) \ + $(eval _idf2ndArchPrefix := $(if $(call directory_is_64_bit_blacklisted,$(LOCAL_PATH))$(strip $(5)),$(TARGET_2ND_ARCH_VAR_PREFIX))) \ $(if $(filter $(_idfPrefix)-$(_idfClass),$(COMMON_MODULE_CLASSES))$(4), \ $(eval _idfIntBase := $($(_idfPrefix)_OUT_COMMON_INTERMEDIATES)) \ - , \ - $(eval _idfIntBase := $($(_idf2ndArchPrefix)$(_idfPrefix)_OUT_INTERMEDIATES)) \ + ,$(if $(filter $(_idfPrefix)-$(_idfClass),TARGET-SHARED_LIBRARIES TARGET-STATIC_LIBRARIES TARGET-EXECUTABLES),\ + $(eval _idfIntBase := $($(_idf2ndArchPrefix)$(_idfPrefix)_OUT_INTERMEDIATES)) \ + ,$(eval _idfIntBase := $($(_idfPrefix)_OUT_INTERMEDIATES)) \ + ) \ ) \ $(_idfIntBase)/$(_idfClass)/$(_idfName)_intermediates \ ) diff --git a/core/main.mk b/core/main.mk index abec305..2399d2e 100644 --- a/core/main.mk +++ b/core/main.mk @@ -92,6 +92,8 @@ include $(BUILD_SYSTEM)/help.mk # and host information. include $(BUILD_SYSTEM)/config.mk +include $(BUILD_SYSTEM)/64_bit_blacklist.mk + # This allows us to force a clean build - included after the config.mk # environment setup is done, but before we generate any dependencies. This # file does the rm -rf inline so the deps which are all done below will diff --git a/core/module_arch_supported.mk b/core/module_arch_supported.mk index 49cf8dd..ddfd67d 100644 --- a/core/module_arch_supported.mk +++ b/core/module_arch_supported.mk @@ -22,6 +22,8 @@ my_module_arch_supported := true ifeq ($(LOCAL_2ND_ARCH_VAR_PREFIX),) ifeq ($(TARGET_IS_64_BIT)|$(LOCAL_32_BIT_ONLY),true|true) my_module_arch_supported := false +else ifeq ($(call directory_is_64_bit_blacklisted,$(LOCAL_PATH)),true) +my_module_arch_supported := false endif else # LOCAL_2ND_ARCH_VAR_PREFIX ifeq ($(LOCAL_NO_2ND_ARCH),true) diff --git a/core/tasks/vendor_module_check.mk b/core/tasks/vendor_module_check.mk index c51a40c..96557e3 100644 --- a/core/tasks/vendor_module_check.mk +++ b/core/tasks/vendor_module_check.mk @@ -71,11 +71,12 @@ _vendor_check_copy_files := $(foreach m, $(_vendor_check_modules), \ $(if $(filter vendor/%, $(ALL_MODULES.$(m).PATH)),\ - $(if $(filter $(_vendor_owner_whitelist), $(ALL_MODULES.$(m).OWNER)),,\ - $(error Error: vendor module "$(m)" in $(ALL_MODULES.$(m).PATH) with unknown owner \ - "$(ALL_MODULES.$(m).OWNER)" in product "$(TARGET_PRODUCT)"))\ - $(if $(ALL_MODULES.$(m).INSTALLED),\ - $(eval _vendor_module_owner_info += $(patsubst $(PRODUCT_OUT)/%,%,$(ALL_MODULES.$(m).INSTALLED)):$(ALL_MODULES.$(m).OWNER))))) + $(if $(filter-out FAKE, $(ALL_MODULES.$(m).CLASS)),\ + $(if $(filter $(_vendor_owner_whitelist), $(ALL_MODULES.$(m).OWNER)),,\ + $(error Error: vendor module "$(m)" in $(ALL_MODULES.$(m).PATH) with unknown owner \ + "$(ALL_MODULES.$(m).OWNER)" in product "$(TARGET_PRODUCT)"))\ + $(if $(ALL_MODULES.$(m).INSTALLED),\ + $(eval _vendor_module_owner_info += $(patsubst $(PRODUCT_OUT)/%,%,$(ALL_MODULES.$(m).INSTALLED)):$(ALL_MODULES.$(m).OWNER)))))) endif -- cgit v1.1 From 7813000d49de51db102f70d9c6f2509419d8ea84 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Tue, 25 Feb 2014 15:54:26 -0800 Subject: Take libcore off the LP64 blacklist. Change-Id: I34bc49370ecdd37f83927c3829c775e404bcbd73 --- core/64_bit_blacklist.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/core/64_bit_blacklist.mk b/core/64_bit_blacklist.mk index 71a5cf3..99db95d 100644 --- a/core/64_bit_blacklist.mk +++ b/core/64_bit_blacklist.mk @@ -5,7 +5,6 @@ _64_bit_directory_blacklist += \ external/conscrypt \ external/neven \ external/svox \ - libcore \ packages \ # Chromium/V8: needs 64-bit support -- cgit v1.1 From 579ea43d8794c00b3d806ec0a23b4f2be23940dd Mon Sep 17 00:00:00 2001 From: Ying Wang Date: Tue, 25 Feb 2014 17:15:47 -0800 Subject: Remove external/wpa_supplicant_8 and external/android-clat from 64_bit_blacklist.mk. They now build fine for 64-bit. Change-Id: Ib73c8465b72cc7b40dae21441c3ea0bd25b7e6ba --- core/64_bit_blacklist.mk | 5 ----- 1 file changed, 5 deletions(-) diff --git a/core/64_bit_blacklist.mk b/core/64_bit_blacklist.mk index 99db95d..f3d433d 100644 --- a/core/64_bit_blacklist.mk +++ b/core/64_bit_blacklist.mk @@ -30,11 +30,6 @@ _64_bit_directory_blacklist += \ device/generic/goldfish/opengl \ device/generic/goldfish/camera \ -# depends on libnl_2 -_64_bit_directory_blacklist += \ - external/android-clat \ - external/wpa_suplicant_8 - # depends on frameworks/av _64_bit_directory_blacklist += \ external/srec \ -- cgit v1.1 From 1c71a43aef790ee0e66c8ead8963e1e872ec4167 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Tue, 25 Feb 2014 17:32:22 -0800 Subject: oprofile/daemon doesn't build for x86_64. We'll probably remove external/oprofile soon, but this gets us closer to being able to turn on an x86_64 continuous build in the meantime. Change-Id: Ic1d5331d41dafee9ffed222dc332afed2d4ae356 --- core/64_bit_blacklist.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/core/64_bit_blacklist.mk b/core/64_bit_blacklist.mk index f3d433d..9ae2aa5 100644 --- a/core/64_bit_blacklist.mk +++ b/core/64_bit_blacklist.mk @@ -19,6 +19,7 @@ _64_bit_directory_blacklist += \ # misc build errors _64_bit_directory_blacklist += \ external/bluetooth/bluedroid \ + external/oprofile/daemon \ external/oprofile/opcontrol \ external/tcpdump \ frameworks/av \ -- cgit v1.1 From f3ba9484b511bb310b73a44762d5376fe8c6db00 Mon Sep 17 00:00:00 2001 From: Ying Wang Date: Wed, 26 Feb 2014 14:18:21 -0800 Subject: Remove external/tcpdump from 64-bit build blacklist. Change-Id: I40b0c71120a5548072ecb2e552bdbd8c14283097 --- core/64_bit_blacklist.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/core/64_bit_blacklist.mk b/core/64_bit_blacklist.mk index 9ae2aa5..4302c47 100644 --- a/core/64_bit_blacklist.mk +++ b/core/64_bit_blacklist.mk @@ -21,7 +21,6 @@ _64_bit_directory_blacklist += \ external/bluetooth/bluedroid \ external/oprofile/daemon \ external/oprofile/opcontrol \ - external/tcpdump \ frameworks/av \ frameworks/base \ frameworks/ex \ -- cgit v1.1 From 470125849d2ac977ca091f689fc9bff3c1bdc971 Mon Sep 17 00:00:00 2001 From: JP Abgrall Date: Wed, 26 Feb 2014 22:59:40 +0000 Subject: DO NOT MERGE: Fix aosp 64bit build. tcpdump+64bit=bad This is until aosp gets the latest libpcap+tcpdump currently only on internal. This reverts commit 5c68e265ac2bfeb881f9cc87c50f8b947ddbd86c. Change-Id: If6a990c72cb3a8d699cf0881f7d5fb8b725fdf2e --- core/64_bit_blacklist.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/core/64_bit_blacklist.mk b/core/64_bit_blacklist.mk index 4302c47..9ae2aa5 100644 --- a/core/64_bit_blacklist.mk +++ b/core/64_bit_blacklist.mk @@ -21,6 +21,7 @@ _64_bit_directory_blacklist += \ external/bluetooth/bluedroid \ external/oprofile/daemon \ external/oprofile/opcontrol \ + external/tcpdump \ frameworks/av \ frameworks/base \ frameworks/ex \ -- cgit v1.1 From 7e09b998c3b48ba0a4c7468c1fc1177b6dab485a Mon Sep 17 00:00:00 2001 From: JP Abgrall Date: Thu, 27 Feb 2014 04:05:14 +0000 Subject: DO NOT MERGE: Revert the revert now that tcpdump+64bit=ok This enables tcpdump for 64bit builds. This reverts commit 24f99bd4b354789d7368cdee0c924e79e0a1517d. Change-Id: Ic1413b2f3f66cedbe756d73656c90b3177ba66c0 --- core/64_bit_blacklist.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/core/64_bit_blacklist.mk b/core/64_bit_blacklist.mk index 9ae2aa5..4302c47 100644 --- a/core/64_bit_blacklist.mk +++ b/core/64_bit_blacklist.mk @@ -21,7 +21,6 @@ _64_bit_directory_blacklist += \ external/bluetooth/bluedroid \ external/oprofile/daemon \ external/oprofile/opcontrol \ - external/tcpdump \ frameworks/av \ frameworks/base \ frameworks/ex \ -- cgit v1.1 From bde97f477b722336695be3f62f43b4b36cdc71c5 Mon Sep 17 00:00:00 2001 From: Narayan Kamath Date: Fri, 28 Feb 2014 15:34:16 +0000 Subject: Amend 64 bit blacklist. - external/skia now builds on arm64, frameworks/base/libs/hwui depends on it. - external/bluetooth/bluedroid builds on 64 bit, though there isn't any obvious way to test it without real hardware. - frameworks/ml now builds, as does external/srec - frameworks/opt, frameworks/ex and frameworks/wilhelm don't build because of their dependency on frameworks/av. frameworks/av should probably be dropped out of the blacklist and replaced by individual markers on targets that we want for 64 bit (we don't want all of them for arm64). Change-Id: I9735108840fcba21ac8918bedf0d6de8989de086 --- core/64_bit_blacklist.mk | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/core/64_bit_blacklist.mk b/core/64_bit_blacklist.mk index 4302c47..0171e67 100644 --- a/core/64_bit_blacklist.mk +++ b/core/64_bit_blacklist.mk @@ -2,31 +2,24 @@ ifneq ($(TARGET_2ND_ARCH),) # JNI - needs 64-bit VM _64_bit_directory_blacklist += \ - external/conscrypt \ - external/neven \ - external/svox \ - packages \ + external/svox/ \ + packages/ + # Chromium/V8: needs 64-bit support _64_bit_directory_blacklist += \ external/chromium \ external/chromium-libpac \ external/chromium_org \ - external/skia \ external/v8 \ frameworks/webview \ # misc build errors _64_bit_directory_blacklist += \ - external/bluetooth/bluedroid \ external/oprofile/daemon \ external/oprofile/opcontrol \ frameworks/av \ frameworks/base \ - frameworks/ex \ - frameworks/ml \ - frameworks/opt \ - frameworks/wilhelm \ device/generic/goldfish/opengl \ device/generic/goldfish/camera \ @@ -35,6 +28,9 @@ _64_bit_directory_blacklist += \ external/srec \ hardware/libhardware_legacy/audio \ hardware/libhardware/modules/audio_remote_submix \ + frameworks/wilhelm \ + frameworks/opt \ + frameworks/ex \ _64_bit_directory_blacklist_pattern := $(addsuffix %,$(_64_bit_directory_blacklist)) -- cgit v1.1 From b0f8c440692023b77198a20c63cee0af9a09e3c0 Mon Sep 17 00:00:00 2001 From: Ben Cheng Date: Wed, 5 Mar 2014 14:31:34 -0800 Subject: OProfile is no longer compiled now. BUG: 13249790 Change-Id: I2d4fd8f888823687ea41ddbee1f7ce2a7ebc99f7 --- core/64_bit_blacklist.mk | 2 -- envsetup.sh | 4 ---- 2 files changed, 6 deletions(-) diff --git a/core/64_bit_blacklist.mk b/core/64_bit_blacklist.mk index 0171e67..9f16536 100644 --- a/core/64_bit_blacklist.mk +++ b/core/64_bit_blacklist.mk @@ -16,8 +16,6 @@ _64_bit_directory_blacklist += \ # misc build errors _64_bit_directory_blacklist += \ - external/oprofile/daemon \ - external/oprofile/opcontrol \ frameworks/av \ frameworks/base \ device/generic/goldfish/opengl \ diff --git a/envsetup.sh b/envsetup.sh index d3bfe80..ba4f683 100644 --- a/envsetup.sh +++ b/envsetup.sh @@ -191,10 +191,6 @@ function setpaths() unset ANDROID_HOST_OUT export ANDROID_HOST_OUT=$(get_abs_build_var HOST_OUT) - # needed for processing samples collected by perf counters - unset OPROFILE_EVENTS_DIR - export OPROFILE_EVENTS_DIR=$T/external/oprofile/events - # needed for building linux on MacOS # TODO: fix the path #export HOST_EXTRACFLAGS="-I "$T/system/kernel_headers/host_include -- cgit v1.1 From c88d1740108e0370353111b2a616a5ce3494fd8d Mon Sep 17 00:00:00 2001 From: Narayan Kamath Date: Wed, 12 Mar 2014 14:42:07 +0000 Subject: Remove external/chromium from the 64 bit blacklist. This isn't the same as chromium_org (which is used by the webview). This is a 3 year old snapshot of the net stack which compiles under 64 bit. It's currently used on aosp master by libstagefright_chromium_http. This project can be removed if the changes that remove the chromium dependency are cherry-picked to aosp/master. Change-Id: I5d0f9ed03ea9842b47d980d77ea32bc7a3f6998f --- core/64_bit_blacklist.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/core/64_bit_blacklist.mk b/core/64_bit_blacklist.mk index 9f16536..ab081b5 100644 --- a/core/64_bit_blacklist.mk +++ b/core/64_bit_blacklist.mk @@ -8,7 +8,6 @@ _64_bit_directory_blacklist += \ # Chromium/V8: needs 64-bit support _64_bit_directory_blacklist += \ - external/chromium \ external/chromium-libpac \ external/chromium_org \ external/v8 \ -- cgit v1.1 From dc8541686c6ba3f3bebbeb75ad3f7b7142a6ff85 Mon Sep 17 00:00:00 2001 From: Narayan Kamath Date: Thu, 13 Mar 2014 09:29:22 +0000 Subject: Revert "Remove external/chromium from the 64 bit blacklist." This reverts commit 27bf51144af3513605cff421beb39a556599eb42. Change-Id: Ic7e4fff8f87342a248172c2fc0d1358b4db1c25c --- core/64_bit_blacklist.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/core/64_bit_blacklist.mk b/core/64_bit_blacklist.mk index ab081b5..9f16536 100644 --- a/core/64_bit_blacklist.mk +++ b/core/64_bit_blacklist.mk @@ -8,6 +8,7 @@ _64_bit_directory_blacklist += \ # Chromium/V8: needs 64-bit support _64_bit_directory_blacklist += \ + external/chromium \ external/chromium-libpac \ external/chromium_org \ external/v8 \ -- cgit v1.1