-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
141 lines (114 loc) · 3.17 KB
/
Makefile
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
135
136
137
138
139
140
141
BIN := varnam-desktop
STUFFED_BIN := varnam
HASH := $(shell git rev-parse HEAD | cut -c 1-8)
BUILD_DATE := $(shell date '+%Y-%m-%d %H:%M:%S')
ARCH := $(shell uname -m)
COMMIT_DATE := $(shell git show -s --format=%ci ${HASH})
VERSION := ${HASH} (${COMMIT_DATE})
PRETTY_VERSION := $(shell git describe --abbrev=0 --tags)
RELEASE_NAME := varnam-${PRETTY_VERSION}
STATIC := ui:/
LDFLAGS := -X 'main.buildVersion=${VERSION}' -X 'main.buildDate=${BUILD_DATE}' -s -w
ifeq ($(OS),Windows_NT)
OS := windows
LDFLAGS := $(LDFLAGS) -H windowsgui
BIN := $(BIN).exe
RELEASE_NAME_32 := $(RELEASE_NAME)-windows-32
RELEASE_NAME := $(RELEASE_NAME)-windows-${ARCH}
else
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Linux)
OS := linux
RELEASE_NAME := $(RELEASE_NAME)-linux-${ARCH}
endif
ifeq ($(UNAME_S),Darwin)
OS := mac
RELEASE_NAME := $(RELEASE_NAME)-mac-${ARCH}
endif
endif
govarnam-linux:
cd govarnam && make library && cp ./libgovarnam.so ../
govarnam-mac:
cd govarnam && make library-mac-universal && cp ./libgovarnam.dylib ../
govarnam-windows:
cd govarnam && make library && cp ./libgovarnam.so ../govarnam.dll
deps:
go get -u github.com/knadh/stuffbin/...
.PHONY: build
build: ## Build the binary (default)
go build -ldflags="${LDFLAGS}" -o ${BIN}
stuffbin -a stuff -in ${BIN} -out ${STUFFED_BIN} ${STATIC}
# 32-bit releases are only for Windows
build-32:
set GOARCH=386
$(MAKE) build
release-linux:
mkdir -p ${RELEASE_NAME}
cp -r schemes ${RELEASE_NAME}
cp varnam.sh varnam libgovarnam.* config.toml ${RELEASE_NAME}
tar -cvzf ${RELEASE_NAME}.tar.gz ${RELEASE_NAME}
release-mac:
mkdir -p ${RELEASE_NAME}
cp -r schemes ${RELEASE_NAME}
cp varnam libgovarnam.* config.toml ${RELEASE_NAME}
cp varnam.sh ${RELEASE_NAME}/varnam.command
tar -cvzf ${RELEASE_NAME}.tar.gz ${RELEASE_NAME}
release-windows:
mkdir -p ${RELEASE_NAME}
cp -r schemes ${RELEASE_NAME}
cp -a varnam.exe windows-setup.bat libgovarnam.dll config.toml ${RELEASE_NAME}
powershell "Compress-Archive -Force ${RELEASE_NAME} ${RELEASE_NAME}.zip"
release-windows-32:
mkdir -p ${RELEASE_NAME_32}
cp -r schemes ${RELEASE_NAME}
cp -a varnam.exe windows-setup.bat libgovarnam.dll config.toml ${RELEASE_NAME_32}
tar -acvf ${RELEASE_NAME_32}.zip ${RELEASE_NAME_32}
release-32:
$(MAKE) govarnam-windows-32
$(MAKE) build-32
$(MAKE) release-windows-32
ifeq ($(OS),windows)
.PHONY: govarnam
govarnam: govarnam-windows
release-os:
$(MAKE) release-windows
ui:
build-editor.bat
endif
ifeq ($(OS),linux)
.PHONY: govarnam
govarnam: govarnam-linux
release-os:
$(MAKE) release-linux
ui:
./build-editor.sh
endif
ifeq ($(OS),mac)
.PHONY: govarnam
govarnam: govarnam-mac
release-os:
$(MAKE) release-mac
ui:
./build-editor.sh
endif
.PHONY: editor
editor:
$(MAKE) ui
release:
$(MAKE) govarnam
$(MAKE) ui
$(MAKE) build
$(MAKE) release-os
.PHONY: run
run: build
./${BIN}
.PHONY: clean
clean: ## Remove temporary files and the binary
go clean
git clean -fdx
cd govarnam && git clean -fdx
# Absolutely awesome: http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html
.PHONY: help
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
.DEFAULT_GOAL := build