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 | |
parent | 4f65227971bd63b409f625dde074c5bd0893e775 (diff) | |
download | dexon-8c23f20c68b59c5534ab249d23b452114ba75f74.tar.gz dexon-8c23f20c68b59c5534ab249d23b452114ba75f74.tar.zst dexon-8c23f20c68b59c5534ab249d23b452114ba75f74.zip |
Makefile, build: move cross compilation into ci.go
Diffstat (limited to 'build')
-rw-r--r-- | build/ci.go | 32 | ||||
-rwxr-xr-x | build/flags.sh | 22 |
2 files changed, 32 insertions, 22 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 +} diff --git a/build/flags.sh b/build/flags.sh deleted file mode 100755 index e021dbad4..000000000 --- a/build/flags.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -set -e - -if [ ! -f "build/env.sh" ]; then - echo "$0 must be run from the root of the repository." - exit 2 -fi - -# Since Go 1.5, the separator char for link time assignments -# is '=' and using ' ' prints a warning. However, Go < 1.5 does -# not support using '='. -sep=$(go version | awk '{ if ($3 >= "go1.5" || index($3, "devel")) print "="; else print " "; }' -) - -# set gitCommit when running from a Git checkout. -if [ -f ".git/HEAD" ]; then - echo "-ldflags '-X main.gitCommit$sep$(git rev-parse HEAD)'" -fi - -if [ ! -z "$GO_OPENCL" ]; then - echo "-tags opencl" -fi |