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  }