Nimbin[12]?Games / Entropie / entropie/Makefile

Entropie git · main

Entropie festival game; first steps

sdl c game entropie cmake · first commit 2026-10-10 · last commit 2026-11-02 (17 hours ago) · synced 8 hours ago

C 88.5% Markdown 9.1% GLSL 2.3%
git clone https://git.christianimmanuel.de/games/Entropie.gitwget https://git.christianimmanuel.de/games/Entropie/archive/Entropie.tar.gz
entropie/Makefile 2.1 KB · 69 lines raw
APP       := entropie
VERSION   := 2.50.0

PREFIX    ?= /usr
BINDIR    ?= $(PREFIX)/bin
DATADIR   ?= $(PREFIX)/share/$(APP)
DESTDIR   ?=

BUILD_DIR := build

CC        ?= cc
PKG_CONFIG ?= pkg-config
PKGS      := sdl3 sdl3-ttf
PKG_CFLAGS := $(shell $(PKG_CONFIG) --cflags $(PKGS))
PKG_LIBS   := $(shell $(PKG_CONFIG) --libs $(PKGS))

# C23 (GCC 14+, Clang 18+); older compilers know it as c2x (GCC 9+, Clang 9+)
CSTD      := $(shell echo 'int main(void){return 0;}' | $(CC) -std=c23 -x c -fsyntax-only - 2>/dev/null && echo c23 || echo c2x)

CFLAGS    ?= -O2
CFLAGS    += -std=$(CSTD) -Wall -Wextra -Wpedantic -MMD -MP
CPPFLAGS  += -Isrc -I$(BUILD_DIR) $(PKG_CFLAGS)
LDLIBS    += $(PKG_LIBS) -lGL -lm

SRCS      := $(sort $(wildcard src/*.c src/*/*.c))
HDRS      := $(sort $(wildcard src/*.h src/*/*.h))
ASSETS    := $(sort $(wildcard assets/shaders/* assets/fonts/*))
OBJS      := $(SRCS:src/%.c=$(BUILD_DIR)/%.o)

# Short md5 over all sources and assets: changes whenever any file changes.
BUILD_HASH := $(shell cat $(SRCS) $(HDRS) $(ASSETS) Makefile | md5sum | cut -c1-7)
BUILD_INFO := $(BUILD_DIR)/build_info.h

.PHONY: all clean install uninstall version FORCE

all: $(APP)

$(APP): $(OBJS)
	$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
	@echo "$(APP) $(VERSION) (build $(BUILD_HASH))"

$(BUILD_DIR)/%.o: src/%.c | $(BUILD_INFO)
	@mkdir -p $(dir $@)
	$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<

# Rewritten only when its content changes, so unrelated files don't rebuild.
$(BUILD_INFO): FORCE
	@mkdir -p $(BUILD_DIR)
	@printf '#define APP_VERSION "%s"\n#define APP_BUILD "%s"\n#define ASSET_DIR "%s/"\n' \
		"$(VERSION)" "$(BUILD_HASH)" "$(DATADIR)" > $@.tmp
	@if cmp -s $@.tmp $@; then rm -f $@.tmp; else mv $@.tmp $@; fi

version:
	@echo "$(APP) $(VERSION) (build $(BUILD_HASH))"

install: $(APP)
	install -Dm755 $(APP) $(DESTDIR)$(BINDIR)/$(APP)
	install -d $(DESTDIR)$(DATADIR)/shaders $(DESTDIR)$(DATADIR)/fonts
	install -m644 assets/shaders/* $(DESTDIR)$(DATADIR)/shaders/
	install -m644 assets/fonts/* $(DESTDIR)$(DATADIR)/fonts/

uninstall:
	rm -f $(DESTDIR)$(BINDIR)/$(APP)
	rm -rf $(DESTDIR)$(DATADIR)

clean:
	rm -rf $(BUILD_DIR) $(APP)

-include $(OBJS:.o=.d)