github.com/keysonZZZ/kmg@v0.0.0-20151121023212-05317bfd7d39/kmg/SubCommand/goCmd/GoCrossCompileInit.go (about) 1 package goCmd 2 3 import ( 4 "fmt" 5 "path/filepath" 6 7 "os/exec" 8 "runtime" 9 "strings" 10 11 "github.com/bronze1man/kmg/kmgCmd" 12 "github.com/bronze1man/kmg/kmgConfig" 13 "github.com/bronze1man/kmg/kmgConsole" 14 ) 15 16 func runGoCrossCompileInit() { 17 kmgc, err := kmgConfig.LoadEnvFromWd() 18 kmgConsole.ExitOnErr(err) 19 GOROOT := kmgc.GOROOT 20 if GOROOT == "" { 21 //guess GOROOT 22 out, err := exec.Command("go", "env", "GOROOT").CombinedOutput() 23 kmgConsole.ExitOnErr(err) 24 GOROOT = strings.TrimSpace(string(out)) 25 if GOROOT == "" { 26 kmgConsole.ExitOnErr(fmt.Errorf("you must set $GOROOT in environment to use GoCrossComplieInit")) 27 } 28 } 29 var makeShellArgs []string 30 var makeShellName string 31 runCmdPath := filepath.Join(GOROOT, "src") 32 if runtime.GOOS == "windows" { 33 makeShellName = "cmd" 34 makeShellArgs = []string{"/C", filepath.Join(GOROOT, "src", "make.bat"), "--no-clean"} 35 } else { 36 makeShellName = filepath.Join(GOROOT, "src", "make.bash") 37 makeShellArgs = []string{"--no-clean"} 38 } 39 for _, target := range kmgc.CrossCompileTarget { 40 err = kmgCmd.CmdSlice(append([]string{makeShellName}, makeShellArgs...)). 41 MustSetEnv("GOOS", target.GetGOOS()). 42 MustSetEnv("GOARCH", target.GetGOARCH()). 43 SetDir(runCmdPath). 44 Run() 45 kmgConsole.ExitOnErr(err) 46 } 47 return 48 }