diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cmd/dist/build.go | 2 | ||||
-rw-r--r-- | src/cmd/dist/buildgo.go | 15 | ||||
-rw-r--r-- | src/cmd/go/build.go | 6 |
3 files changed, 19 insertions, 4 deletions
diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go index 04a13b2365..aa12aa9dc3 100644 --- a/src/cmd/dist/build.go +++ b/src/cmd/dist/build.go @@ -464,6 +464,7 @@ var deptab = []struct { }{ {"cmd/go", []string{ "zdefaultcc.go", + "zosarch.go", }}, {"runtime/internal/sys", []string{ "zversion.go", @@ -485,6 +486,7 @@ var gentab = []struct { gen func(string, string) }{ {"zdefaultcc.go", mkzdefaultcc}, + {"zosarch.go", mkzosarch}, {"zversion.go", mkzversion}, {"zcgo.go", mkzcgo}, diff --git a/src/cmd/dist/buildgo.go b/src/cmd/dist/buildgo.go index 2b68fc2224..c367c70b04 100644 --- a/src/cmd/dist/buildgo.go +++ b/src/cmd/dist/buildgo.go @@ -23,9 +23,7 @@ import ( // It is invoked to write cmd/go/zdefaultcc.go // but we also write cmd/cgo/zdefaultcc.go func mkzdefaultcc(dir, file string) { - var out string - - out = fmt.Sprintf( + out := fmt.Sprintf( "// auto generated by go tool dist\n"+ "\n"+ "package main\n"+ @@ -42,7 +40,16 @@ func mkzdefaultcc(dir, file string) { writefile(out, file, writeSkipSame) } -// mkzcgo writes zcgo.go for go/build package: +// mkzcgo writes zosarch.go for cmd/go. +func mkzosarch(dir, file string) { + var buf bytes.Buffer + buf.WriteString("// auto generated by go tool dist\n\n") + buf.WriteString("package main\n\n") + fmt.Fprintf(&buf, "var osArchSupportsCgo = %#v", cgoEnabled) + writefile(buf.String(), file, writeSkipSame) +} + +// mkzcgo writes zcgo.go for the go/build package: // // package build // var cgoEnabled = map[string]bool{} diff --git a/src/cmd/go/build.go b/src/cmd/go/build.go index 0102b5e08a..09e2122b0c 100644 --- a/src/cmd/go/build.go +++ b/src/cmd/go/build.go @@ -669,6 +669,12 @@ var ( func init() { goarch = buildContext.GOARCH goos = buildContext.GOOS + + if _, ok := osArchSupportsCgo[goos+"/"+goarch]; !ok { + fmt.Fprintf(os.Stderr, "cmd/go: unsupported GOOS/GOARCH pair %s/%s\n", goos, goarch) + os.Exit(2) + } + if goos == "windows" { exeSuffix = ".exe" } |