github.com/miolini/go@v0.0.0-20160405192216-fca68c8cb408/src/cmd/dist/buildgo.go (about) 1 // Copyright 2012 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package main 6 7 import ( 8 "bytes" 9 "fmt" 10 ) 11 12 /* 13 * Helpers for building cmd/go and cmd/cgo. 14 */ 15 16 // mkzdefaultcc writes zdefaultcc.go: 17 // 18 // package main 19 // const defaultCC = <defaultcc> 20 // const defaultCXX = <defaultcxx> 21 // 22 // It is invoked to write cmd/go/zdefaultcc.go 23 // but we also write cmd/cgo/zdefaultcc.go 24 func mkzdefaultcc(dir, file string) { 25 var out string 26 27 out = fmt.Sprintf( 28 "// auto generated by go tool dist\n"+ 29 "\n"+ 30 "package main\n"+ 31 "\n"+ 32 "const defaultCC = `%s`\n"+ 33 "const defaultCXX = `%s`\n", 34 defaultcctarget, defaultcxxtarget) 35 36 writefile(out, file, writeSkipSame) 37 38 // Convert file name to replace: turn go into cgo. 39 i := len(file) - len("go/zdefaultcc.go") 40 file = file[:i] + "c" + file[i:] 41 writefile(out, file, writeSkipSame) 42 } 43 44 // mkzcgo writes zcgo.go for go/build package: 45 // 46 // package build 47 // var cgoEnabled = map[string]bool{} 48 // 49 // It is invoked to write go/build/zcgo.go. 50 func mkzcgo(dir, file string) { 51 var buf bytes.Buffer 52 53 fmt.Fprintf(&buf, 54 "// auto generated by go tool dist\n"+ 55 "\n"+ 56 "package build\n"+ 57 "\n"+ 58 "var cgoEnabled = map[string]bool{\n") 59 for plat, hasCgo := range cgoEnabled { 60 if hasCgo { 61 fmt.Fprintf(&buf, "\t%q: true,\n", plat) 62 } 63 } 64 fmt.Fprintf(&buf, "}") 65 66 writefile(buf.String(), file, writeSkipSame) 67 }