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  }