-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMakefile
More file actions
134 lines (106 loc) · 4.84 KB
/
Makefile
File metadata and controls
134 lines (106 loc) · 4.84 KB
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# Production servers
PBURL=https://termbackti.me
BROKER=wss://broker.termbackti.me
API=https://api.termbackti.me
LIVE=https://xterm.live
# Development servers
DEVPBURL=https://dev.termbackti.me
DEVBROKER=wss://dev-broker.termbackti.me
DEVAPI=https://dev-api.termbackti.me
DEVLIVE=https://dev.xterm.live
# Misc settings
GISTAPI=https://api.github.com/gists
GITURL=louist.dev/termbacktime
APP_NAME=termbacktime
GFILE_NAME=terminal-recording.json
CONFIG_TYPE=json
REV=$(shell git rev-parse --short HEAD)
# STUN servers for WebRTC (live terminal sharing)
STUN_SERVER1=stun:stun1.l.google.com:19302
STUN_SERVER2=stun:stun2.l.google.com:19302
# Binary file names
BINARY_DARWIN=$(APP_NAME)-$(REV)-darwin
BINARY_UNIX=$(APP_NAME)-$(REV)-unix
BINARY_FREEBSD=$(APP_NAME)-$(REV)-freebsd
# Get the application version
VERSION=$(shell cat ./VERSION)
# Production compiler flags
LDFLAGS=-s -w -X '${GITURL}/cmd.Application=${APP_NAME}' -X '${GITURL}/cmd.Version=${VERSION}' -X '${GITURL}/cmd.Revision=${REV}' \
-X '${GITURL}/cmd.PlaybackURL=${PBURL}' -X '${GITURL}/cmd.GistAPI=${GISTAPI}' -X '${GITURL}/cmd.Broker=${BROKER}' \
-X '${GITURL}/cmd.GistFileName=${GFILE_NAME}' -X '${GITURL}/cmd.ConfigType=${shell echo ${CONFIG_TYPE} | tr '[:upper:]' '[:lower:]'}' \
-X '${GITURL}/cmd.STUNServerOne=${STUN_SERVER1}' -X '${GITURL}/cmd.STUNServerTwo=${STUN_SERVER2}' -X '${GITURL}/cmd.APIEndpoint=${API}' \
-X '${GITURL}/cmd.LiveURL=${LIVE}'
# Development compiler flag options
DEVLDFLAGS=-X '${GITURL}/cmd.Application=${APP_NAME}-dev' -X '${GITURL}/cmd.Revision=DEV-${REV}' -X '${GITURL}/cmd.PlaybackURL=${DEVPBURL}' \
-X '${GITURL}/cmd.Broker=${DEVBROKER}' -X '${GITURL}/cmd.APIEndpoint=${DEVAPI}' -X '${GITURL}/cmd.LiveURL=${DEVLIVE}'
# Check if upx is installed
UPX := $(shell command -v upx 2> /dev/null)
build: initial
go build -o ./builds/$(APP_NAME) -v -ldflags "${LDFLAGS}"
build-dev: initial
go build -o ./builds/$(APP_NAME)-dev -v -ldflags "${LDFLAGS} ${DEVLDFLAGS}"
build-crosscompile: initial
GOOS=darwin GOARCH=amd64 go build -o ./builds/$(BINARY_DARWIN) -v -ldflags "${LDFLAGS}"
GOOS=darwin GOARCH=arm64 go build -o ./builds/$(BINARY_DARWIN)-arm64 -v -ldflags "${LDFLAGS}"
GOOS=linux GOARCH=amd64 go build -o ./builds/$(BINARY_UNIX) -v -ldflags "${LDFLAGS}"
GOOS=linux GOARCH=386 go build -o ./builds/$(BINARY_UNIX)-386 -v -ldflags "${LDFLAGS}"
GOOS=linux GOARCH=arm64 go build -o ./builds/$(BINARY_UNIX)-arm64 -v -ldflags "${LDFLAGS}"
GOOS=linux GOARCH=arm GOARM=7 go build -o ./builds/$(BINARY_UNIX)-armv7 -v -ldflags "${LDFLAGS}"
GOOS=linux GOARCH=arm GOARM=6 go build -o ./builds/$(BINARY_UNIX)-armv6 -v -ldflags "${LDFLAGS}"
build-freebsd: initial
GOOS=freebsd GOARCH=amd64 go build -o ./builds/$(BINARY_FREEBSD) -v -ldflags "${LDFLAGS}"
GOOS=freebsd GOARCH=386 go build -o ./builds/$(BINARY_FREEBSD)-386 -v -ldflags "${LDFLAGS}"
build-crosscompile-dev: initial
GOOS=darwin GOARCH=amd64 go build -o ./builds/$(BINARY_DARWIN)-dev -v -ldflags "${LDFLAGS} ${DEVLDFLAGS}"
GOOS=linux GOARCH=amd64 go build -o ./builds/$(BINARY_UNIX)-dev -v -ldflags "${LDFLAGS} ${DEVLDFLAGS}"
GOOS=linux GOARCH=386 go build -o ./builds/$(BINARY_UNIX)-386-dev -v -ldflags "${LDFLAGS} ${DEVLDFLAGS}"
GOOS=linux GOARCH=arm64 go build -o ./builds/$(BINARY_UNIX)-arm64-dev -v -ldflags "${LDFLAGS} ${DEVLDFLAGS}"
GOOS=linux GOARCH=arm GOARM=7 go build -o ./builds/$(BINARY_UNIX)-armv7-dev -v -ldflags "${LDFLAGS} ${DEVLDFLAGS}"
GOOS=linux GOARCH=arm GOARM=6 go build -o ./builds/$(BINARY_UNIX)-armv6-dev -v -ldflags "${LDFLAGS} ${DEVLDFLAGS}"
build-freebsd-dev: initial
GOOS=freebsd GOARCH=amd64 go build -o ./builds/$(BINARY_FREEBSD)-dev -v -ldflags "${LDFLAGS} ${DEVLDFLAGS}"
GOOS=freebsd GOARCH=386 go build -o ./builds/$(BINARY_FREEBSD)-386-dev -v -ldflags "${LDFLAGS} ${DEVLDFLAGS}"
install: initial
go install -ldflags "${LDFLAGS}"
install-upx: initial install upx-installed
install-dev: initial
go build -o $(GOPATH)/bin/$(APP_NAME)-dev -v -ldflags "${LDFLAGS} ${DEVLDFLAGS}"
install-dev-upx: initial install-dev upx-installed
uninstall:
ifneq (,$(shell which termbacktime))
rm -rf $(shell which termbacktime)
endif
ifneq (,$(shell which termbacktime-dev))
rm -rf $(shell which termbacktime-dev)
endif
go clean -i
upx-check:
ifndef UPX
@echo ""
@echo "upx is not installed; please see https://upx.github.io/ for more information"
endif
upx: upx-check
ifdef UPX
upx -5 ./builds/*
endif
upx-installed: upx-check
ifdef UPX
upx -5 $(GOPATH)/bin/$(APP_NAME)*
endif
# upx does not support freebsd
upx-crosscompile: upx-check
ifdef UPX
upx -5 ./builds/$(BINARY_DARWIN)* ./builds/$(BINARY_UNIX)*
endif
initial:
go clean
rm -rf ./builds/termbacktime*
go vet ./...
run:
go run -v -ldflags "${LDFLAGS}" ./main.go $(cmd)
run-dev:
go run -v -ldflags "${LDFLAGS} ${DEVLDFLAGS}" ./main.go $(cmd)
update-pkg-cache:
cd .. && GOPROXY=https://proxy.golang.org GO111MODULE=on go get ${GITURL}@$(VERSION)
is-termbacktime-repo:
@exit 0