2014-02-14 00:04:18 +01:00
|
|
|
###########################################################
|
|
|
|
## Standard rules for copying files that are prebuilt
|
|
|
|
##
|
|
|
|
## Additional inputs from base_rules.make:
|
|
|
|
## None.
|
|
|
|
##
|
|
|
|
###########################################################
|
|
|
|
|
2018-04-12 19:55:54 +02:00
|
|
|
include $(BUILD_SYSTEM)/use_lld_setup.mk
|
|
|
|
|
2014-02-14 00:04:18 +01:00
|
|
|
ifneq ($(LOCAL_PREBUILT_LIBS),)
|
2018-06-25 22:20:04 +02:00
|
|
|
$(call pretty-error,dont use LOCAL_PREBUILT_LIBS anymore)
|
2014-02-14 00:04:18 +01:00
|
|
|
endif
|
|
|
|
ifneq ($(LOCAL_PREBUILT_EXECUTABLES),)
|
2018-06-25 22:20:04 +02:00
|
|
|
$(call pretty-error,dont use LOCAL_PREBUILT_EXECUTABLES anymore)
|
2014-02-14 00:04:18 +01:00
|
|
|
endif
|
|
|
|
ifneq ($(LOCAL_PREBUILT_JAVA_LIBRARIES),)
|
2018-06-25 22:20:04 +02:00
|
|
|
$(call pretty-error,dont use LOCAL_PREBUILT_JAVA_LIBRARIES anymore)
|
2014-02-14 00:04:18 +01:00
|
|
|
endif
|
|
|
|
|
2014-05-16 19:38:43 +02:00
|
|
|
my_32_64_bit_suffix := $(if $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)IS_64_BIT),64,32)
|
|
|
|
|
2014-02-14 00:04:18 +01:00
|
|
|
ifdef LOCAL_PREBUILT_MODULE_FILE
|
2014-02-27 23:10:53 +01:00
|
|
|
my_prebuilt_src_file := $(LOCAL_PREBUILT_MODULE_FILE)
|
2018-02-28 00:27:30 +01:00
|
|
|
else 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))
|
|
|
|
LOCAL_SRC_FILES_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH) :=
|
|
|
|
else ifdef LOCAL_SRC_FILES_$(my_32_64_bit_suffix)
|
|
|
|
my_prebuilt_src_file := $(LOCAL_PATH)/$(LOCAL_SRC_FILES_$(my_32_64_bit_suffix))
|
|
|
|
LOCAL_SRC_FILES_$(my_32_64_bit_suffix) :=
|
|
|
|
else ifdef LOCAL_SRC_FILES
|
|
|
|
my_prebuilt_src_file := $(LOCAL_PATH)/$(LOCAL_SRC_FILES)
|
|
|
|
LOCAL_SRC_FILES :=
|
|
|
|
else ifdef LOCAL_REPLACE_PREBUILT_APK_INSTALLED
|
|
|
|
# This is handled specially below
|
2014-02-14 00:04:18 +01:00
|
|
|
else
|
2018-02-28 00:27:30 +01:00
|
|
|
$(call pretty-error,No source files specified)
|
2014-02-14 00:04:18 +01:00
|
|
|
endif
|
|
|
|
|
2016-10-28 00:10:55 +02:00
|
|
|
LOCAL_CHECKED_MODULE := $(my_prebuilt_src_file)
|
|
|
|
|
2019-03-18 22:25:00 +01:00
|
|
|
ifeq (APPS,$(LOCAL_MODULE_CLASS))
|
|
|
|
include $(BUILD_SYSTEM)/app_prebuilt_internal.mk
|
|
|
|
else
|
|
|
|
#
|
|
|
|
# Non-APPS prebuilt modules handling almost to the end of the file
|
|
|
|
#
|
|
|
|
|
2016-03-02 05:14:52 +01:00
|
|
|
my_strip_module := $(firstword \
|
|
|
|
$(LOCAL_STRIP_MODULE_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) \
|
|
|
|
$(LOCAL_STRIP_MODULE))
|
|
|
|
|
2014-02-14 00:04:18 +01:00
|
|
|
ifeq (SHARED_LIBRARIES,$(LOCAL_MODULE_CLASS))
|
2016-03-02 05:14:52 +01:00
|
|
|
ifeq ($(LOCAL_IS_HOST_MODULE)$(my_strip_module),)
|
2014-08-21 02:12:32 +02:00
|
|
|
# Strip but not try to add debuglink
|
2016-03-02 05:14:52 +01:00
|
|
|
my_strip_module := no_debuglink
|
2014-08-21 02:12:32 +02:00
|
|
|
endif
|
2014-02-14 00:04:18 +01:00
|
|
|
endif
|
|
|
|
|
|
|
|
ifneq ($(filter STATIC_LIBRARIES SHARED_LIBRARIES,$(LOCAL_MODULE_CLASS)),)
|
|
|
|
prebuilt_module_is_a_library := true
|
|
|
|
else
|
|
|
|
prebuilt_module_is_a_library :=
|
|
|
|
endif
|
|
|
|
|
|
|
|
# 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-16 00:36:29 +01: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
|
|
|
|
|
2017-08-07 13:31:17 +02:00
|
|
|
ifdef LOCAL_COMPRESSED_MODULE
|
|
|
|
$(error $(LOCAL_MODULE) : LOCAL_COMPRESSED_MODULE can only be defined for module class APPS)
|
|
|
|
endif # LOCAL_COMPRESSED_MODULE
|
2014-07-18 06:24:42 +02:00
|
|
|
|
2019-02-14 13:52:21 +01:00
|
|
|
my_check_elf_file_shared_lib_files :=
|
|
|
|
|
2018-06-25 21:33:35 +02:00
|
|
|
ifneq ($(filter true keep_symbols no_debuglink mini-debug-info,$(my_strip_module)),)
|
2014-02-14 00:04:18 +01:00
|
|
|
ifdef LOCAL_IS_HOST_MODULE
|
2018-06-25 22:20:04 +02:00
|
|
|
$(call pretty-error,Cannot strip/pack host module)
|
2014-02-14 00:04:18 +01: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-02 22:54:51 +01:00
|
|
|
ifeq ($(filter SHARED_LIBRARIES EXECUTABLES NATIVE_TESTS,$(LOCAL_MODULE_CLASS)),)
|
2018-06-25 22:20:04 +02:00
|
|
|
$(call pretty-error,Can strip/pack only shared libraries or executables)
|
2014-02-14 00:04:18 +01:00
|
|
|
endif
|
|
|
|
ifneq ($(LOCAL_PREBUILT_STRIP_COMMENTS),)
|
2018-06-25 22:20:04 +02:00
|
|
|
$(call pretty-error,Cannot strip/pack scripts)
|
2014-02-14 00:04:18 +01:00
|
|
|
endif
|
2018-06-25 21:33:35 +02:00
|
|
|
# Set the arch-specific variables to set up the strip rules
|
2016-03-02 05:14:52 +01:00
|
|
|
LOCAL_STRIP_MODULE_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH) := $(my_strip_module)
|
2014-02-14 00:04:18 +01:00
|
|
|
include $(BUILD_SYSTEM)/dynamic_binary.mk
|
|
|
|
built_module := $(linked_module)
|
2014-08-21 02:12:32 +02:00
|
|
|
|
2019-02-14 13:52:21 +01:00
|
|
|
ifneq ($(LOCAL_SDK_VERSION),)
|
|
|
|
# binary.mk filters out NDK_MIGRATED_LIBS from my_shared_libs, thus those NDK libs are not added
|
|
|
|
# to DEPENDENCIES_ON_SHARED_LIBRARIES. Assign $(my_ndk_shared_libraries_fullpath) to
|
|
|
|
# my_check_elf_file_shared_lib_files so that check_elf_file.py can see those NDK stub libs.
|
|
|
|
my_check_elf_file_shared_lib_files := $(my_ndk_shared_libraries_fullpath)
|
|
|
|
endif
|
2018-06-25 21:33:35 +02:00
|
|
|
else # my_strip_module not true
|
2014-02-14 00:04:18 +01:00
|
|
|
include $(BUILD_SYSTEM)/base_rules.mk
|
|
|
|
built_module := $(LOCAL_BUILT_MODULE)
|
|
|
|
|
|
|
|
ifdef prebuilt_module_is_a_library
|
|
|
|
export_includes := $(intermediates)/export_includes
|
2017-03-19 21:22:45 +01:00
|
|
|
export_cflags := $(foreach d,$(LOCAL_EXPORT_C_INCLUDE_DIRS),-I $(d))
|
|
|
|
$(export_includes): PRIVATE_EXPORT_CFLAGS := $(export_cflags)
|
2016-09-29 21:08:29 +02:00
|
|
|
$(export_includes): $(LOCAL_EXPORT_C_INCLUDE_DEPS)
|
2014-02-14 00:04:18 +01:00
|
|
|
@echo Export includes file: $< -- $@
|
|
|
|
$(hide) mkdir -p $(dir $@) && rm -f $@
|
2017-03-19 21:22:45 +01:00
|
|
|
ifdef export_cflags
|
|
|
|
$(hide) echo "$(PRIVATE_EXPORT_CFLAGS)" >$@
|
2014-02-14 00:04:18 +01:00
|
|
|
else
|
|
|
|
$(hide) touch $@
|
|
|
|
endif
|
2017-03-19 21:22:45 +01:00
|
|
|
export_cflags :=
|
2014-02-14 00:04:18 +01:00
|
|
|
|
2017-12-19 20:26:05 +01:00
|
|
|
include $(BUILD_SYSTEM)/allowed_ndk_types.mk
|
|
|
|
|
2017-04-08 05:58:43 +02:00
|
|
|
ifdef LOCAL_SDK_VERSION
|
2017-12-19 20:27:39 +01:00
|
|
|
my_link_type := native:ndk:$(my_ndk_stl_family):$(my_ndk_stl_link_type)
|
2017-04-08 05:58:43 +02:00
|
|
|
else ifdef LOCAL_USE_VNDK
|
2017-08-16 11:28:12 +02:00
|
|
|
_name := $(patsubst %.vendor,%,$(LOCAL_MODULE))
|
|
|
|
ifneq ($(filter $(_name),$(VNDK_CORE_LIBRARIES) $(VNDK_SAMEPROCESS_LIBRARIES) $(LLNDK_LIBRARIES)),)
|
|
|
|
ifeq ($(filter $(_name),$(VNDK_PRIVATE_LIBRARIES)),)
|
|
|
|
my_link_type := native:vndk
|
|
|
|
else
|
|
|
|
my_link_type := native:vndk_private
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
my_link_type := native:vendor
|
|
|
|
endif
|
2018-08-28 05:32:45 +02:00
|
|
|
else ifneq ($(filter $(TARGET_RECOVERY_OUT)/%,$(LOCAL_MODULE_PATH)),)
|
|
|
|
my_link_type := native:recovery
|
2017-04-08 05:58:43 +02:00
|
|
|
else
|
2017-04-08 09:31:31 +02:00
|
|
|
my_link_type := native:platform
|
2017-04-08 05:58:43 +02:00
|
|
|
endif
|
2016-06-07 23:25:14 +02:00
|
|
|
|
2017-04-08 09:31:31 +02:00
|
|
|
# TODO: check dependencies of prebuilt files
|
|
|
|
my_link_deps :=
|
|
|
|
|
|
|
|
my_2nd_arch_prefix := $(LOCAL_2ND_ARCH_VAR_PREFIX)
|
|
|
|
my_common :=
|
|
|
|
include $(BUILD_SYSTEM)/link_type.mk
|
2014-02-14 00:04:18 +01: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
|
2019-01-31 05:05:12 +01:00
|
|
|
ifdef LOCAL_IS_HOST_MODULE
|
|
|
|
ifeq ($(LOCAL_SYSTEM_SHARED_LIBRARIES),none)
|
|
|
|
my_system_shared_libraries :=
|
|
|
|
else
|
|
|
|
my_system_shared_libraries := $(LOCAL_SYSTEM_SHARED_LIBRARIES)
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
ifeq ($(LOCAL_SYSTEM_SHARED_LIBRARIES),none)
|
|
|
|
my_system_shared_libraries := libc libm libdl
|
|
|
|
else
|
|
|
|
my_system_shared_libraries := $(LOCAL_SYSTEM_SHARED_LIBRARIES)
|
|
|
|
my_system_shared_libraries := $(patsubst libc,libc libdl,$(my_system_shared_libraries))
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
my_shared_libraries := \
|
|
|
|
$(filter-out $(my_system_shared_libraries),$(LOCAL_SHARED_LIBRARIES)) \
|
|
|
|
$(my_system_shared_libraries)
|
|
|
|
|
|
|
|
ifdef my_shared_libraries
|
2014-10-07 22:03:29 +02:00
|
|
|
# Extra shared libraries introduced by LOCAL_CXX_STL.
|
|
|
|
include $(BUILD_SYSTEM)/cxx_stl_setup.mk
|
2017-04-08 05:58:43 +02:00
|
|
|
ifdef LOCAL_USE_VNDK
|
2018-09-07 01:25:22 +02:00
|
|
|
my_shared_libraries := $(foreach l,$(my_shared_libraries),\
|
|
|
|
$(if $(SPLIT_VENDOR.SHARED_LIBRARIES.$(l)),$(l).vendor,$(l)))
|
2017-04-08 05:58:43 +02:00
|
|
|
endif
|
2014-02-26 03:26:29 +01:00
|
|
|
$(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)DEPENDENCIES_ON_SHARED_LIBRARIES += \
|
2014-10-07 22:03:29 +02:00
|
|
|
$(my_register_name):$(LOCAL_INSTALLED_MODULE):$(subst $(space),$(comma),$(my_shared_libraries))
|
2014-02-14 00:04:18 +01:00
|
|
|
endif
|
2019-01-31 05:05:12 +01:00
|
|
|
endif # my_shared_libraries
|
2014-02-14 00:04:18 +01:00
|
|
|
|
2014-10-07 22:03:29 +02:00
|
|
|
# We need to enclose the above export_includes and my_built_shared_libraries in
|
2016-03-02 05:14:52 +01: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 00:04:18 +01:00
|
|
|
|
2019-01-31 05:05:32 +01:00
|
|
|
# Check prebuilt ELF binaries.
|
|
|
|
include $(BUILD_SYSTEM)/check_elf_file.mk
|
|
|
|
|
2016-10-22 00:04:12 +02:00
|
|
|
ifeq ($(NATIVE_COVERAGE),true)
|
2017-02-10 09:07:17 +01: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
|
2017-11-20 21:45:48 +01:00
|
|
|
my_coverage_path := $(my_coverage_path)/$(patsubst %.so,%,$(my_installed_module_stem)).gcnodir
|
2017-02-10 09:07:17 +01:00
|
|
|
$(eval $(call copy-one-file,$(LOCAL_PREBUILT_COVERAGE_ARCHIVE),$(my_coverage_path)))
|
|
|
|
$(LOCAL_BUILT_MODULE): $(my_coverage_path)
|
|
|
|
endif
|
|
|
|
else
|
2016-09-12 22:56:50 +02: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 00:04:12 +02:00
|
|
|
$(intermediates)/$(GCNO_ARCHIVE) : PRIVATE_PREFIX := $(my_prefix)
|
|
|
|
$(intermediates)/$(GCNO_ARCHIVE) : PRIVATE_2ND_ARCH_VAR_PREFIX := $(LOCAL_2ND_ARCH_VAR_PREFIX)
|
2016-09-12 22:56:50 +02:00
|
|
|
$(intermediates)/$(GCNO_ARCHIVE) :
|
|
|
|
$(transform-o-to-static-lib)
|
|
|
|
endif
|
2016-10-22 00:04:12 +02:00
|
|
|
endif
|
2017-02-10 09:07:17 +01:00
|
|
|
endif
|
2016-09-12 22:56:50 +02:00
|
|
|
|
2019-03-18 22:25:00 +01:00
|
|
|
ifeq ($(prebuilt_module_is_dex_javalib),true)
|
2018-11-17 06:26:33 +01:00
|
|
|
my_dex_jar := $(my_prebuilt_src_file)
|
2016-03-16 00:36:29 +01:00
|
|
|
# This is a target shared library, i.e. a jar with classes.dex.
|
2019-02-11 23:25:13 +01:00
|
|
|
|
|
|
|
ifneq ($(filter $(LOCAL_MODULE),$(PRODUCT_BOOT_JARS)),)
|
|
|
|
$(call pretty-error,Modules in PRODUCT_BOOT_JARS must be defined in Android.bp files)
|
|
|
|
endif
|
|
|
|
|
2016-03-16 00:36:29 +01:00
|
|
|
#######################################
|
|
|
|
# defines built_odex along with rule to install odex
|
|
|
|
include $(BUILD_SYSTEM)/dex_preopt_odex_install.mk
|
|
|
|
#######################################
|
|
|
|
ifdef LOCAL_DEX_PREOPT
|
2016-03-02 07:04:57 +01:00
|
|
|
|
2018-11-17 06:26:33 +01:00
|
|
|
$(built_module): PRIVATE_STRIP_SCRIPT := $(intermediates)/strip.sh
|
|
|
|
$(built_module): $(intermediates)/strip.sh
|
2019-01-18 01:22:04 +01:00
|
|
|
$(built_module): | $(DEXPREOPT_STRIP_DEPS)
|
2018-11-17 06:26:33 +01:00
|
|
|
$(built_module): .KATI_DEPFILE := $(built_module).d
|
|
|
|
$(built_module): $(my_prebuilt_src_file)
|
|
|
|
$(PRIVATE_STRIP_SCRIPT) $< $@
|
|
|
|
|
2016-03-16 00:36:29 +01:00
|
|
|
else # ! LOCAL_DEX_PREOPT
|
|
|
|
$(built_module) : $(my_prebuilt_src_file)
|
|
|
|
$(call copy-file-to-target)
|
|
|
|
endif # LOCAL_DEX_PREOPT
|
|
|
|
|
|
|
|
else # ! prebuilt_module_is_dex_javalib
|
2018-06-13 23:51:05 +02:00
|
|
|
ifneq ($(filter init%rc,$(notdir $(LOCAL_INSTALLED_MODULE)))$(filter %/etc/init,$(dir $(LOCAL_INSTALLED_MODULE))),)
|
|
|
|
$(eval $(call copy-init-script-file-checked,$(my_prebuilt_src_file),$(built_module)))
|
|
|
|
else ifneq ($(LOCAL_PREBUILT_STRIP_COMMENTS),)
|
2014-02-14 00:04:18 +01:00
|
|
|
$(built_module) : $(my_prebuilt_src_file)
|
|
|
|
$(transform-prebuilt-to-target-strip-comments)
|
|
|
|
else
|
2018-06-13 23:51:05 +02:00
|
|
|
$(built_module) : $(my_prebuilt_src_file)
|
2014-02-14 00:04:18 +01:00
|
|
|
$(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-02 22:54:51 +01:00
|
|
|
ifneq ($(filter EXECUTABLES NATIVE_TESTS,$(LOCAL_MODULE_CLASS)),)
|
2016-03-02 07:04:57 +01:00
|
|
|
$(hide) chmod +x $@
|
|
|
|
endif
|
2016-03-16 00:36:29 +01:00
|
|
|
endif # ! prebuilt_module_is_dex_javalib
|
2014-02-14 00:04:18 +01:00
|
|
|
|
2016-02-23 00:54:27 +01:00
|
|
|
ifeq ($(LOCAL_MODULE_CLASS),JAVA_LIBRARIES)
|
|
|
|
my_src_jar := $(my_prebuilt_src_file)
|
2017-03-29 22:53:29 +02:00
|
|
|
|
|
|
|
ifdef LOCAL_IS_HOST_MODULE
|
|
|
|
# for host java libraries deps should be in the common dir, so we make a copy in
|
|
|
|
# the common dir.
|
|
|
|
common_classes_jar := $(intermediates.COMMON)/classes.jar
|
2017-08-31 23:43:04 +02:00
|
|
|
common_header_jar := $(intermediates.COMMON)/classes-header.jar
|
2017-03-29 22:53:29 +02:00
|
|
|
|
2017-04-06 18:56:19 +02:00
|
|
|
$(common_classes_jar): PRIVATE_MODULE := $(LOCAL_MODULE)
|
2017-04-15 00:14:33 +02:00
|
|
|
$(common_classes_jar): PRIVATE_PREFIX := $(my_prefix)
|
2017-03-29 22:53:29 +02:00
|
|
|
|
|
|
|
$(common_classes_jar) : $(my_src_jar)
|
|
|
|
$(transform-prebuilt-to-target)
|
|
|
|
|
2017-09-27 01:17:24 +02:00
|
|
|
ifneq ($(TURBINE_ENABLED),false)
|
2017-08-31 23:43:04 +02:00
|
|
|
$(common_header_jar) : $(my_src_jar)
|
|
|
|
$(transform-prebuilt-to-target)
|
2017-09-27 01:17:24 +02:00
|
|
|
endif
|
2017-08-31 23:43:04 +02:00
|
|
|
|
2017-03-29 22:53:29 +02:00
|
|
|
else # !LOCAL_IS_HOST_MODULE
|
2014-02-14 00:04:18 +01: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-29 23:48:32 +01:00
|
|
|
common_classes_jar := $(intermediates.COMMON)/classes.jar
|
2017-08-31 23:43:04 +02:00
|
|
|
common_header_jar := $(intermediates.COMMON)/classes-header.jar
|
2017-04-06 00:30:42 +02:00
|
|
|
common_classes_pre_proguard_jar := $(intermediates.COMMON)/classes-pre-proguard.jar
|
2014-10-29 23:48:32 +01:00
|
|
|
common_javalib_jar := $(intermediates.COMMON)/javalib.jar
|
2014-02-14 00:04:18 +01:00
|
|
|
|
2017-04-15 00:14:33 +02:00
|
|
|
$(common_classes_jar) $(common_classes_pre_proguard_jar) $(common_javalib_jar): PRIVATE_MODULE := $(LOCAL_MODULE)
|
|
|
|
$(common_classes_jar) $(common_classes_pre_proguard_jar) $(common_javalib_jar): PRIVATE_PREFIX := $(my_prefix)
|
2014-10-29 23:48:32 +01:00
|
|
|
|
2016-07-09 06:33:05 +02:00
|
|
|
ifeq ($(LOCAL_SDK_VERSION),system_current)
|
2017-04-08 09:31:31 +02:00
|
|
|
my_link_type := java:system
|
2017-10-16 12:20:34 +02:00
|
|
|
else ifneq (,$(call has-system-sdk-version,$(LOCAL_SDK_VERSION)))
|
|
|
|
my_link_type := java:system
|
2018-01-30 16:14:55 +01:00
|
|
|
else ifeq ($(LOCAL_SDK_VERSION),core_current)
|
|
|
|
my_link_type := java:core
|
2016-07-09 06:33:05 +02:00
|
|
|
else ifneq ($(LOCAL_SDK_VERSION),)
|
2017-04-08 09:31:31 +02:00
|
|
|
my_link_type := java:sdk
|
2016-07-09 06:33:05 +02:00
|
|
|
else
|
2017-04-08 09:31:31 +02:00
|
|
|
my_link_type := java:platform
|
2016-07-09 06:33:05 +02:00
|
|
|
endif
|
2017-04-08 09:31:31 +02:00
|
|
|
|
|
|
|
# TODO: check dependencies of prebuilt files
|
|
|
|
my_link_deps :=
|
|
|
|
|
|
|
|
my_2nd_arch_prefix := $(LOCAL_2ND_ARCH_VAR_PREFIX)
|
|
|
|
my_common := COMMON
|
|
|
|
include $(BUILD_SYSTEM)/link_type.mk
|
2016-07-09 06:33:05 +02:00
|
|
|
|
2016-03-16 00:36:29 +01:00
|
|
|
ifeq ($(prebuilt_module_is_dex_javalib),true)
|
|
|
|
# For prebuilt shared Java library we don't have classes.jar.
|
|
|
|
$(common_javalib_jar) : $(my_src_jar)
|
|
|
|
$(transform-prebuilt-to-target)
|
|
|
|
|
|
|
|
else # ! prebuilt_module_is_dex_javalib
|
|
|
|
|
2015-12-04 22:59:18 +01:00
|
|
|
my_src_aar := $(filter %.aar, $(my_prebuilt_src_file))
|
|
|
|
ifneq ($(my_src_aar),)
|
2014-10-29 23:48:32 +01:00
|
|
|
# This is .aar file, archive of classes.jar and Android resources.
|
2018-02-27 20:05:40 +01:00
|
|
|
|
|
|
|
# run Jetifier if needed
|
|
|
|
LOCAL_JETIFIER_INPUT_FILE := $(my_src_aar)
|
|
|
|
include $(BUILD_SYSTEM)/jetifier.mk
|
|
|
|
my_src_aar := $(LOCAL_JETIFIER_OUTPUT_FILE)
|
|
|
|
|
2014-10-29 23:48:32 +01:00
|
|
|
my_src_jar := $(intermediates.COMMON)/aar/classes.jar
|
2017-11-17 22:11:26 +01:00
|
|
|
my_src_proguard_options := $(intermediates.COMMON)/aar/proguard.txt
|
2018-06-12 23:02:41 +02:00
|
|
|
my_src_android_manifest := $(intermediates.COMMON)/aar/AndroidManifest.xml
|
2014-10-29 23:48:32 +01:00
|
|
|
|
2017-11-17 22:11:26 +01:00
|
|
|
$(my_src_jar) : .KATI_IMPLICIT_OUTPUTS := $(my_src_proguard_options)
|
2018-06-12 23:02:41 +02:00
|
|
|
$(my_src_jar) : .KATI_IMPLICIT_OUTPUTS += $(my_src_android_manifest)
|
2015-12-04 22:59:18 +01:00
|
|
|
$(my_src_jar) : $(my_src_aar)
|
2017-04-28 08:10:47 +02:00
|
|
|
$(hide) rm -rf $(dir $@) && mkdir -p $(dir $@) $(dir $@)/res
|
2014-10-29 23:48:32 +01:00
|
|
|
$(hide) unzip -qo -d $(dir $@) $<
|
|
|
|
# Make sure the extracted classes.jar has a new timestamp.
|
|
|
|
$(hide) touch $@
|
2018-06-12 23:02:41 +02:00
|
|
|
# Make sure the proguard and AndroidManifest.xml files exist
|
|
|
|
# and have a new timestamp.
|
2017-11-17 22:11:26 +01:00
|
|
|
$(hide) touch $(dir $@)/proguard.txt
|
2018-06-12 23:02:41 +02:00
|
|
|
$(hide) touch $(dir $@)/AndroidManifest.xml
|
2018-06-08 01:44:07 +02:00
|
|
|
|
|
|
|
my_prebuilt_android_manifest := $(intermediates.COMMON)/manifest/AndroidManifest.xml
|
|
|
|
$(eval $(call copy-one-file,$(my_src_android_manifest),$(my_prebuilt_android_manifest)))
|
|
|
|
$(call add-dependency,$(LOCAL_BUILT_MODULE),$(my_prebuilt_android_manifest))
|
|
|
|
|
2018-02-27 20:05:40 +01:00
|
|
|
else
|
|
|
|
|
|
|
|
# run Jetifier if needed
|
|
|
|
LOCAL_JETIFIER_INPUT_FILE := $(my_src_jar)
|
|
|
|
include $(BUILD_SYSTEM)/jetifier.mk
|
|
|
|
my_src_jar := $(LOCAL_JETIFIER_OUTPUT_FILE)
|
2014-10-29 23:48:32 +01:00
|
|
|
|
|
|
|
endif
|
2016-03-16 00:36:29 +01:00
|
|
|
|
2016-03-01 02:52:39 +01:00
|
|
|
$(common_classes_jar) : $(my_src_jar)
|
2014-02-14 00:04:18 +01:00
|
|
|
$(transform-prebuilt-to-target)
|
|
|
|
|
2017-09-27 01:17:24 +02:00
|
|
|
ifneq ($(TURBINE_ENABLED),false)
|
2017-08-31 23:43:04 +02:00
|
|
|
$(common_header_jar) : $(my_src_jar)
|
|
|
|
$(transform-prebuilt-to-target)
|
2017-09-27 01:17:24 +02:00
|
|
|
endif
|
2017-08-31 23:43:04 +02:00
|
|
|
|
2017-04-06 00:30:42 +02:00
|
|
|
$(common_classes_pre_proguard_jar) : $(my_src_jar)
|
|
|
|
$(transform-prebuilt-to-target)
|
|
|
|
|
2016-03-01 02:52:39 +01:00
|
|
|
$(common_javalib_jar) : $(common_classes_jar)
|
2014-02-14 00:04:18 +01:00
|
|
|
$(transform-prebuilt-to-target)
|
|
|
|
|
2018-05-09 22:29:51 +02:00
|
|
|
include $(BUILD_SYSTEM)/force_aapt2.mk
|
|
|
|
|
2017-11-18 00:39:52 +01:00
|
|
|
ifdef LOCAL_AAPT2_ONLY
|
|
|
|
LOCAL_USE_AAPT2 := true
|
|
|
|
endif
|
|
|
|
|
2018-05-09 22:29:51 +02:00
|
|
|
ifeq ($(LOCAL_USE_AAPT2),true)
|
2015-12-04 22:59:18 +01:00
|
|
|
ifneq ($(my_src_aar),)
|
2017-11-17 22:11:26 +01:00
|
|
|
|
|
|
|
$(intermediates.COMMON)/export_proguard_flags : $(my_src_proguard_options)
|
|
|
|
$(transform-prebuilt-to-target)
|
|
|
|
|
2017-04-28 07:28:06 +02:00
|
|
|
LOCAL_SDK_RES_VERSION:=$(strip $(LOCAL_SDK_RES_VERSION))
|
|
|
|
ifeq ($(LOCAL_SDK_RES_VERSION),)
|
|
|
|
LOCAL_SDK_RES_VERSION:=$(LOCAL_SDK_VERSION)
|
|
|
|
endif
|
|
|
|
|
|
|
|
framework_res_package_export :=
|
|
|
|
# Please refer to package.mk
|
|
|
|
ifneq ($(LOCAL_NO_STANDARD_LIBRARIES),true)
|
|
|
|
ifneq ($(filter-out current system_current test_current,$(LOCAL_SDK_RES_VERSION))$(if $(TARGET_BUILD_APPS),$(filter current system_current test_current,$(LOCAL_SDK_RES_VERSION))),)
|
|
|
|
framework_res_package_export := \
|
2018-04-27 15:11:17 +02:00
|
|
|
$(call resolve-prebuilt-sdk-jar-path,$(LOCAL_SDK_RES_VERSION))
|
2017-04-28 07:28:06 +02:00
|
|
|
else
|
|
|
|
framework_res_package_export := \
|
|
|
|
$(call intermediates-dir-for,APPS,framework-res,,COMMON)/package-export.apk
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2016-02-24 23:11:55 +01: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 :=
|
2017-10-05 22:22:30 +02:00
|
|
|
$(my_res_package): PRIVATE_AAPT_FLAGS := --static-lib --no-static-lib-packages --auto-add-overlay
|
2018-06-12 23:02:41 +02:00
|
|
|
$(my_res_package): PRIVATE_ANDROID_MANIFEST := $(my_src_android_manifest)
|
2017-04-28 07:28:06 +02:00
|
|
|
$(my_res_package): PRIVATE_AAPT_INCLUDES := $(framework_res_package_export)
|
2016-02-24 23:11:55 +01:00
|
|
|
$(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-26 20:13:43 +01:00
|
|
|
$(my_res_package): PRIVATE_PRODUCT_AAPT_CONFIG :=
|
|
|
|
$(my_res_package): PRIVATE_PRODUCT_AAPT_PREF_CONFIG :=
|
|
|
|
$(my_res_package): PRIVATE_TARGET_AAPT_CHARACTERISTICS :=
|
2018-02-20 23:31:33 +01:00
|
|
|
$(my_res_package) : $(framework_res_package_export)
|
2018-06-12 23:02:41 +02:00
|
|
|
$(my_res_package) : $(my_src_android_manifest)
|
2016-02-24 23:11:55 +01:00
|
|
|
|
|
|
|
full_android_manifest :=
|
|
|
|
my_res_resources :=
|
|
|
|
my_overlay_resources :=
|
2017-04-28 06:25:34 +02:00
|
|
|
my_compiled_res_base_dir := $(intermediates.COMMON)/flat-res
|
2016-02-24 23:11:55 +01:00
|
|
|
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-04 22:59:18 +01:00
|
|
|
endif # $(my_src_aar)
|
2016-02-24 23:11:55 +01:00
|
|
|
endif # LOCAL_USE_AAPT2
|
2014-02-14 00:04:18 +01:00
|
|
|
# make sure the classes.jar and javalib.jar are built before $(LOCAL_BUILT_MODULE)
|
|
|
|
$(built_module) : $(common_javalib_jar)
|
2016-03-16 00:36:29 +01:00
|
|
|
|
2018-05-22 08:39:59 +02:00
|
|
|
my_exported_sdk_libs_file := $(intermediates.COMMON)/exported-sdk-libs
|
|
|
|
$(my_exported_sdk_libs_file): PRIVATE_EXPORTED_SDK_LIBS := $(LOCAL_EXPORT_SDK_LIBRARIES)
|
|
|
|
$(my_exported_sdk_libs_file):
|
|
|
|
@echo "Export SDK libs $@"
|
|
|
|
$(hide) mkdir -p $(dir $@) && rm -f $@
|
2018-07-14 08:06:48 +02:00
|
|
|
$(if $(PRIVATE_EXPORTED_SDK_LIBS),\
|
2018-05-22 08:39:59 +02:00
|
|
|
$(hide) echo $(PRIVATE_EXPORTED_SDK_LIBS) | tr ' ' '\n' > $@,\
|
|
|
|
$(hide) touch $@)
|
|
|
|
|
2016-03-16 00:36:29 +01:00
|
|
|
endif # ! prebuilt_module_is_dex_javalib
|
2016-02-23 00:54:27 +01:00
|
|
|
endif # LOCAL_IS_HOST_MODULE is not set
|
2016-01-19 16:08:34 +01:00
|
|
|
|
2014-09-08 14:45:14 +02:00
|
|
|
endif # JAVA_LIBRARIES
|
|
|
|
|
2019-03-18 22:25:00 +01:00
|
|
|
endif # APPS
|
|
|
|
|
2016-01-06 23:28:36 +01:00
|
|
|
$(built_module) : $(LOCAL_ADDITIONAL_DEPENDENCIES)
|
2014-02-14 00:04:18 +01:00
|
|
|
|
|
|
|
my_prebuilt_src_file :=
|
2017-09-15 22:40:48 +02:00
|
|
|
my_preopt_for_extracted_apk :=
|