diff options
author | Dan Willemsen <dwillemsen@google.com> | 2016-09-26 17:33:01 -0700 |
---|---|---|
committer | Dan Willemsen <dwillemsen@google.com> | 2016-10-31 16:18:49 -0700 |
commit | 5cb580f407d2b1b639d7aeea8e1310740e55fe1c (patch) | |
tree | 06df2217c80ade92c65e85f87f8d9e959ba96257 /cc/library.go | |
parent | 5d5db02bf6cd527455abcbf3502e990bb2d21e5a (diff) | |
download | build_soong-5cb580f407d2b1b639d7aeea8e1310740e55fe1c.tar.gz build_soong-5cb580f407d2b1b639d7aeea8e1310740e55fe1c.tar.bz2 build_soong-5cb580f407d2b1b639d7aeea8e1310740e55fe1c.zip |
Start using "struct Objects" to store object Paths
So that we can represent other files that get generated along with the
objects, like the gcno coverage information, and per-file clang-tidy
runs.
Test: Soong's build.ninja identical before/after
Change-Id: I5c553a153c436d5403549f62c73fe79c5f101779
Diffstat (limited to 'cc/library.go')
-rw-r--r-- | cc/library.go | 56 |
1 files changed, 27 insertions, 29 deletions
diff --git a/cc/library.go b/cc/library.go index 99a9b488..db19d665 100644 --- a/cc/library.go +++ b/cc/library.go @@ -160,7 +160,7 @@ type libraryDecorator struct { Properties LibraryProperties // For reusing static library objects for shared library - reuseObjFiles android.Paths + reuseObjects Objects // table-of-contents file to optimize out relinking when possible tocFile android.OptionalPath @@ -173,7 +173,7 @@ type libraryDecorator struct { wholeStaticMissingDeps []string // For whole_static_libs - objFiles android.Paths + objects Objects // Uses the module's name if empty, but can be overridden. Does not include // shlib suffix. @@ -251,31 +251,29 @@ func (library *libraryDecorator) linkerFlags(ctx ModuleContext, flags Flags) Fla return flags } -func (library *libraryDecorator) compile(ctx ModuleContext, flags Flags, deps PathDeps) android.Paths { - var objFiles android.Paths - - objFiles = library.baseCompiler.compile(ctx, flags, deps) - library.reuseObjFiles = objFiles +func (library *libraryDecorator) compile(ctx ModuleContext, flags Flags, deps PathDeps) Objects { + objs := library.baseCompiler.compile(ctx, flags, deps) + library.reuseObjects = objs buildFlags := flagsToBuilderFlags(flags) if library.static() { srcs := android.PathsForModuleSrc(ctx, library.Properties.Static.Srcs) - objFiles = append(objFiles, compileObjs(ctx, buildFlags, android.DeviceStaticLibrary, - srcs, library.baseCompiler.deps)...) + objs = objs.Append(compileObjs(ctx, buildFlags, android.DeviceStaticLibrary, + srcs, library.baseCompiler.deps)) } else { srcs := android.PathsForModuleSrc(ctx, library.Properties.Shared.Srcs) - objFiles = append(objFiles, compileObjs(ctx, buildFlags, android.DeviceSharedLibrary, - srcs, library.baseCompiler.deps)...) + objs = objs.Append(compileObjs(ctx, buildFlags, android.DeviceSharedLibrary, + srcs, library.baseCompiler.deps)) } - return objFiles + return objs } type libraryInterface interface { getWholeStaticMissingDeps() []string static() bool - objs() android.Paths - reuseObjs() android.Paths + objs() Objects + reuseObjs() Objects toc() android.OptionalPath // Returns true if the build options for the module have selected a static or shared build @@ -340,18 +338,18 @@ func (library *libraryDecorator) linkerDeps(ctx BaseModuleContext, deps Deps) De } func (library *libraryDecorator) linkStatic(ctx ModuleContext, - flags Flags, deps PathDeps, objFiles android.Paths) android.Path { + flags Flags, deps PathDeps, objs Objects) android.Path { - library.objFiles = append(android.Paths{}, deps.WholeStaticLibObjFiles...) - library.objFiles = append(library.objFiles, objFiles...) + library.objects = deps.WholeStaticLibObjs.Copy() + library.objects = library.objects.Append(objs) outputFile := android.PathForModuleOut(ctx, ctx.ModuleName()+library.Properties.VariantName+staticLibraryExtension) if ctx.Darwin() { - TransformDarwinObjToStaticLib(ctx, library.objFiles, flagsToBuilderFlags(flags), outputFile) + TransformDarwinObjToStaticLib(ctx, library.objects.objFiles, flagsToBuilderFlags(flags), outputFile) } else { - TransformObjToStaticLib(ctx, library.objFiles, flagsToBuilderFlags(flags), outputFile) + TransformObjToStaticLib(ctx, library.objects.objFiles, flagsToBuilderFlags(flags), outputFile) } library.wholeStaticMissingDeps = ctx.GetMissingDependencies() @@ -362,7 +360,7 @@ func (library *libraryDecorator) linkStatic(ctx ModuleContext, } func (library *libraryDecorator) linkShared(ctx ModuleContext, - flags Flags, deps PathDeps, objFiles android.Paths) android.Path { + flags Flags, deps PathDeps, objs Objects) android.Path { var linkerDeps android.Paths @@ -455,7 +453,7 @@ func (library *libraryDecorator) linkShared(ctx ModuleContext, linkerDeps = append(linkerDeps, deps.SharedLibsDeps...) linkerDeps = append(linkerDeps, deps.LateSharedLibsDeps...) - TransformObjToDynamicBinary(ctx, objFiles, sharedLibs, + TransformObjToDynamicBinary(ctx, objs.objFiles, sharedLibs, deps.StaticLibs, deps.LateStaticLibs, deps.WholeStaticLibs, linkerDeps, deps.CrtBegin, deps.CrtEnd, false, builderFlags, outputFile) @@ -463,15 +461,15 @@ func (library *libraryDecorator) linkShared(ctx ModuleContext, } func (library *libraryDecorator) link(ctx ModuleContext, - flags Flags, deps PathDeps, objFiles android.Paths) android.Path { + flags Flags, deps PathDeps, objs Objects) android.Path { - objFiles = append(objFiles, deps.ObjFiles...) + objs = objs.Append(deps.Objs) var out android.Path if library.static() { - out = library.linkStatic(ctx, flags, deps, objFiles) + out = library.linkStatic(ctx, flags, deps, objs) } else { - out = library.linkShared(ctx, flags, deps, objFiles) + out = library.linkShared(ctx, flags, deps, objs) } library.exportIncludes(ctx, "-I") @@ -505,12 +503,12 @@ func (library *libraryDecorator) getWholeStaticMissingDeps() []string { return library.wholeStaticMissingDeps } -func (library *libraryDecorator) objs() android.Paths { - return library.objFiles +func (library *libraryDecorator) objs() Objects { + return library.objects } -func (library *libraryDecorator) reuseObjs() android.Paths { - return library.reuseObjFiles +func (library *libraryDecorator) reuseObjs() Objects { + return library.reuseObjects } func (library *libraryDecorator) toc() android.OptionalPath { |