github.com/slayercat/go@v0.0.0-20170428012452-c51559813f61/src/cmd/go/internal/cfg/cfg.go (about)

     1  // Copyright 2017 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 cfg holds configuration shared by multiple parts
     6  // of the go command.
     7  package cfg
     8  
     9  import (
    10  	"go/build"
    11  	"os"
    12  	"path/filepath"
    13  	"runtime"
    14  )
    15  
    16  // These are general "build flags" used by build and other commands.
    17  var (
    18  	BuildA                 bool   // -a flag
    19  	BuildBuildmode         string // -buildmode flag
    20  	BuildContext           = build.Default
    21  	BuildI                 bool               // -i flag
    22  	BuildLdflags           []string           // -ldflags flag
    23  	BuildLinkshared        bool               // -linkshared flag
    24  	BuildMSan              bool               // -msan flag
    25  	BuildN                 bool               // -n flag
    26  	BuildO                 string             // -o flag
    27  	BuildP                 = runtime.NumCPU() // -p flag
    28  	BuildPkgdir            string             // -pkgdir flag
    29  	BuildRace              bool               // -race flag
    30  	BuildToolexec          []string           // -toolexec flag
    31  	BuildToolchainName     string
    32  	BuildToolchainCompiler func() string
    33  	BuildToolchainLinker   func() string
    34  	BuildV                 bool // -v flag
    35  	BuildWork              bool // -work flag
    36  	BuildX                 bool // -x flag
    37  )
    38  
    39  func init() {
    40  	BuildToolchainCompiler = func() string { return "missing-compiler" }
    41  	BuildToolchainLinker = func() string { return "missing-linker" }
    42  }
    43  
    44  // An EnvVar is an environment variable Name=Value.
    45  type EnvVar struct {
    46  	Name  string
    47  	Value string
    48  }
    49  
    50  // OrigEnv is the original environment of the program at startup.
    51  var OrigEnv []string
    52  
    53  // CmdEnv is the new environment for running go tool commands.
    54  // User binaries (during go test or go run) are run with OrigEnv,
    55  // not CmdEnv.
    56  var CmdEnv []EnvVar
    57  
    58  // Global build parameters (used during package load)
    59  var (
    60  	Goarch    string
    61  	Goos      string
    62  	ExeSuffix string
    63  	Gopath    []string
    64  )
    65  
    66  var (
    67  	GOROOT    = filepath.Clean(runtime.GOROOT())
    68  	GOBIN     = os.Getenv("GOBIN")
    69  	GOROOTbin = filepath.Join(GOROOT, "bin")
    70  	GOROOTpkg = filepath.Join(GOROOT, "pkg")
    71  	GOROOTsrc = filepath.Join(GOROOT, "src")
    72  )