github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/pingcap/tidb/Makefile (about) 1 ### Makefile for tidb 2 3 # Ensure GOPATH is set before running build process. 4 ifeq "$(GOPATH)" "" 5 $(error Please set the environment variable GOPATH before running `make`) 6 endif 7 8 path_to_add := $(addsuffix /bin,$(subst :,/bin:,$(GOPATH))) 9 export PATH := $(path_to_add):$(PATH) 10 11 # Check the version of make and set env varirables/commands accordingly. 12 version_list := $(subst ., ,$(MAKE_VERSION)) 13 major_version := $(firstword $(version_list)) 14 old_versions := 0 1 2 3 15 ifeq "$(major_version)" "$(filter $(major_version),$(old_versions))" 16 # Old version of `make` installed. It fails to search golex/goyacc 17 # by using the modified `PATH`, so we specify these commands with full path. 18 GOLEX = $$(which golex) 19 GOYACC = $$(which goyacc) 20 GOLINT = $$(which golint) 21 else 22 # After version 4, `make` could follow modified `PATH` to find 23 # golex/goyacc correctly. 24 GOLEX := golex 25 GOYACC := goyacc 26 GOLINT := golint 27 endif 28 29 GO := GO15VENDOREXPERIMENT="1" go 30 ARCH := "`uname -s`" 31 LINUX := "Linux" 32 MAC := "Darwin" 33 PACKAGES := $$(go list ./...| grep -vE 'vendor') 34 35 LDFLAGS += -X "github.com/pingcap/tidb/util/printer.TiDBBuildTS=$(shell date -u '+%Y-%m-%d %I:%M:%S')" 36 LDFLAGS += -X "github.com/pingcap/tidb/util/printer.TiDBGitHash=$(shell git rev-parse HEAD)" 37 38 TARGET = "" 39 40 .PHONY: all build install update parser clean todo test gotest interpreter server 41 42 all: parser build test check 43 44 build: 45 rm -rf vendor && ln -s _vendor/vendor vendor 46 $(GO) build 47 rm -rf vendor 48 49 install: 50 rm -rf vendor && ln -s _vendor/vendor vendor 51 $(GO) install ./... 52 rm -rf vendor 53 54 TEMP_FILE = temp_parser_file 55 56 parser: 57 go get github.com/qiuyesuifeng/goyacc 58 go get github.com/qiuyesuifeng/golex 59 $(GOYACC) -o /dev/null -xegen $(TEMP_FILE) parser/parser.y 60 $(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;}}' 61 rm -f $(TEMP_FILE) 62 rm -f y.output 63 64 @if [ $(ARCH) = $(LINUX) ]; \ 65 then \ 66 sed -i -e 's|//line.*||' -e 's/yyEofCode/yyEOFCode/' parser/parser.go; \ 67 elif [ $(ARCH) = $(MAC) ]; \ 68 then \ 69 /usr/bin/sed -i "" 's|//line.*||' parser/parser.go; \ 70 /usr/bin/sed -i "" 's/yyEofCode/yyEOFCode/' parser/parser.go; \ 71 fi 72 73 $(GOLEX) -o parser/scanner.go parser/scanner.l 74 @awk 'BEGIN{print "// Code generated by goyacc"} {print $0}' parser/parser.go > tmp_parser.go && mv tmp_parser.go parser/parser.go; 75 @awk 'BEGIN{print "// Code generated by goyacc"} {print $0}' parser/scanner.go > tmp_scanner.go && mv tmp_scanner.go parser/scanner.go; 76 77 check: 78 bash gitcookie.sh 79 go get github.com/golang/lint/golint 80 81 @echo "vet" 82 @ go tool vet . 2>&1 | grep -vE 'vendor|parser/scanner.*unreachable code' | awk '{print} END{if(NR>0) {exit 1}}' 83 @echo "vet --shadow" 84 @ go tool vet --shadow . 2>&1 | grep -vE 'vendor|parser/parser.go|parser/scanner.go' | awk '{print} END{if(NR>0) {exit 1}}' 85 @echo "golint" 86 @ $(GOLINT) ./... 2>&1 | grep -vE 'vendor|LastInsertId|NewLexer|\.pb\.go' | awk '{print} END{if(NR>0) {exit 1}}' 87 @echo "gofmt (simplify)" 88 @ gofmt -s -l . 2>&1 | grep -vE 'vendor|parser/parser.go|parser/scanner.go' | awk '{print} END{if(NR>0) {exit 1}}' 89 90 errcheck: 91 go get github.com/kisielk/errcheck 92 errcheck -blank $(PACKAGES) 93 94 clean: 95 $(GO) clean -i ./... 96 rm -rf *.out 97 98 todo: 99 @grep -n ^[[:space:]]*_[[:space:]]*=[[:space:]][[:alpha:]][[:alnum:]]* */*.go parser/scanner.l parser/parser.y || true 100 @grep -n TODO */*.go parser/scanner.l parser/parser.y || true 101 @grep -n BUG */*.go parser/scanner.l parser/parser.y || true 102 @grep -n println */*.go parser/scanner.l parser/parser.y || true 103 104 test: gotest 105 106 gotest: 107 rm -rf vendor && ln -s _vendor/vendor vendor 108 $(GO) test -cover $(PACKAGES) 109 rm -rf vendor 110 111 race: 112 rm -rf vendor && ln -s _vendor/vendor vendor 113 $(GO) test --race -cover $(PACKAGES) 114 rm -rf vendor 115 116 ddl_test: 117 rm -rf vendor && ln -s _vendor/vendor vendor 118 $(GO) test ./ddl/... -skip_ddl=false 119 rm -rf vendor 120 121 ddl_race_test: 122 rm -rf vendor && ln -s _vendor/vendor vendor 123 $(GO) test --race ./ddl/... -skip_ddl=false 124 rm -rf vendor 125 126 tikv_integration_test: 127 rm -rf vendor && ln -s _vendor/vendor vendor 128 $(GO) test ./store/tikv/. -with-tikv=true 129 rm -rf vendor 130 131 interpreter: 132 rm -rf vendor && ln -s _vendor/vendor vendor 133 @cd interpreter && $(GO) build -ldflags '$(LDFLAGS)' 134 rm -rf vendor 135 136 server: 137 ifeq ($(TARGET), "") 138 rm -rf vendor && ln -s _vendor/vendor vendor 139 @cd tidb-server && $(GO) build -ldflags '$(LDFLAGS)' 140 rm -rf vendor 141 else 142 rm -rf vendor && ln -s _vendor/vendor vendor 143 @cd tidb-server && $(GO) build -ldflags '$(LDFLAGS)' -o '$(TARGET)' 144 rm -rf vendor 145 endif