summarylogtreecommitdiffstats
path: root/64.patch
blob: b66787104d6afed4b6a82c243e38eba6f0536657 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
From f9335a8fe9378b8013a27875085a5e19f0c0670a Mon Sep 17 00:00:00 2001
From: Sam Whited <sam@samwhited.com>
Date: Wed, 9 Jan 2019 12:00:10 -0600
Subject: [PATCH] respect external $LDFLAGS on build

---
 Makefile | 28 ++++++++++++++++++++--------
 1 file changed, 20 insertions(+), 8 deletions(-)

diff --git a/Makefile b/Makefile
index 5950dfd..b05a747 100644
--- a/Makefile
+++ b/Makefile
@@ -1,10 +1,22 @@
-GITREV=`git describe --tags | cut -c 2-`
-LDFLAGS=-ldflags="-X 'github.com/writeas/writefreely.softwareVer=$(GITREV)'"
+# make(1) from NetBSD (bmake on many Linux's) uses $(.CURDIR), but GNU Make uses
+# $(CURDIR). Normalize on $(.CURDIR) by setting it to $(CURDIR) if not set, and
+# then $(PWD) if still not set.
+.CURDIR ?= $(CURDIR)
+.CURDIR ?= $(PWD)
+
+# For reproducible builds, don't store the current build directory by default;
+# instead store only the path from the root of the repo (so there is still
+# enough info in debug messages to find the correct file).
+GCFLAGS  = -gcflags="all=-trimpath=$(.CURDIR)"
+ASMFLAGS = -asmflags="all=-trimpath=$(.CURDIR)"
+
+GITREV!=git describe --tags | cut -c 2-
+GOLDFLAGS=-ldflags="-X 'github.com/writeas/writefreely.softwareVer=$(GITREV)' -extldflags '$(LDFLAGS)'"
 
 GOCMD=go
-GOINSTALL=$(GOCMD) install $(LDFLAGS)
-GOBUILD=$(GOCMD) build $(LDFLAGS)
-GOTEST=$(GOCMD) test $(LDFLAGS)
+GOINSTALL=$(GOCMD) install $(GOLDFLAGS) $(GCFLAGS) $(ASMFLAGS)
+GOBUILD=$(GOCMD) build $(GOLDFLAGS) $(GCFLAGS) $(ASMFLAGS)
+GOTEST=$(GOCMD) test $(GOLDFLAGS) $(GCFLAGS) $(ASMFLAGS)
 GOGET=$(GOCMD) get
 BINARY_NAME=writefreely
 DOCKERCMD=docker
@@ -19,19 +31,19 @@ build-linux: deps
 	@hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
 		$(GOGET) -u github.com/karalabe/xgo; \
 	fi
-	xgo --targets=linux/amd64, -dest build/ $(LDFLAGS) -tags='sqlite' -out writefreely ./cmd/writefreely
+	xgo --targets=linux/amd64, -dest build/ $(GOLDFLAGS) $(GCFLAGS) $(ASMFLAGS) -tags='sqlite' -out writefreely ./cmd/writefreely
 
 build-windows: deps
 	@hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
 		$(GOGET) -u github.com/karalabe/xgo; \
 	fi
-	xgo --targets=windows/amd64, -dest build/ $(LDFLAGS) -tags='sqlite' -out writefreely ./cmd/writefreely
+	xgo --targets=windows/amd64, -dest build/ $(GOLDFLAGS) $(GCFLAGS) $(ASMFLAGS) -tags='sqlite' -out writefreely ./cmd/writefreely
 
 build-darwin: deps
 	@hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
 		$(GOGET) -u github.com/karalabe/xgo; \
 	fi
-	xgo --targets=darwin/amd64, -dest build/ $(LDFLAGS) -tags='sqlite' -out writefreely ./cmd/writefreely
+	xgo --targets=darwin/amd64, -dest build/ $(GOLDFLAGS) $(GCFLAGS) $(ASMFLAGS) -tags='sqlite' -out writefreely ./cmd/writefreely
 
 build-docker :
 	$(DOCKERCMD) build -t $(IMAGE_NAME):latest -t $(IMAGE_NAME):$(GITREV) .