summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorYing Wang <wangying@google.com>2010-06-02 13:11:32 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-06-02 13:11:32 -0700
commitf33c3ef9332c2d3e4a04b14819aa3dbb9f0d4d21 (patch)
tree55fdd3c2c37621107701107c680523bbccdf7a4c /core
parent8a06bac1db18ff7702dbd2a4ffbdde97330cd665 (diff)
parentb93e03cbc9d47a9d9a385c780ed64639e2a23ae5 (diff)
downloadbuild-f33c3ef9332c2d3e4a04b14819aa3dbb9f0d4d21.tar.gz
build-f33c3ef9332c2d3e4a04b14819aa3dbb9f0d4d21.tar.bz2
build-f33c3ef9332c2d3e4a04b14819aa3dbb9f0d4d21.zip
am b93e03cb: am 52911309: Cherry-pick unbundled build changes from master
Merge commit 'b93e03cbc9d47a9d9a385c780ed64639e2a23ae5' into kraken * commit 'b93e03cbc9d47a9d9a385c780ed64639e2a23ae5': Cherry-pick unbundled build changes from master
Diffstat (limited to 'core')
-rw-r--r--core/base_rules.mk3
-rw-r--r--core/main.mk26
-rw-r--r--core/package.mk4
-rw-r--r--core/product.mk19
-rw-r--r--core/product_config.mk39
5 files changed, 77 insertions, 14 deletions
diff --git a/core/base_rules.mk b/core/base_rules.mk
index c361d93c3..04a9d6788 100644
--- a/core/base_rules.mk
+++ b/core/base_rules.mk
@@ -235,7 +235,8 @@ endif
###########################################################
#TODO: pull this into java.make once host and target are combined
-java_sources := $(addprefix $(TOP_DIR)$(LOCAL_PATH)/, $(filter %.java,$(LOCAL_SRC_FILES))) $(aidl_java_sources) $(logtags_java_sources)
+java_sources := $(addprefix $(TOP_DIR)$(LOCAL_PATH)/, $(filter %.java,$(LOCAL_SRC_FILES))) $(aidl_java_sources) $(logtags_java_sources) \
+ $(filter %.java,$(LOCAL_GENERATED_SOURCES))
all_java_sources := $(java_sources) $(addprefix $($(my_prefix)OUT_COMMON_INTERMEDIATES)/, $(filter %.java,$(LOCAL_INTERMEDIATE_SOURCES)))
## Java resources #########################################
diff --git a/core/main.mk b/core/main.mk
index 6eb2662e1..2655b067d 100644
--- a/core/main.mk
+++ b/core/main.mk
@@ -691,8 +691,21 @@ droidcore: files \
# The actual files built by the droidcore target changes depending
# on the build variant.
.PHONY: droid tests
-droid tests: droidcore
-
+ifeq ($(strip $(is_unbundled_app_build)),true)
+unbundled_build_modules :=
+ifdef UNBUNDLED_APPS
+unbundled_build_modules := $(UNBUNDLED_APPS)
+else # UNBUNDLED_APPS
+# Otherwise we build all modules in the source tree.
+unbundled_build_modules := $(sort $(call get-tagged-modules,$(ALL_MODULE_TAGS)))
+endif # UNBUNDLED_APPS
+droid: $(unbundled_build_modules)
+else # is_unbundled_app_build
+droid: droidcore
+endif # is_unbundled_app_build
+tests: droidcore
+
+ifneq ($(strip $(is_unbundled_app_build)),true)
$(call dist-for-goals, droid, \
$(INTERNAL_UPDATE_PACKAGE_TARGET) \
$(INTERNAL_OTA_PACKAGE_TARGET) \
@@ -724,6 +737,15 @@ $(call dist-for-goals, droid, \
)
endif
+else # is_unbundled_app_build
+# dist the unbundled app.
+ifdef UNBUNDLED_APPS
+ $(call dist-for-goals,droid, \
+ $(foreach m,$(UNBUNDLED_APPS),$(ALL_MODULES.$(m).INSTALLED)) \
+ )
+endif # UNBUNDLED_APPS
+endif # is_unbundled_app_build
+
.PHONY: docs
docs: $(ALL_DOCS)
diff --git a/core/package.mk b/core/package.mk
index 24807f9e4..d5de77b26 100644
--- a/core/package.mk
+++ b/core/package.mk
@@ -304,6 +304,10 @@ PACKAGES.$(LOCAL_PACKAGE_NAME).CERTIFICATE := $(certificate)
# Define the rule to build the actual package.
$(LOCAL_BUILT_MODULE): $(AAPT) | $(ZIPALIGN)
$(LOCAL_BUILT_MODULE): PRIVATE_JNI_SHARED_LIBRARIES := $(jni_shared_libraries)
+ifeq ($(strip $(is_unbundled_app_build)),true)
+ # Include all resources for unbundled apps.
+ $(LOCAL_BUILT_MODULE): PRODUCT_AAPT_CONFIG :=
+endif
$(LOCAL_BUILT_MODULE): $(all_res_assets) $(jni_shared_libraries) $(full_android_manifest)
@echo "target Package: $(PRIVATE_MODULE) ($@)"
$(create-empty-package)
diff --git a/core/product.mk b/core/product.mk
index be32e9eec..7594f6f30 100644
--- a/core/product.mk
+++ b/core/product.mk
@@ -29,13 +29,13 @@ $(shell test -d device && find device -maxdepth 6 -name AndroidProducts.mk) \
endef
#
-# Returns the sorted concatenation of all PRODUCT_MAKEFILES
-# variables set in all AndroidProducts.mk files.
-# $(call ) isn't necessary.
+# Returns the sorted concatenation of PRODUCT_MAKEFILES
+# variables set in the given AndroidProducts.mk files.
+# $(1): the list of AndroidProducts.mk files.
#
-define get-all-product-makefiles
+define get-product-makefiles
$(sort \
- $(foreach f,$(_find-android-products-files), \
+ $(foreach f,$(1), \
$(eval PRODUCT_MAKEFILES :=) \
$(eval LOCAL_DIR := $(patsubst %/,%,$(dir $(f)))) \
$(eval include $(f)) \
@@ -47,6 +47,15 @@ $(sort \
endef
#
+# Returns the sorted concatenation of all PRODUCT_MAKEFILES
+# variables set in all AndroidProducts.mk files.
+# $(call ) isn't necessary.
+#
+define get-all-product-makefiles
+$(call get-product-makefiles,$(_find-android-products-files))
+endef
+
+#
# Functions for including product makefiles
#
diff --git a/core/product_config.mk b/core/product_config.mk
index 02334cfa7..a7eba92d1 100644
--- a/core/product_config.mk
+++ b/core/product_config.mk
@@ -149,6 +149,27 @@ endif
# else: Use the value set in the environment or buildspec.mk.
# ---------------------------------------------------------------
+# Provide "APP-<appname>" targets, which lets you build
+# an unbundled app.
+#
+unbundled_goals := $(strip $(filter APP-%,$(MAKECMDGOALS)))
+ifdef unbundled_goals
+ ifneq ($(words $(unbundled_goals)),1)
+ $(error Only one APP-* goal may be specified; saw "$(unbundled_goals)"))
+ endif
+ UNBUNDLED_APPS := $(strip $(subst -, ,$(patsubst APP-%,%,$(unbundled_goals))))
+ ifneq ($(filter $(DEFAULT_GOAL),$(MAKECMDGOALS)),)
+ MAKECMDGOALS := $(patsubst $(unbundled_goals),,$(MAKECMDGOALS))
+ else
+ MAKECMDGOALS := $(patsubst $(unbundled_goals),$(DEFAULT_GOAL),$(MAKECMDGOALS))
+ endif
+ is_unbundled_app_build := true
+
+.PHONY: $(unbundled_goals)
+$(unbundled_goals): $(MAKECMDGOALS)
+endif # unbundled_goals
+
+# ---------------------------------------------------------------
# Include the product definitions.
# We need to do this to translate TARGET_PRODUCT into its
# underlying TARGET_DEVICE before we start defining any rules.
@@ -157,12 +178,18 @@ include $(BUILD_SYSTEM)/node_fns.mk
include $(BUILD_SYSTEM)/product.mk
include $(BUILD_SYSTEM)/device.mk
-# Read in all of the product definitions specified by the AndroidProducts.mk
-# files in the tree.
-#
-#TODO: when we start allowing direct pointers to product files,
-# guarantee that they're in this list.
-$(call import-products, $(get-all-product-makefiles))
+ifeq ($(strip $(is_unbundled_app_build)),true)
+ # An unbundled app build needs only the core product makefiles.
+ $(call import-products,$(call get-product-makefiles,\
+ $(SRC_TARGET_DIR)/product/AndroidProducts.mk))
+else
+ # Read in all of the product definitions specified by the AndroidProducts.mk
+ # files in the tree.
+ #
+ #TODO: when we start allowing direct pointers to product files,
+ # guarantee that they're in this list.
+ $(call import-products, $(get-all-product-makefiles))
+endif # is_unbundled_app_build
$(check-all-products)
#$(dump-products)
#$(error done)