|
3 | 3 | BUILD_DATE = $(shell date -u '+%Y-%m-%d_%H:%M:%S') |
4 | 4 | BUILD_DISTRO = $(shell lsb_release -sd) |
5 | 5 |
|
6 | | -all: deviceparameter manual |
| 6 | +USE_UPX ?= 0 |
| 7 | +ifneq ($(USE_UPX),0) |
| 8 | + BUILD_PARTS := build compress-brute |
| 9 | +else |
| 10 | + BUILD_PARTS := build |
| 11 | +endif |
7 | 12 |
|
8 | | -win32: export GOOS=windows |
9 | | -win32: export GOARCH=386 |
10 | | -win32: deviceparameter.exe |
| 13 | +# In this setup arm5=armel and arm6=armhf for widest compatibility |
| 14 | +GOALS := amd64 arm5 armel arm6 armhf arm7 arm64 win64 clean |
| 15 | +ifeq (,$(filter $(GOALS),$(MAKECMDGOALS))) |
| 16 | + $(error Build with make amd64/arm5/armel/arm6/armhf/arm7/arm64/win64) |
| 17 | +endif |
| 18 | + |
| 19 | +amd64: |
| 20 | +amd64: export GOOS=linux |
| 21 | +amd64: export GOARCH=amd64 |
| 22 | +amd64: export FLAVOUR=$(GOOS)-$(GOARCH) |
| 23 | +amd64: $(BUILD_PARTS) manual |
| 24 | + |
| 25 | +arm5: export GOOS=linux |
| 26 | +arm5: export GOARCH=arm |
| 27 | +arm5: export GOARM=5 |
| 28 | +arm5: export FLAVOUR=$(GOOS)-$(GOARCH)$(GOARM) |
| 29 | +arm5: $(BUILD_PARTS) manual |
| 30 | + |
| 31 | +armel: export GOOS=linux |
| 32 | +armel: export GOARCH=arm |
| 33 | +armel: export GOARM=5 |
| 34 | +armel: export FLAVOUR=$(GOOS)-armel |
| 35 | +armel: $(BUILD_PARTS) manual |
| 36 | + |
| 37 | +arm6: export GOOS=linux |
| 38 | +arm6: export GOARCH=arm |
| 39 | +arm6: export GOARM=6 |
| 40 | +arm6: export FLAVOUR=$(GOOS)-$(GOARCH)$(GOARM) |
| 41 | +arm6: $(BUILD_PARTS) manual |
| 42 | + |
| 43 | +armhf: export GOOS=linux |
| 44 | +armhf: export GOARCH=arm |
| 45 | +armhf: export GOARM=6 |
| 46 | +armhf: export FLAVOUR=$(GOOS)-armhf |
| 47 | +armhf: $(BUILD_PARTS) manual |
| 48 | + |
| 49 | +arm7: export GOOS=linux |
| 50 | +arm7: export GOARCH=arm |
| 51 | +arm7: export GOARM=7 |
| 52 | +arm7: export FLAVOUR=$(GOOS)-$(GOARCH)$(GOARM) |
| 53 | +arm7: $(BUILD_PARTS) manual |
| 54 | + |
| 55 | +arm64: export GOOS=linux |
| 56 | +arm64: export GOARCH=arm64 |
| 57 | +arm64: export FLAVOUR=$(GOOS)-$(GOARCH) |
| 58 | +arm64: $(BUILD_PARTS) manual |
11 | 59 |
|
12 | 60 | win64: export GOOS=windows |
13 | 61 | win64: export GOARCH=amd64 |
| 62 | +win64: export FLAVOUR=$(GOOS)-$(GOARCH) |
14 | 63 | win64: deviceparameter.exe |
15 | 64 |
|
16 | | -raspberry: export GOOS=linux |
17 | | -raspberry: export GOARCH=arm |
18 | | -raspberry: export GOARM=6 |
19 | | -raspberry: deviceparameter |
20 | | - |
21 | | -raspberry2: export GOOS=linux |
22 | | -raspberry2: export GOARCH=arm |
23 | | -raspberry2: export GOARM=7 |
24 | | -raspberry2: deviceparameter |
| 65 | +builddir: $(FLAVOUR) |
| 66 | + mkdir -p build/$(FLAVOUR) |
25 | 67 |
|
26 | | -deviceparameter: |
27 | | - go build -o deviceparameter -ldflags "-X 'main.ApplicationBuildDate=$(BUILD_DATE)' -X 'main.ApplicationBuildDistro=$(BUILD_DISTRO)'" |
| 68 | +# -s disable symbol table |
| 69 | +# -w disable DWARF generation |
| 70 | +build: builddir |
| 71 | + go build -o build/$(FLAVOUR)/deviceparameter -ldflags "-w -s -X 'main.ApplicationBuildDate=$(BUILD_DATE)' -X 'main.ApplicationBuildDistro=$(BUILD_DISTRO)'" |
28 | 72 |
|
29 | 73 | deviceparameter.exe: |
30 | | - go build -o deviceparameter.exe -ldflags "-X 'main.ApplicationBuildDate=$(BUILD_DATE)' -X 'main.ApplicationBuildDistro=$(BUILD_DISTRO)'" |
| 74 | + go build -o build/$(FLAVOUR)/deviceparameter.exe -ldflags "-w -s -X 'main.ApplicationBuildDate=$(BUILD_DATE)' -X 'main.ApplicationBuildDistro=$(BUILD_DISTRO)'" |
| 75 | + |
| 76 | +# upx will make the binary much smaller |
| 77 | +compress: build |
| 78 | + upx build/$(FLAVOUR)/deviceparameter |
31 | 79 |
|
32 | | -deviceparameter.1.gz: |
| 80 | +# but will take quite a while with --brute |
| 81 | +compress-brute: build |
| 82 | + upx --brute build/$(FLAVOUR)/deviceparameter |
| 83 | + |
| 84 | +build/$(FLAVOUR)/deviceparameter.1.gz: |
33 | 85 | ronn --roff README.md |
34 | 86 | mv README.1 deviceparameter.1 |
35 | 87 | gzip deviceparameter.1 |
| 88 | + mv deviceparameter.1.gz build/$(FLAVOUR)/ |
36 | 89 |
|
37 | | -manual: deviceparameter.1.gz |
38 | | - |
39 | | -install: deviceparameter manual |
40 | | - install -m 0755 deviceparameter /usr/local/bin |
41 | | - install -m 0644 deviceparameter /usr/local/man/man1 |
| 90 | +manual: build/$(FLAVOUR)/deviceparameter.1.gz |
42 | 91 |
|
43 | 92 | clean: |
44 | | - rm -f deviceparameter |
45 | | - rm -f deviceparameter.1.gz |
| 93 | + rm -Rf build |
46 | 94 |
|
47 | 95 | .PHONY: clean |
0 commit comments