aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarvin Stenger <marvin.stenger94@gmail.com>2017-09-01 18:17:10 +0200
committerIan Lance Taylor <iant@golang.org>2017-09-20 03:48:42 +0000
commit88ced021907fb96d5609a3c63db0d9738bf0ac2b (patch)
tree990d84baca62f5a7971e8a5a061fb7e1a8d73b4e /src
parent822f832d29c5fe8d0fac3f36028c0b4ffa7eec80 (diff)
downloadgo-88ced021907fb96d5609a3c63db0d9738bf0ac2b.tar.xz
cmd/dist: use bytes.Buffer for code generation
This belongs to a series of clean-up changes (see below) for cmd/dist. This is change (8). These changes include: (1) apply minor fixes (2) restore behavior of branchtag (3) unleash bootstrap optimization for windows (4) use standard generated code header (5) remove trivial variables + functions (6) move functions for the better (7) simplify code segments (8) use bytes.Buffer for code generation (9) rename variables + functions (10) remove doc.go Change-Id: I2d5a071eb8e14690325612271432fdc5f43b108b Reviewed-on: https://go-review.googlesource.com/61014 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src')
-rw-r--r--src/cmd/dist/buildgo.go55
-rw-r--r--src/cmd/dist/buildruntime.go57
2 files changed, 55 insertions, 57 deletions
diff --git a/src/cmd/dist/buildgo.go b/src/cmd/dist/buildgo.go
index f3e739b778..60cb24b6b5 100644
--- a/src/cmd/dist/buildgo.go
+++ b/src/cmd/dist/buildgo.go
@@ -27,31 +27,29 @@ import (
// It is invoked to write cmd/go/internal/cfg/zdefaultcc.go
// but we also write cmd/cgo/zdefaultcc.go
func mkzdefaultcc(dir, file string) {
- outGo := fmt.Sprintf(
- "// Code generated by go tool dist; DO NOT EDIT.\n"+
- "\n"+
- "package cfg\n"+
- "\n"+
- "const DefaultCC = `%s`\n"+
- "const DefaultCXX = `%s`\n"+
- "const DefaultPkgConfig = `%s`\n",
- defaultcctarget, defaultcxxtarget, defaultpkgconfigtarget)
+ var buf bytes.Buffer
+ fmt.Fprintf(&buf, "// Code generated by go tool dist; DO NOT EDIT.\n")
+ fmt.Fprintln(&buf)
+ fmt.Fprintf(&buf, "package cfg\n")
+ fmt.Fprintln(&buf)
+ fmt.Fprintf(&buf, "const DefaultCC = `%s`\n", defaultcctarget)
+ fmt.Fprintf(&buf, "const DefaultCXX = `%s`\n", defaultcxxtarget)
+ fmt.Fprintf(&buf, "const DefaultPkgConfig = `%s`\n", defaultpkgconfigtarget)
- writefile(outGo, file, writeSkipSame)
+ writefile(buf.String(), file, writeSkipSame)
+ buf.Reset()
- // Convert file name to replace: turn go/internal/cfg into cgo.
- outCgo := fmt.Sprintf(
- "// Code generated by go tool dist; DO NOT EDIT.\n"+
- "\n"+
- "package main\n"+
- "\n"+
- "const defaultCC = `%s`\n"+
- "const defaultCXX = `%s`\n"+
- "const defaultPkgConfig = `%s`\n",
- defaultcctarget, defaultcxxtarget, defaultpkgconfigtarget)
+ fmt.Fprintf(&buf, "// Code generated by go tool dist; DO NOT EDIT.\n")
+ fmt.Fprintln(&buf)
+ fmt.Fprintf(&buf, "package main\n")
+ fmt.Fprintln(&buf)
+ fmt.Fprintf(&buf, "const defaultCC = `%s`\n", defaultcctarget)
+ fmt.Fprintf(&buf, "const defaultCXX = `%s`\n", defaultcxxtarget)
+ fmt.Fprintf(&buf, "const defaultPkgConfig = `%s`\n", defaultpkgconfigtarget)
+ // Convert file name.
file = strings.Replace(file, filepath.FromSlash("go/internal/cfg"), "cgo", 1)
- writefile(outCgo, file, writeSkipSame)
+ writefile(buf.String(), file, writeSkipSame)
}
// mkzcgo writes zosarch.go for cmd/go.
@@ -92,14 +90,13 @@ func mkzcgo(dir, file string) {
sort.Strings(list)
var buf bytes.Buffer
-
- fmt.Fprintf(&buf,
- "// Code generated by go tool dist; DO NOT EDIT.\n"+
- "\n"+
- "package build\n"+
- "\n"+
- "const defaultCGO_ENABLED = %q\n\n"+
- "var cgoEnabled = map[string]bool{\n", os.Getenv("CGO_ENABLED"))
+ fmt.Fprintf(&buf, "// Code generated by go tool dist; DO NOT EDIT.\n")
+ fmt.Fprintln(&buf)
+ fmt.Fprintf(&buf, "package build\n")
+ fmt.Fprintln(&buf)
+ fmt.Fprintf(&buf, "const defaultCGO_ENABLED = %q\n", os.Getenv("CGO_ENABLED"))
+ fmt.Fprintln(&buf)
+ fmt.Fprintf(&buf, "var cgoEnabled = map[string]bool{\n")
for _, plat := range list {
fmt.Fprintf(&buf, "\t%q: true,\n", plat)
}
diff --git a/src/cmd/dist/buildruntime.go b/src/cmd/dist/buildruntime.go
index 836b2ef31c..8dd095b82d 100644
--- a/src/cmd/dist/buildruntime.go
+++ b/src/cmd/dist/buildruntime.go
@@ -5,6 +5,7 @@
package main
import (
+ "bytes"
"fmt"
"os"
"strings"
@@ -24,17 +25,18 @@ import (
// const StackGuardMultiplier = <multiplier value>
//
func mkzversion(dir, file string) {
- out := fmt.Sprintf(
- "// Code generated by go tool dist; DO NOT EDIT.\n"+
- "\n"+
- "package sys\n"+
- "\n"+
- "var DefaultGoroot = `%s`\n\n"+
- "const TheVersion = `%s`\n"+
- "const Goexperiment = `%s`\n"+
- "const StackGuardMultiplier = %d\n\n", goroot_final, findgoversion(), os.Getenv("GOEXPERIMENT"), stackGuardMultiplier())
+ var buf bytes.Buffer
+ fmt.Fprintf(&buf, "// Code generated by go tool dist; DO NOT EDIT.\n")
+ fmt.Fprintln(&buf)
+ fmt.Fprintf(&buf, "package sys\n")
+ fmt.Fprintln(&buf)
+ fmt.Fprintf(&buf, "var DefaultGoroot = `%s`\n", goroot_final)
+ fmt.Fprintln(&buf)
+ fmt.Fprintf(&buf, "const TheVersion = `%s`\n", findgoversion())
+ fmt.Fprintf(&buf, "const Goexperiment = `%s`\n", os.Getenv("GOEXPERIMENT"))
+ fmt.Fprintf(&buf, "const StackGuardMultiplier = %d\n", stackGuardMultiplier())
- writefile(out, file, writeSkipSame)
+ writefile(buf.String(), file, writeSkipSame)
}
// mkzbootstrap writes cmd/internal/objabi/zbootstrap.go:
@@ -61,25 +63,24 @@ func mkzversion(dir, file string) {
// This is more useful than having it default to generating objects for the
// original target (in this example, a Mac).
func mkzbootstrap(file string) {
- out := fmt.Sprintf(
- "// Code generated by go tool dist; DO NOT EDIT.\n"+
- "\n"+
- "package objabi\n"+
- "\n"+
- "import \"runtime\"\n"+
- "\n"+
- "const defaultGOROOT = `%s`\n"+
- "const defaultGO386 = `%s`\n"+
- "const defaultGOARM = `%s`\n"+
- "const defaultGOOS = runtime.GOOS\n"+
- "const defaultGOARCH = runtime.GOARCH\n"+
- "const defaultGO_EXTLINK_ENABLED = `%s`\n"+
- "const version = `%s`\n"+
- "const stackGuardMultiplier = %d\n"+
- "const goexperiment = `%s`\n",
- goroot_final, go386, goarm, goextlinkenabled, findgoversion(), stackGuardMultiplier(), os.Getenv("GOEXPERIMENT"))
+ var buf bytes.Buffer
+ fmt.Fprintf(&buf, "// Code generated by go tool dist; DO NOT EDIT.\n")
+ fmt.Fprintln(&buf)
+ fmt.Fprintf(&buf, "package objabi\n")
+ fmt.Fprintln(&buf)
+ fmt.Fprintf(&buf, "import \"runtime\"\n")
+ fmt.Fprintln(&buf)
+ fmt.Fprintf(&buf, "const defaultGOROOT = `%s`\n", goroot_final)
+ fmt.Fprintf(&buf, "const defaultGO386 = `%s`\n", go386)
+ fmt.Fprintf(&buf, "const defaultGOARM = `%s`\n", goarm)
+ fmt.Fprintf(&buf, "const defaultGOOS = runtime.GOOS\n")
+ fmt.Fprintf(&buf, "const defaultGOARCH = runtime.GOARCH\n")
+ fmt.Fprintf(&buf, "const defaultGO_EXTLINK_ENABLED = `%s`\n", goextlinkenabled)
+ fmt.Fprintf(&buf, "const version = `%s`\n", findgoversion())
+ fmt.Fprintf(&buf, "const stackGuardMultiplier = %d\n", stackGuardMultiplier())
+ fmt.Fprintf(&buf, "const goexperiment = `%s`\n", os.Getenv("GOEXPERIMENT"))
- writefile(out, file, writeSkipSame)
+ writefile(buf.String(), file, writeSkipSame)
}
// stackGuardMultiplier returns a multiplier to apply to the default