summaryrefslogtreecommitdiffhomepage
path: root/app/tools
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2018-04-24 15:19:53 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2018-04-24 15:34:13 +0200
commit6d3087b6d7ec45afb803bf7d67dfdbbdfb57f753 (patch)
tree0701f156b1cb86e6674e5a3c8ebac48196f99bf2 /app/tools
parentc1bb584925df1bef791a373c1657ad1b357f15b0 (diff)
Use binary distro of Golang
This is a bummer, but Gradle already specifies tons of specific versions of various binary components, so this is not materially different than the rest of how this whole thing works. It also allows us to specify the Go version that will actually build a working binary of wireguard-go, since all of the Go bugs mean not every version works equally. We do *not* want to use whatever version a distro happens to be shipping.
Diffstat (limited to 'app/tools')
-rw-r--r--app/tools/libwg-go/Makefile15
1 files changed, 13 insertions, 2 deletions
diff --git a/app/tools/libwg-go/Makefile b/app/tools/libwg-go/Makefile
index 300b3841..c54797c7 100644
--- a/app/tools/libwg-go/Makefile
+++ b/app/tools/libwg-go/Makefile
@@ -2,7 +2,9 @@ containing = $(foreach v,$2,$(if $(findstring $1,$v),$v))
FILES := $(wildcard ../wireguard-go/*/*.go) $(wildcard ../wireguard-go/*.go)
FILES := $(filter-out %/main.go $(filter-out %_linux.go,$(call containing,_,$(FILES))),$(FILES))
-export GOPATH := $(CURDIR)/go
+export GOPATH := $(CURDIR)/gopath
+export GOROOT := $(CURDIR)/goroot
+export PATH := $(GOROOT)/bin:$(PATH)
CLANG_FLAGS := --target=$(ANDROID_LLVM_TRIPLE) --gcc-toolchain=$(ANDROID_TOOLCHAIN_ROOT) --sysroot=$(ANDROID_SYSROOT)
export CGO_CFLAGS := $(CLANG_FLAGS) $(CFLAGS)
export CGO_LDFLAGS := $(CLANG_FLAGS) $(LDFLAGS)
@@ -12,7 +14,16 @@ export GOARCH := $(shell $(GO_ARCH_FILTER))
export GOOS := android
export CGO_ENABLED := 1
-$(DESTDIR)/libwg-go.so: $(FILES) api-android.go jni.c
+GORELEASETARBALL := https://dl.google.com/go/go1.10.1.$(shell uname -s | tr '[:upper:]' '[:lower:]')-amd64.tar.gz
+
+default: $(DESTDIR)/libwg-go.so
+
+$(GOROOT)/bin/go:
+ rm -rf "$(GOROOT)"
+ mkdir -p "$(GOROOT)"
+ curl "$(GORELEASETARBALL)" | tar -C "$(GOROOT)" --strip-components=1 -xzf - || rm -rf "$(GOROOT)"
+
+$(DESTDIR)/libwg-go.so: $(FILES) api-android.go jni.c $(GOROOT)/bin/go
find . -name '*.go' -type l -delete
find . -type d -empty -delete
mkdir -p $(subst ../wireguard-go/,./,$(dir $(FILES)))