3b6c916194
The list of VNDK libraries that exist in the source tree is compared against the latest known list. If they are different, build breaks. The latest list can be updated by running update-vndk-list.sh but it is allowed only for development branches (i.e. PLATFORM_VERSION_CODENAME != REL). Bug: 67002788 Test: build 2017 pixel devices Test: m check-vndk-list Test: update-vndk-list.sh Change-Id: I4bae2b647c045b11ac7d587fab48067bf53a7cf4
106 lines
3.8 KiB
Makefile
106 lines
3.8 KiB
Makefile
ifneq ($(BOARD_VNDK_VERSION),)
|
|
LOCAL_PATH:= $(call my-dir)
|
|
|
|
#####################################################################
|
|
# 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)) \
|
|
$(addsuffix .vendor,$(VNDK_SAMEPROCESS_LIBRARIES)) \
|
|
$(LLNDK_LIBRARIES)
|
|
|
|
include $(BUILD_PHONY_PACKAGE)
|
|
endif # BOARD_VNDK_VERSION is set
|