diff --git a/.gitignore b/.gitignore index 7b63aaf3d4d..f1c72632372 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/src/cmd/dist/buildruntime.go b/src/cmd/dist/buildruntime.go index 1e6ae823972..5e2605966b8 100644 --- a/src/cmd/dist/buildruntime.go +++ b/src/cmd/dist/buildruntime.go @@ -45,3 +45,31 @@ func mkzexperiment(dir, file string) { writefile(out, file, 0) } + +// mkzbootstrap writes cmd/internal/obj/zbootstrap.go: +// +// package obj +// +// const defaultGOROOT = +// const defaultGOARM = +// const defaultGOOS = +// const defaultGOARCH = +// const version = +// const 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) +} diff --git a/src/cmd/dist/buildtool.go b/src/cmd/dist/buildtool.go index c493dd1e51f..10371526d33 100644 --- a/src/cmd/dist/buildtool.go +++ b/src/cmd/dist/buildtool.go @@ -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.