Merge "Export SDK library names"
am: dabf1a0c5a
Change-Id: Iad2365d9bb02de297dd06cd2bc36c288a043dfc2
This commit is contained in:
commit
56be041198
6 changed files with 72 additions and 4 deletions
|
@ -43,24 +43,27 @@ else
|
|||
endif
|
||||
|
||||
# Set up rules to merge library manifest files
|
||||
my_exported_sdk_libs_file := $(call local-intermediates-dir,COMMON)/exported-sdk-libs
|
||||
$(full_android_manifest): PRIVATE_EXPORTED_SDK_LIBS_FILE := $(my_exported_sdk_libs_file)
|
||||
$(full_android_manifest): $(my_exported_sdk_libs_file)
|
||||
$(full_android_manifest): $(MANIFEST_FIXER)
|
||||
|
||||
ifneq (,$(strip $(my_full_libs_manifest_files)))
|
||||
|
||||
$(full_android_manifest): PRIVATE_LIBS_MANIFESTS := $(my_full_libs_manifest_files)
|
||||
$(full_android_manifest): $(ANDROID_MANIFEST_MERGER_CLASSPATH)
|
||||
$(full_android_manifest): $(MANIFEST_FIXER)
|
||||
$(full_android_manifest) : $(main_android_manifest) $(my_full_libs_manifest_files)
|
||||
@echo "Merge android manifest files: $@ <-- $< $(PRIVATE_LIBS_MANIFESTS)"
|
||||
@mkdir -p $(dir $@)
|
||||
$(MANIFEST_FIXER) $< $@.tmp --minSdkVersion $(PRIVATE_MIN_SDK_VERSION)
|
||||
$(call fix-manifest,$<,$@.tmp,$(PRIVATE_MIN_SDK_VERSION),$(PRIVATE_EXPORTED_SDK_LIBS_FILE))
|
||||
$(hide) $(ANDROID_MANIFEST_MERGER) --main $@.tmp \
|
||||
--libs $(call normalize-path-list,$(PRIVATE_LIBS_MANIFESTS)) \
|
||||
--out $@
|
||||
rm $@.tmp
|
||||
|
||||
else
|
||||
$(full_android_manifest): $(MANIFEST_FIXER)
|
||||
$(full_android_manifest): $(main_android_manifest)
|
||||
@echo "Fix manifest: $@"
|
||||
$(MANIFEST_FIXER) $< $@ --minSdkVersion $(PRIVATE_MIN_SDK_VERSION)
|
||||
$(call fix-manifest,$<,$@,$(PRIVATE_MIN_SDK_VERSION),$(PRIVATE_EXPORTED_SDK_LIBS_FILE))
|
||||
|
||||
endif
|
||||
|
|
|
@ -86,6 +86,7 @@ LOCAL_EXPORT_C_INCLUDE_DIRS:=
|
|||
LOCAL_EXPORT_HEADER_LIBRARY_HEADERS:=
|
||||
LOCAL_EXPORT_PACKAGE_RESOURCES:=
|
||||
LOCAL_EXPORT_PROGUARD_FLAG_FILES:=
|
||||
LOCAL_EXPORT_SDK_LIBRARIES:=
|
||||
LOCAL_EXPORT_SHARED_LIBRARY_HEADERS:=
|
||||
LOCAL_EXPORT_STATIC_LIBRARY_HEADERS:=
|
||||
LOCAL_EXTRACT_APK:=
|
||||
|
|
|
@ -731,6 +731,25 @@ $(call app-lib-files,$(1))
|
|||
endef
|
||||
endif
|
||||
|
||||
# Get the exported-sdk-libs files which collectively give you the list of exported java sdk
|
||||
# lib names that are (transitively) exported from the given set of java libs
|
||||
# $(1): library name list
|
||||
define exported-sdk-libs-files
|
||||
$(foreach lib,$(1),$(call intermediates-dir-for,JAVA_LIBRARIES,$(lib),,COMMON)/exported-sdk-libs)
|
||||
endef
|
||||
|
||||
# Fix manifest
|
||||
# $(1): input manifest path
|
||||
# $(2): output manifest path
|
||||
# $(3): min sdk version
|
||||
# $(4): (optional) exported-sdk-libs file
|
||||
define fix-manifest
|
||||
$(MANIFEST_FIXER) \
|
||||
--minSdkVersion $(3) \
|
||||
$(if $(4),$$(cat $(4) | sort -u | sed -e 's/^/\ --uses-library\ /' | tr '\n' ' ')) \
|
||||
$(1) $(2)
|
||||
endef
|
||||
|
||||
###########################################################
|
||||
## Returns true if $(1) and $(2) are equal. Returns
|
||||
## the empty string if they are not equal.
|
||||
|
|
|
@ -237,6 +237,8 @@ endif
|
|||
full_java_bootclasspath_libs :=
|
||||
empty_bootclasspath :=
|
||||
my_system_modules :=
|
||||
exported_sdk_libs_files :=
|
||||
my_exported_sdk_libs_file :=
|
||||
|
||||
ifndef LOCAL_IS_HOST_MODULE
|
||||
sdk_libs :=
|
||||
|
@ -326,6 +328,14 @@ ifndef LOCAL_IS_HOST_MODULE
|
|||
full_shared_java_libs := $(call java-lib-files,$(LOCAL_JAVA_LIBRARIES) $(sdk_libs),$(LOCAL_IS_HOST_MODULE))
|
||||
full_shared_java_header_libs := $(call java-lib-header-files,$(LOCAL_JAVA_LIBRARIES) $(sdk_libs),$(LOCAL_IS_HOST_MODULE))
|
||||
sdk_libs :=
|
||||
|
||||
# Files that contains the names of SDK libraries exported from dependencies. These will be re-exported.
|
||||
# Note: No need to consider LOCAL_*_ANDROID_LIBRARIES and LOCAL_STATIC_JAVA_AAR_LIBRARIES. They are all appended to
|
||||
# LOCAL_*_JAVA_LIBRARIES in java.mk
|
||||
exported_sdk_libs_files := $(call exported-sdk-libs-files,$(LOCAL_JAVA_LIBRARIES) $(LOCAL_STATIC_JAVA_LIBRARIES))
|
||||
# The file that contains the names of all SDK libraries that this module exports and re-exports
|
||||
my_exported_sdk_libs_file := $(call local-intermediates-dir,COMMON)/exported-sdk-libs
|
||||
|
||||
else # LOCAL_IS_HOST_MODULE
|
||||
|
||||
ifeq ($(USE_CORE_LIB_BOOTCLASSPATH),true)
|
||||
|
@ -362,6 +372,22 @@ else # LOCAL_IS_HOST_MODULE
|
|||
endif # USE_CORE_LIB_BOOTCLASSPATH
|
||||
endif # !LOCAL_IS_HOST_MODULE
|
||||
|
||||
|
||||
# Export the SDK libs. The sdk library names listed in LOCAL_SDK_LIBRARIES are first exported.
|
||||
# Then sdk library names exported from dependencies are all re-exported.
|
||||
$(my_exported_sdk_libs_file): PRIVATE_EXPORTED_SDK_LIBS_FILES := $(exported_sdk_libs_files)
|
||||
$(my_exported_sdk_libs_file): PRIVATE_SDK_LIBS := $(sort $(LOCAL_SDK_LIBRARIES))
|
||||
$(my_exported_sdk_libs_file): $(exported_sdk_libs_files)
|
||||
@echo "Export SDK libs $@"
|
||||
$(hide) mkdir -p $(dir $@) && rm -f $@ $@.temp
|
||||
$(if $(PRIVATE_SDK_LIBS),\
|
||||
echo $(PRIVATE_SDK_LIBS) | tr ' ' '\n' > $@.temp,\
|
||||
touch $@.temp)
|
||||
$(if $(PRIVATE_EXPORTED_SDK_LIBS_FILES),\
|
||||
cat $(PRIVATE_EXPORTED_SDK_LIBS_FILES) >> $@.temp)
|
||||
$(hide) cat $@.temp | sort -u > $@
|
||||
$(hide) rm -f $@.temp
|
||||
|
||||
ifdef empty_bootclasspath
|
||||
ifdef full_java_bootclasspath_libs
|
||||
$(call pretty-error,internal error: empty_bootclasspath and full_java_bootclasspath_libs should not both be set)
|
||||
|
|
|
@ -686,6 +686,15 @@ endif # LOCAL_USE_AAPT2
|
|||
# make sure the classes.jar and javalib.jar are built before $(LOCAL_BUILT_MODULE)
|
||||
$(built_module) : $(common_javalib_jar)
|
||||
|
||||
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 $@
|
||||
$(if $(PRIATE_EXPORTED_SDK_LIBS),\
|
||||
$(hide) echo $(PRIVATE_EXPORTED_SDK_LIBS) | tr ' ' '\n' > $@,\
|
||||
$(hide) touch $@)
|
||||
|
||||
endif # ! prebuilt_module_is_dex_javalib
|
||||
endif # LOCAL_IS_HOST_MODULE is not set
|
||||
|
||||
|
|
|
@ -144,3 +144,13 @@ my_2nd_arch_prefix := $(LOCAL_2ND_ARCH_VAR_PREFIX)
|
|||
my_common := COMMON
|
||||
include $(BUILD_SYSTEM)/link_type.mk
|
||||
endif # !LOCAL_IS_HOST_MODULE
|
||||
|
||||
# LOCAL_EXPORT_SDK_LIBRARIES set by soong is written to exported-sdk-libs file
|
||||
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 $@
|
||||
$(if $(PRIVATE_EXPORTED_SDK_LIBS),\
|
||||
$(hide) echo $(PRIVATE_EXPORTED_SDK_LIBS) | tr ' ' '\n' > $@,\
|
||||
$(hide) touch $@)
|
||||
|
|
Loading…
Reference in a new issue