diff --git a/target/product/vndk/Android.mk b/target/product/vndk/Android.mk index 20e843669..e7f07e78d 100644 --- a/target/product/vndk/Android.mk +++ b/target/product/vndk/Android.mk @@ -1,7 +1,101 @@ +ifneq ($(BOARD_VNDK_VERSION),) LOCAL_PATH:= $(call my-dir) -include $(CLEAR_VARS) +##################################################################### +# Setting the VNDK version. Version is 10000.0 for not-yet-published +# platform and xx.y for released platform. +vndk_major_ver := 10000 +vndk_minor_ver := 0 +#TODO(b/68027291): Revive this check when we have stable VNDK in P or later. +#ifneq ($(vndk_major_ver), $(PLATFORM_SDK_VERSION)) +#$(error vndk_major_version does not match PLATFORM_SDK_VERSION, please update.) +#endif + +ifneq (REL,$(PLATFORM_VERSION_CODENAME)) + vndk_major_ver := 10000 + vndk_minor_ver := 0 +endif +PLATFORM_VNDK_VERSION := $(vndk_major_ver).$(vndk_minor_ver) +vndk_major_ver := +vndk_minor_ver := + +##################################################################### +# Create the list of vndk libraries from the source code. +INTERNAL_VNDK_LIB_LIST := $(call intermediates-dir-for,PACKAGING,vndk)/libs.txt +$(INTERNAL_VNDK_LIB_LIST): + @echo "Generate: $@" + @mkdir -p $(dir $@) + $(hide) echo -n > $@ + $(hide) $(foreach lib, $(LLNDK_LIBRARIES), \ + echo LLNDK: $(lib).so >> $@;) + $(hide) $(foreach lib, $(VNDK_SAMEPROCESS_LIBRARIES), \ + echo VNDK-SP: $(lib).so >> $@;) + $(hide) $(foreach lib, $(VNDK_CORE_LIBRARIES), \ + echo VNDK-core: $(lib).so >> $@;) + $(hide) $(foreach lib, $(VNDK_PRIVATE_LIBRARIES), \ + echo VNDK-private: $(lib).so >> $@;) + +##################################################################### +# This is the up-to-date list of vndk libs. +# TODO(b/62012285): the lib list should be stored somewhere under +# /prebuilts/vndk +LATEST_VNDK_LIB_LIST := $(LOCAL_PATH)/$(PLATFORM_VNDK_VERSION).txt + +##################################################################### +# Check the generate list against the latest list stored in the +# source tree +.PHONY: check-vndk-list + +ifeq (REL,$(PLATFORM_VERSION_CODENAME)) +# The check is enforced in release branches +droidcore: check-vndk-list +endif + +check-vndk-list-timestamp := $(call intermediates-dir-for,PACKAGING,vndk)/check-list-timestamp +check-vndk-list: $(check-vndk-list-timestamp) + +_vndk_check_failure_message := "VNDK library list has changed." +ifeq (REL,$(PLATFORM_VERSION_CODENAME) +_vndk_check_failure_message += "This isn't allowed in API locked branches." +else +_vndk_check_failure_message += "Run update-vndk-list.sh to update the list." +endif + +$(check-vndk-list-timestamp): $(INTERNAL_VNDK_LIB_LIST) $(LATEST_VNDK_LIB_LIST) $(HOST_OUT_EXECUTABLES)/update-vndk-list.sh + $(hide) ( diff --old-line-format="Removed %L" \ + --new-line-format="Added %L" \ + --unchanged-line-format="" \ + $(LATEST_VNDK_LIB_LIST) $(INTERNAL_VNDK_LIB_LIST) \ + || ( echo $(_vndk_check_failure_message); exit 1 )) + $(hide) mkdir -p $(dir $@) + $(hide) touch $@ + +##################################################################### +# Script to update the latest VNDK lib list +include $(CLEAR_VARS) +LOCAL_MODULE := update-vndk-list.sh +LOCAL_MODULE_CLASS := EXECUTABLES +LOCAL_MODULE_STEM := $(LOCAL_MODULE) +LOCAL_IS_HOST_MODULE := true +include $(BUILD_SYSTEM)/base_rules.mk +$(LOCAL_BUILT_MODULE): PRIVATE_INTERNAL_VNDK_LIB_LIST := $(INTERNAL_VNDK_LIB_LIST) +$(LOCAL_BUILT_MODULE): PRIVATE_LATEST_VNDK_LIB_LIST := $(LATEST_VNDK_LIB_LIST) +$(LOCAL_BUILT_MODULE): + @echo "Generate: $@" + @mkdir -p $(dir $@) + @rm -f $@ + $(hide) echo "#!/bin/bash" > $@ +ifeq (REL,$(PLATFORM_VERSION_CODENAME)) + $(hide) echo "echo Updating VNDK library list is NOT allowed in API locked branches." >> $@; \ + echo "exit 1" >> $@ +else + $(hide) echo "cp $(PRIVATE_INTERNAL_VNDK_LIB_LIST) $(PRIVATE_LATEST_VNDK_LIB_LIST)" >> $@; \ + echo "echo $(PRIVATE_LATEST_VNDK_LIB_LIST) updated." >> $@ +endif + @chmod a+x $@ + +include $(CLEAR_VARS) LOCAL_MODULE := vndk_package LOCAL_REQUIRED_MODULES := \ $(addsuffix .vendor,$(VNDK_CORE_LIBRARIES)) \ @@ -9,3 +103,4 @@ LOCAL_REQUIRED_MODULES := \ $(LLNDK_LIBRARIES) include $(BUILD_PHONY_PACKAGE) +endif # BOARD_VNDK_VERSION is set