2018-07-19 18:02:25 +00:00
|
|
|
GIT_LFS_SHA ?= $(shell git rev-parse --short HEAD)
|
|
|
|
VERSION ?= $(shell git describe HEAD)
|
|
|
|
|
2018-07-16 20:25:44 +00:00
|
|
|
GO ?= go
|
|
|
|
|
2018-07-16 21:25:54 +00:00
|
|
|
GO_TEST_EXTRA_ARGS =
|
|
|
|
|
2018-07-19 18:02:25 +00:00
|
|
|
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)
|
|
|
|
|
2018-07-16 20:05:08 +00:00
|
|
|
GLIDE ?= glide
|
|
|
|
|
2018-07-16 20:25:44 +00:00
|
|
|
GREP ?= grep
|
2018-07-16 20:05:08 +00:00
|
|
|
RM ?= rm -f
|
2018-07-16 20:25:44 +00:00
|
|
|
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
|
2018-07-16 20:05:08 +00:00
|
|
|
|
2018-07-19 18:02:25 +00:00
|
|
|
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 $@ $^
|
|
|
|
|
2018-07-16 21:25:54 +00:00
|
|
|
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))
|
|
|
|
|
2018-07-16 20:05:08 +00:00
|
|
|
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
|
2018-07-16 20:25:44 +00:00
|
|
|
|
2018-07-19 18:02:25 +00:00
|
|
|
.PHONY : fmt
|
2018-07-16 21:10:31 +00:00
|
|
|
fmt : $(PKGS) | lint
|
2018-07-16 20:25:44 +00:00
|
|
|
$(GOIMPORTS) $(GOIMPORTS_EXTRA_OPTS) $?
|
|
|
|
|
2018-07-19 18:02:25 +00:00
|
|
|
.PHONY : lint
|
2018-07-16 21:10:31 +00:00
|
|
|
lint : $(PKGS)
|
2018-07-16 20:25:44 +00:00
|
|
|
$(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
|