No NDK libraries in clang-tidy pathDeps
Bug: 208310402
Test: WITH_TIDY=1 make tidy-soong
Change-Id: I530fc23a1f6215b8c7f8f2bfcb235d6f58c2a702
diff --git a/cc/ndk_sysroot.go b/cc/ndk_sysroot.go
index fd458d9..ee11db1 100644
--- a/cc/ndk_sysroot.go
+++ b/cc/ndk_sysroot.go
@@ -82,12 +82,33 @@
return android.PathForOutput(ctx, "ndk_base.timestamp")
}
+// The headers timestamp file depends only on the NDK headers.
+// This is used mainly for .tidy files that do not need any stub libraries.
+func getNdkHeadersTimestampFile(ctx android.PathContext) android.WritablePath {
+ return android.PathForOutput(ctx, "ndk_headers.timestamp")
+}
+
// The full timestamp file depends on the base timestamp *and* the static
// libraries.
func getNdkFullTimestampFile(ctx android.PathContext) android.WritablePath {
return android.PathForOutput(ctx, "ndk.timestamp")
}
+// Replace ndk_base.timestamp and ndk.timestamp with ndk_headers.timestamp.
+func skipNdkLibraryDeps(ctx android.ModuleContext, paths android.Paths) android.Paths {
+ var newPaths android.Paths
+ baseTimestamp := getNdkBaseTimestampFile(ctx)
+ fullTimestamp := getNdkFullTimestampFile(ctx)
+ headersTimestamp := getNdkHeadersTimestampFile(ctx)
+ for _, path := range paths {
+ if path == baseTimestamp || path == fullTimestamp {
+ path = headersTimestamp
+ }
+ newPaths = append(newPaths, path)
+ }
+ return newPaths
+}
+
func NdkSingleton() android.Singleton {
return &ndkSingleton{}
}
@@ -96,6 +117,7 @@
func (n *ndkSingleton) GenerateBuildActions(ctx android.SingletonContext) {
var staticLibInstallPaths android.Paths
+ var headerPaths android.Paths
var installPaths android.Paths
var licensePaths android.Paths
ctx.VisitAllModules(func(module android.Module) {
@@ -104,16 +126,19 @@
}
if m, ok := module.(*headerModule); ok {
+ headerPaths = append(headerPaths, m.installPaths...)
installPaths = append(installPaths, m.installPaths...)
licensePaths = append(licensePaths, m.licensePath)
}
if m, ok := module.(*versionedHeaderModule); ok {
+ headerPaths = append(headerPaths, m.installPaths...)
installPaths = append(installPaths, m.installPaths...)
licensePaths = append(licensePaths, m.licensePath)
}
if m, ok := module.(*preprocessedHeadersModule); ok {
+ headerPaths = append(headerPaths, m.installPaths...)
installPaths = append(installPaths, m.installPaths...)
licensePaths = append(licensePaths, m.licensePath)
}
@@ -153,6 +178,12 @@
Validation: getNdkAbiDiffTimestampFile(ctx),
})
+ ctx.Build(pctx, android.BuildParams{
+ Rule: android.Touch,
+ Output: getNdkHeadersTimestampFile(ctx),
+ Implicits: headerPaths,
+ })
+
fullDepPaths := append(staticLibInstallPaths, getNdkBaseTimestampFile(ctx))
// There's a phony "ndk" rule defined in core/main.mk that depends on this.