2014-02-14 07:04:18 +08:00
|
|
|
###########################################################
|
|
|
|
## Standard rules for copying files that are prebuilt
|
|
|
|
##
|
|
|
|
## Additional inputs from base_rules.make:
|
|
|
|
## None.
|
|
|
|
##
|
|
|
|
###########################################################
|
|
|
|
|
|
|
|
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-05-17 01:38:43 +08:00
|
|
|
my_32_64_bit_suffix := $(if $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)IS_64_BIT),64,32)
|
|
|
|
|
2014-02-14 07:04:18 +08:00
|
|
|
ifdef LOCAL_PREBUILT_MODULE_FILE
|
2014-02-28 06:10:53 +08:00
|
|
|
my_prebuilt_src_file := $(LOCAL_PREBUILT_MODULE_FILE)
|
2014-02-14 07:04:18 +08:00
|
|
|
else
|
2014-04-18 01:03:35 +08:00
|
|
|
ifdef LOCAL_SRC_FILES_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)
|
|
|
|
my_prebuilt_src_file := $(LOCAL_PATH)/$(LOCAL_SRC_FILES_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH))
|
2016-02-02 13:40:17 +08:00
|
|
|
LOCAL_SRC_FILES_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH) :=
|
2014-02-28 06:10:53 +08:00
|
|
|
else
|
2014-05-17 01:38:43 +08:00
|
|
|
ifdef LOCAL_SRC_FILES_$(my_32_64_bit_suffix)
|
|
|
|
my_prebuilt_src_file := $(LOCAL_PATH)/$(LOCAL_SRC_FILES_$(my_32_64_bit_suffix))
|
2016-01-20 12:07:08 +08:00
|
|
|
LOCAL_SRC_FILES_$(my_32_64_bit_suffix) :=
|
2014-05-17 01:38:43 +08:00
|
|
|
else
|
|
|
|
my_prebuilt_src_file := $(LOCAL_PATH)/$(LOCAL_SRC_FILES)
|
2016-01-20 12:07:08 +08:00
|
|
|
LOCAL_SRC_FILES :=
|
2014-05-17 01:38:43 +08:00
|
|
|
endif
|
2014-02-28 06:10:53 +08:00
|
|
|
endif
|
2014-02-14 07:04:18 +08:00
|
|
|
endif
|
|
|
|
|
2016-10-28 06:10:55 +08:00
|
|
|
LOCAL_CHECKED_MODULE := $(my_prebuilt_src_file)
|
|
|
|
|
2016-03-02 12:14:52 +08:00
|
|
|
my_strip_module := $(firstword \
|
|
|
|
$(LOCAL_STRIP_MODULE_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) \
|
|
|
|
$(LOCAL_STRIP_MODULE))
|
|
|
|
my_pack_module_relocations := $(firstword \
|
|
|
|
$(LOCAL_PACK_MODULE_RELOCATIONS_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) \
|
|
|
|
$(LOCAL_PACK_MODULE_RELOCATIONS))
|
|
|
|
|
2014-02-14 07:04:18 +08:00
|
|
|
ifeq (SHARED_LIBRARIES,$(LOCAL_MODULE_CLASS))
|
2016-07-21 02:02:18 +08:00
|
|
|
# LOCAL_COPY_TO_INTERMEDIATE_LIBRARIES indicates that this prebuilt should be
|
|
|
|
# installed to the common directory of libraries. This is needed for the NDK
|
|
|
|
# shared libraries built by soong, as we build many different versions of each
|
|
|
|
# library (one for each API level). Since they all have the same basename,
|
|
|
|
# they'd clobber each other (as well as any platform libraries by the same
|
|
|
|
# name).
|
|
|
|
ifneq ($(LOCAL_COPY_TO_INTERMEDIATE_LIBRARIES),false)
|
|
|
|
# Put the built targets of all shared libraries in a common directory
|
|
|
|
# to simplify the link line.
|
|
|
|
OVERRIDE_BUILT_MODULE_PATH := \
|
|
|
|
$($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)OUT_INTERMEDIATE_LIBRARIES)
|
|
|
|
endif
|
2016-03-02 12:14:52 +08:00
|
|
|
ifeq ($(LOCAL_IS_HOST_MODULE)$(my_strip_module),)
|
2014-08-21 08:12:32 +08:00
|
|
|
# Strip but not try to add debuglink
|
2016-03-02 12:14:52 +08:00
|
|
|
my_strip_module := no_debuglink
|
2014-08-21 08:12:32 +08:00
|
|
|
endif
|
2015-04-25 06:33:14 +08:00
|
|
|
|
2016-03-02 12:14:52 +08:00
|
|
|
ifeq ($(LOCAL_IS_HOST_MODULE)$(my_pack_module_relocations),)
|
2015-04-25 06:33:14 +08:00
|
|
|
# Do not pack relocations by default
|
2016-03-02 12:14:52 +08:00
|
|
|
my_pack_module_relocations := false
|
2015-11-13 07:27:49 +08:00
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(DISABLE_RELOCATION_PACKER),true)
|
2016-03-02 12:14:52 +08:00
|
|
|
my_pack_module_relocations := false
|
2015-04-25 06:33:14 +08:00
|
|
|
endif
|
2014-02-14 07:04:18 +08:00
|
|
|
endif
|
|
|
|
|
|
|
|
ifneq ($(filter STATIC_LIBRARIES SHARED_LIBRARIES,$(LOCAL_MODULE_CLASS)),)
|
|
|
|
prebuilt_module_is_a_library := true
|
|
|
|
else
|
|
|
|
prebuilt_module_is_a_library :=
|
|
|
|
endif
|
|
|
|
|
2016-08-27 04:27:13 +08:00
|
|
|
ifeq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK))
|
|
|
|
ifeq ($(prebuilt_module_is_a_library),true)
|
|
|
|
SOONG_ALREADY_CONV := $(SOONG_ALREADY_CONV) $(LOCAL_MODULE)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2014-02-14 07:04:18 +08:00
|
|
|
# Don't install static libraries by default.
|
|
|
|
ifndef LOCAL_UNINSTALLABLE_MODULE
|
|
|
|
ifeq (STATIC_LIBRARIES,$(LOCAL_MODULE_CLASS))
|
|
|
|
LOCAL_UNINSTALLABLE_MODULE := true
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2016-03-12 02:32:01 +08:00
|
|
|
ifeq (JAVA_LIBRARIES,$(LOCAL_IS_HOST_MODULE)$(LOCAL_MODULE_CLASS)$(filter true,$(LOCAL_UNINSTALLABLE_MODULE)))
|
|
|
|
prebuilt_module_is_dex_javalib := true
|
|
|
|
else
|
|
|
|
prebuilt_module_is_dex_javalib :=
|
|
|
|
endif
|
|
|
|
|
2014-07-18 12:24:42 +08:00
|
|
|
ifeq ($(LOCAL_MODULE_CLASS),APPS)
|
|
|
|
LOCAL_BUILT_MODULE_STEM := package.apk
|
2016-08-06 08:23:33 +08:00
|
|
|
ifndef LOCAL_INSTALLED_MODULE_STEM
|
2014-07-18 12:24:42 +08:00
|
|
|
LOCAL_INSTALLED_MODULE_STEM := $(LOCAL_MODULE).apk
|
|
|
|
endif
|
2016-08-06 08:23:33 +08:00
|
|
|
endif
|
2014-07-18 12:24:42 +08:00
|
|
|
|
2016-07-14 07:08:36 +08:00
|
|
|
ifneq ($(filter true keep_symbols no_debuglink mini-debug-info,$(my_strip_module) $(my_pack_module_relocations)),)
|
2014-02-14 07:04:18 +08:00
|
|
|
ifdef LOCAL_IS_HOST_MODULE
|
2015-04-25 06:33:14 +08:00
|
|
|
$(error Cannot strip/pack host module LOCAL_PATH=$(LOCAL_PATH))
|
2014-02-14 07:04:18 +08:00
|
|
|
endif
|
Add NATIVE_TESTS class, move host native tests
Host native tests have been getting installed into
out/host/linux-x86/bin/..., but this pollutes the bin directory with a
lot of poorly named tests. Also, to support 32-bit and 64-bit tests, we
need to have different names with different suffixes. This causes
problems when tests expect to be named something specific (like gtest).
It's also convenient to store test data next to the test itself.
So with this change, native tests will be installed in
out/host/linux-x86/nativetest[64]/$(LOCAL_MODULE)/$(LOCAL_MODULE_STEM)
just like target tests get installed into /data/nativetest[64].
Implement this using a new NATIVE_TESTS class, which is like
EXECUTABLES, but sets up the install path differently, and configures
the rpath to load shared libraries with the proper relative path.
LOCAL_MODULE_RELATIVE_PATH can be used to control the directory name, it
will default to $(LOCAL_MODULE). This way multiple related tests can be
grouped together.
Target native tests also use NATIVE_TESTS now, but nothing should change
other than LOCAL_MODULE_RELATIVE_PATH can be used.
Change-Id: I535e42b1a6b21c5b8d6a580aa2f944d2be35e27d
2016-03-03 05:54:51 +08:00
|
|
|
ifeq ($(filter SHARED_LIBRARIES EXECUTABLES NATIVE_TESTS,$(LOCAL_MODULE_CLASS)),)
|
2015-04-25 06:33:14 +08:00
|
|
|
$(error Can strip/pack only shared libraries or executables LOCAL_PATH=$(LOCAL_PATH))
|
2014-02-14 07:04:18 +08:00
|
|
|
endif
|
|
|
|
ifneq ($(LOCAL_PREBUILT_STRIP_COMMENTS),)
|
2015-04-25 06:33:14 +08:00
|
|
|
$(error Cannot strip/pack scripts LOCAL_PATH=$(LOCAL_PATH))
|
2014-02-14 07:04:18 +08:00
|
|
|
endif
|
2016-03-02 12:14:52 +08:00
|
|
|
# Set the arch-specific variables to set up the strip/pack rules.
|
|
|
|
LOCAL_STRIP_MODULE_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH) := $(my_strip_module)
|
|
|
|
LOCAL_PACK_MODULE_RELOCATIONS_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH) := $(my_pack_module_relocations)
|
2014-02-14 07:04:18 +08:00
|
|
|
include $(BUILD_SYSTEM)/dynamic_binary.mk
|
|
|
|
built_module := $(linked_module)
|
2014-08-21 08:12:32 +08:00
|
|
|
|
2016-03-02 12:14:52 +08:00
|
|
|
else # my_strip_module and my_pack_module_relocations not true
|
2014-02-14 07:04:18 +08:00
|
|
|
include $(BUILD_SYSTEM)/base_rules.mk
|
|
|
|
built_module := $(LOCAL_BUILT_MODULE)
|
|
|
|
|
|
|
|
ifdef prebuilt_module_is_a_library
|
|
|
|
export_includes := $(intermediates)/export_includes
|
|
|
|
$(export_includes): PRIVATE_EXPORT_C_INCLUDE_DIRS := $(LOCAL_EXPORT_C_INCLUDE_DIRS)
|
2016-09-30 03:08:29 +08:00
|
|
|
$(export_includes): $(LOCAL_EXPORT_C_INCLUDE_DEPS)
|
2014-02-14 07:04:18 +08:00
|
|
|
@echo Export includes file: $< -- $@
|
|
|
|
$(hide) mkdir -p $(dir $@) && rm -f $@
|
|
|
|
ifdef LOCAL_EXPORT_C_INCLUDE_DIRS
|
|
|
|
$(hide) for d in $(PRIVATE_EXPORT_C_INCLUDE_DIRS); do \
|
|
|
|
echo "-I $$d" >> $@; \
|
|
|
|
done
|
|
|
|
else
|
|
|
|
$(hide) touch $@
|
|
|
|
endif
|
|
|
|
|
2016-06-08 05:25:14 +08:00
|
|
|
my_link_type := $(intermediates)/link_type
|
2016-09-15 12:38:29 +08:00
|
|
|
$(my_link_type): PRIVATE_LINK_TYPE := native:$(if $(LOCAL_SDK_VERSION),ndk,platform)
|
|
|
|
$(eval $(call link-type-partitions,$(my_link_type)))
|
2016-06-08 05:25:14 +08:00
|
|
|
$(my_link_type):
|
|
|
|
@echo Check module type: $@
|
|
|
|
$(hide) mkdir -p $(dir $@) && rm -f $@
|
2016-09-15 12:38:29 +08:00
|
|
|
$(hide) echo "$(PRIVATE_LINK_TYPE)" >$@
|
2016-06-08 05:25:14 +08:00
|
|
|
|
|
|
|
$(LOCAL_BUILT_MODULE) : | $(export_includes) $(my_link_type)
|
2014-02-14 07:04:18 +08:00
|
|
|
endif # prebuilt_module_is_a_library
|
|
|
|
|
|
|
|
# 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
|
2014-10-08 04:03:29 +08:00
|
|
|
my_shared_libraries := $(LOCAL_SHARED_LIBRARIES)
|
|
|
|
# Extra shared libraries introduced by LOCAL_CXX_STL.
|
|
|
|
include $(BUILD_SYSTEM)/cxx_stl_setup.mk
|
2014-02-26 10:26:29 +08:00
|
|
|
$(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)DEPENDENCIES_ON_SHARED_LIBRARIES += \
|
2014-10-08 04:03:29 +08:00
|
|
|
$(my_register_name):$(LOCAL_INSTALLED_MODULE):$(subst $(space),$(comma),$(my_shared_libraries))
|
2014-02-14 07:04:18 +08:00
|
|
|
|
|
|
|
# We also need the LOCAL_BUILT_MODULE dependency,
|
|
|
|
# since we use -rpath-link which points to the built module's path.
|
2014-10-08 04:03:29 +08:00
|
|
|
my_built_shared_libraries := \
|
2014-02-26 10:26:29 +08:00
|
|
|
$(addprefix $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)OUT_INTERMEDIATE_LIBRARIES)/, \
|
2014-02-14 07:04:18 +08:00
|
|
|
$(addsuffix $($(my_prefix)SHLIB_SUFFIX), \
|
2014-10-08 04:03:29 +08:00
|
|
|
$(my_shared_libraries)))
|
|
|
|
$(LOCAL_BUILT_MODULE) : $(my_built_shared_libraries)
|
2014-02-14 07:04:18 +08:00
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2014-10-08 04:03:29 +08:00
|
|
|
# We need to enclose the above export_includes and my_built_shared_libraries in
|
2016-03-02 12:14:52 +08:00
|
|
|
# "my_strip_module not true" because otherwise the rules are defined in dynamic_binary.mk.
|
|
|
|
endif # my_strip_module not true
|
2014-02-14 07:04:18 +08:00
|
|
|
|
2016-10-22 06:04:12 +08:00
|
|
|
ifeq ($(NATIVE_COVERAGE),true)
|
2017-02-10 16:07:17 +08:00
|
|
|
ifneq (,$(strip $(LOCAL_PREBUILT_COVERAGE_ARCHIVE)))
|
|
|
|
$(eval $(call copy-one-file,$(LOCAL_PREBUILT_COVERAGE_ARCHIVE),$(intermediates)/$(LOCAL_MODULE).gcnodir))
|
|
|
|
ifneq ($(LOCAL_UNINSTALLABLE_MODULE),true)
|
|
|
|
ifdef LOCAL_IS_HOST_MODULE
|
|
|
|
my_coverage_path := $($(my_prefix)OUT_COVERAGE)/$(patsubst $($(my_prefix)OUT)/%,%,$(my_module_path))
|
|
|
|
else
|
|
|
|
my_coverage_path := $(TARGET_OUT_COVERAGE)/$(patsubst $(PRODUCT_OUT)/%,%,$(my_module_path))
|
|
|
|
endif
|
|
|
|
my_coverage_path := $(my_coverage_path)/$(basename $(my_installed_module_stem)).gcnodir
|
|
|
|
$(eval $(call copy-one-file,$(LOCAL_PREBUILT_COVERAGE_ARCHIVE),$(my_coverage_path)))
|
|
|
|
$(LOCAL_BUILT_MODULE): $(my_coverage_path)
|
|
|
|
endif
|
|
|
|
else
|
2016-09-13 04:56:50 +08:00
|
|
|
# Coverage information is needed when static lib is a dependency of another
|
|
|
|
# coverage-enabled module.
|
|
|
|
ifeq (STATIC_LIBRARIES, $(LOCAL_MODULE_CLASS))
|
|
|
|
GCNO_ARCHIVE := $(LOCAL_MODULE).gcnodir
|
|
|
|
$(intermediates)/$(GCNO_ARCHIVE) : PRIVATE_ALL_OBJECTS :=
|
|
|
|
$(intermediates)/$(GCNO_ARCHIVE) : PRIVATE_ALL_WHOLE_STATIC_LIBRARIES :=
|
2016-10-22 06:04:12 +08:00
|
|
|
$(intermediates)/$(GCNO_ARCHIVE) : PRIVATE_PREFIX := $(my_prefix)
|
|
|
|
$(intermediates)/$(GCNO_ARCHIVE) : PRIVATE_2ND_ARCH_VAR_PREFIX := $(LOCAL_2ND_ARCH_VAR_PREFIX)
|
2016-09-13 04:56:50 +08:00
|
|
|
$(intermediates)/$(GCNO_ARCHIVE) :
|
|
|
|
$(transform-o-to-static-lib)
|
|
|
|
endif
|
2016-10-22 06:04:12 +08:00
|
|
|
endif
|
2017-02-10 16:07:17 +08:00
|
|
|
endif
|
2016-09-13 04:56:50 +08:00
|
|
|
|
2014-04-16 02:12:21 +08:00
|
|
|
ifeq ($(LOCAL_MODULE_CLASS),APPS)
|
2014-02-14 07:04:18 +08:00
|
|
|
PACKAGES.$(LOCAL_MODULE).OVERRIDES := $(strip $(LOCAL_OVERRIDES_PACKAGES))
|
|
|
|
|
2016-06-19 11:43:51 +08:00
|
|
|
my_extract_apk := $(strip $(LOCAL_EXTRACT_APK))
|
|
|
|
|
2014-11-18 08:56:04 +08:00
|
|
|
# Select dpi-specific source
|
|
|
|
ifdef LOCAL_DPI_VARIANTS
|
2014-12-11 04:40:09 +08:00
|
|
|
my_dpi := $(firstword $(filter $(LOCAL_DPI_VARIANTS),$(PRODUCT_AAPT_PREF_CONFIG) $(PRODUCT_AAPT_PREBUILT_DPI)))
|
2014-11-18 08:56:04 +08:00
|
|
|
ifdef my_dpi
|
|
|
|
ifdef LOCAL_DPI_FILE_STEM
|
|
|
|
my_prebuilt_dpi_file_stem := $(LOCAL_DPI_FILE_STEM)
|
|
|
|
else
|
|
|
|
my_prebuilt_dpi_file_stem := $(LOCAL_MODULE)_%.apk
|
|
|
|
endif
|
|
|
|
my_prebuilt_src_file := $(dir $(my_prebuilt_src_file))$(subst %,$(my_dpi),$(my_prebuilt_dpi_file_stem))
|
2016-06-19 11:43:51 +08:00
|
|
|
|
|
|
|
ifneq ($(strip $(LOCAL_EXTRACT_DPI_APK)),)
|
|
|
|
my_extract_apk := $(subst %,$(my_dpi),$(LOCAL_EXTRACT_DPI_APK))
|
|
|
|
endif # LOCAL_EXTRACT_DPI_APK
|
2014-11-18 08:56:04 +08:00
|
|
|
endif # my_dpi
|
|
|
|
endif # LOCAL_DPI_VARIANTS
|
|
|
|
|
2016-06-19 11:43:51 +08:00
|
|
|
ifdef my_extract_apk
|
|
|
|
my_extracted_apk := $(intermediates)/extracted.apk
|
|
|
|
|
|
|
|
$(my_extracted_apk): PRIVATE_EXTRACT := $(my_extract_apk)
|
|
|
|
$(my_extracted_apk): $(my_prebuilt_src_file)
|
|
|
|
@echo Extract APK: $@
|
|
|
|
$(hide) mkdir -p $(dir $@) && rm -f $@
|
|
|
|
$(hide) unzip -p $< $(PRIVATE_EXTRACT) >$@
|
|
|
|
|
|
|
|
my_prebuilt_src_file := $(my_extracted_apk)
|
|
|
|
my_extracted_apk :=
|
|
|
|
my_extract_apk :=
|
|
|
|
endif
|
|
|
|
|
2014-04-18 04:38:04 +08:00
|
|
|
rs_compatibility_jni_libs :=
|
|
|
|
include $(BUILD_SYSTEM)/install_jni_libs.mk
|
|
|
|
|
2014-02-14 07:04:18 +08:00
|
|
|
ifeq ($(LOCAL_CERTIFICATE),EXTERNAL)
|
|
|
|
# The magic string "EXTERNAL" means this package will be signed with
|
|
|
|
# the default dev key throughout the build process, but we expect
|
|
|
|
# the final package to be signed with a different key.
|
|
|
|
#
|
|
|
|
# This can be used for packages where we don't have access to the
|
|
|
|
# keys, but want the package to be predexopt'ed.
|
|
|
|
LOCAL_CERTIFICATE := $(DEFAULT_SYSTEM_DEV_CERTIFICATE)
|
|
|
|
PACKAGES.$(LOCAL_MODULE).EXTERNAL_KEY := 1
|
|
|
|
|
2016-05-13 15:03:24 +08:00
|
|
|
$(built_module) : $(LOCAL_CERTIFICATE).pk8 $(LOCAL_CERTIFICATE).x509.pem
|
2014-02-14 07:04:18 +08:00
|
|
|
$(built_module) : PRIVATE_PRIVATE_KEY := $(LOCAL_CERTIFICATE).pk8
|
|
|
|
$(built_module) : PRIVATE_CERTIFICATE := $(LOCAL_CERTIFICATE).x509.pem
|
|
|
|
endif
|
|
|
|
ifeq ($(LOCAL_CERTIFICATE),)
|
2014-04-16 02:12:21 +08:00
|
|
|
# It is now a build error to add a prebuilt .apk without
|
|
|
|
# specifying a key for it.
|
|
|
|
$(error No LOCAL_CERTIFICATE specified for prebuilt "$(my_prebuilt_src_file)")
|
2014-02-14 07:04:18 +08:00
|
|
|
else ifeq ($(LOCAL_CERTIFICATE),PRESIGNED)
|
|
|
|
# The magic string "PRESIGNED" means this package is already checked
|
|
|
|
# signed with its release key.
|
|
|
|
#
|
|
|
|
# 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)
|
|
|
|
else
|
|
|
|
# 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
|
|
|
|
|
|
|
|
PACKAGES.$(LOCAL_MODULE).PRIVATE_KEY := $(LOCAL_CERTIFICATE).pk8
|
|
|
|
PACKAGES.$(LOCAL_MODULE).CERTIFICATE := $(LOCAL_CERTIFICATE).x509.pem
|
|
|
|
PACKAGES := $(PACKAGES) $(LOCAL_MODULE)
|
|
|
|
|
2016-05-13 15:03:24 +08:00
|
|
|
$(built_module) : $(LOCAL_CERTIFICATE).pk8 $(LOCAL_CERTIFICATE).x509.pem
|
2014-02-14 07:04:18 +08:00
|
|
|
$(built_module) : PRIVATE_PRIVATE_KEY := $(LOCAL_CERTIFICATE).pk8
|
|
|
|
$(built_module) : PRIVATE_CERTIFICATE := $(LOCAL_CERTIFICATE).x509.pem
|
|
|
|
endif
|
|
|
|
|
2014-10-02 13:01:16 +08:00
|
|
|
# Disable dex-preopt of prebuilts to save space, if requested.
|
2016-03-12 02:32:01 +08:00
|
|
|
ifndef LOCAL_DEX_PREOPT
|
2014-10-02 13:01:16 +08:00
|
|
|
ifeq ($(DONT_DEXPREOPT_PREBUILTS),true)
|
2014-02-14 07:04:18 +08:00
|
|
|
LOCAL_DEX_PREOPT := false
|
2014-10-02 13:01:16 +08:00
|
|
|
endif
|
2016-03-12 02:32:01 +08:00
|
|
|
endif
|
2014-02-14 07:04:18 +08:00
|
|
|
|
|
|
|
#######################################
|
|
|
|
# defines built_odex along with rule to install odex
|
|
|
|
include $(BUILD_SYSTEM)/dex_preopt_odex_install.mk
|
|
|
|
#######################################
|
2016-03-12 02:32:01 +08:00
|
|
|
ifneq ($(LOCAL_REPLACE_PREBUILT_APK_INSTALLED),)
|
|
|
|
# There is a replacement for the prebuilt .apk we can install without any processing.
|
2016-03-16 05:40:33 +08:00
|
|
|
$(built_module) : $(LOCAL_REPLACE_PREBUILT_APK_INSTALLED)
|
2016-03-12 02:32:01 +08:00
|
|
|
$(transform-prebuilt-to-target)
|
2015-05-02 05:02:26 +08:00
|
|
|
|
2016-03-12 02:32:01 +08:00
|
|
|
else # ! LOCAL_REPLACE_PREBUILT_APK_INSTALLED
|
|
|
|
# Sign and align non-presigned .apks.
|
2015-05-02 05:02:26 +08:00
|
|
|
# The embedded prebuilt jni to uncompress.
|
2015-06-02 10:19:57 +08:00
|
|
|
ifeq ($(LOCAL_CERTIFICATE),PRESIGNED)
|
|
|
|
# For PRESIGNED apks we must uncompress every .so file:
|
|
|
|
# even if the .so file isn't for the current TARGET_ARCH,
|
|
|
|
# we can't strip the file.
|
|
|
|
embedded_prebuilt_jni_libs := 'lib/*.so'
|
|
|
|
endif
|
2015-05-02 05:02:26 +08:00
|
|
|
ifndef embedded_prebuilt_jni_libs
|
|
|
|
# No LOCAL_PREBUILT_JNI_LIBS, uncompress all.
|
|
|
|
embedded_prebuilt_jni_libs := 'lib/*.so'
|
|
|
|
endif
|
|
|
|
$(built_module): PRIVATE_EMBEDDED_JNI_LIBS := $(embedded_prebuilt_jni_libs)
|
|
|
|
|
2016-12-16 04:51:25 +08:00
|
|
|
$(built_module) : $(my_prebuilt_src_file) | $(ZIPALIGN) $(SIGNAPK_JAR)
|
2014-02-14 07:04:18 +08:00
|
|
|
$(transform-prebuilt-to-target)
|
2015-06-02 10:19:57 +08:00
|
|
|
$(uncompress-shared-libs)
|
2016-03-12 02:32:01 +08:00
|
|
|
ifdef LOCAL_DEX_PREOPT
|
|
|
|
ifneq ($(BUILD_PLATFORM_ZIP),)
|
|
|
|
@# Keep a copy of apk with classes.dex unstripped
|
|
|
|
$(hide) cp -f $@ $(dir $@)package.dex.apk
|
|
|
|
endif # BUILD_PLATFORM_ZIP
|
|
|
|
endif # LOCAL_DEX_PREOPT
|
2015-04-16 03:09:32 +08:00
|
|
|
ifneq ($(LOCAL_CERTIFICATE),PRESIGNED)
|
|
|
|
@# Only strip out files if we can re-sign the package.
|
2014-02-14 07:04:18 +08:00
|
|
|
ifdef LOCAL_DEX_PREOPT
|
2014-05-22 07:13:33 +08:00
|
|
|
ifneq (nostripping,$(LOCAL_DEX_PREOPT))
|
|
|
|
$(call dexpreopt-remove-classes.dex,$@)
|
2016-03-12 02:32:01 +08:00
|
|
|
endif # LOCAL_DEX_PREOPT != nostripping
|
|
|
|
endif # LOCAL_DEX_PREOPT
|
2015-04-16 03:09:32 +08:00
|
|
|
$(sign-package)
|
2015-12-05 02:07:41 +08:00
|
|
|
# No need for align-package because sign-package takes care of alignment
|
2016-03-12 02:32:01 +08:00
|
|
|
else # LOCAL_CERTIFICATE == PRESIGNED
|
2014-02-14 07:04:18 +08:00
|
|
|
$(align-package)
|
2016-03-12 02:32:01 +08:00
|
|
|
endif # LOCAL_CERTIFICATE
|
|
|
|
endif # ! LOCAL_REPLACE_PREBUILT_APK_INSTALLED
|
2014-02-14 07:04:18 +08:00
|
|
|
|
2014-05-22 07:13:33 +08:00
|
|
|
###############################
|
|
|
|
## Rule to build the odex file
|
|
|
|
ifdef LOCAL_DEX_PREOPT
|
|
|
|
$(built_odex) : $(my_prebuilt_src_file)
|
|
|
|
$(call dexpreopt-one-file,$<,$@)
|
|
|
|
endif
|
|
|
|
|
2014-07-24 05:35:40 +08:00
|
|
|
###############################
|
|
|
|
## Install split apks.
|
|
|
|
ifdef LOCAL_PACKAGE_SPLITS
|
|
|
|
# LOCAL_PACKAGE_SPLITS is a list of apks to be installed.
|
|
|
|
built_apk_splits := $(addprefix $(built_module_path)/,$(notdir $(LOCAL_PACKAGE_SPLITS)))
|
|
|
|
installed_apk_splits := $(addprefix $(my_module_path)/,$(notdir $(LOCAL_PACKAGE_SPLITS)))
|
|
|
|
|
2015-12-05 02:07:41 +08:00
|
|
|
# Rules to sign the split apks.
|
2014-07-24 05:35:40 +08:00
|
|
|
my_src_dir := $(sort $(dir $(LOCAL_PACKAGE_SPLITS)))
|
|
|
|
ifneq (1,$(words $(my_src_dir)))
|
|
|
|
$(error You must put all the split source apks in the same folder: $(LOCAL_PACKAGE_SPLITS))
|
|
|
|
endif
|
|
|
|
my_src_dir := $(LOCAL_PATH)/$(my_src_dir)
|
|
|
|
|
2016-05-13 15:03:24 +08:00
|
|
|
$(built_apk_splits) : $(LOCAL_CERTIFICATE).pk8 $(LOCAL_CERTIFICATE).x509.pem
|
2014-07-24 05:35:40 +08:00
|
|
|
$(built_apk_splits) : PRIVATE_PRIVATE_KEY := $(LOCAL_CERTIFICATE).pk8
|
|
|
|
$(built_apk_splits) : PRIVATE_CERTIFICATE := $(LOCAL_CERTIFICATE).x509.pem
|
2016-12-16 04:51:25 +08:00
|
|
|
$(built_apk_splits) : $(built_module_path)/%.apk : $(my_src_dir)/%.apk
|
2014-07-24 05:35:40 +08:00
|
|
|
$(copy-file-to-new-target)
|
|
|
|
$(sign-package)
|
|
|
|
|
|
|
|
# Rules to install the split apks.
|
2016-03-01 09:52:39 +08:00
|
|
|
$(installed_apk_splits) : $(my_module_path)/%.apk : $(built_module_path)/%.apk
|
2014-07-24 05:35:40 +08:00
|
|
|
@echo "Install: $@"
|
|
|
|
$(copy-file-to-new-target)
|
|
|
|
|
|
|
|
# Register the additional built and installed files.
|
|
|
|
ALL_MODULES.$(my_register_name).INSTALLED += $(installed_apk_splits)
|
|
|
|
ALL_MODULES.$(my_register_name).BUILT_INSTALLED += \
|
|
|
|
$(foreach s,$(LOCAL_PACKAGE_SPLITS),$(built_module_path)/$(notdir $(s)):$(my_module_path)/$(notdir $(s)))
|
|
|
|
|
|
|
|
# Make sure to install the splits when you run "make <module_name>".
|
2016-09-21 07:01:28 +08:00
|
|
|
$(my_all_targets): $(installed_apk_splits)
|
2014-07-24 05:35:40 +08:00
|
|
|
|
|
|
|
endif # LOCAL_PACKAGE_SPLITS
|
|
|
|
|
2014-02-14 07:04:18 +08:00
|
|
|
else # LOCAL_MODULE_CLASS != APPS
|
2016-03-12 02:32:01 +08:00
|
|
|
ifeq ($(prebuilt_module_is_dex_javalib),true)
|
|
|
|
# This is a target shared library, i.e. a jar with classes.dex.
|
|
|
|
#######################################
|
|
|
|
# defines built_odex along with rule to install odex
|
|
|
|
include $(BUILD_SYSTEM)/dex_preopt_odex_install.mk
|
|
|
|
#######################################
|
|
|
|
ifdef LOCAL_DEX_PREOPT
|
|
|
|
ifneq ($(dexpreopt_boot_jar_module),) # boot jar
|
|
|
|
# boot jar's rules are defined in dex_preopt.mk
|
|
|
|
dexpreopted_boot_jar := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/$(dexpreopt_boot_jar_module)_nodex.jar
|
2016-03-16 05:40:33 +08:00
|
|
|
$(built_module) : $(dexpreopted_boot_jar)
|
2016-03-12 02:32:01 +08:00
|
|
|
$(call copy-file-to-target)
|
|
|
|
|
|
|
|
# For libart boot jars, we don't have .odex files.
|
|
|
|
else # ! boot jar
|
|
|
|
$(built_odex): PRIVATE_MODULE := $(LOCAL_MODULE)
|
|
|
|
# Use pattern rule - we may have multiple built odex files.
|
|
|
|
$(built_odex) : $(dir $(LOCAL_BUILT_MODULE))% : $(my_prebuilt_src_file)
|
|
|
|
@echo "Dexpreopt Jar: $(PRIVATE_MODULE) ($@)"
|
|
|
|
$(call dexpreopt-one-file,$<,$@)
|
2016-03-02 14:04:57 +08:00
|
|
|
|
2016-03-16 05:40:33 +08:00
|
|
|
$(built_module) : $(my_prebuilt_src_file)
|
2016-03-12 02:32:01 +08:00
|
|
|
$(call copy-file-to-target)
|
|
|
|
ifneq (nostripping,$(LOCAL_DEX_PREOPT))
|
|
|
|
$(call dexpreopt-remove-classes.dex,$@)
|
|
|
|
endif
|
|
|
|
endif # boot jar
|
|
|
|
else # ! LOCAL_DEX_PREOPT
|
2016-03-16 05:40:33 +08:00
|
|
|
$(built_module) : $(my_prebuilt_src_file)
|
2016-03-12 02:32:01 +08:00
|
|
|
$(call copy-file-to-target)
|
|
|
|
endif # LOCAL_DEX_PREOPT
|
|
|
|
|
|
|
|
else # ! prebuilt_module_is_dex_javalib
|
2014-02-14 07:04:18 +08:00
|
|
|
$(built_module) : $(my_prebuilt_src_file)
|
2016-03-02 14:04:57 +08:00
|
|
|
ifneq ($(LOCAL_PREBUILT_STRIP_COMMENTS),)
|
2014-02-14 07:04:18 +08:00
|
|
|
$(transform-prebuilt-to-target-strip-comments)
|
|
|
|
else
|
|
|
|
$(transform-prebuilt-to-target)
|
|
|
|
endif
|
Add NATIVE_TESTS class, move host native tests
Host native tests have been getting installed into
out/host/linux-x86/bin/..., but this pollutes the bin directory with a
lot of poorly named tests. Also, to support 32-bit and 64-bit tests, we
need to have different names with different suffixes. This causes
problems when tests expect to be named something specific (like gtest).
It's also convenient to store test data next to the test itself.
So with this change, native tests will be installed in
out/host/linux-x86/nativetest[64]/$(LOCAL_MODULE)/$(LOCAL_MODULE_STEM)
just like target tests get installed into /data/nativetest[64].
Implement this using a new NATIVE_TESTS class, which is like
EXECUTABLES, but sets up the install path differently, and configures
the rpath to load shared libraries with the proper relative path.
LOCAL_MODULE_RELATIVE_PATH can be used to control the directory name, it
will default to $(LOCAL_MODULE). This way multiple related tests can be
grouped together.
Target native tests also use NATIVE_TESTS now, but nothing should change
other than LOCAL_MODULE_RELATIVE_PATH can be used.
Change-Id: I535e42b1a6b21c5b8d6a580aa2f944d2be35e27d
2016-03-03 05:54:51 +08:00
|
|
|
ifneq ($(filter EXECUTABLES NATIVE_TESTS,$(LOCAL_MODULE_CLASS)),)
|
2016-03-02 14:04:57 +08:00
|
|
|
$(hide) chmod +x $@
|
|
|
|
endif
|
2016-03-12 02:32:01 +08:00
|
|
|
endif # ! prebuilt_module_is_dex_javalib
|
2014-02-14 07:04:18 +08:00
|
|
|
endif # LOCAL_MODULE_CLASS != APPS
|
|
|
|
|
2016-02-23 07:54:27 +08:00
|
|
|
ifeq ($(LOCAL_MODULE_CLASS),JAVA_LIBRARIES)
|
|
|
|
my_src_jar := $(my_prebuilt_src_file)
|
|
|
|
ifeq ($(LOCAL_IS_HOST_MODULE),)
|
2014-02-14 07:04:18 +08:00
|
|
|
# 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.
|
2014-10-30 06:48:32 +08:00
|
|
|
common_classes_jar := $(intermediates.COMMON)/classes.jar
|
2017-04-06 06:30:42 +08:00
|
|
|
common_classes_pre_proguard_jar := $(intermediates.COMMON)/classes-pre-proguard.jar
|
2014-10-30 06:48:32 +08:00
|
|
|
common_javalib_jar := $(intermediates.COMMON)/javalib.jar
|
2014-02-14 07:04:18 +08:00
|
|
|
|
2014-10-30 06:48:32 +08:00
|
|
|
$(common_classes_jar) $(common_javalib_jar): PRIVATE_MODULE := $(LOCAL_MODULE)
|
|
|
|
|
2016-07-09 12:33:05 +08:00
|
|
|
my_link_type := $(intermediates.COMMON)/link_type
|
|
|
|
ifeq ($(LOCAL_SDK_VERSION),system_current)
|
2016-09-15 12:38:29 +08:00
|
|
|
$(my_link_type): PRIVATE_LINK_TYPE := java:system
|
2016-07-09 12:33:05 +08:00
|
|
|
else ifneq ($(LOCAL_SDK_VERSION),)
|
2016-09-15 12:38:29 +08:00
|
|
|
$(my_link_type): PRIVATE_LINK_TYPE := java:sdk
|
2016-07-09 12:33:05 +08:00
|
|
|
else
|
2016-09-15 12:38:29 +08:00
|
|
|
$(my_link_type): PRIVATE_LINK_TYPE := java:platform
|
2016-07-09 12:33:05 +08:00
|
|
|
endif
|
2016-09-15 12:38:29 +08:00
|
|
|
$(eval $(call link-type-partitions,$(my_link_type)))
|
2016-07-09 12:33:05 +08:00
|
|
|
$(my_link_type):
|
|
|
|
@echo Check module type: $@
|
|
|
|
$(hide) mkdir -p $(dir $@) && rm -f $@
|
2016-09-15 12:38:29 +08:00
|
|
|
$(hide) echo "$(PRIVATE_LINK_TYPE)" >$@
|
2016-07-09 12:33:05 +08:00
|
|
|
$(LOCAL_BUILT_MODULE): $(my_link_type)
|
|
|
|
|
2016-03-12 02:32:01 +08:00
|
|
|
ifeq ($(prebuilt_module_is_dex_javalib),true)
|
|
|
|
# For prebuilt shared Java library we don't have classes.jar.
|
2016-03-16 05:40:33 +08:00
|
|
|
$(common_javalib_jar) : $(my_src_jar)
|
2016-03-12 02:32:01 +08:00
|
|
|
$(transform-prebuilt-to-target)
|
|
|
|
|
|
|
|
else # ! prebuilt_module_is_dex_javalib
|
|
|
|
|
2015-12-05 05:59:18 +08:00
|
|
|
my_src_aar := $(filter %.aar, $(my_prebuilt_src_file))
|
|
|
|
ifneq ($(my_src_aar),)
|
2014-10-30 06:48:32 +08:00
|
|
|
# This is .aar file, archive of classes.jar and Android resources.
|
|
|
|
my_src_jar := $(intermediates.COMMON)/aar/classes.jar
|
|
|
|
|
2015-12-05 05:59:18 +08:00
|
|
|
$(my_src_jar) : $(my_src_aar)
|
2014-10-30 06:48:32 +08:00
|
|
|
$(hide) rm -rf $(dir $@) && mkdir -p $(dir $@)
|
|
|
|
$(hide) unzip -qo -d $(dir $@) $<
|
|
|
|
# Make sure the extracted classes.jar has a new timestamp.
|
|
|
|
$(hide) touch $@
|
|
|
|
|
|
|
|
endif
|
2016-03-12 02:32:01 +08:00
|
|
|
|
2016-03-01 09:52:39 +08:00
|
|
|
$(common_classes_jar) : $(my_src_jar)
|
2014-02-14 07:04:18 +08:00
|
|
|
$(transform-prebuilt-to-target)
|
|
|
|
|
2017-04-06 06:30:42 +08:00
|
|
|
$(common_classes_pre_proguard_jar) : $(my_src_jar)
|
|
|
|
$(transform-prebuilt-to-target)
|
|
|
|
|
2016-03-01 09:52:39 +08:00
|
|
|
$(common_javalib_jar) : $(common_classes_jar)
|
2014-02-14 07:04:18 +08:00
|
|
|
$(transform-prebuilt-to-target)
|
|
|
|
|
2015-11-09 15:47:42 +08:00
|
|
|
$(call define-jar-to-toc-rule, $(common_classes_jar))
|
|
|
|
|
2016-02-25 06:11:55 +08:00
|
|
|
ifdef LOCAL_USE_AAPT2
|
2015-12-05 05:59:18 +08:00
|
|
|
ifneq ($(my_src_aar),)
|
2016-02-25 06:11:55 +08:00
|
|
|
my_res_package := $(intermediates.COMMON)/package-res.apk
|
|
|
|
|
|
|
|
# We needed only very few PRIVATE variables and aapt2.mk input variables. Reset the unnecessary ones.
|
|
|
|
$(my_res_package): PRIVATE_AAPT2_CFLAGS :=
|
|
|
|
$(my_res_package): PRIVATE_ANDROID_MANIFEST := $(intermediates.COMMON)/aar/AndroidManifest.xml
|
|
|
|
$(my_res_package): PRIVATE_AAPT_INCLUDES :=
|
|
|
|
$(my_res_package): PRIVATE_SOURCE_INTERMEDIATES_DIR :=
|
|
|
|
$(my_res_package): PRIVATE_PROGUARD_OPTIONS_FILE :=
|
|
|
|
$(my_res_package): PRIVATE_DEFAULT_APP_TARGET_SDK :=
|
|
|
|
$(my_res_package): PRIVATE_DEFAULT_APP_TARGET_SDK :=
|
2016-02-27 03:13:43 +08:00
|
|
|
$(my_res_package): PRIVATE_PRODUCT_AAPT_CONFIG :=
|
|
|
|
$(my_res_package): PRIVATE_PRODUCT_AAPT_PREF_CONFIG :=
|
|
|
|
$(my_res_package): PRIVATE_TARGET_AAPT_CHARACTERISTICS :=
|
2016-02-25 06:11:55 +08:00
|
|
|
|
|
|
|
full_android_manifest :=
|
|
|
|
my_res_resources :=
|
|
|
|
my_overlay_resources :=
|
|
|
|
my_compiled_res_base_dir :=
|
|
|
|
R_file_stamp :=
|
|
|
|
proguard_options_file :=
|
|
|
|
my_generated_res_dirs := $(intermediates.COMMON)/aar/res
|
|
|
|
my_generated_res_dirs_deps := $(my_src_jar)
|
|
|
|
include $(BUILD_SYSTEM)/aapt2.mk
|
|
|
|
|
|
|
|
# Make sure my_res_package is created when you run mm/mmm.
|
|
|
|
$(built_module) : $(my_res_package)
|
2015-12-05 05:59:18 +08:00
|
|
|
endif # $(my_src_aar)
|
2016-02-25 06:11:55 +08:00
|
|
|
endif # LOCAL_USE_AAPT2
|
2014-02-14 07:04:18 +08:00
|
|
|
# make sure the classes.jar and javalib.jar are built before $(LOCAL_BUILT_MODULE)
|
|
|
|
$(built_module) : $(common_javalib_jar)
|
2016-03-12 02:32:01 +08:00
|
|
|
|
|
|
|
endif # ! prebuilt_module_is_dex_javalib
|
2016-02-23 07:54:27 +08:00
|
|
|
endif # LOCAL_IS_HOST_MODULE is not set
|
2016-01-19 23:08:34 +08:00
|
|
|
|
2016-03-12 02:32:01 +08:00
|
|
|
ifneq ($(prebuilt_module_is_dex_javalib),true)
|
2016-01-19 23:08:34 +08:00
|
|
|
|
2016-02-23 07:54:27 +08:00
|
|
|
# We may be building classes.jack from a host jar for host dalvik Java library.
|
2016-01-19 23:08:34 +08:00
|
|
|
$(intermediates.COMMON)/classes.jack : PRIVATE_JACK_FLAGS:=$(LOCAL_JACK_FLAGS)
|
2016-08-20 00:57:34 +08:00
|
|
|
$(intermediates.COMMON)/classes.jack : PRIVATE_JACK_MIN_SDK_VERSION := $(if $(strip $(LOCAL_MIN_SDK_VERSION)),$(LOCAL_MIN_SDK_VERSION),1)
|
2016-08-05 23:45:10 +08:00
|
|
|
$(intermediates.COMMON)/classes.jack : PRIVATE_JACK_PLUGIN_PATH := $(LOCAL_JACK_PLUGIN_PATH)
|
2016-09-19 23:49:03 +08:00
|
|
|
$(intermediates.COMMON)/classes.jack : PRIVATE_JACK_PLUGIN := $(LOCAL_JACK_PLUGIN)
|
2016-08-05 23:45:10 +08:00
|
|
|
$(intermediates.COMMON)/classes.jack : $(LOCAL_JACK_PLUGIN_PATH) $(my_src_jar) \
|
2016-04-07 17:56:42 +08:00
|
|
|
$(LOCAL_ADDITIONAL_DEPENDENCIES) $(JACK_DEFAULT_ARGS) $(JACK) \
|
|
|
|
| setup-jack-server
|
2014-09-08 20:45:14 +08:00
|
|
|
$(transform-jar-to-jack)
|
|
|
|
|
2015-12-09 17:06:20 +08:00
|
|
|
# Update timestamps of .toc files for prebuilts so dependents will be
|
|
|
|
# always rebuilt.
|
|
|
|
$(intermediates.COMMON)/classes.dex.toc: $(intermediates.COMMON)/classes.jack
|
|
|
|
touch $@
|
|
|
|
|
2016-03-12 02:32:01 +08:00
|
|
|
endif # ! prebuilt_module_is_dex_javalib
|
2014-09-08 20:45:14 +08:00
|
|
|
endif # JAVA_LIBRARIES
|
|
|
|
|
2016-01-07 06:28:36 +08:00
|
|
|
$(built_module) : $(LOCAL_ADDITIONAL_DEPENDENCIES)
|
2014-02-14 07:04:18 +08:00
|
|
|
|
|
|
|
my_prebuilt_src_file :=
|