summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/clear_vars.mk1
-rw-r--r--core/package.mk23
2 files changed, 24 insertions, 0 deletions
diff --git a/core/clear_vars.mk b/core/clear_vars.mk
index 81a9493..8d84814 100644
--- a/core/clear_vars.mk
+++ b/core/clear_vars.mk
@@ -135,6 +135,7 @@ LOCAL_DONT_DELETE_JAR_META_INF:=
LOCAL_ADDITIONAL_CERTIFICATES:=
LOCAL_PREBUILT_MODULE_FILE:=
LOCAL_POST_INSTALL_CMD:=
+LOCAL_DIST_BUNDLED_BINARIES:=
# Trim MAKEFILE_LIST so that $(call my-dir) doesn't need to
# iterate over thousands of entries every time.
diff --git a/core/package.mk b/core/package.mk
index 25af8da..2012351 100644
--- a/core/package.mk
+++ b/core/package.mk
@@ -447,6 +447,29 @@ endif
PACKAGES := $(PACKAGES) $(LOCAL_PACKAGE_NAME)
+# Dist the files that can be bundled in system.img.
+# They include the jni shared libraries and the apk with jni libraries stripped.
+ifeq ($(LOCAL_DIST_BUNDLED_BINARIES),true)
+ifneq ($(filter $(LOCAL_PACKAGE_NAME),$(TARGET_BUILD_APPS)),)
+ifneq ($(strip $(jni_shared_libraries)),)
+dist_subdir := bundled_$(LOCAL_PACKAGE_NAME)
+$(foreach f, $(jni_shared_libraries), \
+ $(call dist-for-goals, apps_only, $(f):$(dist_subdir)/$(notdir $(f))))
+
+apk_jni_stripped := $(intermediates)/jni_stripped/package.apk
+$(apk_jni_stripped): PRIVATE_JNI_SHARED_LIBRARIES := $(notdir $(jni_shared_libraries))
+$(apk_jni_stripped) : $(LOCAL_BUILT_MODULE) | $(ZIPALIGN)
+ @rm -rf $(dir $@) && mkdir -p $(dir $@)
+ $(hide) cp $< $@
+ $(hide) zip -d $@ $(foreach f,$(PRIVATE_JNI_SHARED_LIBRARIES),\*/$(f))
+ $(call align-package)
+
+$(call dist-for-goals, apps_only, $(apk_jni_stripped):$(dist_subdir)/$(LOCAL_PACKAGE_NAME).apk)
+
+endif # jni_shared_libraries
+endif # apps_only build
+endif # LOCAL_DIST_BUNDLED_BINARIES
+
# Lint phony targets
.PHONY: lint-$(LOCAL_PACKAGE_NAME)
lint-$(LOCAL_PACKAGE_NAME): PRIVATE_PATH := $(LOCAL_PATH)