diff --git a/cc/binary.go b/cc/binary.go index 63657e4dd..0650bdf39 100644 --- a/cc/binary.go +++ b/cc/binary.go @@ -412,6 +412,7 @@ func (binary *binaryDecorator) link(ctx ModuleContext, linkerDeps = append(linkerDeps, deps.EarlySharedLibsDeps...) linkerDeps = append(linkerDeps, deps.SharedLibsDeps...) linkerDeps = append(linkerDeps, deps.LateSharedLibsDeps...) + linkerDeps = append(linkerDeps, ndkSharedLibDeps(ctx)...) } validations = append(validations, objs.tidyFiles...) diff --git a/cc/builder.go b/cc/builder.go index fea65d581..72c2fa555 100644 --- a/cc/builder.go +++ b/cc/builder.go @@ -549,10 +549,6 @@ func transformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles, no return "$" + kind + n } - // clang-tidy checks source files and does not need to link with libraries. - // tidyPathDeps should contain pathDeps but not libraries. - tidyPathDeps := skipNdkLibraryDeps(ctx, pathDeps) - for i, srcFile := range srcFiles { objFile := android.ObjPathWithExt(ctx, subdir, srcFile, "o") @@ -676,7 +672,7 @@ func transformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles, no Output: tidyFile, Input: srcFile, Implicits: cFlagsDeps, - OrderOnly: tidyPathDeps, + OrderOnly: pathDeps, Args: map[string]string{ "ccCmd": ccCmd, "cFlags": shareFlags("cFlags", escapeSingleQuotes(moduleToolingFlags)), diff --git a/cc/compiler.go b/cc/compiler.go index 2e62b0002..8adc3ab16 100644 --- a/cc/compiler.go +++ b/cc/compiler.go @@ -637,9 +637,9 @@ var gnuToCReplacer = strings.NewReplacer("gnu", "c") func ndkPathDeps(ctx ModuleContext) android.Paths { if ctx.Module().(*Module).IsSdkVariant() { - // The NDK sysroot timestamp file depends on all the NDK sysroot files - // (headers and libraries). - return android.Paths{getNdkBaseTimestampFile(ctx)} + // The NDK sysroot timestamp file depends on all the NDK sysroot header files + // for compiling src to obj files. + return android.Paths{getNdkHeadersTimestampFile(ctx)} } return nil } diff --git a/cc/library.go b/cc/library.go index d07142917..e53aac0c6 100644 --- a/cc/library.go +++ b/cc/library.go @@ -1366,11 +1366,21 @@ func (library *libraryDecorator) linkStatic(ctx ModuleContext, return outputFile } +func ndkSharedLibDeps(ctx ModuleContext) android.Paths { + if ctx.Module().(*Module).IsSdkVariant() { + // The NDK sysroot timestamp file depends on all the NDK + // sysroot header and shared library files. + return android.Paths{getNdkBaseTimestampFile(ctx)} + } + return nil +} + func (library *libraryDecorator) linkShared(ctx ModuleContext, flags Flags, deps PathDeps, objs Objects) android.Path { var linkerDeps android.Paths linkerDeps = append(linkerDeps, flags.LdFlagsDeps...) + linkerDeps = append(linkerDeps, ndkSharedLibDeps(ctx)...) unexportedSymbols := ctx.ExpandOptionalSource(library.Properties.Unexported_symbols_list, "unexported_symbols_list") forceNotWeakSymbols := ctx.ExpandOptionalSource(library.Properties.Force_symbols_not_weak_list, "force_symbols_not_weak_list") diff --git a/cc/ndk_sysroot.go b/cc/ndk_sysroot.go index ee11db101..6c200f5dd 100644 --- a/cc/ndk_sysroot.go +++ b/cc/ndk_sysroot.go @@ -94,21 +94,6 @@ 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{} }