2009-03-04 04:28:42 +01:00
|
|
|
###########################################################
|
|
|
|
## Standard rules for copying files that are prebuilt
|
|
|
|
##
|
|
|
|
## Additional inputs from base_rules.make:
|
|
|
|
## None.
|
2009-08-06 22:02:19 +02:00
|
|
|
##
|
2009-03-04 04:28:42 +01:00
|
|
|
###########################################################
|
|
|
|
|
|
|
|
ifneq ($(LOCAL_PREBUILT_LIBS),)
|
|
|
|
$(error dont use LOCAL_PREBUILT_LIBS anymore LOCAL_PATH=$(LOCAL_PATH))
|
|
|
|
endif
|
|
|
|
ifneq ($(LOCAL_PREBUILT_EXECUTABLES),)
|
|
|
|
$(error dont use LOCAL_PREBUILT_EXECUTABLES anymore LOCAL_PATH=$(LOCAL_PATH))
|
|
|
|
endif
|
|
|
|
ifneq ($(LOCAL_PREBUILT_JAVA_LIBRARIES),)
|
|
|
|
$(error dont use LOCAL_PREBUILT_JAVA_LIBRARIES anymore LOCAL_PATH=$(LOCAL_PATH))
|
|
|
|
endif
|
|
|
|
|
2014-01-24 22:34:51 +01:00
|
|
|
ifneq ($(TARGET_IS_64_BIT)|$(LOCAL_32BIT_ONLY),true|true)
|
|
|
|
# Build for TARGET_ARCH
|
|
|
|
LOCAL_2ND_ARCH_VAR_PREFIX :=
|
|
|
|
else
|
|
|
|
# Build for TARGET_2ND_ARCH
|
|
|
|
LOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX)
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
2013-08-02 22:30:54 +02:00
|
|
|
# Not much sense to check build prebuilts
|
|
|
|
LOCAL_DONT_CHECK_MODULE := true
|
|
|
|
|
Build from source or prebuilt
With this change, you can easily switch between building from source
code and prebuilt.
Set LOCAL_PREBUILT_MODULE_FILE to the path of the prebuilt file,
relative to the top of the source tree, in the usual module definition.
The prebuilt will be used unless any of the followings satisfied:
1) ANDROID_BUILD_FROM_SOURCE is "true", which disable prebuilt globally;
2) The module name is in ANDROID_NO_PREBUILT_MODULES;
3) The LOCAL_PATH is prefixed by any of ANDROID_NO_PREBUILT_PATHS.
A developer can set ANDROID_NO_PREBUILT_MODULES or
ANDROID_NO_PREBUILT_PATHS to build only his own module(s) from source,
while build other modules from prebuilts.
You can set ANDROID_BUILD_FROM_SOURCE to true to build everything from
source.
Those variables can be set with shell environmental variable or in your
buildspec.mk.
Sometimes module B is able to be built from source only if module A is
also
built from source, for example, if B is the test apk of A.
In that case, you can use the macro include-if-build-from-source to
include B's Android.mk only if A is built from source too, or
if-build-from-source to conditionally include the definition of module
B,
if their module definitions are in the same Android.mk.
Support host-executable-hook and host-shared-library-hook.
Change-Id: Icab7cf028c87eaba0dd7efc2a7749fd6f32b44e4
2012-12-14 03:23:01 +01:00
|
|
|
ifdef LOCAL_PREBUILT_MODULE_FILE
|
|
|
|
my_prebuilt_src_file := $(LOCAL_PREBUILT_MODULE_FILE)
|
|
|
|
else
|
|
|
|
my_prebuilt_src_file := $(LOCAL_PATH)/$(LOCAL_SRC_FILES)
|
|
|
|
endif
|
|
|
|
|
2011-09-15 21:00:52 +02:00
|
|
|
ifdef LOCAL_IS_HOST_MODULE
|
2012-11-02 01:22:33 +01:00
|
|
|
my_prefix := HOST_
|
2011-09-15 21:00:52 +02:00
|
|
|
else
|
2012-11-02 01:22:33 +01:00
|
|
|
my_prefix := TARGET_
|
2011-09-15 21:00:52 +02:00
|
|
|
endif
|
|
|
|
ifeq (SHARED_LIBRARIES,$(LOCAL_MODULE_CLASS))
|
|
|
|
# Put the built targets of all shared libraries in a common directory
|
|
|
|
# to simplify the link line.
|
2014-01-24 22:34:51 +01:00
|
|
|
OVERRIDE_BUILT_MODULE_PATH := $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)OUT_INTERMEDIATE_LIBRARIES)
|
2011-09-15 21:00:52 +02:00
|
|
|
endif
|
|
|
|
|
2011-11-08 18:31:21 +01:00
|
|
|
ifneq ($(filter STATIC_LIBRARIES SHARED_LIBRARIES,$(LOCAL_MODULE_CLASS)),)
|
|
|
|
prebuilt_module_is_a_library := true
|
|
|
|
else
|
|
|
|
prebuilt_module_is_a_library :=
|
|
|
|
endif
|
|
|
|
|
2012-05-16 00:31:41 +02:00
|
|
|
# Don't install static libraries by default.
|
|
|
|
ifndef LOCAL_UNINSTALLABLE_MODULE
|
|
|
|
ifeq (STATIC_LIBRARIES,$(LOCAL_MODULE_CLASS))
|
|
|
|
LOCAL_UNINSTALLABLE_MODULE := true
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2011-07-06 20:10:14 +02:00
|
|
|
ifeq ($(LOCAL_STRIP_MODULE),true)
|
|
|
|
ifdef LOCAL_IS_HOST_MODULE
|
|
|
|
$(error Cannot strip host module LOCAL_PATH=$(LOCAL_PATH))
|
|
|
|
endif
|
|
|
|
ifeq ($(filter SHARED_LIBRARIES EXECUTABLES,$(LOCAL_MODULE_CLASS)),)
|
|
|
|
$(error Can strip only shared libraries or executables LOCAL_PATH=$(LOCAL_PATH))
|
|
|
|
endif
|
|
|
|
ifneq ($(LOCAL_PREBUILT_STRIP_COMMENTS),)
|
|
|
|
$(error Cannot strip scripts LOCAL_PATH=$(LOCAL_PATH))
|
|
|
|
endif
|
|
|
|
include $(BUILD_SYSTEM)/dynamic_binary.mk
|
|
|
|
built_module := $(linked_module)
|
2013-02-26 03:12:11 +01:00
|
|
|
else # LOCAL_STRIP_MODULE not true
|
2011-07-06 20:10:14 +02:00
|
|
|
include $(BUILD_SYSTEM)/base_rules.mk
|
|
|
|
built_module := $(LOCAL_BUILT_MODULE)
|
2009-03-04 04:28:42 +01:00
|
|
|
|
2011-11-08 18:31:21 +01:00
|
|
|
ifdef prebuilt_module_is_a_library
|
2012-12-04 03:24:55 +01:00
|
|
|
export_includes := $(intermediates)/export_includes
|
|
|
|
$(export_includes): PRIVATE_EXPORT_C_INCLUDE_DIRS := $(LOCAL_EXPORT_C_INCLUDE_DIRS)
|
|
|
|
$(export_includes) : $(LOCAL_MODULE_MAKEFILE)
|
|
|
|
@echo Export includes file: $< -- $@
|
2011-11-08 18:31:21 +01:00
|
|
|
$(hide) mkdir -p $(dir $@) && rm -f $@
|
2012-12-04 03:24:55 +01:00
|
|
|
ifdef LOCAL_EXPORT_C_INCLUDE_DIRS
|
|
|
|
$(hide) for d in $(PRIVATE_EXPORT_C_INCLUDE_DIRS); do \
|
|
|
|
echo "-I $$d" >> $@; \
|
|
|
|
done
|
|
|
|
else
|
2011-11-08 18:31:21 +01:00
|
|
|
$(hide) touch $@
|
2012-12-04 03:24:55 +01:00
|
|
|
endif
|
2012-04-19 02:35:55 +02:00
|
|
|
|
|
|
|
$(LOCAL_BUILT_MODULE) : | $(intermediates)/export_includes
|
Build from source or prebuilt
With this change, you can easily switch between building from source
code and prebuilt.
Set LOCAL_PREBUILT_MODULE_FILE to the path of the prebuilt file,
relative to the top of the source tree, in the usual module definition.
The prebuilt will be used unless any of the followings satisfied:
1) ANDROID_BUILD_FROM_SOURCE is "true", which disable prebuilt globally;
2) The module name is in ANDROID_NO_PREBUILT_MODULES;
3) The LOCAL_PATH is prefixed by any of ANDROID_NO_PREBUILT_PATHS.
A developer can set ANDROID_NO_PREBUILT_MODULES or
ANDROID_NO_PREBUILT_PATHS to build only his own module(s) from source,
while build other modules from prebuilts.
You can set ANDROID_BUILD_FROM_SOURCE to true to build everything from
source.
Those variables can be set with shell environmental variable or in your
buildspec.mk.
Sometimes module B is able to be built from source only if module A is
also
built from source, for example, if B is the test apk of A.
In that case, you can use the macro include-if-build-from-source to
include B's Android.mk only if A is built from source too, or
if-build-from-source to conditionally include the definition of module
B,
if their module definitions are in the same Android.mk.
Support host-executable-hook and host-shared-library-hook.
Change-Id: Icab7cf028c87eaba0dd7efc2a7749fd6f32b44e4
2012-12-14 03:23:01 +01:00
|
|
|
endif # prebuilt_module_is_a_library
|
2013-02-26 03:12:11 +01:00
|
|
|
|
|
|
|
# The real dependency will be added after all Android.mks are loaded and the install paths
|
|
|
|
# of the shared libraries are determined.
|
|
|
|
ifdef LOCAL_INSTALLED_MODULE
|
|
|
|
ifdef LOCAL_SHARED_LIBRARIES
|
2013-04-16 02:32:21 +02:00
|
|
|
$(my_prefix)DEPENDENCIES_ON_SHARED_LIBRARIES += $(LOCAL_MODULE):$(LOCAL_INSTALLED_MODULE):$(subst $(space),$(comma),$(LOCAL_SHARED_LIBRARIES))
|
2013-07-13 07:05:14 +02:00
|
|
|
|
|
|
|
# We also need the LOCAL_BUILT_MODULE dependency,
|
|
|
|
# since we use -rpath-link which points to the built module's path.
|
|
|
|
built_shared_libraries := \
|
|
|
|
$(addprefix $($(my_prefix)OUT_INTERMEDIATE_LIBRARIES)/, \
|
2013-07-15 17:47:33 +02:00
|
|
|
$(addsuffix $($(my_prefix)SHLIB_SUFFIX), \
|
2013-07-13 07:05:14 +02:00
|
|
|
$(LOCAL_SHARED_LIBRARIES)))
|
|
|
|
$(LOCAL_BUILT_MODULE) : $(built_shared_libraries)
|
2009-03-04 04:28:42 +01:00
|
|
|
endif
|
2013-02-26 03:12:11 +01:00
|
|
|
endif
|
|
|
|
|
|
|
|
endif # LOCAL_STRIP_MODULE not true
|
2009-03-04 04:28:42 +01:00
|
|
|
|
2009-10-16 11:43:05 +02:00
|
|
|
PACKAGES.$(LOCAL_MODULE).OVERRIDES := $(strip $(LOCAL_OVERRIDES_PACKAGES))
|
|
|
|
|
2009-12-16 00:06:55 +01:00
|
|
|
ifeq ($(LOCAL_CERTIFICATE),EXTERNAL)
|
|
|
|
# The magic string "EXTERNAL" means this package will be signed with
|
2011-10-05 17:16:30 +02:00
|
|
|
# the default dev key throughout the build process, but we expect
|
|
|
|
# the final package to be signed with a different key.
|
2009-12-16 00:06:55 +01:00
|
|
|
#
|
|
|
|
# This can be used for packages where we don't have access to the
|
|
|
|
# keys, but want the package to be predexopt'ed.
|
2011-10-04 19:50:08 +02:00
|
|
|
LOCAL_CERTIFICATE := $(DEFAULT_SYSTEM_DEV_CERTIFICATE)
|
2009-12-16 00:06:55 +01:00
|
|
|
PACKAGES.$(LOCAL_MODULE).EXTERNAL_KEY := 1
|
2011-10-05 17:16:30 +02:00
|
|
|
|
|
|
|
$(built_module) : PRIVATE_PRIVATE_KEY := $(LOCAL_CERTIFICATE).pk8
|
|
|
|
$(built_module) : PRIVATE_CERTIFICATE := $(LOCAL_CERTIFICATE).x509.pem
|
2009-12-16 00:06:55 +01:00
|
|
|
endif
|
2009-08-27 03:22:43 +02:00
|
|
|
ifeq ($(LOCAL_CERTIFICATE),)
|
2009-12-11 22:50:35 +01:00
|
|
|
ifneq ($(filter APPS,$(LOCAL_MODULE_CLASS)),)
|
|
|
|
# It is now a build error to add a prebuilt .apk without
|
|
|
|
# specifying a key for it.
|
Build from source or prebuilt
With this change, you can easily switch between building from source
code and prebuilt.
Set LOCAL_PREBUILT_MODULE_FILE to the path of the prebuilt file,
relative to the top of the source tree, in the usual module definition.
The prebuilt will be used unless any of the followings satisfied:
1) ANDROID_BUILD_FROM_SOURCE is "true", which disable prebuilt globally;
2) The module name is in ANDROID_NO_PREBUILT_MODULES;
3) The LOCAL_PATH is prefixed by any of ANDROID_NO_PREBUILT_PATHS.
A developer can set ANDROID_NO_PREBUILT_MODULES or
ANDROID_NO_PREBUILT_PATHS to build only his own module(s) from source,
while build other modules from prebuilts.
You can set ANDROID_BUILD_FROM_SOURCE to true to build everything from
source.
Those variables can be set with shell environmental variable or in your
buildspec.mk.
Sometimes module B is able to be built from source only if module A is
also
built from source, for example, if B is the test apk of A.
In that case, you can use the macro include-if-build-from-source to
include B's Android.mk only if A is built from source too, or
if-build-from-source to conditionally include the definition of module
B,
if their module definitions are in the same Android.mk.
Support host-executable-hook and host-shared-library-hook.
Change-Id: Icab7cf028c87eaba0dd7efc2a7749fd6f32b44e4
2012-12-14 03:23:01 +01:00
|
|
|
$(error No LOCAL_CERTIFICATE specified for prebuilt "$(my_prebuilt_src_file)")
|
2009-12-11 22:50:35 +01:00
|
|
|
endif
|
|
|
|
else ifeq ($(LOCAL_CERTIFICATE),PRESIGNED)
|
|
|
|
# The magic string "PRESIGNED" means this package is already checked
|
|
|
|
# signed with its release key.
|
2009-12-14 18:56:19 +01:00
|
|
|
#
|
|
|
|
# By setting .CERTIFICATE but not .PRIVATE_KEY, this package will be
|
|
|
|
# mentioned in apkcerts.txt (with certificate set to "PRESIGNED")
|
|
|
|
# but the dexpreopt process will not try to re-sign the app.
|
|
|
|
PACKAGES.$(LOCAL_MODULE).CERTIFICATE := PRESIGNED
|
|
|
|
PACKAGES := $(PACKAGES) $(LOCAL_MODULE)
|
2009-08-27 03:22:43 +02:00
|
|
|
else
|
2009-12-11 22:50:35 +01:00
|
|
|
# If this is not an absolute certificate, assign it to a generic one.
|
|
|
|
ifeq ($(dir $(strip $(LOCAL_CERTIFICATE))),./)
|
2011-10-04 19:50:08 +02:00
|
|
|
LOCAL_CERTIFICATE := $(dir $(DEFAULT_SYSTEM_DEV_CERTIFICATE))$(LOCAL_CERTIFICATE)
|
2009-12-11 22:50:35 +01:00
|
|
|
endif
|
2009-08-27 03:22:43 +02:00
|
|
|
|
2009-12-11 22:50:35 +01:00
|
|
|
PACKAGES.$(LOCAL_MODULE).PRIVATE_KEY := $(LOCAL_CERTIFICATE).pk8
|
|
|
|
PACKAGES.$(LOCAL_MODULE).CERTIFICATE := $(LOCAL_CERTIFICATE).x509.pem
|
|
|
|
PACKAGES := $(PACKAGES) $(LOCAL_MODULE)
|
2011-10-05 17:16:30 +02:00
|
|
|
|
|
|
|
$(built_module) : PRIVATE_PRIVATE_KEY := $(LOCAL_CERTIFICATE).pk8
|
|
|
|
$(built_module) : PRIVATE_CERTIFICATE := $(LOCAL_CERTIFICATE).x509.pem
|
2009-08-27 03:22:43 +02:00
|
|
|
endif
|
|
|
|
|
2011-10-05 17:16:30 +02:00
|
|
|
ifneq ($(filter APPS,$(LOCAL_MODULE_CLASS)),)
|
2013-11-15 08:44:56 +01:00
|
|
|
|
|
|
|
# Disable dex-preopt of prebuilts to save space
|
|
|
|
LOCAL_DEX_PREOPT := false
|
|
|
|
|
|
|
|
#######################################
|
|
|
|
# defines built_odex along with rule to install odex
|
|
|
|
include $(BUILD_SYSTEM)/dex_preopt_odex_install.mk
|
|
|
|
#######################################
|
|
|
|
ifdef LOCAL_DEX_PREOPT
|
|
|
|
$(built_module): PRIVATE_DEX_PREOPT_IMAGE := $(LOCAL_DEX_PREOPT_IMAGE)
|
|
|
|
$(built_module): PRIVATE_DEX_LOCATION := $(patsubst $(PRODUCT_OUT)%,%,$(LOCAL_INSTALLED_MODULE))
|
|
|
|
$(built_module): PRIVATE_BUILT_ODEX := $(built_odex)
|
|
|
|
# Make sure the boot jars get dexpreopt-ed first
|
|
|
|
$(built_module) : $(DEXPREOPT_ONE_FILE_DEPENDENCY_BUILT_BOOT_PREOPT)
|
|
|
|
$(built_module) : $(DEXPREOPT_ONE_FILE_DEPENDENCY_TOOLS)
|
|
|
|
(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_DEX_PREOPT
|
2011-10-05 17:16:30 +02:00
|
|
|
# Sign and align non-presigned .apks.
|
Build from source or prebuilt
With this change, you can easily switch between building from source
code and prebuilt.
Set LOCAL_PREBUILT_MODULE_FILE to the path of the prebuilt file,
relative to the top of the source tree, in the usual module definition.
The prebuilt will be used unless any of the followings satisfied:
1) ANDROID_BUILD_FROM_SOURCE is "true", which disable prebuilt globally;
2) The module name is in ANDROID_NO_PREBUILT_MODULES;
3) The LOCAL_PATH is prefixed by any of ANDROID_NO_PREBUILT_PATHS.
A developer can set ANDROID_NO_PREBUILT_MODULES or
ANDROID_NO_PREBUILT_PATHS to build only his own module(s) from source,
while build other modules from prebuilts.
You can set ANDROID_BUILD_FROM_SOURCE to true to build everything from
source.
Those variables can be set with shell environmental variable or in your
buildspec.mk.
Sometimes module B is able to be built from source only if module A is
also
built from source, for example, if B is the test apk of A.
In that case, you can use the macro include-if-build-from-source to
include B's Android.mk only if A is built from source too, or
if-build-from-source to conditionally include the definition of module
B,
if their module definitions are in the same Android.mk.
Support host-executable-hook and host-shared-library-hook.
Change-Id: Icab7cf028c87eaba0dd7efc2a7749fd6f32b44e4
2012-12-14 03:23:01 +01:00
|
|
|
$(built_module) : $(my_prebuilt_src_file) | $(ACP) $(ZIPALIGN) $(SIGNAPK_JAR)
|
2011-10-05 17:16:30 +02:00
|
|
|
$(transform-prebuilt-to-target)
|
2013-11-15 08:44:56 +01:00
|
|
|
ifneq ($(LOCAL_CERTIFICATE),PRESIGNED)
|
2011-10-05 17:16:30 +02:00
|
|
|
$(sign-package)
|
|
|
|
endif
|
2013-11-15 08:44:56 +01:00
|
|
|
ifdef LOCAL_DEX_PREOPT
|
|
|
|
$(call dexpreopt-one-file,$(PRIVATE_DEX_PREOPT_IMAGE),$@,$(PRIVATE_DEX_LOCATION),$(PRIVATE_BUILT_ODEX))
|
|
|
|
endif
|
|
|
|
$(align-package)
|
|
|
|
|
|
|
|
else # LOCAL_MODULE_CLASS != APPS
|
2011-10-05 17:16:30 +02:00
|
|
|
ifneq ($(LOCAL_PREBUILT_STRIP_COMMENTS),)
|
Build from source or prebuilt
With this change, you can easily switch between building from source
code and prebuilt.
Set LOCAL_PREBUILT_MODULE_FILE to the path of the prebuilt file,
relative to the top of the source tree, in the usual module definition.
The prebuilt will be used unless any of the followings satisfied:
1) ANDROID_BUILD_FROM_SOURCE is "true", which disable prebuilt globally;
2) The module name is in ANDROID_NO_PREBUILT_MODULES;
3) The LOCAL_PATH is prefixed by any of ANDROID_NO_PREBUILT_PATHS.
A developer can set ANDROID_NO_PREBUILT_MODULES or
ANDROID_NO_PREBUILT_PATHS to build only his own module(s) from source,
while build other modules from prebuilts.
You can set ANDROID_BUILD_FROM_SOURCE to true to build everything from
source.
Those variables can be set with shell environmental variable or in your
buildspec.mk.
Sometimes module B is able to be built from source only if module A is
also
built from source, for example, if B is the test apk of A.
In that case, you can use the macro include-if-build-from-source to
include B's Android.mk only if A is built from source too, or
if-build-from-source to conditionally include the definition of module
B,
if their module definitions are in the same Android.mk.
Support host-executable-hook and host-shared-library-hook.
Change-Id: Icab7cf028c87eaba0dd7efc2a7749fd6f32b44e4
2012-12-14 03:23:01 +01:00
|
|
|
$(built_module) : $(my_prebuilt_src_file)
|
2011-10-05 17:16:30 +02:00
|
|
|
$(transform-prebuilt-to-target-strip-comments)
|
|
|
|
else
|
Build from source or prebuilt
With this change, you can easily switch between building from source
code and prebuilt.
Set LOCAL_PREBUILT_MODULE_FILE to the path of the prebuilt file,
relative to the top of the source tree, in the usual module definition.
The prebuilt will be used unless any of the followings satisfied:
1) ANDROID_BUILD_FROM_SOURCE is "true", which disable prebuilt globally;
2) The module name is in ANDROID_NO_PREBUILT_MODULES;
3) The LOCAL_PATH is prefixed by any of ANDROID_NO_PREBUILT_PATHS.
A developer can set ANDROID_NO_PREBUILT_MODULES or
ANDROID_NO_PREBUILT_PATHS to build only his own module(s) from source,
while build other modules from prebuilts.
You can set ANDROID_BUILD_FROM_SOURCE to true to build everything from
source.
Those variables can be set with shell environmental variable or in your
buildspec.mk.
Sometimes module B is able to be built from source only if module A is
also
built from source, for example, if B is the test apk of A.
In that case, you can use the macro include-if-build-from-source to
include B's Android.mk only if A is built from source too, or
if-build-from-source to conditionally include the definition of module
B,
if their module definitions are in the same Android.mk.
Support host-executable-hook and host-shared-library-hook.
Change-Id: Icab7cf028c87eaba0dd7efc2a7749fd6f32b44e4
2012-12-14 03:23:01 +01:00
|
|
|
$(built_module) : $(my_prebuilt_src_file) | $(ACP)
|
2011-10-05 17:16:30 +02:00
|
|
|
$(transform-prebuilt-to-target)
|
2011-11-08 18:31:21 +01:00
|
|
|
ifneq ($(prebuilt_module_is_a_library),)
|
|
|
|
ifneq ($(LOCAL_IS_HOST_MODULE),)
|
|
|
|
$(transform-host-ranlib-copy-hack)
|
|
|
|
else
|
|
|
|
$(transform-ranlib-copy-hack)
|
|
|
|
endif
|
|
|
|
endif
|
2011-10-05 17:16:30 +02:00
|
|
|
endif
|
2013-11-15 08:44:56 +01:00
|
|
|
endif # LOCAL_MODULE_CLASS != APPS
|
2011-10-05 17:16:30 +02:00
|
|
|
|
|
|
|
ifeq ($(LOCAL_IS_HOST_MODULE)$(LOCAL_MODULE_CLASS),JAVA_LIBRARIES)
|
|
|
|
# for target java libraries, the LOCAL_BUILT_MODULE is in a product-specific dir,
|
|
|
|
# while the deps should be in the common dir, so we make a copy in the common dir.
|
|
|
|
# For nonstatic library, $(common_javalib_jar) is the dependency file,
|
|
|
|
# while $(common_classes_jar) is used to link.
|
|
|
|
common_classes_jar := $(call intermediates-dir-for,JAVA_LIBRARIES,$(LOCAL_MODULE),,COMMON)/classes.jar
|
|
|
|
common_javalib_jar := $(dir $(common_classes_jar))javalib.jar
|
|
|
|
|
Build from source or prebuilt
With this change, you can easily switch between building from source
code and prebuilt.
Set LOCAL_PREBUILT_MODULE_FILE to the path of the prebuilt file,
relative to the top of the source tree, in the usual module definition.
The prebuilt will be used unless any of the followings satisfied:
1) ANDROID_BUILD_FROM_SOURCE is "true", which disable prebuilt globally;
2) The module name is in ANDROID_NO_PREBUILT_MODULES;
3) The LOCAL_PATH is prefixed by any of ANDROID_NO_PREBUILT_PATHS.
A developer can set ANDROID_NO_PREBUILT_MODULES or
ANDROID_NO_PREBUILT_PATHS to build only his own module(s) from source,
while build other modules from prebuilts.
You can set ANDROID_BUILD_FROM_SOURCE to true to build everything from
source.
Those variables can be set with shell environmental variable or in your
buildspec.mk.
Sometimes module B is able to be built from source only if module A is
also
built from source, for example, if B is the test apk of A.
In that case, you can use the macro include-if-build-from-source to
include B's Android.mk only if A is built from source too, or
if-build-from-source to conditionally include the definition of module
B,
if their module definitions are in the same Android.mk.
Support host-executable-hook and host-shared-library-hook.
Change-Id: Icab7cf028c87eaba0dd7efc2a7749fd6f32b44e4
2012-12-14 03:23:01 +01:00
|
|
|
$(common_classes_jar) : $(my_prebuilt_src_file) | $(ACP)
|
2011-10-05 17:16:30 +02:00
|
|
|
$(transform-prebuilt-to-target)
|
|
|
|
|
|
|
|
$(common_javalib_jar) : $(common_classes_jar) | $(ACP)
|
|
|
|
$(transform-prebuilt-to-target)
|
|
|
|
|
|
|
|
# make sure the classes.jar and javalib.jar are built before $(LOCAL_BUILT_MODULE)
|
|
|
|
$(built_module) : $(common_javalib_jar)
|
|
|
|
endif # TARGET JAVA_LIBRARIES
|
2013-08-14 02:05:34 +02:00
|
|
|
|
|
|
|
$(built_module) : $(LOCAL_ADDITIONAL_DEPENDENCIES)
|
2013-11-15 08:44:56 +01:00
|
|
|
|
|
|
|
my_prebuilt_src_file :=
|
2014-01-24 22:34:51 +01:00
|
|
|
|
|
|
|
LOCAL_2ND_ARCH_VAR_PREFIX :=
|