SOURCEDIR=. SOURCES := $(shell find $(SOURCEDIR) -name '*.go') BINARY=maputnik VERSION := $(shell node -p "require('../package.json').version") GOBIN := $(or $(shell if [ -d /go/bin ]; then echo "/go/bin"; fi),$(HOME)/go/bin) all: $(BINARY) $(BINARY): $(GOBIN)/gox $(GOBIN)/go-winres $(SOURCES) version.go rice-box.go winres/winres.json $(GOBIN)/go-winres make --product-version=$(VERSION) $(GOBIN)/gox -osarch "windows/amd64 linux/amd64 darwin/amd64" -output "bin/{{.OS}}/${BINARY}" bin/linux/$(BINARY): $(GOBIN)/gox $(GOBIN)/go-winres $(SOURCES) version.go rice-box.go winres/winres.json $(GOBIN)/go-winres make --product-version=$(VERSION) $(GOBIN)/gox -osarch "linux/amd64" -output "bin/{{.OS}}/${BINARY}" winres/winres.json: winres/winres_template.json sed 's/{{.Version}}/$(VERSION)/g' winres/winres_template.json > $@ $(GOBIN)/go-winres: go install github.com/tc-hib/go-winres@latest # Copy the current release into ./editor/maputnik so it can be # embedded in the binary editor/pull_release: mkdir -p editor cp -r ../dist/* editor $(GOBIN)/gox: go install github.com/mitchellh/gox@v1.0.1 $(GOBIN)/rice: go install github.com/GeertJohan/go.rice/rice@v1.0.3 # Embed the current version number in the executable by writing version.go .PHONY: version.go version.go: @printf "// DO NOT EDIT: Autogenerated by Makefile\n" > version.go @printf "package main\n" >> version.go @printf "const Version = \"$(VERSION)\"\n" >> version.go rice-box.go: $(GOBIN)/rice editor/pull_release $(GOBIN)/rice embed-go .PHONY: clean clean: rm -rf editor && rm -f rice-box.go && rm -rf bin