79 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
		
		
			
		
	
	
			79 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| 
								 | 
							
								# Directory to place `go install`ed binaries into.
							 | 
						||
| 
								 | 
							
								export GOBIN ?= $(shell pwd)/bin
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								GOLINT = $(GOBIN)/golint
							 | 
						||
| 
								 | 
							
								GEN_ATOMICINT = $(GOBIN)/gen-atomicint
							 | 
						||
| 
								 | 
							
								GEN_ATOMICWRAPPER = $(GOBIN)/gen-atomicwrapper
							 | 
						||
| 
								 | 
							
								STATICCHECK = $(GOBIN)/staticcheck
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								GO_FILES ?= $(shell find . '(' -path .git -o -path vendor ')' -prune -o -name '*.go' -print)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Also update ignore section in .codecov.yml.
							 | 
						||
| 
								 | 
							
								COVER_IGNORE_PKGS = \
							 | 
						||
| 
								 | 
							
									go.uber.org/atomic/internal/gen-atomicint \
							 | 
						||
| 
								 | 
							
									go.uber.org/atomic/internal/gen-atomicwrapper
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.PHONY: build
							 | 
						||
| 
								 | 
							
								build:
							 | 
						||
| 
								 | 
							
									go build ./...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.PHONY: test
							 | 
						||
| 
								 | 
							
								test:
							 | 
						||
| 
								 | 
							
									go test -race ./...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.PHONY: gofmt
							 | 
						||
| 
								 | 
							
								gofmt:
							 | 
						||
| 
								 | 
							
									$(eval FMT_LOG := $(shell mktemp -t gofmt.XXXXX))
							 | 
						||
| 
								 | 
							
									gofmt -e -s -l $(GO_FILES) > $(FMT_LOG) || true
							 | 
						||
| 
								 | 
							
									@[ ! -s "$(FMT_LOG)" ] || (echo "gofmt failed:" && cat $(FMT_LOG) && false)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$(GOLINT):
							 | 
						||
| 
								 | 
							
									cd tools && go install golang.org/x/lint/golint
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$(STATICCHECK):
							 | 
						||
| 
								 | 
							
									cd tools && go install honnef.co/go/tools/cmd/staticcheck
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$(GEN_ATOMICWRAPPER): $(wildcard ./internal/gen-atomicwrapper/*)
							 | 
						||
| 
								 | 
							
									go build -o $@ ./internal/gen-atomicwrapper
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$(GEN_ATOMICINT): $(wildcard ./internal/gen-atomicint/*)
							 | 
						||
| 
								 | 
							
									go build -o $@ ./internal/gen-atomicint
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.PHONY: golint
							 | 
						||
| 
								 | 
							
								golint: $(GOLINT)
							 | 
						||
| 
								 | 
							
									$(GOLINT) ./...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.PHONY: staticcheck
							 | 
						||
| 
								 | 
							
								staticcheck: $(STATICCHECK)
							 | 
						||
| 
								 | 
							
									$(STATICCHECK) ./...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.PHONY: lint
							 | 
						||
| 
								 | 
							
								lint: gofmt golint staticcheck generatenodirty
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# comma separated list of packages to consider for code coverage.
							 | 
						||
| 
								 | 
							
								COVER_PKG = $(shell \
							 | 
						||
| 
								 | 
							
									go list -find ./... | \
							 | 
						||
| 
								 | 
							
									grep -v $(foreach pkg,$(COVER_IGNORE_PKGS),-e "^$(pkg)$$") | \
							 | 
						||
| 
								 | 
							
									paste -sd, -)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.PHONY: cover
							 | 
						||
| 
								 | 
							
								cover:
							 | 
						||
| 
								 | 
							
									go test -coverprofile=cover.out -coverpkg  $(COVER_PKG) -v ./...
							 | 
						||
| 
								 | 
							
									go tool cover -html=cover.out -o cover.html
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.PHONY: generate
							 | 
						||
| 
								 | 
							
								generate: $(GEN_ATOMICINT) $(GEN_ATOMICWRAPPER)
							 | 
						||
| 
								 | 
							
									go generate ./...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.PHONY: generatenodirty
							 | 
						||
| 
								 | 
							
								generatenodirty:
							 | 
						||
| 
								 | 
							
									@[ -z "$$(git status --porcelain)" ] || ( \
							 | 
						||
| 
								 | 
							
										echo "Working tree is dirty. Commit your changes first."; \
							 | 
						||
| 
								 | 
							
										exit 1 )
							 | 
						||
| 
								 | 
							
									@make generate
							 | 
						||
| 
								 | 
							
									@status=$$(git status --porcelain); \
							 | 
						||
| 
								 | 
							
										[ -z "$$status" ] || ( \
							 | 
						||
| 
								 | 
							
										echo "Working tree is dirty after `make generate`:"; \
							 | 
						||
| 
								 | 
							
										echo "$$status"; \
							 | 
						||
| 
								 | 
							
										echo "Please ensure that the generated code is up-to-date." )
							 |