forked from google/mtail
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
155 lines (118 loc) · 3.81 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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# Copyright 2011 Google Inc. All Rights Reserved.
# This file is available under the Apache license.
# Set the timeout for tests run under the race detector.
timeout := 60s
ifeq ($(TRAVIS),true)
timeout := 5m
endif
ifeq ($(CIRCLECI),true)
timeout := 5m
endif
GOFILES=$(shell find . -name '*.go' -a ! -name '*_test.go')
GOTESTFILES=$(shell find . -name '*_test.go')
CLEANFILES+=\
vm/parser.go\
vm/y.output\
all: mtail
.PHONY: clean covclean crossclean
clean: covclean crossclean
rm -f $(CLEANFILES) .*dep-stamp
covclean:
rm -f *.coverprofile coverage.html
crossclean:
rm -rf build
version := $(shell git describe --tags)
revision := $(shell git rev-parse HEAD)
release := $(shell git describe --tags | cut -d"-" -f 1,2)
GO_LDFLAGS := "-X main.Version=${version} -X main.Revision=${revision}"
install mtail: $(GOFILES) .dep-stamp
go install -ldflags $(GO_LDFLAGS)
vm/parser.go: vm/parser.y .gen-dep-stamp
go generate -x ./vm
emgen/emgen: emgen/emgen.go
cd emgen && go build
.PHONY: install_crossbuild
install_crossbuild: .crossbuild-dep-stamp
.crossbuild-dep-stamp:
go get github.com/mitchellh/gox
touch $@
GOX_OSARCH := "linux/amd64 windows/amd64 darwin/amd64"
#GOX_OSARCH := ""
GOX_ARCH="amd64"
#GOX_ARCH := ""
.PHONY: crossbuild
crossbuild: install_crossbuild $(GOFILES) .dep-stamp
mkdir -p build
gox --output="./build/mtail_${release}_{{.OS}}_{{.Arch}}" -osarch=$(GOX_OSARCH) -arch=$(GOX_ARCH) -ldflags $(GO_LDFLAGS)
.PHONY: test check
check test: $(GOFILES) $(GOTESTFILES)
go test -timeout 10s ./...
.PHONY: testrace
testrace: $(GOFILES) $(GOTESTFILES)
go test -timeout ${timeout} -race -v ./...
.PHONY: smoke
smoke: $(GOFILES) $(GOTESTFILES)
go test -timeout 1s -test.short ./...
.PHONY: ex_test
ex_test: ex_test.go testdata/* examples/*
go test -run TestExamplePrograms --logtostderr
.PHONY: bench
bench: $(GOFILES) $(GOTESTFILES) .dep-stamp
go test -bench=. -timeout=60s -run=XXX ./...
.PHONY: bench_cpu
bench_cpu:
go test -bench=. -run=XXX -timeout=60s -cpuprofile=cpu.out
.PHONY: bench_mem
bench_mem:
go test -bench=. -run=XXX -timeout=60s -memprofile=mem.out
.PHONY: recbench
recbench: $(GOFILES) $(GOTESTFILES) .dep-stamp
go test -bench=. -run=XXX --record_benchmark ./...
PACKAGES := $(shell find . -name '*.go' -printf '%h\n' | sort -u)
PHONY: coverage
coverage: gover.coverprofile
gover.coverprofile: $(GOFILES) $(GOTESTFILES) .dep-stamp
for package in $(PACKAGES); do\
go test -covermode=count -coverprofile=$$(echo $$package | tr './' '__').coverprofile ./$$package;\
done
gover
.PHONY: covrep
covrep: coverage.html
xdg-open $<
coverage.html: gover.coverprofile
go tool cover -html=$< -o $@
.PHONY: testall
testall: testrace bench
.PHONY: install_deps
install_deps: .dep-stamp
IMPORTS := $(shell go list -f '{{join .Imports "\n"}}' ./... | sort | uniq | grep -v mtail)
TESTIMPORTS := $(shell go list -f '{{join .TestImports "\n"}}' ./... | sort | uniq | grep -v mtail)
.dep-stamp: vm/parser.go
@echo "Install all dependencies, ensuring they're updated"
go get -u -v $(IMPORTS)
go get -u -v $(TESTIMPORTS)
touch $@
.PHONY: install_gen_deps
install_gen_deps: .gen-dep-stamp
.gen-dep-stamp:
go get golang.org/x/tools/cmd/goyacc
touch $@
.PHONY: install_coverage_deps
install_coverage_deps: .cov-dep-stamp vm/parser.go
.cov-dep-stamp: install_deps
go get golang.org/x/tools/cmd/cover
go get github.com/sozorogami/gover
go get github.com/mattn/goveralls
touch $@
ifeq ($(CIRCLECI),true)
COVERALLS_SERVICE := circle-ci
endif
ifeq ($(TRAVIS),true)
COVERALLS_SERVICE := travis-ci
endif
upload_to_coveralls: gover.coverprofile
goveralls -coverprofile=gover.coverprofile -service=$(COVERALLS_SERVICE)
# Append the bin subdirs of every element of the GOPATH list to PATH, so we can find goyacc.
empty :=
space := $(empty) $(empty)
export PATH := $(PATH):$(subst $(space),:,$(patsubst %,%/bin,$(subst :, ,$(GOPATH))))