mirror of
https://github.com/golang/go
synced 2024-11-08 13:46:18 -07:00
88ced02190
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>
107 lines
2.9 KiB
Go
107 lines
2.9 KiB
Go
// Copyright 2012 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
"sort"
|
|
"strings"
|
|
)
|
|
|
|
/*
|
|
* Helpers for building cmd/go and cmd/cgo.
|
|
*/
|
|
|
|
// mkzdefaultcc writes zdefaultcc.go:
|
|
//
|
|
// package main
|
|
// const defaultCC = <defaultcc>
|
|
// const defaultCXX = <defaultcxx>
|
|
// const defaultPkgConfig = <defaultpkgconfig>
|
|
//
|
|
// It is invoked to write cmd/go/internal/cfg/zdefaultcc.go
|
|
// but we also write cmd/cgo/zdefaultcc.go
|
|
func mkzdefaultcc(dir, file string) {
|
|
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(buf.String(), file, writeSkipSame)
|
|
buf.Reset()
|
|
|
|
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(buf.String(), file, writeSkipSame)
|
|
}
|
|
|
|
// mkzcgo writes zosarch.go for cmd/go.
|
|
func mkzosarch(dir, file string) {
|
|
// sort for deterministic zosarch.go file
|
|
var list []string
|
|
for plat := range cgoEnabled {
|
|
list = append(list, plat)
|
|
}
|
|
sort.Strings(list)
|
|
|
|
var buf bytes.Buffer
|
|
fmt.Fprintf(&buf, "// Code generated by go tool dist; DO NOT EDIT.\n\n")
|
|
fmt.Fprintf(&buf, "package cfg\n\n")
|
|
fmt.Fprintf(&buf, "var OSArchSupportsCgo = map[string]bool{\n")
|
|
for _, plat := range list {
|
|
fmt.Fprintf(&buf, "\t%q: %v,\n", plat, cgoEnabled[plat])
|
|
}
|
|
fmt.Fprintf(&buf, "}\n")
|
|
|
|
writefile(buf.String(), file, writeSkipSame)
|
|
}
|
|
|
|
// mkzcgo writes zcgo.go for the go/build package:
|
|
//
|
|
// package build
|
|
// var cgoEnabled = map[string]bool{}
|
|
//
|
|
// It is invoked to write go/build/zcgo.go.
|
|
func mkzcgo(dir, file string) {
|
|
// sort for deterministic zcgo.go file
|
|
var list []string
|
|
for plat, hasCgo := range cgoEnabled {
|
|
if hasCgo {
|
|
list = append(list, plat)
|
|
}
|
|
}
|
|
sort.Strings(list)
|
|
|
|
var buf bytes.Buffer
|
|
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)
|
|
}
|
|
fmt.Fprintf(&buf, "}\n")
|
|
|
|
writefile(buf.String(), file, writeSkipSame)
|
|
}
|