alchemyst/Makefile
2019-11-14 22:46:46 +03:00

69 lines
2.6 KiB
Makefile

#
##
# Take a note - you MUST set CGO_ENABLED to true for cross-compilation
##
#
#
PROJECT_NAME := "alchemyst-go"
PKG := "lab.zaar.be/thefish/$(PROJECT_NAME)"
GO=$(shell which go)
CWD=$(shell pwd)
OS=$(shell basename $(shell echo $@ | tr '.' '/' ))
DISTFOLDER=$(CWD)/dist/$(OS)
PKG_VER=$(shell git describe --tags | head)
LDFLAGS="-X \"main.versionInfo=${PKG_VER}-${CI_PIPELINE_ID} built at $(shell date) on $(shell hostname) with $(shell go version)\""
.PHONY: all build test
all: build test
build: distclean build.deps build.game
# build.game: build.game.linux64 build.game.win64 build.game.mac
build.game: build.game.linux64 build.game.win64
build.deps:
GIT_SSL_NO_VERIFY=true $(GO) mod vendor
build.game.linux64:
php update-config-version.php
cp $(CWD)/vendor/lab.zaar.be/thefish/bearlibterminal/libBearLibTerminal.so $(DISTFOLDER) && \
cp $(CWD)/config.json $(DISTFOLDER) && \
cp -r $(CWD)/assets $(DISTFOLDER) && \
$(GO) build -ldflags $(LDFLAGS) -o $(DISTFOLDER)/game $(CWD)/cmd/game/main.go && \
strip $(DISTFOLDER)/game && \
chmod +x $(DISTFOLDER)/game && \
cd $(DISTFOLDER) && zip -r ../$(PROJECT_NAME)-$(OS)-${PKG_VER}.zip . -x *.git*
build.game.win64:
php update-config-version.php
cp $(CWD)/lib/win64/BearLibTerminal.dll $(DISTFOLDER) && \
cp $(CWD)/config.json $(DISTFOLDER) && \
cp -r $(CWD)/assets $(DISTFOLDER) && \
GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ $(GO) build -o $(DISTFOLDER)/game.exe -ldflags $(LDFLAGS) $(CWD)/cmd/game/main.go && \
/usr/bin/x86_64-w64-mingw32-strip $(DISTFOLDER)/game.exe && \
cd $(DISTFOLDER) && zip -r ../$(PROJECT_NAME)-$(OS)-${PKG_VER}.zip . -x *.git*
# OSXCROSS_NO_INCLUDE_PATH_WARNINGS=1 MACOSX_DEPLOYMENT_TARGET=10.6 CC=o64-clang CXX=o64-clang++ GOOS=darwin GOARCH=amd64 CGO_ENABLED=1 $(GO) build -ldflags $(LDFLAGS) -o $(DISTFOLDER)/game $(CWD)/cmd/game/main.go &&
build.game.mac:
cp $(CWD)/lib/mac/libBearLibTerminal.dylib $(DISTFOLDER) && \
cp $(CWD)/config.json $(DISTFOLDER) && \
cp -r $(CWD)/assets $(DISTFOLDER) && \
OSXCROSS_NO_INCLUDE_PATH_WARNINGS=1 MACOSX_DEPLOYMENT_TARGET=10.6 CC=clang CXX=clang++ GOOS=darwin GOARCH=amd64 CGO_ENABLED=1 $(GO) build -ldflags $(LDFLAGS) -o $(DISTFOLDER)/game $(CWD)/cmd/game/main.go && \
strip $(DISTFOLDER)/game.exe && \
cd $(DISTFOLDER) && zip -r ../$(PROJECT_NAME)-$(OS)-${PKG_VER}.zip . -x *.git*
test:
$(GO) test -v $(go list ./... | grep -v /vendor/)
distclean:
cd $(CWD)/dist && find . -type f -not \( -name .gitkeep -o -name README \) -delete && \
find . -type d -not \( -name .gitkeep -o -name linux64 -o -name win64 -o -name mac \) -delete