aboutsummaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2016-08-08 18:41:55 +0800
committerJeffrey Wilcke <geffobscura@gmail.com>2016-08-18 21:01:30 +0800
commit2c6214e846f244e847825418b7a3de2e9b03ee69 (patch)
tree6b426f48ebe06e70f2c04b3e0808882f0aac9e5c /build
parent0398075cedbc8a2a659ca4cc22e732e3c631fecf (diff)
downloadgo-tangerine-2c6214e846f244e847825418b7a3de2e9b03ee69.tar
go-tangerine-2c6214e846f244e847825418b7a3de2e9b03ee69.tar.gz
go-tangerine-2c6214e846f244e847825418b7a3de2e9b03ee69.tar.bz2
go-tangerine-2c6214e846f244e847825418b7a3de2e9b03ee69.tar.lz
go-tangerine-2c6214e846f244e847825418b7a3de2e9b03ee69.tar.xz
go-tangerine-2c6214e846f244e847825418b7a3de2e9b03ee69.tar.zst
go-tangerine-2c6214e846f244e847825418b7a3de2e9b03ee69.zip
[release/1.4.11] Makefile, build: move cross compilation into ci.go
(cherry picked from commit 8c23f20c68b59c5534ab249d23b452114ba75f74)
Diffstat (limited to 'build')
-rw-r--r--build/ci.go32
-rwxr-xr-xbuild/flags.sh22
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