-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
49 lines (41 loc) · 1.34 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
.PHONY: all build prepare package clean
BUILD_OUTPUT_DIR ?= build
BINARY_SUFFIX=$(if $(filter windows,$(GOOS)),.exe)
BINARIES := bookxnote-local-ocr server certgen
ifdef GOOS
ifdef GOARCH
PLATFORM_SUFFIX := $(GOOS)-$(GOARCH)
BUILD_OUTPUT_DIR := $(BUILD_OUTPUT_DIR)/bookxnote-local-ocr-$(PLATFORM_SUFFIX)
ARCHIVE_NAME := bookxnote-local-ocr-$(PLATFORM_SUFFIX)
ARCHIVE_EXT := $(if $(filter windows,$(GOOS)),.zip,.tar.gz)
endif
endif
all: package
build:
@echo "building..."
@mkdir -p $(BUILD_OUTPUT_DIR)
@for binary in $(BINARIES); do \
echo "building $$binary..."; \
go build -o $(BUILD_OUTPUT_DIR)/$$binary$(BINARY_SUFFIX) cmd/$$binary/main.go; \
done
prepare: build
@echo "prepare..."
@cp README.md LICENSE $(BUILD_OUTPUT_DIR)/
@mkdir -p $(BUILD_OUTPUT_DIR)/docs
@cp docs/tutorial.md $(BUILD_OUTPUT_DIR)/docs/tutorial.md
@cp artifact/config.yml $(BUILD_OUTPUT_DIR)/
@if [ "$(GOOS)" = "windows" ]; then \
cp artifact/windows/*.bat $(BUILD_OUTPUT_DIR)/; \
fi
package: prepare
@echo "packaging..."
@cd $(dir $(BUILD_OUTPUT_DIR)) && \
if [ "$(GOOS)" = "windows" ]; then \
zip -r $(ARCHIVE_NAME)$(ARCHIVE_EXT) $(notdir $(BUILD_OUTPUT_DIR)); \
else \
tar czf $(ARCHIVE_NAME)$(ARCHIVE_EXT) $(notdir $(BUILD_OUTPUT_DIR)); \
fi
@echo "done: $(ARCHIVE_NAME)$(ARCHIVE_EXT)"
clean:
@echo "clean..."
@rm -rf $(BUILD_OUTPUT_DIR)