Handle multiple linkages in sdk snapshots

Currently, if the same library is specified for multiple of native_libs,
native_shared_libs, and native_static_libs for different arch/oses,
there can be a few errors:

1. specifying a .so file as `srcs` within a cc_prebuilt_library rather
than being specified only for shared
2. the final type of prebuilt library is dependent on the arch/os

This change introduces:
* an ability for a member type to override the type for specified
  properties
  * checks for a library being used with incompatible member types
  * basing linkage nesting on the member type in addition to variants

  This will ensure that the correct library type is used, regardless of
  the order of iteration over oses/arches, and support nesting linkages
  where necessary but only one linkage variant exists.

Test: soong tests
Test: CI
Change-Id: I81dee013b09b99c34ca6c18f9cfcc12ee56d33d1
This commit is contained in:
Liz Kammer
2022-05-12 20:40:00 -04:00
parent 4dd76eb26c
commit 96320dfff8
5 changed files with 285 additions and 22 deletions

View File

@@ -37,7 +37,6 @@ var ccObjectSdkMemberType = &librarySdkMemberType{
SupportsSdk: true,
},
prebuiltModuleType: "cc_prebuilt_object",
linkTypes: nil,
}
type objectLinker struct {