Commit dcfa3345 by Ian Lance Taylor

cmd: Use correct install tool dir with gccgo

    
    When using the go command built from gccgo to build and
    install a go tool, use the value from runtime GCCGOTOOLDIR as
    the install directory.
    
    This also fixes the output from 'go tool' when used with the
    gccgo-built go command, to only include the go tools and not
    other binaries found in the same directory.
    
    Reviewed-on: https://go-review.googlesource.com/16516

From-SVN: r230677
parent 1fb19247
dfa74d975884f363c74d6a66a37b1703093fdba6 d52835c9376985f92f35c32af5f1808239981536
The first line of this file holds the git revision number of the last The first line of this file holds the git revision number of the last
merge done from the gofrontend repository. merge done from the gofrontend repository.
...@@ -785,7 +785,11 @@ func (p *Package) load(stk *importStack, bp *build.Package, err error) *Package ...@@ -785,7 +785,11 @@ func (p *Package) load(stk *importStack, bp *build.Package, err error) *Package
if goTools[p.ImportPath] == toTool { if goTools[p.ImportPath] == toTool {
// This is for 'go tool'. // This is for 'go tool'.
// Override all the usual logic and force it into the tool directory. // Override all the usual logic and force it into the tool directory.
p.target = filepath.Join(gorootPkg, "tool", full) if buildContext.Compiler == "gccgo" {
p.target = filepath.Join(runtime.GCCGOTOOLDIR, elem)
} else {
p.target = filepath.Join(gorootPkg, "tool", full)
}
} }
if p.target != "" && buildContext.GOOS == "windows" { if p.target != "" && buildContext.GOOS == "windows" {
p.target += ".exe" p.target += ".exe"
......
...@@ -39,6 +39,12 @@ var ( ...@@ -39,6 +39,12 @@ var (
toolN bool toolN bool
) )
// List of go tools found in the gccgo tool directory.
// Other binaries could be in the same directory so don't
// show those with the 'go tool' command.
var gccgoTools = []string{"cgo", "fix", "cover", "godoc", "vet"}
func init() { func init() {
cmdTool.Flag.BoolVar(&toolN, "n", false, "") cmdTool.Flag.BoolVar(&toolN, "n", false, "")
} }
...@@ -146,6 +152,21 @@ func listTools() { ...@@ -146,6 +152,21 @@ func listTools() {
if toolIsWindows && strings.HasSuffix(name, toolWindowsExtension) { if toolIsWindows && strings.HasSuffix(name, toolWindowsExtension) {
name = name[:len(name)-len(toolWindowsExtension)] name = name[:len(name)-len(toolWindowsExtension)]
} }
fmt.Println(name)
// The tool directory used by gccgo will have other binaries
// in additions to go tools. Only display go tools for this list.
if buildContext.Compiler == "gccgo" {
for _, tool := range gccgoTools {
if tool == name {
fmt.Println(name)
}
}
} else {
// Not gccgo, list all the tools found in this dir
fmt.Println(name)
}
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment