From f231b19017e70f63991f7e0c822be08448942309 Mon Sep 17 00:00:00 2001 From: Pirama Arumuga Nainar Date: Tue, 23 Jan 2018 10:49:04 -0800 Subject: [PATCH] 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 --- cc/builder.go | 14 +++++++------- cc/compiler.go | 12 ++++++------ cc/library.go | 12 ++++++------ 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/cc/builder.go b/cc/builder.go index fe35d5c16..064613248 100644 --- a/cc/builder.go +++ b/cc/builder.go @@ -289,7 +289,7 @@ func (a Objects) Append(b Objects) Objects { // 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 @@ func TransformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles and 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 @@ func TransformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles and 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 @@ func TransformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles and 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 7e8e8b8ec..9b69114a6 100644 --- a/cc/compiler.go +++ b/cc/compiler.go @@ -160,7 +160,7 @@ func NewBaseCompiler() *baseCompiler { type baseCompiler struct { Properties BaseCompilerProperties Proto android.ProtoProperties - genDeps android.Paths + cFlagsDeps android.Paths pathDeps android.Paths flags builderFlags @@ -548,16 +548,16 @@ func (compiler *baseCompiler) compile(ctx ModuleContext, flags Flags, deps PathD 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 @@ func (compiler *baseCompiler) compile(ctx ModuleContext, flags Flags, deps PathD // 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 00282fcfc..54c547604 100644 --- a/cc/library.go +++ b/cc/library.go @@ -384,11 +384,11 @@ func (library *libraryDecorator) compile(ctx ModuleContext, flags Flags, deps Pa 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 @@ func (library *libraryDecorator) link(ctx ModuleContext, } 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 @@ func (library *libraryDecorator) link(ctx ModuleContext, } 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...) } }