forked from bww/urlencode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
67 lines (46 loc) · 1.81 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# products
PRODUCT=urlenc
# build and packaging
MAIN := ./src/encode
BIN = $(PWD)/bin
SRC = $(shell find src -name \*.go -print)
# fix our gopath
GOPATH := $(GOPATH):$(PWD)
# build and packaging for release
GITHASH := $(shell git log --pretty=format:'%h' -n 1)
VERSION ?= $(GITHASH)
RELEASE_BUILD = $(PWD)/target
RELEASE_TARGETS = $(PWD)/target/$(GOOS)_$(GOARCH)
RELEASE_PRODUCT = urlencode-$(VERSION)
RELEASE_ARCHIVE = $(RELEASE_PRODUCT)-$(GOOS)-$(GOARCH).tgz
RELEASE_PACKAGE = $(RELEASE_TARGETS)/$(RELEASE_ARCHIVE)
RELEASE_BASE = $(RELEASE_TARGETS)/$(RELEASE_PRODUCT)/bin
TEST_PKGS ?= encode/...
.PHONY: all test urlenc install release build build_release build_formula clean
all: build
# build and install
PREFIX ?= /usr/local
.PHONY: all encode decode
all: urlenc
$(TARGETS):
mkdir -p $(TARGETS)
urlenc: $(BIN)/$(PRODUCT)
$(BIN)/$(PRODUCT): $(TARGETS) $(SRC)
go build -ldflags "-X main.mode=enc -X main.version=$(VERSION) -X main.githash=$(GITHASH)" -o $(BIN)/$(PRODUCT) $(MAIN)
install: urlenc ## Build and install
install -m 0755 $(BIN)/$(PRODUCT) $(PREFIX)/bin
$(RELEASE_BASE)/$(PRODUCT): $(SRC)
go build -ldflags "-X main.mode=enc -X main.version=$(VERSION) -X main.githash=$(GITHASH)" -o $(RELEASE_BASE)/$(PRODUCT) $(MAIN)
$(RELEASE_PACKAGE): $(RELEASE_BASE)/$(PRODUCT)
(cd $(RELEASE_TARGETS) && tar -zcf $(RELEASE_ARCHIVE) $(RELEASE_PRODUCT))
build_release: $(RELEASE_PACKAGE)
build_formula: build_release
$(PWD)/tools/update-formula -v $(VERSION) -o $(PWD)/formula/urlencode.rb $(RELEASE_PACKAGE)
release: test ## Build for all supported architectures
make build_release GOOS=linux GOARCH=amd64
make build_release GOOS=freebsd GOARCH=amd64
make build_formula GOOS=darwin GOARCH=amd64
test: ## Run tests
go test $(TEST_PKGS)
clean: ## Delete the built product and any generated files
rm -rf $(BIN) $(RELEASE_BUILD)