-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmakefile
54 lines (45 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
50
51
52
53
54
.PHONY: build clean tool lint help
GO_CMD=go
GO_BUILD=$(GO_CMD) build -ldflags "-s -w"
GO_BUILD_PLUGIN=$(GO_CMD) build --buildmode=plugin
GO_CLEAN=$(GO_CMD) clean
GO_TEST=$(GO_CMD) test
GO_TEST_C=$(GO_CMD) test -c
GO_GET=$(GO_CMD) get
GO_FMT=gofmt
GO_LINT=golint
GO_VET=$(GO_CMD) vet
REMOVE=rm -rf
COPY = cp -rf
TARGET= build
TARGET_BIN= build/faas
TARGET_CONFIG= build/config
MAIN_FILE= manager.go
PLUGIN_PATH=./plugin
PLUGIN_MODULE=$(shell find ./plugin -type f -name "*.go" | xargs grep "package main" | awk -F. '{print $$2}' | sed "s/^\///g")
all: clean tidy build-plugin build
tidy:
$(GO_CMD) mod tidy
build:
$(GO_BUILD) -o ${TARGET_BIN} -v ./${MAIN_FILE}
release:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 $(GO_BUILD) -o ${TARGET_BIN} -v ./${MAIN_FILE}
build-plugin:
$(foreach plugin, $(PLUGIN_MODULE), $(GO_BUILD_PLUGIN) -o $(TARGET)/$(plugin).so $(plugin).go;)
$(foreach plugin, $(PLUGIN_MODULE), $(COPY) $(TARGET)/$(plugin).so $(plugin).so;)
tool:
$(GO_VET) ./...
$(GO_FMT) -w .
lint:
$(GO_LINT) .
clean:
@echo ++++ clean start ++++
$(foreach plugin, $(PLUGIN_MODULE), $(REMOVE) ${plugin}.so;)
$(REMOVE) ${TARGET}
$(GO_CLEAN) -i .
@echo ---- clean end ----
help:
@echo "make: compile packages and dependencies"
@echo "make tool: run specified go tool"
@echo "make lint: golint ./..."
@echo "make clean: remove object files and cached files"