github.com/mithrandie/csvq@v1.18.1/Makefile (about) 1 GOPATH := $(shell pwd)/build 2 BINARY := csvq 3 RELEASE_ARCH := darwin/amd64 darwin/arm64 linux/amd64 linux/386 linux/arm linux/arm64 freebsd/amd64 freebsd/386 freebsd/arm netbsd/amd64 netbsd/386 netbsd/arm openbsd/amd64 openbsd/386 windows/amd64 windows/386 4 PRERELEASE_ARCH := darwin/amd64 darwin/arm64 linux/amd64 windows/amd64 5 BUILD_TAGS := -tags urfave_cli_no_docs 6 7 ifneq ($(shell command -v git && git remote -v 2>/dev/null | grep mithrandie/csvq.git && echo true),true) 8 VERSION := $(shell git describe --tags --always 2>/dev/null) 9 endif 10 11 ifdef VERSION 12 LDFLAGS := -ldflags="-X github.com/mithrandie/csvq/lib/query.Version=$(VERSION) -s -w" 13 endif 14 15 DIST_DIRS := find * -type d -exec 16 17 .DEFAULT_GOAL: $(BINARY) 18 19 $(BINARY): build 20 21 .PHONY: build 22 build: 23 go build $(BUILD_TAGS) -trimpath $(LDFLAGS) -o $(GOPATH)/bin/ 24 25 .PHONY: install 26 install: 27 go install $(BUILD_TAGS) -trimpath $(LDFLAGS) 28 29 .PHONY: clean 30 clean: 31 go clean -i -cache -modcache 32 33 .PHONY: build-all 34 build-all: 35 IFS='/'; \ 36 for TARGET in $(RELEASE_ARCH); \ 37 do \ 38 set -- $$TARGET; \ 39 GOOS=$$1 GOARCH=$$2 go build $(BUILD_TAGS) -trimpath $(LDFLAGS) -o "dist/$(BINARY)-$(VERSION)-$${1}-$${2}/"; \ 40 done 41 42 .PHONY: build-pre-release 43 build-pre-release: 44 IFS='/'; \ 45 for TARGET in $(PRERELEASE_ARCH); \ 46 do \ 47 set -- $$TARGET; \ 48 GOOS=$$1 GOARCH=$$2 go build $(BUILD_TAGS) -trimpath $(LDFLAGS) -o "dist/$(BINARY)-$(VERSION)-$${1}-$${2}/"; \ 49 done 50 51 .PHONY: dist - 52 dist: 53 cd dist && \ 54 $(DIST_DIRS) cp ../LICENSE {} \; && \ 55 $(DIST_DIRS) cp ../BINARY_CODE_LICENSE {} \; && \ 56 $(DIST_DIRS) cp ../README.md {} \; && \ 57 $(DIST_DIRS) cp ../CHANGELOG.md {} \; && \ 58 $(DIST_DIRS) tar -zcf {}.tar.gz {} \; && \ 59 cd .. 60 61 .PHONY: release 62 release: 63 ifeq ($(shell git tag --contains 2>/dev/null),) 64 $(error HEAD commit is not tagged) 65 else 66 git push origin $(VERSION) 67 endif 68 69 .PHONY: install-goyacc 70 install-goyacc: 71 ifeq ($(shell command -v goyacc 2>/dev/null),) 72 go get github.com/cznic/goyacc 73 endif 74 75 .PHONY: yacc 76 yacc: install-goyacc 77 cd lib/parser && \ 78 goyacc -o parser.go -v parser.output parser.y && \ 79 cd ../../lib/json && \ 80 goyacc -p jq -o query_parser.go -v query_parser.output query_parser.y && \ 81 goyacc -p jp -o path_parser.go -v path_parser.output path_parser.y && \ 82 cd ../.. 83