aboutsummaryrefslogtreecommitdiffstats
path: root/wireguard-go-bridge/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'wireguard-go-bridge/Makefile')
-rw-r--r--wireguard-go-bridge/Makefile40
1 files changed, 17 insertions, 23 deletions
diff --git a/wireguard-go-bridge/Makefile b/wireguard-go-bridge/Makefile
index d957e0c5..ae9fa097 100644
--- a/wireguard-go-bridge/Makefile
+++ b/wireguard-go-bridge/Makefile
@@ -26,34 +26,31 @@ export CGO_ENABLED := 1
build: $(DESTDIR)/libwg-go.a
version-header: $(DESTDIR)/wireguard-go-version.h
-GOBUILDARCH := $(GOARCH_$(shell uname -m))
-GOBUILDOS := $(shell uname -s | tr '[:upper:]' '[:lower:]')
-GOBUILDVERSION := 1.12
-GOBUILDTARBALL := go$(GOBUILDVERSION).$(GOBUILDOS)-$(GOBUILDARCH).tar.gz
-GOBUILDTARBALLURL := https://dl.google.com/go/$(GOBUILDTARBALL)
-GOBUILDVERSION_NEEDED := go version go$(GOBUILDVERSION) $(GOBUILDOS)/$(GOBUILDARCH)
+GOBUILDVERSION_NEEDED := go version go1.12 darwin/amd64
+GOBUILDVERSION_CURRENT := $(shell go version 2>/dev/null)
+export REAL_GOROOT := $(shell go env GOROOT 2>/dev/null)
export GOROOT := $(BUILDDIR)/goroot
export GOPATH := $(BUILDDIR)/gopath
-export PATH := $(GOROOT)/bin:$(PATH)
-GOBUILDVERSION_CURRENT := $(shell $(GOROOT)/bin/go version 2>/dev/null)
+export PATH := $(GOPATH)/bin:$(PATH)
+GOBUILDVERSION_FAKE := $(shell $(GOROOT)/bin/go version 2>/dev/null)
ifneq ($(GOBUILDVERSION_NEEDED),$(GOBUILDVERSION_CURRENT))
-$(shell rm -f $(GOROOT)/bin/go)
+$(error This requires $(GOBUILDVERSION_NEEDED))
+endif
+ifneq ($(GOBUILDVERSION_NEEDED),$(GOBUILDVERSION_FAKE))
+$(shell rm -f $(GOROOT)/.prepared)
endif
-.cache/$(GOBUILDTARBALL):
- mkdir -p $(dir $@)
- curl -o $@ $(GOBUILDTARBALLURL) || { rm -f $@; exit 1; }
-$(GOROOT)/bin/go: .cache/$(GOBUILDTARBALL)
- rm -rf "$(GOROOT)"
+$(GOROOT)/.prepared:
+ [ -n "$(REAL_GOROOT)" ]
mkdir -p "$(GOROOT)"
- tar -C "$(GOROOT)" --strip-components=1 -xzf - < .cache/$(GOBUILDTARBALL) || { rm -rf "$(GOROOT)"; exit 1; }
- patch -p1 -f -N -r- -d "$(GOROOT)" < goruntime-boottime-over-monotonic.diff || { rm -rf "$(GOROOT)"; exit 1; }
- touch $@
+ rsync -a --delete --exclude=pkg/obj/go-build "$(REAL_GOROOT)/" "$(GOROOT)/"
+ patch -p1 -f -N -r- -d "$(GOROOT)" < goruntime-boottime-over-monotonic.diff
+ touch "$@"
$(shell test "$$(cat "$(BUILDDIR)/.gobuildversion" 2>/dev/null)" = "$(GOBUILDVERSION_CURRENT)" || rm -f "$(DESTDIR)/libwg-go.a")
define libwg-go-a
-$(BUILDDIR)/libwg-go-$(1).a: $(GOROOT)/bin/go
+$(BUILDDIR)/libwg-go-$(1).a: $(GOROOT)/.prepared
CGO_CFLAGS="$(CFLAGS_PREFIX) $(ARCH)" \
CGO_LDFLAGS="$(CFLAGS_PREFIX) $(ARCH)" \
GOARCH="$(GOARCH_$(1))" \
@@ -65,7 +62,7 @@ $(BUILDDIR)/libwg-go-$(1).a: $(GOROOT)/bin/go
endef
$(foreach ARCH,$(ARCHS),$(eval $(call libwg-go-a,$(ARCH))))
-$(DESTDIR)/wireguard-go-version.h: go.mod $(GOROOT)/bin/go
+$(DESTDIR)/wireguard-go-version.h: go.mod $(GOROOT)/.prepared
go get -d -tags ios; chmod -fR +w "$(GOPATH)/pkg/mod"
wggo="$(GOPATH)/pkg/mod/$$(sed -n 's/.*\(golang\.zx2c4\.com\/wireguard\) \(.*\)$$/\1@\2/p' go.mod)"; \
sed -n 's/.*WireGuardGoVersion = "\(.*\)"/#define WIREGUARD_GO_VERSION "\1"/p' "$$wggo/device/version.go" > "$@"
@@ -77,9 +74,6 @@ $(DESTDIR)/libwg-go.a: $(foreach ARCH,$(ARCHS),$(BUILDDIR)/libwg-go-$(ARCH).a)
clean:
rm -rf "$(BUILDDIR)" "$(DESTDIR)/libwg-go.a" "$(DESTDIR)/wireguard-go-version.h"
-distclean: clean
- rm -rf .cache
-
install: build
-.PHONY: distclean clean build version-header install
+.PHONY: clean build version-header install