]> Cypherpunks.ru repositories - gostls13.git/commitdiff
[dev.cc] cmd/dist: write cmd/internal/obj/zbootstrap.go
authorRuss Cox <rsc@golang.org>
Wed, 21 Jan 2015 17:09:20 +0000 (12:09 -0500)
committerRuss Cox <rsc@golang.org>
Wed, 21 Jan 2015 19:06:21 +0000 (19:06 +0000)
cmd/internal/obj needs information about the default
values of GOROOT, GOARM, GOEXPERIMENT, Version, and so on.
It cannot ask package runtime, because during bootstrap
package runtime comes from Go 1.4.
So it must have its own copy.

Change-Id: I73d3e75a3d47210b3184a51a810ebb44826b81e5
Reviewed-on: https://go-review.googlesource.com/3140
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
.gitignore
src/cmd/dist/buildruntime.go
src/cmd/dist/buildtool.go

index 7b63aaf3d4d5276e2a8cfbca112c4bb883bf176b..f1c72632372644d5098e0eac16072048f00bd34d 100644 (file)
@@ -35,6 +35,7 @@ src/cmd/gc/mkbuiltin1
 src/cmd/gc/opnames.h
 src/cmd/gc/y.output
 src/cmd/go/zdefaultcc.go
+src/cmd/internal/obj/zbootstrap.go
 src/go/doc/headscan
 src/runtime/mkversion
 src/runtime/zaexperiment.h
index 1e6ae823972b564c5989fb7fc4690ec0684bce15..5e2605966b881518780b8ace2e16c312b57651ad 100644 (file)
@@ -45,3 +45,31 @@ func mkzexperiment(dir, file string) {
 
        writefile(out, file, 0)
 }
+
+// mkzbootstrap writes cmd/internal/obj/zbootstrap.go:
+//
+//     package obj
+//
+//     const defaultGOROOT = <goroot>
+//     const defaultGOARM = <goarm>
+//     const defaultGOOS = <goos>
+//     const defaultGOARCH = <goarch>
+//     const version = <version>
+//     const goexperiment = <goexperiment>
+//
+func mkzbootstrap(file string) {
+       out := fmt.Sprintf(
+               "// auto generated by go tool dist\n"+
+                       "\n"+
+                       "package obj\n"+
+                       "\n"+
+                       "const defaultGOROOT = `%s`\n"+
+                       "const defaultGOARM = `%s`\n"+
+                       "const defaultGOOS = `%s`\n"+
+                       "const defaultGOARCH = `%s`\n"+
+                       "const version = `%s`\n"+
+                       "const goexperiment = `%s`\n",
+               goroot_final, goarm, gohostos, gohostarch, goversion, os.Getenv("GOEXPERIMENT"))
+
+       writefile(out, file, 0)
+}
index c493dd1e51f44464d2c20cf2e9be4761e440aaa6..10371526d33d1ff71a64c424b33e842ac3029368 100644 (file)
@@ -38,6 +38,8 @@ func bootstrapBuildTools() {
        }
        xprintf("##### Building Go toolchain using %s.\n", goroot_bootstrap)
 
+       mkzbootstrap(pathf("%s/src/cmd/internal/obj/zbootstrap.go", goroot))
+
        // Use $GOROOT/pkg/bootstrap as the bootstrap workspace root.
        // We use a subdirectory of $GOROOT/pkg because that's the
        // space within $GOROOT where we store all generated objects.