Add only compiler-flag dependencies as implicit
Bug: http://b/72343691
Change https://android-review.googlesource.com/c/572758, in addition to
dependencies from the compiler flags, also marked all exported
dependencies as implicit. This can cause lots of unnecessary
recompiles. This change moves exported dependencies back as order-only
dependencies.
Test: 1. mma in art after changing profile_compilation_info.h triggers
only a limited number of recompiles.
2. verify that changes to PGO profile files trigger recompiles.
Change-Id: Icb0f4cd2b6da0add3b6e5206661e6aa7a577602f
diff --git a/cc/builder.go b/cc/builder.go
index fe35d5c..0646132 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -289,7 +289,7 @@
// Generate rules for compiling multiple .c, .cpp, or .S files to individual .o files
func TransformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles android.Paths,
- flags builderFlags, pathDeps android.Paths, genDeps android.Paths) Objects {
+ flags builderFlags, pathDeps android.Paths, cFlagsDeps android.Paths) Objects {
objFiles := make(android.Paths, len(srcFiles))
var tidyFiles android.Paths
@@ -362,8 +362,8 @@
Description: "yasm " + srcFile.Rel(),
Output: objFile,
Input: srcFile,
- Implicits: pathDeps,
- OrderOnly: genDeps,
+ Implicits: cFlagsDeps,
+ OrderOnly: pathDeps,
Args: map[string]string{
"asFlags": flags.yasmFlags,
},
@@ -375,8 +375,8 @@
Description: "windres " + srcFile.Rel(),
Output: objFile,
Input: srcFile,
- Implicits: pathDeps,
- OrderOnly: genDeps,
+ Implicits: cFlagsDeps,
+ OrderOnly: pathDeps,
Args: map[string]string{
"windresCmd": gccCmd(flags.toolchain, "windres"),
"flags": flags.toolchain.WindresFlags(),
@@ -444,8 +444,8 @@
Output: objFile,
ImplicitOutputs: implicitOutputs,
Input: srcFile,
- Implicits: pathDeps,
- OrderOnly: genDeps,
+ Implicits: cFlagsDeps,
+ OrderOnly: pathDeps,
Args: map[string]string{
"cFlags": moduleCflags,
"ccCmd": ccCmd,
diff --git a/cc/compiler.go b/cc/compiler.go
index 7e8e8b8..9b69114 100644
--- a/cc/compiler.go
+++ b/cc/compiler.go
@@ -160,7 +160,7 @@
type baseCompiler struct {
Properties BaseCompilerProperties
Proto android.ProtoProperties
- genDeps android.Paths
+ cFlagsDeps android.Paths
pathDeps android.Paths
flags builderFlags
@@ -548,16 +548,16 @@
srcs := append(android.Paths(nil), compiler.srcsBeforeGen...)
srcs, genDeps := genSources(ctx, srcs, buildFlags)
- pathDeps = append(pathDeps, flags.CFlagsDeps...)
+ pathDeps = append(pathDeps, genDeps...)
compiler.pathDeps = pathDeps
- compiler.genDeps = genDeps
+ compiler.cFlagsDeps = flags.CFlagsDeps
// Save src, buildFlags and context
compiler.srcs = srcs
// Compile files listed in c.Properties.Srcs into objects
- objs := compileObjs(ctx, buildFlags, "", srcs, pathDeps, genDeps)
+ objs := compileObjs(ctx, buildFlags, "", srcs, pathDeps, compiler.cFlagsDeps)
if ctx.Failed() {
return Objects{}
@@ -568,7 +568,7 @@
// Compile a list of source files into objects a specified subdirectory
func compileObjs(ctx android.ModuleContext, flags builderFlags,
- subdir string, srcFiles, pathDeps android.Paths, genDeps android.Paths) Objects {
+ subdir string, srcFiles, pathDeps android.Paths, cFlagsDeps android.Paths) Objects {
- return TransformSourceToObj(ctx, subdir, srcFiles, flags, pathDeps, genDeps)
+ return TransformSourceToObj(ctx, subdir, srcFiles, flags, pathDeps, cFlagsDeps)
}
diff --git a/cc/library.go b/cc/library.go
index 00282fc..54c5476 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -384,11 +384,11 @@
if library.static() {
srcs := android.PathsForModuleSrc(ctx, library.Properties.Static.Srcs)
objs = objs.Append(compileObjs(ctx, buildFlags, android.DeviceStaticLibrary,
- srcs, library.baseCompiler.pathDeps, library.baseCompiler.genDeps))
+ srcs, library.baseCompiler.pathDeps, library.baseCompiler.cFlagsDeps))
} else if library.shared() {
srcs := android.PathsForModuleSrc(ctx, library.Properties.Shared.Srcs)
objs = objs.Append(compileObjs(ctx, buildFlags, android.DeviceSharedLibrary,
- srcs, library.baseCompiler.pathDeps, library.baseCompiler.genDeps))
+ srcs, library.baseCompiler.pathDeps, library.baseCompiler.cFlagsDeps))
}
return objs
@@ -676,8 +676,8 @@
}
library.reexportFlags(flags)
library.reuseExportedFlags = append(library.reuseExportedFlags, flags...)
- library.reexportDeps(library.baseCompiler.genDeps) // TODO: restrict to aidl deps
- library.reuseExportedDeps = append(library.reuseExportedDeps, library.baseCompiler.genDeps...)
+ library.reexportDeps(library.baseCompiler.pathDeps) // TODO: restrict to aidl deps
+ library.reuseExportedDeps = append(library.reuseExportedDeps, library.baseCompiler.pathDeps...)
}
}
@@ -689,8 +689,8 @@
}
library.reexportFlags(flags)
library.reuseExportedFlags = append(library.reuseExportedFlags, flags...)
- library.reexportDeps(library.baseCompiler.genDeps) // TODO: restrict to proto deps
- library.reuseExportedDeps = append(library.reuseExportedDeps, library.baseCompiler.genDeps...)
+ library.reexportDeps(library.baseCompiler.pathDeps) // TODO: restrict to proto deps
+ library.reuseExportedDeps = append(library.reuseExportedDeps, library.baseCompiler.pathDeps...)
}
}