vndk-def: Exclude vndk-sp/vndk from ndk-indirect

am: bee6237c3e

Change-Id: Ifc4e746155eefdba4dc879a63cb66b68aba6dfc4
This commit is contained in:
Logan Chien
2017-06-09 04:02:33 +00:00
committed by android-build-merger

View File

@@ -1282,21 +1282,8 @@ class ELFLinker(object):
action_ineligible_vndk='follow,warn'):
# Find LL-NDK and SP-NDK libs.
ll_ndk = set(lib for lib in self.all_libs() if lib.is_ll_ndk)
def is_not_ll_ndk_indirect(lib):
return lib.is_ll_ndk
ll_ndk_indirect = self.compute_closure(ll_ndk, is_not_ll_ndk_indirect)
ll_ndk_indirect -= ll_ndk
sp_ndk = set(lib for lib in self.all_libs() if lib.is_sp_ndk)
def is_not_sp_ndk_indirect(lib):
return lib.is_ll_ndk or lib.is_sp_ndk or lib in ll_ndk_indirect
sp_ndk_indirect = self.compute_closure(sp_ndk, is_not_sp_ndk_indirect)
sp_ndk_indirect -= sp_ndk
# Find SP-HAL libs.
sp_hal = self.compute_predefined_sp_hal()
@@ -1383,6 +1370,12 @@ class ELFLinker(object):
extra_vndk_sp_indirect = vndk_sp - predefined_vndk_sp - \
predefined_vndk_sp_indirect
def is_vndk_sp(lib):
return lib in vndk_sp or lib in vndk_sp_unused or \
lib in vndk_sp_indirect or \
lib in vndk_sp_indirect_unused or \
lib in vndk_sp_indirect_private
# Find VNDK libs (a.k.a. system shared libs directly used by vendor
# partition.)
def is_not_vndk(lib):
@@ -1417,6 +1410,9 @@ class ELFLinker(object):
vndk_indirect = self.compute_closure(vndk, is_not_vndk)
vndk_indirect -= vndk
def is_vndk(lib):
return lib in vndk or lib in vndk_indirect
# Compute the extended usages from vendor partition.
# FIXME: DAUX libraries won't be found by the following algorithm.
vndk_ext = set()
@@ -1435,6 +1431,21 @@ class ELFLinker(object):
vndk_ext |= candidates
candidates = collect_vndk_ext(candidates)
# Compute LL-NDK-Indirect and SP-NDK-Indirect.
def is_not_ll_ndk_indirect(lib):
return lib.is_ll_ndk or is_vndk_sp(lib) or is_vndk(lib)
ll_ndk_indirect = self.compute_closure(ll_ndk, is_not_ll_ndk_indirect)
ll_ndk_indirect -= ll_ndk
def is_not_sp_ndk_indirect(lib):
return lib.is_ll_ndk or lib.is_sp_ndk or lib in ll_ndk_indirect or \
is_vndk_sp(lib) or is_vndk(lib)
sp_ndk_indirect = self.compute_closure(sp_ndk, is_not_sp_ndk_indirect)
sp_ndk_indirect -= sp_ndk
# Return the VNDK classifications.
return VNDKResult(
ll_ndk=ll_ndk,
ll_ndk_indirect=ll_ndk_indirect,