From 454265c233678c5025a7a2ed45a2e6c604460baa Mon Sep 17 00:00:00 2001 From: Kiyoung Kim Date: Mon, 5 Feb 2024 10:22:04 +0900 Subject: [PATCH] Reapply "Rename LOCAL_USE_VNDK" LOCAL_USE_VNDK property refers if the module uses VNDK, and this property is being used to check if the module is installed in vendor or product. However, the term no longer makes sense with VNDK deprecation, so it should be renamed. Similar to change in aosp/2897612, rename LOCAL_USE_VNDK as LOCAL_IN_VENDOR or LOCAL_IN_PRODUCT. Bug: 316829758 Test: AOSP CF build succeeded Change-Id: I2da2e2027ccabbcfbb444abc6828addeb3b22e13 --- core/autogen_test_config.mk | 2 +- core/base_rules.mk | 10 ++++---- core/binary.mk | 28 +++++++++++----------- core/cc_prebuilt_internal.mk | 12 +++++----- core/clear_vars.mk | 3 ++- core/copy_headers.mk | 11 ++++----- core/definitions.mk | 4 ++++ core/executable_internal.mk | 2 +- core/local_vendor_product.mk | 22 ++++++++++++++++++ core/local_vndk.mk | 41 --------------------------------- core/shared_library_internal.mk | 2 +- core/soong_cc_rust_prebuilt.mk | 10 ++++---- 12 files changed, 66 insertions(+), 81 deletions(-) create mode 100644 core/local_vendor_product.mk delete mode 100644 core/local_vndk.mk diff --git a/core/autogen_test_config.mk b/core/autogen_test_config.mk index 137b1185ab..b69f6945c1 100644 --- a/core/autogen_test_config.mk +++ b/core/autogen_test_config.mk @@ -29,7 +29,7 @@ ifeq (true,$(is_native)) ifeq (true,$(LOCAL_VENDOR_MODULE)) autogen_test_install_base = /data/local/tests/vendor endif - ifeq (true,$(LOCAL_USE_VNDK)) + ifeq (true,$(call module-in-vendor-or-product)) autogen_test_install_base = /data/local/tests/vendor endif endif diff --git a/core/base_rules.mk b/core/base_rules.mk index 44e1c7a058..07e1afbf4f 100644 --- a/core/base_rules.mk +++ b/core/base_rules.mk @@ -120,7 +120,7 @@ non_system_module := $(filter true, \ $(LOCAL_VENDOR_MODULE) \ $(LOCAL_PROPRIETARY_MODULE)) -include $(BUILD_SYSTEM)/local_vndk.mk +include $(BUILD_SYSTEM)/local_vendor_product.mk # local_current_sdk needs to run before local_systemsdk because the former may override # LOCAL_SDK_VERSION which is used by the latter. @@ -1095,10 +1095,10 @@ endif ## When compiling against API imported module, use API import stub ## libraries. ########################################################################## -ifneq ($(LOCAL_USE_VNDK),) +ifneq ($(call module-in-vendor-or-product),) ifneq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK)) apiimport_postfix := .apiimport - ifeq ($(LOCAL_USE_VNDK_PRODUCT),true) + ifeq ($(LOCAL_IN_PRODUCT),true) apiimport_postfix := .apiimport.product else apiimport_postfix := .apiimport.vendor @@ -1113,7 +1113,7 @@ endif ## When compiling against the VNDK, add the .vendor or .product suffix to ## required modules. ########################################################################## -ifneq ($(LOCAL_USE_VNDK),) +ifneq ($(call module-in-vendor-or-product),) ##################################################### ## Soong modules may be built three times, once for ## /system, once for /vendor and once for /product. @@ -1124,7 +1124,7 @@ ifneq ($(LOCAL_USE_VNDK),) # We don't do this renaming for soong-defined modules since they already # have correct names (with .vendor or .product suffix when necessary) in # their LOCAL_*_LIBRARIES. - ifeq ($(LOCAL_USE_VNDK_PRODUCT),true) + ifeq ($(LOCAL_IN_PRODUCT),true) my_required_modules := $(foreach l,$(my_required_modules),\ $(if $(SPLIT_PRODUCT.SHARED_LIBRARIES.$(l)),$(l).product,$(l))) else diff --git a/core/binary.mk b/core/binary.mk index d872b66340..6dab49ca44 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -332,10 +332,10 @@ ifeq ($(CLANG_COVERAGE),true) endif endif -ifneq ($(LOCAL_USE_VNDK),) +ifneq ($(call module-in-vendor-or-product),) my_cflags += -D__ANDROID_VNDK__ - ifneq ($(LOCAL_USE_VNDK_VENDOR),) - # Vendor modules have LOCAL_USE_VNDK_VENDOR + ifneq ($(LOCAL_IN_VENDOR),) + # Vendor modules have LOCAL_IN_VENDOR my_cflags += -D__ANDROID_VENDOR__ ifeq ($(BOARD_API_LEVEL),) @@ -345,8 +345,8 @@ ifneq ($(LOCAL_USE_VNDK),) else my_cflags += -D__ANDROID_VENDOR_API__=$(BOARD_API_LEVEL) endif - else ifneq ($(LOCAL_USE_VNDK_PRODUCT),) - # Product modules have LOCAL_USE_VNDK_PRODUCT + else ifneq ($(LOCAL_IN_PRODUCT),) + # Product modules have LOCAL_IN_PRODUCT my_cflags += -D__ANDROID_PRODUCT__ endif endif @@ -1174,8 +1174,8 @@ endif apiimport_postfix := .apiimport -ifneq ($(LOCAL_USE_VNDK),) - ifeq ($(LOCAL_USE_VNDK_PRODUCT),true) +ifneq ($(call module-in-vendor-or-product),) + ifeq ($(LOCAL_IN_PRODUCT),true) apiimport_postfix := .apiimport.product else apiimport_postfix := .apiimport.vendor @@ -1192,14 +1192,14 @@ my_header_libraries := $(foreach l,$(my_header_libraries), \ ########################################################### ## When compiling against the VNDK, use LL-NDK libraries ########################################################### -ifneq ($(LOCAL_USE_VNDK),) +ifneq ($(call module-in-vendor-or-product),) ##################################################### ## Soong modules may be built three times, once for ## /system, once for /vendor and once for /product. ## If we're using the VNDK, switch all soong ## libraries over to the /vendor or /product variant. ##################################################### - ifeq ($(LOCAL_USE_VNDK_PRODUCT),true) + ifeq ($(LOCAL_IN_PRODUCT),true) my_whole_static_libraries := $(foreach l,$(my_whole_static_libraries),\ $(if $(SPLIT_PRODUCT.STATIC_LIBRARIES.$(l)),$(l).product,$(l))) my_static_libraries := $(foreach l,$(my_static_libraries),\ @@ -1226,7 +1226,7 @@ endif # Platform can use vendor public libraries. If a required shared lib is one of # the vendor public libraries, the lib is switched to the stub version of the lib. -ifeq ($(LOCAL_USE_VNDK),) +ifeq ($(call module-in-vendor-or-product),) my_shared_libraries := $(foreach l,$(my_shared_libraries),\ $(if $(filter $(l),$(VENDOR_PUBLIC_LIBRARIES)),$(l).vendorpublic,$(l))) endif @@ -1278,7 +1278,7 @@ ifdef LOCAL_SDK_VERSION my_link_type := native:ndk:$(my_ndk_stl_family):$(my_ndk_stl_link_type) my_warn_types := $(my_warn_ndk_types) my_allowed_types := $(my_allowed_ndk_types) -else ifdef LOCAL_USE_VNDK +else ifeq ($(call module-in-vendor-or-product),true) _name := $(patsubst %.vendor,%,$(LOCAL_MODULE)) _name := $(patsubst %.product,%,$(LOCAL_MODULE)) ifneq ($(filter $(_name),$(VNDK_CORE_LIBRARIES) $(VNDK_SAMEPROCESS_LIBRARIES) $(LLNDK_LIBRARIES)),) @@ -1289,7 +1289,7 @@ else ifdef LOCAL_USE_VNDK endif my_warn_types := my_allowed_types := native:vndk native:vndk_private - else ifeq ($(LOCAL_USE_VNDK_PRODUCT),true) + else ifeq ($(LOCAL_IN_PRODUCT),true) # Modules installed to /product cannot directly depend on modules marked # with vendor_available: false my_link_type := native:product @@ -1592,7 +1592,7 @@ my_ldlibs += $(my_cxx_ldlibs) ########################################################### ifndef LOCAL_IS_HOST_MODULE -ifdef LOCAL_USE_VNDK +ifeq ($(call module-in-vendor-or-product),true) my_target_global_c_includes := my_target_global_c_system_includes := $(TARGET_OUT_HEADERS) else ifdef LOCAL_SDK_VERSION @@ -1686,7 +1686,7 @@ endif #################################################### imported_includes := -ifdef LOCAL_USE_VNDK +ifeq (true,$(call module-in-vendor-or-product)) imported_includes += $(call intermediates-dir-for,HEADER_LIBRARIES,device_kernel_headers,$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross)) else # everything else should manually specify headers diff --git a/core/cc_prebuilt_internal.mk b/core/cc_prebuilt_internal.mk index 000159adfc..e34e110953 100644 --- a/core/cc_prebuilt_internal.mk +++ b/core/cc_prebuilt_internal.mk @@ -80,7 +80,7 @@ include $(BUILD_SYSTEM)/allowed_ndk_types.mk ifdef LOCAL_SDK_VERSION my_link_type := native:ndk:$(my_ndk_stl_family):$(my_ndk_stl_link_type) -else ifdef LOCAL_USE_VNDK +else ifeq ($(call module-in-vendor-or-product),true) _name := $(patsubst %.vendor,%,$(LOCAL_MODULE)) _name := $(patsubst %.product,%,$(LOCAL_MODULE)) ifneq ($(filter $(_name),$(VNDK_CORE_LIBRARIES) $(VNDK_SAMEPROCESS_LIBRARIES) $(LLNDK_LIBRARIES)),) @@ -90,7 +90,7 @@ else ifdef LOCAL_USE_VNDK my_link_type := native:vndk_private endif else - ifeq ($(LOCAL_USE_VNDK_PRODUCT),true) + ifeq ($(LOCAL_IN_PRODUCT),true) my_link_type := native:product else my_link_type := native:vendor @@ -139,8 +139,8 @@ include $(BUILD_SYSTEM)/cxx_stl_setup.mk # When compiling against API imported module, use API import stub libraries. apiimport_postfix := .apiimport -ifneq ($(LOCAL_USE_VNDK),) - ifeq ($(LOCAL_USE_VNDK_PRODUCT),true) +ifeq ($(call module-in-vendor-or-product),true) + ifeq ($(LOCAL_IN_PRODUCT),true) apiimport_postfix := .apiimport.product else apiimport_postfix := .apiimport.vendor @@ -158,8 +158,8 @@ my_system_shared_libraries := $(foreach l,$(my_system_shared_libraries), \ endif #my_system_shared_libraries ifdef my_shared_libraries -ifdef LOCAL_USE_VNDK - ifeq ($(LOCAL_USE_VNDK_PRODUCT),true) +ifeq ($(call module-in-vendor-or-product),true) + ifeq ($(LOCAL_IN_PRODUCT),true) my_shared_libraries := $(foreach l,$(my_shared_libraries),\ $(if $(SPLIT_PRODUCT.SHARED_LIBRARIES.$(l)),$(l).product,$(l))) else diff --git a/core/clear_vars.mk b/core/clear_vars.mk index 8d99176ca4..013678456e 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -304,7 +304,8 @@ LOCAL_UNSTRIPPED_PATH:= LOCAL_USE_AAPT2:= LOCAL_USE_CLANG_LLD:= LOCAL_USE_VNDK:= -LOCAL_USE_VNDK_PRODUCT:= +LOCAL_IN_VENDOR:= +LOCAL_IN_PRODUCT:= LOCAL_USES_LIBRARIES:= LOCAL_VENDOR_MODULE:= LOCAL_VINTF_FRAGMENTS:= diff --git a/core/copy_headers.mk b/core/copy_headers.mk index c457eb0a42..397ea629a9 100644 --- a/core/copy_headers.mk +++ b/core/copy_headers.mk @@ -13,13 +13,12 @@ ifdef LOCAL_SDK_VERSION $(call pretty-error,Modules using LOCAL_SDK_VERSION may not use LOCAL_COPY_HEADERS) endif -include $(BUILD_SYSTEM)/local_vndk.mk +include $(BUILD_SYSTEM)/local_vendor_product.mk -# If we're using the VNDK, only vendor modules using the VNDK may use -# LOCAL_COPY_HEADERS. Platform libraries will not have the include path -# present. -ifndef LOCAL_USE_VNDK - $(call pretty-error,Only vendor modules using LOCAL_USE_VNDK may use LOCAL_COPY_HEADERS) +# Modules in vendor or product may use LOCAL_COPY_HEADERS. +# Platform libraries will not have the include path present. +ifeq ($(call module-in-vendor-or-product),) + $(call pretty-error,Only modules in vendor or product may use LOCAL_COPY_HEADERS) endif # Clean up LOCAL_COPY_HEADERS_TO, since soong_ui will be comparing cleaned diff --git a/core/definitions.mk b/core/definitions.mk index ed842bc021..40b798013d 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -2774,6 +2774,10 @@ define module-min-sdk-version $(if $(LOCAL_MIN_SDK_VERSION),$(LOCAL_MIN_SDK_VERSION),$(call module-target-sdk-version)) endef +# Checks if module is in vendor or product +define module-in-vendor-or-product +$(if $(filter true,$(LOCAL_IN_VENDOR) $(LOCAL_IN_PRODUCT)),true) +endef define transform-classes.jar-to-dex @echo "target Dex: $(PRIVATE_MODULE)" diff --git a/core/executable_internal.mk b/core/executable_internal.mk index fb14ccea41..fecf4f6a28 100644 --- a/core/executable_internal.mk +++ b/core/executable_internal.mk @@ -45,7 +45,7 @@ ifeq ($(LOCAL_NO_CRT),true) my_target_crtbegin_dynamic_o := my_target_crtbegin_static_o := my_target_crtend_o := -else ifdef LOCAL_USE_VNDK +else ifeq (true,$(call module-in-vendor-or-product)) my_target_crtbegin_dynamic_o := $(SOONG_$(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_OBJECT_crtbegin_dynamic.vendor) my_target_crtbegin_static_o := $(SOONG_$(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_OBJECT_crtbegin_static.vendor) my_target_crtend_o := $(SOONG_$(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_OBJECT_crtend_android.vendor) diff --git a/core/local_vendor_product.mk b/core/local_vendor_product.mk new file mode 100644 index 0000000000..75982cd238 --- /dev/null +++ b/core/local_vendor_product.mk @@ -0,0 +1,22 @@ +# LOCAL_USE_VNDK is not the variable which set by module directly, but there are some modules do so. +# Set those as LOCAL_IN_VENDOR to make those modules work as expected. +ifeq (true,$(LOCAL_USE_VNDK)) + $(warning LOCAL_USE_VNDK must not be used. Please use LOCAL_VENDOR_MODULE or LOCAL_PRODUCT_MODULE instead.) + LOCAL_IN_VENDOR:=true +endif + +# Set LOCAL_IN_VENDOR for modules going into vendor or odm partition and LOCAL_IN_PRODUCT for product +# except for host modules. If LOCAL_SDK_VERSION is set, thats a more restrictive set, so they don't need +# LOCAL_IN_VENDOR or LOCAL_IN_PRODUCT +ifndef LOCAL_IS_HOST_MODULE +ifndef LOCAL_SDK_VERSION + ifneq (,$(filter true,$(LOCAL_VENDOR_MODULE) $(LOCAL_ODM_MODULE) $(LOCAL_OEM_MODULE) $(LOCAL_PROPRIETARY_MODULE))) + LOCAL_IN_VENDOR:=true + # Note: no need to check LOCAL_MODULE_PATH* since LOCAL_[VENDOR|ODM|OEM]_MODULE is already + # set correctly before this is included. + endif + ifeq (true,$(LOCAL_PRODUCT_MODULE)) + LOCAL_IN_PRODUCT:=true + endif +endif +endif diff --git a/core/local_vndk.mk b/core/local_vndk.mk deleted file mode 100644 index eb8f2c0a15..0000000000 --- a/core/local_vndk.mk +++ /dev/null @@ -1,41 +0,0 @@ - -#Set LOCAL_USE_VNDK for modules going into product, vendor or odm partition, except for host modules -#If LOCAL_SDK_VERSION is set, thats a more restrictive set, so they dont need LOCAL_USE_VNDK -ifndef LOCAL_IS_HOST_MODULE -ifndef LOCAL_SDK_VERSION - ifneq (,$(filter true,$(LOCAL_VENDOR_MODULE) $(LOCAL_ODM_MODULE) $(LOCAL_OEM_MODULE) $(LOCAL_PROPRIETARY_MODULE))) - LOCAL_USE_VNDK:=true - LOCAL_USE_VNDK_VENDOR:=true - # Note: no need to check LOCAL_MODULE_PATH* since LOCAL_[VENDOR|ODM|OEM]_MODULE is already - # set correctly before this is included. - endif - ifdef PRODUCT_PRODUCT_VNDK_VERSION - # Product modules also use VNDK when PRODUCT_PRODUCT_VNDK_VERSION is defined. - ifeq (true,$(LOCAL_PRODUCT_MODULE)) - LOCAL_USE_VNDK:=true - LOCAL_USE_VNDK_PRODUCT:=true - endif - endif -endif -endif - -# Verify LOCAL_USE_VNDK usage, and set LOCAL_SDK_VERSION if necessary - -ifdef LOCAL_IS_HOST_MODULE - ifdef LOCAL_USE_VNDK - $(shell echo $(LOCAL_MODULE_MAKEFILE): $(LOCAL_MODULE): Do not use LOCAL_USE_VNDK with host modules >&2) - $(error done) - endif -endif -ifdef LOCAL_USE_VNDK - ifneq ($(LOCAL_USE_VNDK),true) - $(shell echo '$(LOCAL_MODULE_MAKEFILE): $(LOCAL_MODULE): LOCAL_USE_VNDK must be "true" or empty, not "$(LOCAL_USE_VNDK)"' >&2) - $(error done) - endif - - ifdef LOCAL_SDK_VERSION - $(shell echo $(LOCAL_MODULE_MAKEFILE): $(LOCAL_MODULE): LOCAL_USE_VNDK must not be used with LOCAL_SDK_VERSION >&2) - $(error done) - endif -endif - diff --git a/core/shared_library_internal.mk b/core/shared_library_internal.mk index 139de1077d..2f510d9b30 100644 --- a/core/shared_library_internal.mk +++ b/core/shared_library_internal.mk @@ -42,7 +42,7 @@ endif ifeq ($(LOCAL_NO_CRT),true) my_target_crtbegin_so_o := my_target_crtend_so_o := -else ifdef LOCAL_USE_VNDK +else ifeq ($(call module-in-vendor-or-product),true) my_target_crtbegin_so_o := $(SOONG_$(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_OBJECT_crtbegin_so.vendor) my_target_crtend_so_o := $(SOONG_$(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_OBJECT_crtend_so.vendor) else diff --git a/core/soong_cc_rust_prebuilt.mk b/core/soong_cc_rust_prebuilt.mk index 94e1115645..943ed30b24 100644 --- a/core/soong_cc_rust_prebuilt.mk +++ b/core/soong_cc_rust_prebuilt.mk @@ -99,7 +99,7 @@ ifneq ($(filter STATIC_LIBRARIES SHARED_LIBRARIES RLIB_LIBRARIES DYLIB_LIBRARIES include $(BUILD_SYSTEM)/link_type.mk endif -ifdef LOCAL_USE_VNDK +ifeq ($(call module-in-vendor-or-product),true) ifneq ($(LOCAL_VNDK_DEPEND_ON_CORE_VARIANT),true) name_without_suffix := $(patsubst %.vendor,%,$(LOCAL_MODULE)) ifneq ($(name_without_suffix),$(LOCAL_MODULE)) @@ -128,8 +128,8 @@ endif ifdef LOCAL_INSTALLED_MODULE ifdef LOCAL_SHARED_LIBRARIES my_shared_libraries := $(LOCAL_SHARED_LIBRARIES) - ifdef LOCAL_USE_VNDK - ifdef LOCAL_USE_VNDK_PRODUCT + ifeq ($(call module-in-vendor-or-product),true) + ifdef LOCAL_IN_PRODUCT my_shared_libraries := $(foreach l,$(my_shared_libraries),\ $(if $(SPLIT_PRODUCT.SHARED_LIBRARIES.$(l)),$(l).product,$(l))) else @@ -143,8 +143,8 @@ ifdef LOCAL_INSTALLED_MODULE ifdef LOCAL_DYLIB_LIBRARIES my_dylibs := $(LOCAL_DYLIB_LIBRARIES) # Treat these as shared library dependencies for installation purposes. - ifdef LOCAL_USE_VNDK - ifdef LOCAL_USE_VNDK_PRODUCT + ifeq ($(call module-in-vendor-or-product),true) + ifdef LOCAL_IN_PRODUCT my_dylibs := $(foreach l,$(my_dylibs),\ $(if $(SPLIT_PRODUCT.SHARED_LIBRARIES.$(l)),$(l).product,$(l))) else