From 9272ef87a6996514796a6e1e5870062894c904d1 Mon Sep 17 00:00:00 2001 From: Justin Yun Date: Fri, 17 Nov 2017 16:09:17 +0900 Subject: [PATCH] Check conformity of VNDK version Allow BOARD_VNDK_VERSION= only if the prebuilt VNDK for the is provided. If PRODUCT_EXTRA_VNDK_VERSIONS is set, all the versions in the list will be checked as well. Bug: 38304393 Bug: 65377115 Bug: 68123344 Test: Set BOARD_VNDK_VERSION := current and check build Test: Set PRODUCT_EXTRA_VNDK_VERSIONS := 27 and check if it returns error when prebuilts/vndk/v27/Android.mk is not provided Change-Id: I2e43d71f1ea3717ab8c45de84c926ecc43193307 --- core/envsetup.mk | 11 ++++++++++- core/soong_config.mk | 1 + target/product/vndk/Android.mk | 15 ++++++++++++++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/core/envsetup.mk b/core/envsetup.mk index ddf903c36..c02a5a363 100644 --- a/core/envsetup.mk +++ b/core/envsetup.mk @@ -285,9 +285,14 @@ ifeq ($(AB_OTA_UPDATER),true) endif # Check BOARD_VNDK_VERSION +define check_vndk_version + $(eval vndk_path := prebuilts/vndk/v$(1)) \ + $(if $(wildcard $(vndk_path)/Android.bp),,$(error VNDK version $(1) not found)) +endef + ifdef BOARD_VNDK_VERSION ifneq ($(BOARD_VNDK_VERSION),current) - $(error BOARD_VNDK_VERSION: Only "current" is implemented) + $(call check_vndk_version,$(BOARD_VNDK_VERSION)) endif TARGET_VENDOR_TEST_SUFFIX := /vendor @@ -295,6 +300,10 @@ else TARGET_VENDOR_TEST_SUFFIX := endif +ifdef PRODUCT_EXTRA_VNDK_VERSIONS + $(foreach v,$(PRODUCT_EXTRA_VNDK_VERSIONS),$(call check_vndk_version,$(v))) +endif + # --------------------------------------------------------------- # Set up configuration for target machine. # The following must be set: diff --git a/core/soong_config.mk b/core/soong_config.mk index 3ab6fbdd8..f1f1e0951 100644 --- a/core/soong_config.mk +++ b/core/soong_config.mk @@ -112,6 +112,7 @@ $(call add_json_list, DeviceKernelHeaders, $(TARGET_PROJECT_SYSTEM $(call add_json_bool, DevicePrefer32BitExecutables, $(filter true,$(TARGET_PREFER_32_BIT_EXECUTABLES))) $(call add_json_val, DeviceUsesClang, $(if $(USE_CLANG_PLATFORM_BUILD),$(USE_CLANG_PLATFORM_BUILD),false)) $(call add_json_str, DeviceVndkVersion, $(BOARD_VNDK_VERSION)) +$(call add_json_list, ExtraVndkVersions, $(PRODUCT_EXTRA_VNDK_VERSIONS)) $(call add_json_bool, Malloc_not_svelte, $(call invert_bool,$(filter true,$(MALLOC_SVELTE)))) $(call add_json_str, Override_rs_driver, $(OVERRIDE_RS_DRIVER)) $(call add_json_bool, Treble, $(filter true,$(PRODUCT_FULL_TREBLE))) diff --git a/target/product/vndk/Android.mk b/target/product/vndk/Android.mk index 6e8a85ff1..d2d956282 100644 --- a/target/product/vndk/Android.mk +++ b/target/product/vndk/Android.mk @@ -96,7 +96,7 @@ endif @chmod a+x $@ include $(CLEAR_VARS) -LOCAL_MODULE := vndk_package +LOCAL_MODULE := vndk_current LOCAL_REQUIRED_MODULES := \ $(addsuffix .vendor,$(VNDK_CORE_LIBRARIES)) \ $(addsuffix .vendor,$(VNDK_SAMEPROCESS_LIBRARIES)) \ @@ -105,4 +105,17 @@ LOCAL_REQUIRED_MODULES := \ vndksp.libraries.txt include $(BUILD_PHONY_PACKAGE) + +include $(CLEAR_VARS) +LOCAL_MODULE := vndk_package +ifeq (current,$(BOARD_VNDK_VERSION)) +LOCAL_REQUIRED_MODULES := \ + vndk_current +else +LOCAL_REQUIRED_MODULES := \ + vndk_v$(BOARD_VNDK_VERSION) +endif +LOCAL_REQUIRED_MODULES += \ + $(foreach vndk_ver,$(PRODUCT_EXTRA_VNDK_VERSIONS),vndk_v$(vndk_ver)) +include $(BUILD_PHONY_PACKAGE) endif # BOARD_VNDK_VERSION is set