############################################################ # Launch5j, by LoRd_MuldeR # # Java JAR wrapper for creating Windows native executables # # https://github.com/lordmulder/ # # # # This work has been released under the MIT license. # # Please see LICENSE.TXT for details! # # # # ACKNOWLEDGEMENT # # This project is partly inspired by the Launch4j project: # # https://sourceforge.net/p/launch4j/ # ############################################################ MACHINE := $(patsubst %-w64-mingw32,[%],$(shell $(CXX) -dumpmachine)) BUILDNO := $(shell git rev-list --count HEAD 2>&- || echo 0) VERSION_MAJOR := $(shell grep -Po '#define[[:space:]]+L5J_VERSION_MAJOR[[:space:]]+\K[[:digit:]]+' src/resource.h) VERSION_MINOR := $(shell grep -Po '#define[[:space:]]+L5J_VERSION_MINOR[[:space:]]+\K[[:digit:]]+' src/resource.h) VERSION_PATCH := $(shell grep -Po '#define[[:space:]]+L5J_VERSION_PATCH[[:space:]]+\K[[:digit:]]+' src/resource.h) ifeq ($(MACHINE),[i686]) CPU_ARCH := x86 MARCH ?= i586 else ifeq ($(MACHINE),[x86_64]) CPU_ARCH := amd64 MARCH ?= x86-64 else $(error Unknown target machine "$(MACHINE)" encountered!) endif DEBUG ?= 0 MTUNE ?= generic ifeq ($(DEBUG),0) CFLAGS = -Os -static -static-libgcc -D_FORTIFY_SOURCE=2 -DNDEBUG SUFFIX = exe else CFLAGS = -Og -g SUFFIX = g.exe endif CFLAGS += -municode -mwindows -march=$(MARCH) -mtune=$(MTUNE) LDFLAGS = -lcomctl32 MANIFEST := tmp/assets/manifest.$(CPU_ARCH).xml # ========================================================== # Targets # ========================================================== .PHONY: default default: all .PHONY: initialize initialize: mkdir -p bin mkdir -p obj mkdir -p tmp .PHONY: resources resources: initialize $(MANIFEST) windres -DL5J_CPU_ARCH=$(CPU_ARCH) -DL5J_BUILDNO=$(BUILDNO) -o obj/common.$(CPU_ARCH).o res/common.rc windres -DL5J_CPU_ARCH=$(CPU_ARCH) -DL5J_BUILDNO=$(BUILDNO) -o obj/splash_screen.$(CPU_ARCH).o res/splash_screen.rc windres -DL5J_CPU_ARCH=$(CPU_ARCH) -DL5J_BUILDNO=$(BUILDNO) -o obj/registry.$(CPU_ARCH).o res/registry.rc $(MANIFEST): mkdir -p $(@D) sed -e 's/$${{version}}/$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH).$(BUILDNO)/g' -e 's/$${{processorArchitecture}}/$(CPU_ARCH)/g' res/assets/manifest.xml > $@ .PHONY: clean clean: init $(RM) bin/*.$(SUFFIX) $(RM) obj/*.o # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Binaries # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~