aboutsummaryrefslogtreecommitdiffstats
path: root/cc/vndk.go
diff options
context:
space:
mode:
Diffstat (limited to 'cc/vndk.go')
-rw-r--r--cc/vndk.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/cc/vndk.go b/cc/vndk.go
index fd1bdcb5..2e6ac137 100644
--- a/cc/vndk.go
+++ b/cc/vndk.go
@@ -15,6 +15,9 @@
package cc
import (
+ "strings"
+ "sync"
+
"android/soong/android"
)
@@ -96,3 +99,38 @@ func (vndk *vndkdep) vndkCheckLinkType(ctx android.ModuleContext, to *Module) {
return
}
}
+
+var (
+ vndkCoreLibraries []string
+ vndkSpLibraries []string
+ llndkLibraries []string
+ vndkLibrariesLock sync.Mutex
+)
+
+// gather list of vndk-core, vndk-sp, and ll-ndk libs
+func vndkMutator(mctx android.BottomUpMutatorContext) {
+ if m, ok := mctx.Module().(*Module); ok {
+ if _, ok := m.linker.(*llndkStubDecorator); ok {
+ vndkLibrariesLock.Lock()
+ defer vndkLibrariesLock.Unlock()
+ name := strings.TrimSuffix(m.Name(), llndkLibrarySuffix)
+ if !inList(name, llndkLibraries) {
+ llndkLibraries = append(llndkLibraries, name)
+ }
+ } else if lib, ok := m.linker.(*libraryDecorator); ok && lib.shared() {
+ if m.vndkdep.isVndk() {
+ vndkLibrariesLock.Lock()
+ defer vndkLibrariesLock.Unlock()
+ if m.vndkdep.isVndkSp() {
+ if !inList(m.Name(), vndkSpLibraries) {
+ vndkSpLibraries = append(vndkSpLibraries, m.Name())
+ }
+ } else {
+ if !inList(m.Name(), vndkCoreLibraries) {
+ vndkCoreLibraries = append(vndkCoreLibraries, m.Name())
+ }
+ }
+ }
+ }
+ }
+}