Merge "Restore "Linktype check for native:product""

This commit is contained in:
Treehugger Robot
2020-01-22 00:16:50 +00:00
committed by Gerrit Code Review
7 changed files with 87 additions and 35 deletions

View File

@@ -800,22 +800,28 @@ ifdef LOCAL_IS_HOST_MODULE
my_required_modules += $(LOCAL_REQUIRED_MODULES_$($(my_prefix)OS)) my_required_modules += $(LOCAL_REQUIRED_MODULES_$($(my_prefix)OS))
endif endif
############################################################################### ##########################################################################
## When compiling against the VNDK, add the .vendor suffix to required modules. ## When compiling against the VNDK, add the .vendor or .product suffix to
############################################################################### ## required modules.
##########################################################################
ifneq ($(LOCAL_USE_VNDK),) ifneq ($(LOCAL_USE_VNDK),)
#################################################### #####################################################
## Soong modules may be built twice, once for /system ## Soong modules may be built three times, once for
## and once for /vendor. If we're using the VNDK, ## /system, once for /vendor and once for /product.
## switch all soong libraries over to the /vendor ## If we're using the VNDK, switch all soong
## variant. ## libraries over to the /vendor or /product variant.
#################################################### #####################################################
ifneq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK)) ifneq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK))
# We don't do this renaming for soong-defined modules since they already # We don't do this renaming for soong-defined modules since they already
# have correct names (with .vendor suffix when necessary) in their # have correct names (with .vendor or .product suffix when necessary) in
# LOCAL_*_LIBRARIES. # their LOCAL_*_LIBRARIES.
my_required_modules := $(foreach l,$(my_required_modules),\ ifeq ($(LOCAL_USE_VNDK_PRODUCT),true)
$(if $(SPLIT_VENDOR.SHARED_LIBRARIES.$(l)),$(l).vendor,$(l))) my_required_modules := $(foreach l,$(my_required_modules),\
$(if $(SPLIT_PRODUCT.SHARED_LIBRARIES.$(l)),$(l).product,$(l)))
else
my_required_modules := $(foreach l,$(my_required_modules),\
$(if $(SPLIT_VENDOR.SHARED_LIBRARIES.$(l)),$(l).vendor,$(l)))
endif
endif endif
endif endif

View File

@@ -1145,22 +1145,35 @@ endif
## When compiling against the VNDK, use LL-NDK libraries ## When compiling against the VNDK, use LL-NDK libraries
########################################################### ###########################################################
ifneq ($(LOCAL_USE_VNDK),) ifneq ($(LOCAL_USE_VNDK),)
#################################################### #####################################################
## Soong modules may be built twice, once for /system ## Soong modules may be built three times, once for
## and once for /vendor. If we're using the VNDK, ## /system, once for /vendor and once for /product.
## switch all soong libraries over to the /vendor ## If we're using the VNDK, switch all soong
## variant. ## libraries over to the /vendor or /product variant.
#################################################### #####################################################
my_whole_static_libraries := $(foreach l,$(my_whole_static_libraries),\ ifeq ($(LOCAL_USE_VNDK_PRODUCT),true)
$(if $(SPLIT_VENDOR.STATIC_LIBRARIES.$(l)),$(l).vendor,$(l))) my_whole_static_libraries := $(foreach l,$(my_whole_static_libraries),\
my_static_libraries := $(foreach l,$(my_static_libraries),\ $(if $(SPLIT_PRODUCT.STATIC_LIBRARIES.$(l)),$(l).product,$(l)))
$(if $(SPLIT_VENDOR.STATIC_LIBRARIES.$(l)),$(l).vendor,$(l))) my_static_libraries := $(foreach l,$(my_static_libraries),\
my_shared_libraries := $(foreach l,$(my_shared_libraries),\ $(if $(SPLIT_PRODUCT.STATIC_LIBRARIES.$(l)),$(l).product,$(l)))
$(if $(SPLIT_VENDOR.SHARED_LIBRARIES.$(l)),$(l).vendor,$(l))) my_shared_libraries := $(foreach l,$(my_shared_libraries),\
my_system_shared_libraries := $(foreach l,$(my_system_shared_libraries),\ $(if $(SPLIT_PRODUCT.SHARED_LIBRARIES.$(l)),$(l).product,$(l)))
$(if $(SPLIT_VENDOR.SHARED_LIBRARIES.$(l)),$(l).vendor,$(l))) my_system_shared_libraries := $(foreach l,$(my_system_shared_libraries),\
my_header_libraries := $(foreach l,$(my_header_libraries),\ $(if $(SPLIT_PRODUCT.SHARED_LIBRARIES.$(l)),$(l).product,$(l)))
$(if $(SPLIT_VENDOR.HEADER_LIBRARIES.$(l)),$(l).vendor,$(l))) my_header_libraries := $(foreach l,$(my_header_libraries),\
$(if $(SPLIT_PRODUCT.HEADER_LIBRARIES.$(l)),$(l).product,$(l)))
else
my_whole_static_libraries := $(foreach l,$(my_whole_static_libraries),\
$(if $(SPLIT_VENDOR.STATIC_LIBRARIES.$(l)),$(l).vendor,$(l)))
my_static_libraries := $(foreach l,$(my_static_libraries),\
$(if $(SPLIT_VENDOR.STATIC_LIBRARIES.$(l)),$(l).vendor,$(l)))
my_shared_libraries := $(foreach l,$(my_shared_libraries),\
$(if $(SPLIT_VENDOR.SHARED_LIBRARIES.$(l)),$(l).vendor,$(l)))
my_system_shared_libraries := $(foreach l,$(my_system_shared_libraries),\
$(if $(SPLIT_VENDOR.SHARED_LIBRARIES.$(l)),$(l).vendor,$(l)))
my_header_libraries := $(foreach l,$(my_header_libraries),\
$(if $(SPLIT_VENDOR.HEADER_LIBRARIES.$(l)),$(l).vendor,$(l)))
endif
endif endif
# Platform can use vendor public libraries. If a required shared lib is one of # Platform can use vendor public libraries. If a required shared lib is one of
@@ -1207,6 +1220,7 @@ my_warn_types := $(my_warn_ndk_types)
my_allowed_types := $(my_allowed_ndk_types) my_allowed_types := $(my_allowed_ndk_types)
else ifdef LOCAL_USE_VNDK else ifdef LOCAL_USE_VNDK
_name := $(patsubst %.vendor,%,$(LOCAL_MODULE)) _name := $(patsubst %.vendor,%,$(LOCAL_MODULE))
_name := $(patsubst %.product,%,$(LOCAL_MODULE))
ifneq ($(filter $(_name),$(VNDK_CORE_LIBRARIES) $(VNDK_SAMEPROCESS_LIBRARIES) $(LLNDK_LIBRARIES)),) ifneq ($(filter $(_name),$(VNDK_CORE_LIBRARIES) $(VNDK_SAMEPROCESS_LIBRARIES) $(LLNDK_LIBRARIES)),)
ifeq ($(filter $(_name),$(VNDK_PRIVATE_LIBRARIES)),) ifeq ($(filter $(_name),$(VNDK_PRIVATE_LIBRARIES)),)
my_link_type := native:vndk my_link_type := native:vndk
@@ -1215,6 +1229,12 @@ else ifdef LOCAL_USE_VNDK
endif endif
my_warn_types := my_warn_types :=
my_allowed_types := native:vndk native:vndk_private my_allowed_types := native:vndk native:vndk_private
else ifeq ($(LOCAL_USE_VNDK_PRODUCT),true)
# Modules installed to /product cannot directly depend on modules marked
# with vendor_available: false
my_link_type := native:product
my_warn_types :=
my_allowed_types := native:product native:vndk native:platform_vndk
else else
# Modules installed to /vendor cannot directly depend on modules marked # Modules installed to /vendor cannot directly depend on modules marked
# with vendor_available: false # with vendor_available: false

View File

@@ -85,6 +85,7 @@ ifdef LOCAL_SDK_VERSION
my_link_type := native:ndk:$(my_ndk_stl_family):$(my_ndk_stl_link_type) my_link_type := native:ndk:$(my_ndk_stl_family):$(my_ndk_stl_link_type)
else ifdef LOCAL_USE_VNDK else ifdef LOCAL_USE_VNDK
_name := $(patsubst %.vendor,%,$(LOCAL_MODULE)) _name := $(patsubst %.vendor,%,$(LOCAL_MODULE))
_name := $(patsubst %.product,%,$(LOCAL_MODULE))
ifneq ($(filter $(_name),$(VNDK_CORE_LIBRARIES) $(VNDK_SAMEPROCESS_LIBRARIES) $(LLNDK_LIBRARIES)),) ifneq ($(filter $(_name),$(VNDK_CORE_LIBRARIES) $(VNDK_SAMEPROCESS_LIBRARIES) $(LLNDK_LIBRARIES)),)
ifeq ($(filter $(_name),$(VNDK_PRIVATE_LIBRARIES)),) ifeq ($(filter $(_name),$(VNDK_PRIVATE_LIBRARIES)),)
my_link_type := native:vndk my_link_type := native:vndk
@@ -92,7 +93,11 @@ else ifdef LOCAL_USE_VNDK
my_link_type := native:vndk_private my_link_type := native:vndk_private
endif endif
else else
my_link_type := native:vendor ifeq ($(LOCAL_USE_VNDK_PRODUCT),true)
my_link_type := native:product
else
my_link_type := native:vendor
endif
endif endif
else ifneq ($(filter $(TARGET_RECOVERY_OUT)/%,$(LOCAL_MODULE_PATH)),) else ifneq ($(filter $(TARGET_RECOVERY_OUT)/%,$(LOCAL_MODULE_PATH)),)
my_link_type := native:recovery my_link_type := native:recovery
@@ -136,8 +141,13 @@ include $(BUILD_SYSTEM)/cxx_stl_setup.mk
ifdef my_shared_libraries ifdef my_shared_libraries
ifdef LOCAL_USE_VNDK ifdef LOCAL_USE_VNDK
my_shared_libraries := $(foreach l,$(my_shared_libraries),\ ifeq ($(LOCAL_USE_VNDK_PRODUCT),true)
$(if $(SPLIT_VENDOR.SHARED_LIBRARIES.$(l)),$(l).vendor,$(l))) my_shared_libraries := $(foreach l,$(my_shared_libraries),\
$(if $(SPLIT_PRODUCT.SHARED_LIBRARIES.$(l)),$(l).product,$(l)))
else
my_shared_libraries := $(foreach l,$(my_shared_libraries),\
$(if $(SPLIT_VENDOR.SHARED_LIBRARIES.$(l)),$(l).vendor,$(l)))
endif
endif endif
$(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)DEPENDENCIES_ON_SHARED_LIBRARIES += \ $(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)DEPENDENCIES_ON_SHARED_LIBRARIES += \
$(my_register_name):$(LOCAL_INSTALLED_MODULE):$(subst $(space),$(comma),$(my_shared_libraries)) $(my_register_name):$(LOCAL_INSTALLED_MODULE):$(subst $(space),$(comma),$(my_shared_libraries))

View File

@@ -304,6 +304,7 @@ LOCAL_UNSTRIPPED_PATH:=
LOCAL_USE_AAPT2:= LOCAL_USE_AAPT2:=
LOCAL_USE_CLANG_LLD:= LOCAL_USE_CLANG_LLD:=
LOCAL_USE_VNDK:= LOCAL_USE_VNDK:=
LOCAL_USE_VNDK_PRODUCT:=
LOCAL_USES_LIBRARIES:= LOCAL_USES_LIBRARIES:=
LOCAL_VENDOR_MODULE:= LOCAL_VENDOR_MODULE:=
LOCAL_VINTF_FRAGMENTS:= LOCAL_VINTF_FRAGMENTS:=

View File

@@ -106,11 +106,13 @@ ifneq ($(strip $(LOCAL_JNI_SHARED_LIBRARIES)),)
my_allowed_types := $(my_allowed_ndk_types) my_allowed_types := $(my_allowed_ndk_types)
ifneq (,$(filter true,$(LOCAL_VENDOR_MODULE) $(LOCAL_ODM_MODULE) $(LOCAL_PROPRIETARY_MODULE))) ifneq (,$(filter true,$(LOCAL_VENDOR_MODULE) $(LOCAL_ODM_MODULE) $(LOCAL_PROPRIETARY_MODULE)))
my_allowed_types += native:vendor native:vndk native:platform_vndk my_allowed_types += native:vendor native:vndk native:platform_vndk
else ifeq ($(LOCAL_PRODUCT_MODULE),true)
my_allowed_types += native:product native:vndk native:platform_vndk
endif endif
else else
my_link_type := app:platform my_link_type := app:platform
my_warn_types := $(my_warn_ndk_types) my_warn_types := $(my_warn_ndk_types)
my_allowed_types := $(my_allowed_ndk_types) native:platform native:vendor native:vndk native:vndk_private native:platform_vndk my_allowed_types := $(my_allowed_ndk_types) native:platform native:product native:vendor native:vndk native:vndk_private native:platform_vndk
endif endif
my_link_deps := $(addprefix SHARED_LIBRARIES:,$(LOCAL_JNI_SHARED_LIBRARIES)) my_link_deps := $(addprefix SHARED_LIBRARIES:,$(LOCAL_JNI_SHARED_LIBRARIES))

View File

@@ -1,5 +1,5 @@
#Set LOCAL_USE_VNDK for modules going into vendor or odm partition, except for host modules #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 #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_IS_HOST_MODULE
ifndef LOCAL_SDK_VERSION ifndef LOCAL_SDK_VERSION
@@ -8,6 +8,13 @@ ifndef LOCAL_SDK_VERSION
# Note: no need to check LOCAL_MODULE_PATH* since LOCAL_[VENDOR|ODM|OEM]_MODULE is already # Note: no need to check LOCAL_MODULE_PATH* since LOCAL_[VENDOR|ODM|OEM]_MODULE is already
# set correctly before this is included. # set correctly before this is included.
endif 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
endif endif
@@ -33,6 +40,7 @@ ifdef LOCAL_USE_VNDK
# If we're not using the VNDK, drop all restrictions # If we're not using the VNDK, drop all restrictions
ifndef BOARD_VNDK_VERSION ifndef BOARD_VNDK_VERSION
LOCAL_USE_VNDK:= LOCAL_USE_VNDK:=
LOCAL_USE_VNDK_PRODUCT:=
endif endif
endif endif

View File

@@ -75,8 +75,13 @@ endif
ifdef LOCAL_USE_VNDK ifdef LOCAL_USE_VNDK
ifneq ($(LOCAL_VNDK_DEPEND_ON_CORE_VARIANT),true) ifneq ($(LOCAL_VNDK_DEPEND_ON_CORE_VARIANT),true)
name_without_suffix := $(patsubst %.vendor,%,$(LOCAL_MODULE)) name_without_suffix := $(patsubst %.vendor,%,$(LOCAL_MODULE))
ifneq ($(name_without_suffix),$(LOCAL_MODULE) ifneq ($(name_without_suffix),$(LOCAL_MODULE))
SPLIT_VENDOR.$(LOCAL_MODULE_CLASS).$(name_without_suffix) := 1 SPLIT_VENDOR.$(LOCAL_MODULE_CLASS).$(name_without_suffix) := 1
else
name_without_suffix := $(patsubst %.product,%,$(LOCAL_MODULE))
ifneq ($(name_without_suffix),$(LOCAL_MODULE))
SPLIT_PRODUCT.$(LOCAL_MODULE_CLASS).$(name_without_suffix) := 1
endif
endif endif
name_without_suffix := name_without_suffix :=
endif endif