git-lfs/Makefile

153 lines
3.9 KiB
Makefile
Raw Normal View History

GIT_LFS_SHA ?= $(shell git rev-parse --short HEAD)
VERSION ?= $(shell git describe HEAD)
GO ?= go
GO_TEST_EXTRA_ARGS =
BUILTIN_LD_FLAGS =
BUILTIN_LD_FLAGS += -X github.com/git-lfs/git-lfs/config.GitCommit=$(GIT_LFS_SHA)
ifneq ("$(DWARF)","YesPlease")
BUILTIN_LD_FLAGS += -s
BUILTIN_LD_FLAGS += -w
endif
EXTRA_LD_FLAGS =
LD_FLAGS = $(BUILTIN_LD_FLAGS) $(EXTRA_LD_FLAGS)
BUILTIN_GC_FLAGS =
EXTRA_GC_FLAGS =
GC_FLAGS = $(BUILTIN_GC_FLAGS) $(EXTRA_GC_FLAGS)
GLIDE ?= glide
GREP ?= grep
RM ?= rm -f
XARGS ?= xargs
GOIMPORTS ?= goimports
GOIMPORTS_EXTRA_OPTS ?= -w -l
2018-07-16 21:10:31 +00:00
ifndef PKGS
PKGS =
PKGS += commands
PKGS += config
PKGS += errors
PKGS += filepathfilter
PKGS += fs
PKGS += git
PKGS += git/gitattr
PKGS += git/githistory
PKGS += git
PKGS += lfs
PKGS += lfsapi
PKGS += locking
PKGS += subprocess
PKGS += tasklog
PKGS += tools
PKGS += tools/humanize
PKGS += tools/kv
PKGS += tq
endif
ifeq ($(OS),Windows_NT)
X ?= .exe
else
X ?=
endif
.DEFAULT_GOAL := bin/git-lfs$(X)
BUILD = GOOS=$(1) GOARCH=$(2) \
$(GO) build \
-ldflags="$(LD_FLAGS)" \
-gcflags="$(GC_FLAGS)" \
-o ./bin/git-lfs$(3) ./git-lfs.go
BUILD_TARGETS = bin/git-lfs-darwin-amd64 bin/git-lfs-darwin-386 \
bin/git-lfs-linux-amd64 bin/git-lfs-linux-386 \
bin/git-lfs-freebsd-amd64 bin/git-lfs-freebsd-386 \
bin/git-lfs-windows-amd64.exe bin/git-lfs-windows-386.exe
.PHONY : all build
all build : $(BUILD_TARGETS)
bin/git-lfs-darwin-amd64 : fmt
$(call BUILD,darwin,amd64,-darwin-amd64)
bin/git-lfs-darwin-386 : fmt
$(call BUILD,darwin,386,-darwin-386)
bin/git-lfs-linux-amd64 : fmt
$(call BUILD,linux,amd64,-linux-amd64)
bin/git-lfs-linux-386 : fmt
$(call BUILD,linux,386,-linux-386)
bin/git-lfs-freebsd-amd64 : fmt
$(call BUILD,freebsd,amd64,-freebsd-amd64)
bin/git-lfs-freebsd-386 : fmt
$(call BUILD,freebsd,386,-freebsd-386)
bin/git-lfs-windows-amd64.exe : version-info fmt
$(call BUILD,windows,amd64,-windows-amd64.exe)
bin/git-lfs-windows-386.exe : version-info fmt
$(call BUILD,windows,386,-windows-386.exe)
bin/git-lfs : git-lfs.go $(PKGS)
$(call BUILD,$(GOOS),$(GOARCH),)
bin/git-lfs.exe : git-lfs.go $(PKGS) version-info
$(call BUILD,$(GOOS),$(GOARCH),.exe)
.PHONY : version-info
version-info:
go get github.com/josephspurrier/goversioninfo/cmd/goversioninfo
PATH=$$PATH:$$GOPATH/bin/windows_386 $(GO) generate
RELEASE_TARGETS = bin/releases/git-lfs-darwin-amd64-$(VERSION).tar.gz \
bin/releases/git-lfs-darwin-386-$(VERSION).tar.gz \
bin/releases/git-lfs-linux-amd64-$(VERSION).tar.gz \
bin/releases/git-lfs-linux-386-$(VERSION).tar.gz \
bin/releases/git-lfs-freebsd-amd64-$(VERSION).tar.gz \
bin/releases/git-lfs-freebsd-386-$(VERSION).tar.gz \
bin/releases/git-lfs-windows-amd64-$(VERSION).zip \
bin/releases/git-lfs-windows-386-$(VERSION).zip
RELEASE_INCLUDES = README.md CHANGELOG.md script/install.sh
.PHONY : release
release : $(RELEASE_TARGETS)
shasum -a 256 $(RELEASE_TARGETS)
bin/releases/git-lfs-%-$(VERSION).tar.gz : $(RELEASE_INCLUDES) bin/git-lfs-%
@mkdir -p bin/releases
tar -s '!bin/git-lfs-.*!git-lfs!' -s '!script/!!' -czf $@ $^
bin/releases/git-lfs-%-$(VERSION).zip : $(RELEASE_INCLUDES) bin/git-lfs-%.exe
@mkdir -p bin/releases
zip -j -l $@ $^
TEST_TARGETS := test-bench test-verbose test-race
.PHONY : $(TEST_TARGETS) test
$(TEST_TARGETS) : test
test-bench : GO_TEST_EXTRA_ARGS=-run=__nothing__ -bench=.
test-verbose : GO_TEST_EXTRA_ARGS=-v
test-race : GO_TEST_EXTRA_ARGS=-race
test : fmt
$(GO) test $(GO_TEST_EXTRA_ARGS) $(addprefix ./,$(PKGS))
glide.lock : glide.yaml
$(GLIDE) update
vendor : glide.lock
$(GLIDE) install
$(RM) -r vendor/github.com/ThomsonReutersEikon/go-ntlm/utils
$(RM) -r vendor/github.com/davecgh/go-spew
$(RM) -r vendor/github.com/pmezard/go-difflib
.PHONY : fmt
2018-07-16 21:10:31 +00:00
fmt : $(PKGS) | lint
$(GOIMPORTS) $(GOIMPORTS_EXTRA_OPTS) $?
.PHONY : lint
2018-07-16 21:10:31 +00:00
lint : $(PKGS)
$(GO) list -f '{{ join .Deps "\n" }}' . \
| $(XARGS) $(GO) list -f '{{ if not .Standard }}{{ .ImportPath }}{{ end }}' \
| $(GREP) -v "github.com/git-lfs/git-lfs" || exit 0