83 lines
2.8 KiB
Makefile
83 lines
2.8 KiB
Makefile
ALL: build
|
|
|
|
SHELL := /bin/bash
|
|
|
|
VERSION=$(shell egrep -e 'Version\s+=' version.go | head -n 1 | cut -d '"' -f 2)
|
|
BUILD=$(shell git describe --always)
|
|
BUILD_DATE=$(shell date +"%Y-%m-%dT%H:%M:%S%z")
|
|
CURDIR=$(shell curdir)
|
|
|
|
# Inject the build version (commit hash) into the executable.
|
|
LDFLAGS := -ldflags "-X main.Build=$(BUILD) -X main.BuildDate=$(BUILD_DATE)"
|
|
LDFLAGS_W := -ldflags "-X main.Build=$(BUILD) -X main.BuildDate=$(BUILD_DATE) -H windowsgui"
|
|
|
|
# `make setup` to set up a new environment, pull dependencies, etc.
|
|
.PHONY: setup
|
|
setup: clean
|
|
go get ./...
|
|
|
|
# `make build` to build the binary.
|
|
.PHONY: build
|
|
build:
|
|
go build $(LDFLAGS) -o errorgen .
|
|
|
|
# `make install` to install the Go binaries to your GOPATH.
|
|
.PHONY: install
|
|
install:
|
|
go install git.kirsle.net/apps/errorgen
|
|
|
|
# `make mingw` to cross-compile a Windows binary with mingw.
|
|
.PHONY: mingw
|
|
mingw:
|
|
env CGO_ENABLED="1" CC="/usr/bin/x86_64-w64-mingw32-gcc" \
|
|
GOOS="windows" CGO_LDFLAGS="-lmingw32 -lSDL2" CGO_CFLAGS="-D_REENTRANT" \
|
|
go build $(LDFLAGS_W) -i -o bin/sketchymaze.exe cmd/doodle/main.go
|
|
env CGO_ENABLED="1" CC="/usr/bin/x86_64-w64-mingw32-gcc" \
|
|
GOOS="windows" CGO_LDFLAGS="-lmingw32 -lSDL2" CGO_CFLAGS="-D_REENTRANT" \
|
|
go build $(LDFLAGS) -i -o bin/doodad.exe cmd/doodad/main.go
|
|
|
|
# `make mingw32` to cross-compile a Windows binary with mingw (32-bit).
|
|
.PHONY: mingw32
|
|
mingw32:
|
|
env CGO_ENABLED="1" CC="/usr/bin/i686-w64-mingw32-gcc" \
|
|
GOOS="windows" CGO_LDFLAGS="-lmingw32 -lSDL2" CGO_CFLAGS="-D_REENTRANT" \
|
|
go build $(LDFLAGS_W) -i -o bin/sketchymaze.exe cmd/doodle/main.go
|
|
env CGO_ENABLED="1" CC="/usr/bin/i686-w64-mingw32-gcc" \
|
|
GOOS="windows" CGO_LDFLAGS="-lmingw32 -lSDL2" CGO_CFLAGS="-D_REENTRANT" \
|
|
go build $(LDFLAGS) -i -o bin/doodad.exe cmd/doodad/main.go
|
|
|
|
# `make run` to run it from source.
|
|
.PHONY: run
|
|
run:
|
|
go run .
|
|
|
|
# `make clean` to cleanup the repo.
|
|
.PHONY: clean
|
|
clean:
|
|
rm -rf errorgen fyne-cross
|
|
|
|
# `make release` uses fyne-cross to produce builds for Linux and Windows.
|
|
.PHONY: release
|
|
release: clean
|
|
fyne-cross windows -arch=*
|
|
fyne-cross linux -arch=*
|
|
|
|
# `make release-sudo` uses sudo commands for release in case of permission errors.
|
|
.PHONY: release-sudo
|
|
release-sudo: clean
|
|
sudo $(shell which fyne-cross) windows -arch=\*
|
|
sudo $(shell which fyne-cross) linux -arch=\*
|
|
sudo chown -R $(shell whoami) fyne-cross
|
|
|
|
# `make package` creates nice ZIP files for release after `make release`
|
|
.PHONY: package
|
|
package:
|
|
cp -r README.md README.html *.png icons fyne-cross/bin/windows-386/
|
|
cp -r README.md README.html *.png icons fyne-cross/bin/windows-amd64/
|
|
cp -r README.md README.html *.png icons fyne-cross/bin/linux-386/
|
|
cp -r README.md README.html *.png icons fyne-cross/bin/linux-amd64/
|
|
|
|
# `make pandoc` converts README.md into HTML for distribution.
|
|
.PHONY: pandoc
|
|
pandoc:
|
|
pandoc -o README.html README.md
|