Loading cc/builder.go +41 −13 Original line number Diff line number Diff line Loading @@ -99,6 +99,15 @@ var ( }, "arCmd", "arFlags") arWithLibs = pctx.AndroidStaticRule("arWithLibs", blueprint.RuleParams{ Command: "rm -f ${out} && $arCmd $arObjFlags $out @${out}.rsp && $arCmd $arLibFlags $out $arLibs", CommandDeps: []string{"$arCmd"}, Rspfile: "${out}.rsp", RspfileContent: "${arObjs}", }, "arCmd", "arObjFlags", "arObjs", "arLibFlags", "arLibs") darwinStrip = pctx.AndroidStaticRule("darwinStrip", blueprint.RuleParams{ Command: "${config.MacStripPath} -u -r -o $out $in", Loading Loading @@ -609,15 +618,17 @@ func TransformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles and } // Generate a rule for compiling multiple .o files to a static library (.a) func TransformObjToStaticLib(ctx android.ModuleContext, objFiles android.Paths, func TransformObjToStaticLib(ctx android.ModuleContext, objFiles android.Paths, wholeStaticLibs android.Paths, flags builderFlags, outputFile android.ModuleOutPath, deps android.Paths) { arCmd := "${config.ClangBin}/llvm-ar" arFlags := "crsPD" arFlags := "" if !ctx.Darwin() { arFlags += " -format=gnu" } if len(wholeStaticLibs) == 0 { ctx.Build(pctx, android.BuildParams{ Rule: ar, Description: "static link " + outputFile.Base(), Loading @@ -625,11 +636,28 @@ func TransformObjToStaticLib(ctx android.ModuleContext, objFiles android.Paths, Inputs: objFiles, Implicits: deps, Args: map[string]string{ "arFlags": arFlags, "arFlags": "crsPD" + arFlags, "arCmd": arCmd, }, }) } else { ctx.Build(pctx, android.BuildParams{ Rule: arWithLibs, Description: "static link " + outputFile.Base(), Output: outputFile, Inputs: append(objFiles, wholeStaticLibs...), Implicits: deps, Args: map[string]string{ "arCmd": arCmd, "arObjFlags": "crsPD" + arFlags, "arObjs": strings.Join(objFiles.Strings(), " "), "arLibFlags": "cqsL" + arFlags, "arLibs": strings.Join(wholeStaticLibs.Strings(), " "), }, }) } } // Generate a rule for compiling multiple .o files, plus static libraries, whole static libraries, // and shared libraries, to a shared library (.so) or dynamic executable Loading cc/cc.go +12 −2 Original line number Diff line number Diff line Loading @@ -125,9 +125,15 @@ type PathDeps struct { // Paths to .o files Objs Objects // Paths to .o files in dependencies that provide them. Note that these lists // aren't complete since prebuilt modules don't provide the .o files. StaticLibObjs Objects WholeStaticLibObjs Objects // Paths to .a files in prebuilts. Complements WholeStaticLibObjs to contain // the libs from all whole_static_lib dependencies. WholeStaticLibsFromPrebuilts android.Paths // Paths to generated source files GeneratedSources android.Paths GeneratedHeaders android.Paths Loading Loading @@ -2482,7 +2488,11 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps { } ctx.AddMissingDependencies(missingDeps) } if _, ok := ccWholeStaticLib.linker.(prebuiltLinkerInterface); ok { depPaths.WholeStaticLibsFromPrebuilts = append(depPaths.WholeStaticLibsFromPrebuilts, linkFile.Path()) } else { depPaths.WholeStaticLibObjs = depPaths.WholeStaticLibObjs.Append(staticLib.objs()) } } else { ctx.ModuleErrorf( "non-cc.Modules cannot be included as whole static libraries.", depName) Loading cc/library.go +1 −1 Original line number Diff line number Diff line Loading @@ -874,7 +874,7 @@ func (library *libraryDecorator) linkStatic(ctx ModuleContext, } } TransformObjToStaticLib(ctx, library.objects.objFiles, builderFlags, outputFile, objs.tidyFiles) TransformObjToStaticLib(ctx, library.objects.objFiles, deps.WholeStaticLibsFromPrebuilts, builderFlags, outputFile, objs.tidyFiles) library.coverageOutputFile = TransformCoverageFilesToZip(ctx, library.objects, ctx.ModuleName()) Loading Loading
cc/builder.go +41 −13 Original line number Diff line number Diff line Loading @@ -99,6 +99,15 @@ var ( }, "arCmd", "arFlags") arWithLibs = pctx.AndroidStaticRule("arWithLibs", blueprint.RuleParams{ Command: "rm -f ${out} && $arCmd $arObjFlags $out @${out}.rsp && $arCmd $arLibFlags $out $arLibs", CommandDeps: []string{"$arCmd"}, Rspfile: "${out}.rsp", RspfileContent: "${arObjs}", }, "arCmd", "arObjFlags", "arObjs", "arLibFlags", "arLibs") darwinStrip = pctx.AndroidStaticRule("darwinStrip", blueprint.RuleParams{ Command: "${config.MacStripPath} -u -r -o $out $in", Loading Loading @@ -609,15 +618,17 @@ func TransformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles and } // Generate a rule for compiling multiple .o files to a static library (.a) func TransformObjToStaticLib(ctx android.ModuleContext, objFiles android.Paths, func TransformObjToStaticLib(ctx android.ModuleContext, objFiles android.Paths, wholeStaticLibs android.Paths, flags builderFlags, outputFile android.ModuleOutPath, deps android.Paths) { arCmd := "${config.ClangBin}/llvm-ar" arFlags := "crsPD" arFlags := "" if !ctx.Darwin() { arFlags += " -format=gnu" } if len(wholeStaticLibs) == 0 { ctx.Build(pctx, android.BuildParams{ Rule: ar, Description: "static link " + outputFile.Base(), Loading @@ -625,11 +636,28 @@ func TransformObjToStaticLib(ctx android.ModuleContext, objFiles android.Paths, Inputs: objFiles, Implicits: deps, Args: map[string]string{ "arFlags": arFlags, "arFlags": "crsPD" + arFlags, "arCmd": arCmd, }, }) } else { ctx.Build(pctx, android.BuildParams{ Rule: arWithLibs, Description: "static link " + outputFile.Base(), Output: outputFile, Inputs: append(objFiles, wholeStaticLibs...), Implicits: deps, Args: map[string]string{ "arCmd": arCmd, "arObjFlags": "crsPD" + arFlags, "arObjs": strings.Join(objFiles.Strings(), " "), "arLibFlags": "cqsL" + arFlags, "arLibs": strings.Join(wholeStaticLibs.Strings(), " "), }, }) } } // Generate a rule for compiling multiple .o files, plus static libraries, whole static libraries, // and shared libraries, to a shared library (.so) or dynamic executable Loading
cc/cc.go +12 −2 Original line number Diff line number Diff line Loading @@ -125,9 +125,15 @@ type PathDeps struct { // Paths to .o files Objs Objects // Paths to .o files in dependencies that provide them. Note that these lists // aren't complete since prebuilt modules don't provide the .o files. StaticLibObjs Objects WholeStaticLibObjs Objects // Paths to .a files in prebuilts. Complements WholeStaticLibObjs to contain // the libs from all whole_static_lib dependencies. WholeStaticLibsFromPrebuilts android.Paths // Paths to generated source files GeneratedSources android.Paths GeneratedHeaders android.Paths Loading Loading @@ -2482,7 +2488,11 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps { } ctx.AddMissingDependencies(missingDeps) } if _, ok := ccWholeStaticLib.linker.(prebuiltLinkerInterface); ok { depPaths.WholeStaticLibsFromPrebuilts = append(depPaths.WholeStaticLibsFromPrebuilts, linkFile.Path()) } else { depPaths.WholeStaticLibObjs = depPaths.WholeStaticLibObjs.Append(staticLib.objs()) } } else { ctx.ModuleErrorf( "non-cc.Modules cannot be included as whole static libraries.", depName) Loading
cc/library.go +1 −1 Original line number Diff line number Diff line Loading @@ -874,7 +874,7 @@ func (library *libraryDecorator) linkStatic(ctx ModuleContext, } } TransformObjToStaticLib(ctx, library.objects.objFiles, builderFlags, outputFile, objs.tidyFiles) TransformObjToStaticLib(ctx, library.objects.objFiles, deps.WholeStaticLibsFromPrebuilts, builderFlags, outputFile, objs.tidyFiles) library.coverageOutputFile = TransformCoverageFilesToZip(ctx, library.objects, ctx.ModuleName()) Loading