func (g *goPackage) GenerateBuildActions(ctx blueprint.ModuleContext) { var ( name = ctx.ModuleName() hasPlugins = false pluginSrc = "" genSrcs = []string{} ) if g.properties.PkgPath == "" { ctx.ModuleErrorf("module %s did not specify a valid pkgPath", name) return } g.pkgRoot = packageRoot(ctx) g.archiveFile = filepath.Join(g.pkgRoot, filepath.FromSlash(g.properties.PkgPath)+".a") if len(g.properties.TestSrcs) > 0 && g.config.runGoTests { g.testArchiveFile = filepath.Join(testRoot(ctx), filepath.FromSlash(g.properties.PkgPath)+".a") } ctx.VisitDepsDepthFirstIf(isGoPluginFor(name), func(module blueprint.Module) { hasPlugins = true }) if hasPlugins { pluginSrc = filepath.Join(moduleGenSrcDir(ctx), "plugin.go") genSrcs = append(genSrcs, pluginSrc) } // We only actually want to build the builder modules if we're running as // minibp (i.e. we're generating a bootstrap Ninja file). This is to break // the circular dependence that occurs when the builder requires a new Ninja // file to be built, but building a new ninja file requires the builder to // be built. if g.config.stage == g.BuildStage() { var deps []string if hasPlugins && !buildGoPluginLoader(ctx, g.properties.PkgPath, pluginSrc, g.config.stage) { return } if g.config.runGoTests { deps = buildGoTest(ctx, testRoot(ctx), g.testArchiveFile, g.properties.PkgPath, g.properties.Srcs, genSrcs, g.properties.TestSrcs) } buildGoPackage(ctx, g.pkgRoot, g.properties.PkgPath, g.archiveFile, g.properties.Srcs, genSrcs, deps) } else if g.config.stage != StageBootstrap { if len(g.properties.TestSrcs) > 0 && g.config.runGoTests { phonyGoTarget(ctx, g.testArchiveFile, g.properties.TestSrcs, nil, nil) } phonyGoTarget(ctx, g.archiveFile, g.properties.Srcs, genSrcs, nil) } }
func (g *goPackage) GenerateBuildActions(ctx blueprint.ModuleContext) { name := ctx.ModuleName() if g.properties.PkgPath == "" { ctx.ModuleErrorf("module %s did not specify a valid pkgPath", name) return } g.pkgRoot = packageRoot(ctx) g.archiveFile = filepath.Join(g.pkgRoot, filepath.FromSlash(g.properties.PkgPath)+".a") if len(g.properties.TestSrcs) > 0 && g.config.runGoTests { g.testArchiveFile = filepath.Join(testRoot(ctx), filepath.FromSlash(g.properties.PkgPath)+".a") } // We only actually want to build the builder modules if we're running as // minibp (i.e. we're generating a bootstrap Ninja file). This is to break // the circular dependence that occurs when the builder requires a new Ninja // file to be built, but building a new ninja file requires the builder to // be built. if g.config.generatingBootstrapper { var deps []string if g.config.runGoTests { deps = buildGoTest(ctx, testRoot(ctx), g.testArchiveFile, g.properties.PkgPath, g.properties.Srcs, g.properties.TestSrcs) } buildGoPackage(ctx, g.pkgRoot, g.properties.PkgPath, g.archiveFile, g.properties.Srcs, deps) } else { if len(g.properties.TestSrcs) > 0 && g.config.runGoTests { phonyGoTarget(ctx, g.testArchiveFile, g.properties.TestSrcs, nil) } phonyGoTarget(ctx, g.archiveFile, g.properties.Srcs, nil) } }