diff --git a/BUILD.md b/BUILD.md index dba8b22..711228d 100644 --- a/BUILD.md +++ b/BUILD.md @@ -24,6 +24,13 @@ make build make release ``` +> :warning: Makefile uses git commands to determine the version and the +> revision information for `fzf --version`. So if you're building fzf from an +> environment where its git information is not available, you have to manually +> set `$FZF_VERSION` and `$FZF_REVISION`. +> +> e.g. `FZF_VERSION=0.24.0 FZF_REVISION=tarball make` + Third-party libraries used -------------------------- diff --git a/Makefile b/Makefile index 4308d37..f67bd81 100644 --- a/Makefile +++ b/Makefile @@ -5,10 +5,25 @@ MAKEFILE := $(realpath $(lastword $(MAKEFILE_LIST))) ROOT_DIR := $(shell dirname $(MAKEFILE)) SOURCES := $(wildcard *.go src/*.go src/*/*.go) $(MAKEFILE) -VERSION := $(shell git describe --abbrev=0) +ifdef FZF_VERSION +VERSION := $(FZF_VERSION) +else +VERSION := $(shell git describe --abbrev=0 2> /dev/null) +endif +ifeq ($(VERSION),) +$(error Not on git repository; cannot determine $$FZF_VERSION) +endif VERSION_TRIM := $(shell sed "s/-.*//" <<< $(VERSION)) VERSION_REGEX := $(subst .,\.,$(VERSION_TRIM)) -REVISION := $(shell git log -n 1 --pretty=format:%h -- $(SOURCES)) + +ifdef FZF_REVISION +REVISION := $(FZF_REVISION) +else +REVISION := $(shell git log -n 1 --pretty=format:%h -- $(SOURCES) 2> /dev/null) +endif +ifeq ($(REVISION),) +$(error Not on git repository; cannot determine $$FZF_REVISION) +endif BUILD_FLAGS := -a -ldflags "-X main.version=$(VERSION) -X main.revision=$(REVISION) -w '-extldflags=$(LDFLAGS)'" -tags "$(TAGS)" BINARY64 := fzf-$(GOOS)_amd64