diff options
author | Péter Szilágyi <peterke@gmail.com> | 2016-08-08 18:41:55 +0800 |
---|---|---|
committer | Péter Szilágyi <peterke@gmail.com> | 2016-08-08 18:45:44 +0800 |
commit | 8c23f20c68b59c5534ab249d23b452114ba75f74 (patch) | |
tree | 516814255b407c90589d56250912666459305d13 /build/ci.go | |
parent | 4f65227971bd63b409f625dde074c5bd0893e775 (diff) | |
download | go-tangerine-8c23f20c68b59c5534ab249d23b452114ba75f74.tar.gz go-tangerine-8c23f20c68b59c5534ab249d23b452114ba75f74.tar.zst go-tangerine-8c23f20c68b59c5534ab249d23b452114ba75f74.zip |
Makefile, build: move cross compilation into ci.go
Diffstat (limited to 'build/ci.go')
-rw-r--r-- | build/ci.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/build/ci.go b/build/ci.go index 33d97c182..3011a6976 100644 --- a/build/ci.go +++ b/build/ci.go @@ -28,6 +28,7 @@ Available commands are: archive [ -type zip|tar ] -- archives build artefacts importkeys -- imports signing keys from env debsrc [ -sign key-id ] [ -upload dest ] -- creates a debian source package + xgo [ options ] -- cross builds according to options For all commands, -n prevents execution of external programs (dry run mode). @@ -121,6 +122,8 @@ func main() { doDebianSource(os.Args[2:]) case "travis-debsrc": doTravisDebianSource(os.Args[2:]) + case "xgo": + doXgo(os.Args[2:]) default: log.Fatal("unknown command ", os.Args[1]) } @@ -463,3 +466,32 @@ func stageDebianSource(tmpdir string, meta debMetadata) (pkgdir string) { return pkgdir } + +// Cross compilation + +func doXgo(cmdline []string) { + // Make sure xgo is available for cross compilation + gogetxgo := goTool("get", "github.com/karalabe/xgo") + build.MustRun(gogetxgo) + + // Execute the actual cross compilation + pkg := cmdline[len(cmdline)-1] + args := append(cmdline[:len(cmdline)-1], makeBuildFlags("")...) + + build.MustRun(xgoTool(append(args, pkg)...)) +} + +func xgoTool(args ...string) *exec.Cmd { + cmd := exec.Command(filepath.Join(GOBIN, "xgo"), args...) + cmd.Env = []string{ + "GOPATH=" + build.GOPATH(), + "GOBIN=" + GOBIN, + } + for _, e := range os.Environ() { + if strings.HasPrefix(e, "GOPATH=") || strings.HasPrefix(e, "GOBIN=") { + continue + } + cmd.Env = append(cmd.Env, e) + } + return cmd +} |