138 lines
3.9 KiB
Makefile
138 lines
3.9 KiB
Makefile
### Makefile for tidb
|
|
|
|
# Ensure GOPATH is set before running build process.
|
|
ifeq "$(GOPATH)" ""
|
|
$(error Please set the environment variable GOPATH before running `make`)
|
|
endif
|
|
|
|
CURDIR := $(shell pwd)
|
|
path_to_add := $(addsuffix /bin,$(subst :,/bin:,$(CURDIR)/_vendor:$(GOPATH)))
|
|
export PATH := $(path_to_add):$(PATH)
|
|
|
|
GO := GO15VENDOREXPERIMENT="1" go
|
|
GOBUILD := GOPATH=$(CURDIR)/_vendor:$(GOPATH) $(GO) build
|
|
GOTEST := GOPATH=$(CURDIR)/_vendor:$(GOPATH) $(GO) test
|
|
|
|
ARCH := "`uname -s`"
|
|
LINUX := "Linux"
|
|
MAC := "Darwin"
|
|
PACKAGES := $$(go list ./...| grep -vE 'vendor')
|
|
FILES := $$(find . -name '*.go' | grep -vE 'vendor')
|
|
|
|
LDFLAGS += -X "github.com/pingcap/tidb/util/printer.TiDBBuildTS=$(shell date -u '+%Y-%m-%d %I:%M:%S')"
|
|
LDFLAGS += -X "github.com/pingcap/tidb/util/printer.TiDBGitHash=$(shell git rev-parse HEAD)"
|
|
|
|
TARGET = ""
|
|
|
|
.PHONY: all build update parser clean todo test gotest interpreter server dev benchkv benchraw check parserlib
|
|
|
|
default: server buildsucc
|
|
|
|
buildsucc:
|
|
@echo Build TiDB Server successfully!
|
|
|
|
all: dev server benchkv
|
|
|
|
dev: parserlib build benchkv test check
|
|
|
|
build:
|
|
$(GOBUILD)
|
|
|
|
TEMP_FILE = temp_parser_file
|
|
|
|
goyacc:
|
|
$(GOBUILD) -o bin/goyacc parser/goyacc/main.go
|
|
|
|
parser: goyacc
|
|
bin/goyacc -o /dev/null -xegen $(TEMP_FILE) parser/parser.y
|
|
bin/goyacc -o parser/parser.go -xe $(TEMP_FILE) parser/parser.y 2>&1 | egrep "(shift|reduce)/reduce" | awk '{print} END {if (NR > 0) {print "Find conflict in parser.y. Please check y.output for more information."; system("rm -f $(TEMP_FILE)"); exit 1;}}'
|
|
rm -f $(TEMP_FILE)
|
|
rm -f y.output
|
|
|
|
@if [ $(ARCH) = $(LINUX) ]; \
|
|
then \
|
|
sed -i -e 's|//line.*||' -e 's/yyEofCode/yyEOFCode/' parser/parser.go; \
|
|
elif [ $(ARCH) = $(MAC) ]; \
|
|
then \
|
|
/usr/bin/sed -i "" 's|//line.*||' parser/parser.go; \
|
|
/usr/bin/sed -i "" 's/yyEofCode/yyEOFCode/' parser/parser.go; \
|
|
fi
|
|
|
|
@awk 'BEGIN{print "// Code generated by goyacc"} {print $0}' parser/parser.go > tmp_parser.go && mv tmp_parser.go parser/parser.go;
|
|
|
|
parserlib: parser/parser.go
|
|
|
|
parser/parser.go: parser/parser.y
|
|
make parser
|
|
|
|
check:
|
|
bash gitcookie.sh
|
|
go get github.com/golang/lint/golint
|
|
|
|
@echo "vet"
|
|
@ go tool vet $(FILES) 2>&1 | awk '{print} END{if(NR>0) {exit 1}}'
|
|
@echo "vet --shadow"
|
|
@ go tool vet --shadow $(FILES) 2>&1 | awk '{print} END{if(NR>0) {exit 1}}'
|
|
@echo "golint"
|
|
@ golint ./... 2>&1 | grep -vE 'context\.Context|LastInsertId|NewLexer|\.pb\.go' | awk '{print} END{if(NR>0) {exit 1}}'
|
|
@echo "gofmt (simplify)"
|
|
@ gofmt -s -l -w $(FILES) 2>&1 | grep -v "parser/parser.go" | awk '{print} END{if(NR>0) {exit 1}}'
|
|
|
|
errcheck:
|
|
go get github.com/kisielk/errcheck
|
|
errcheck -blank $(PACKAGES)
|
|
|
|
clean:
|
|
$(GO) clean -i ./...
|
|
rm -rf *.out
|
|
|
|
todo:
|
|
@grep -n ^[[:space:]]*_[[:space:]]*=[[:space:]][[:alpha:]][[:alnum:]]* */*.go parser/parser.y || true
|
|
@grep -n TODO */*.go parser/parser.y || true
|
|
@grep -n BUG */*.go parser/parser.y || true
|
|
@grep -n println */*.go parser/parser.y || true
|
|
|
|
test: gotest
|
|
|
|
gotest: parserlib
|
|
@export log_level=error;\
|
|
$(GOTEST) -cover $(PACKAGES)
|
|
|
|
race: parserlib
|
|
@export log_level=debug; \
|
|
$(GOTEST) -race $(PACKAGES)
|
|
|
|
tikv_integration_test: parserlib
|
|
$(GOTEST) ./store/tikv/. -with-tikv=true
|
|
|
|
server: parserlib
|
|
ifeq ($(TARGET), "")
|
|
$(GOBUILD) -ldflags '$(LDFLAGS)' -o bin/tidb-server tidb-server/main.go
|
|
else
|
|
$(GOBUILD) -ldflags '$(LDFLAGS)' -o '$(TARGET)' tidb-server/main.go
|
|
endif
|
|
|
|
benchkv:
|
|
$(GOBUILD) -ldflags '$(LDFLAGS)' -o bin/benchkv cmd/benchkv/main.go
|
|
|
|
benchraw:
|
|
$(GOBUILD) -ldflags '$(LDFLAGS)' -o bin/benchraw cmd/benchraw/main.go
|
|
|
|
benchdb:
|
|
$(GOBUILD) -ldflags '$(LDFLAGS)' -o bin/benchdb cmd/benchdb/main.go
|
|
|
|
update:
|
|
which glide >/dev/null || curl https://glide.sh/get | sh
|
|
which glide-vc || go get -v -u github.com/sgotti/glide-vc
|
|
rm -r vendor && mv _vendor/src vendor || true
|
|
rm -rf _vendor
|
|
ifdef PKG
|
|
glide get -s -v --skip-test ${PKG}
|
|
else
|
|
glide update -s -v -u --skip-test
|
|
endif
|
|
@echo "removing test files"
|
|
glide vc --only-code --no-tests
|
|
mkdir -p _vendor
|
|
mv vendor _vendor/src
|