1.PHONY: help check
2.DEFAULT_GOAL := help
3
4SUBPKGS=cpu disk docker host internal load mem net process
5
6help:  ## Show help
7	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
8
9check:  ## Check
10	errcheck -ignore="Close|Run|Write" ./...
11	golint ./... | egrep -v 'underscores|HttpOnly|should have comment|comment on exported|CamelCase|VM|UID' && exit 1 || exit 0
12
13BUILD_FAIL_PATTERN=grep -v "exec format error" | grep "build failed" && exit 1 || exit 0
14build_test:  ## test only buildable
15	# Supported operating systems
16	GOOS=linux GOARCH=amd64 go test ./... | $(BUILD_FAIL_PATTERN)
17	GOOS=linux GOARCH=386 go test ./... | $(BUILD_FAIL_PATTERN)
18	GOOS=linux GOARCH=arm go test ./... | $(BUILD_FAIL_PATTERN)
19	GOOS=linux GOARCH=arm64 go test ./... | $(BUILD_FAIL_PATTERN)
20	GOOS=linux GOARCH=riscv64 go test ./... | $(BUILD_FAIL_PATTERN)
21	GOOS=freebsd go test ./... | $(BUILD_FAIL_PATTERN)
22	GOOS=freebsd GOARCH=arm go test ./... | $(BUILD_FAIL_PATTERN)
23	CGO_ENABLED=0 GOOS=darwin go test ./... | $(BUILD_FAIL_PATTERN)
24	GOOS=windows go test ./... | $(BUILD_FAIL_PATTERN)
25	# Operating systems supported for building only (not implemented error if used)
26	GOOS=solaris go test ./... | $(BUILD_FAIL_PATTERN)
27	GOOS=dragonfly go test ./... | $(BUILD_FAIL_PATTERN)
28	GOOS=netbsd go test ./... | $(BUILD_FAIL_PATTERN)
29	# cross build to OpenBSD not worked since process has "C"
30#	GOOS=openbsd go test ./... | $(BUILD_FAIL_PATTERN)
31
32ifeq ($(shell uname -s), Darwin)
33	CGO_ENABLED=1 GOOS=darwin go test ./... | $(BUILD_FAIL_PATTERN)
34endif
35	@echo 'Successfully built on all known operating systems'
36
37vet:
38	GOOS=darwin GOARCH=amd64 go vet ./...
39	GOOS=darwin GOARCH=386 go vet ./...
40	GOOS=darwin GOARCH=arm64 go vet ./...
41
42	GOOS=dragonfly GOARCH=amd64 go vet ./...
43
44	GOOS=freebsd GOARCH=amd64 go vet ./...
45	GOOS=freebsd GOARCH=386 go vet ./...
46	GOOS=freebsd GOARCH=arm go vet ./...
47
48	GOOS=linux GOARCH=386 go vet ./...
49	GOOS=linux GOARCH=amd64 go vet ./...
50	GOOS=linux GOARCH=arm64 go vet ./...
51	GOOS=linux GOARCH=arm go vet ./...
52	GOOS=linux GOARCH=mips64 go vet ./...
53	GOOS=linux GOARCH=mips64le go vet ./...
54	GOOS=linux GOARCH=mips go vet ./...
55	GOOS=linux GOARCH=mipsle go vet ./...
56	GOOS=linux GOARCH=ppc64le go vet ./...
57	GOOS=linux GOARCH=riscv64 go vet ./...
58	GOOS=linux GOARCH=s390x go vet ./...
59
60	GOOS=netbsd GOARCH=amd64 go vet ./...
61	GOOS=solaris GOARCH=amd64 go vet ./...
62
63	GOOS=windows GOARCH=amd64 go vet ./...
64	GOOS=windows GOARCH=386 go vet ./...
65
66macos_test:
67	CGO_ENABLED=0 GOOS=darwin go test ./... | $(BUILD_FAIL_PATTERN)
68	CGO_ENABLED=1 GOOS=darwin go test ./... | $(BUILD_FAIL_PATTERN)
69
70init_tools:
71	go get github.com/golang/dep/cmd/dep
72