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