Skip to content

Commit

Permalink
[dev.cc] cmd/dist: write cmd/internal/obj/zbootstrap.go
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reviewed-by: Rob Pike <[email protected]>
  • Loading branch information
rsc committed Jan 21, 2015
1 parent be81836 commit a8e5e80
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
28 changes: 28 additions & 0 deletions src/cmd/dist/buildruntime.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
2 changes: 2 additions & 0 deletions src/cmd/dist/buildtool.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down

0 comments on commit a8e5e80

Please sign in to comment.