1GLIDE_GO_EXECUTABLE ?= go
2DIST_DIRS := find * -type d -exec
3VERSION ?= $(shell git describe --tags)
4VERSION_INCODE = $(shell perl -ne '/^var version.*"([^"]+)".*$$/ && print "v$$1\n"' glide.go)
5VERSION_INCHANGELOG = $(shell perl -ne '/^\# Release (\d+(\.\d+)+) / && print "$$1\n"' CHANGELOG.md | head -n1)
6
7build:
8	${GLIDE_GO_EXECUTABLE} build -o glide -ldflags "-X main.version=${VERSION}" glide.go
9
10install: build
11	install -d ${DESTDIR}/usr/local/bin/
12	install -m 755 ./glide ${DESTDIR}/usr/local/bin/glide
13
14test:
15	${GLIDE_GO_EXECUTABLE} test . ./gb ./path ./action ./tree ./util ./godep ./godep/strip ./gpm ./cfg ./dependency ./importer ./msg ./repo ./mirrors
16
17integration-test:
18	${GLIDE_GO_EXECUTABLE} build
19	./glide up
20	./glide install
21
22clean:
23	rm -f ./glide.test
24	rm -f ./glide
25	rm -rf ./dist
26
27bootstrap-dist:
28	${GLIDE_GO_EXECUTABLE} get -u github.com/Masterminds/gox
29
30build-all:
31	gox -verbose \
32	-ldflags "-X main.version=${VERSION}" \
33	-os="linux darwin windows freebsd openbsd netbsd" \
34	-arch="amd64 386 armv5 armv6 armv7 arm64 s390x" \
35	-osarch="!darwin/arm64" \
36	-output="dist/{{.OS}}-{{.Arch}}/{{.Dir}}" .
37
38dist: build-all
39	cd dist && \
40	$(DIST_DIRS) cp ../LICENSE {} \; && \
41	$(DIST_DIRS) cp ../README.md {} \; && \
42	$(DIST_DIRS) tar -zcf glide-${VERSION}-{}.tar.gz {} \; && \
43	$(DIST_DIRS) zip -r glide-${VERSION}-{}.zip {} \; && \
44	cd ..
45
46verify-version:
47	@if [ "$(VERSION_INCODE)" = "v$(VERSION_INCHANGELOG)" ]; then \
48		echo "glide: $(VERSION_INCHANGELOG)"; \
49	elif [ "$(VERSION_INCODE)" = "v$(VERSION_INCHANGELOG)-dev" ]; then \
50		echo "glide (development): $(VERSION_INCHANGELOG)"; \
51	else \
52		echo "Version number in glide.go does not match CHANGELOG.md"; \
53		echo "glide.go: $(VERSION_INCODE)"; \
54		echo "CHANGELOG : $(VERSION_INCHANGELOG)"; \
55		exit 1; \
56	fi
57
58.PHONY: build test install clean bootstrap-dist build-all dist integration-test verify-version
59