forked from getmillipede/millipede-go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
81 lines (65 loc) · 2.1 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
NAME = millipede-go
SRC = cmd/millipede-go cmd/millipede-http
PACKAGES = .
GOCMD ?= go
GOBUILD ?= $(GOCMD) build
GOCLEAN ?= $(GOCMD) clean
GOINSTALL ?= $(GOCMD) install
GOTEST ?= $(GOCMD) test
GOFMT ?= gofmt -w
BUILD_LIST = $(foreach int, $(SRC), $(int)_build)
CLEAN_LIST = $(foreach int, $(SRC) $(PACKAGES), $(int)_clean)
INSTALL_LIST = $(foreach int, $(SRC), $(int)_install)
IREF_LIST = $(foreach int, $(SRC) $(PACKAGES), $(int)_iref)
TEST_LIST = $(foreach int, $(SRC) $(PACKAGES), $(int)_test)
BENCH_LIST = $(foreach int, $(SRC) $(PACKAGES), $(int)_bench)
TRAVIS_LIST = $(foreach int, $(SRC) $(PACKAGES), $(int)_travis)
COVER_LIST = $(foreach int, $(PACKAGES), $(int)_cover)
FMT_LIST = $(foreach int, $(SRC) $(PACKAGES), $(int)_fmt)
.PHONY: $(CLEAN_LIST) $(TEST_LIST) $(FMT_LIST) $(INSTALL_LIST) $(BUILD_LIST) $(IREF_LIST) $(BENCH_LIST) $(TRAVIS_LIST) $(COVER_LIST)
all: build
.PHONY: build
build: $(BUILD_LIST)
clean: $(CLEAN_LIST)
install: $(INSTALL_LIST)
test: $(TEST_LIST)
bench: $(BENCH_LIST)
travis: $(TRAVIS_LIST)
cover:
rm -f profile.out
$(MAKE) $(COVER_LIST)
echo "mode: set" | cat - profile.out > profile.out.tmp && mv profile.out.tmp profile.out
iref: $(IREF_LIST)
fmt: $(FMT_LIST)
$(BUILD_LIST): %_build: %_fmt %_iref
$(GOBUILD) -o $(notdir $*) ./$*
$(CLEAN_LIST): %_clean:
$(GOCLEAN) ./$*
$(INSTALL_LIST): %_install:
$(GOINSTALL) ./$*
$(IREF_LIST): %_iref:
$(GOTEST) -i ./$*
$(TEST_LIST): %_test:
$(GOTEST) ./$*
$(BENCH_LIST): %_bench:
$(GOTEST) -bench . ./$*
$(TRAVIS_LIST): %_travis:
$(GOTEST) -v ./$*
$(COVER_LIST): %_cover:
$(GOTEST) -coverprofile=file-profile.out ./$*
if [ -f file-profile.out ]; then cat file-profile.out | grep -v "mode: set" >> profile.out || true; rm -f file-profile.out; fi
$(FMT_LIST): %_fmt:
$(GOFMT) ./$*
.PHONY: re
re: clean all
.PHONY: dist
dist:
docker build -t $(NAME)-builder .
@docker rm $(NAME)-builder 2>/dev/null || true
mkdir -p dist
docker run --name=$(NAME)-builder $(NAME)-builder tar -cf - /etc/ssl > dist/ssl.tar
docker cp $(NAME)-builder:/go/bin tmp
docker rm $(NAME)-builder
touch tmp/bin/*
mv tmp/bin/* dist
rm -rf tmp