diff options
-rw-r--r-- | GNUmakefile | 39 | ||||
-rw-r--r-- | prelude.mk | 13 |
2 files changed, 52 insertions, 0 deletions
diff --git a/GNUmakefile b/GNUmakefile new file mode 100644 index 0000000..1279cf2 --- /dev/null +++ b/GNUmakefile @@ -0,0 +1,39 @@ +# Settings +include prelude.mk +-include local.mk + +RM_F = rm -f +RM_RF = rm -rf + +ZIG = zig + + +# Main targets +.PHONY: all debug release watch run release format clean + +all: debug release ## Check codebase and compile in debug mode + +debug: ## Compile program in debug mode + @$(ZIG) build + @echo "[ZIG] zig-out" + +watch: ## Watch and compile program in debug mode + @$(ZIG) build --watch + +run: ## Compile and run program in debug mode + @$(ZIG) build run + +release: ## Compile program in release mode + @for target in aarch64-linux-gnu aarch64-macos-none arm-linux-gnueabihf x86_64-linux-gnux32 x86_64-windows; do \ + echo "[ZIG] zig-release/$${target}"; \ + $(ZIG) build -p zig-release/$${target} -Dtarget=$${target} --release=small; \ + done + +SRCS = build.zig $(shell find src -name \*.zig) +format: ## Format source files + @echo "[FMT] $(SRCS)" + @find . -name \*.zig -exec '$(ZIG)' 'fmt' '{}' ';' + +clean: ## Remove build files + @echo "[CLEAN] zig-out zig-release" + @$(RM_RF) -- zig-out zig-release diff --git a/prelude.mk b/prelude.mk new file mode 100644 index 0000000..0964bfe --- /dev/null +++ b/prelude.mk @@ -0,0 +1,13 @@ +# Settings: Shell +SHELL = bash +.SHELLFLAGS = -eu -o pipefail -c + +# Settings: Make +.SECONDEXPANSION: +.DELETE_ON_ERROR: +MAKEFLAGS += --warn-undefined-variables +MAKEFLAGS += --no-builtin-rules + +# Special targets +.PHONY: .REBUILD_ALWAYS +.REBUILD_ALWAYS: |