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