PREFIX ?= /usr/local
DESTDIR ?=
BINDIR ?= $(PREFIX)/bin
DATADIR ?= $(PREFIX)/share
INSTALL ?= install

CC ?= cc
CFLAGS ?= -O2 -std=c11 -Wall -Wextra -Wpedantic
SDL_CFLAGS := $(shell pkg-config --cflags sdl3 2>/dev/null)
SDL_LIBS := $(shell pkg-config --libs sdl3 2>/dev/null)
.PHONY: all clean test test-controller test-highscore install uninstall
all: unspecified-hostility
unspecified-hostility: src/main.c src/controller.h src/portable_file.h src/highscore.h src/input_gate.h src/music.h src/game.c src/game.h src/sprites.h src/font.h
	@pkg-config --exists sdl3 || (echo "Install SDL3 and pkgconf first (see README.md)"; exit 1)
	$(CC) $(CFLAGS) $(SDL_CFLAGS) src/main.c src/game.c -o $@ $(SDL_LIBS) -lm
test: src/input_gate.h tools/check.c tools/check_music.c src/music.h src/game.c
	$(CC) $(CFLAGS) tools/check.c -o simulation-check -lm
	./simulation-check
	$(CC) $(CFLAGS) tools/check_music.c -o music-check -lm
	./music-check
test-controller: tools/check_controller.c src/controller.h
	$(CC) $(CFLAGS) $(SDL_CFLAGS) tools/check_controller.c -o controller-check $(SDL_LIBS)
	./controller-check
test-highscore: tools/check_highscore.c src/highscore.h src/portable_file.h
	$(CC) $(CFLAGS) $(SDL_CFLAGS) tools/check_highscore.c -o highscore-check $(SDL_LIBS)
	XDG_DATA_HOME=$$(mktemp -d) ./highscore-check
clean:
	rm -f unspecified-hostility simulation-check music-check controller-check highscore-check

install: unspecified-hostility
	$(INSTALL) -d "$(DESTDIR)$(BINDIR)" "$(DESTDIR)$(DATADIR)/applications" "$(DESTDIR)$(DATADIR)/icons/hicolor/256x256/apps"
	$(INSTALL) -m 755 unspecified-hostility "$(DESTDIR)$(BINDIR)/unspecified-hostility"
	$(INSTALL) -m 644 packaging/unspecified-hostility.desktop "$(DESTDIR)$(DATADIR)/applications/unspecified-hostility.desktop"
	$(INSTALL) -m 644 packaging/unspecified-hostility.png "$(DESTDIR)$(DATADIR)/icons/hicolor/256x256/apps/unspecified-hostility.png"
	@if [ -z "$(DESTDIR)" ]; then command -v update-desktop-database >/dev/null 2>&1 && update-desktop-database "$(DATADIR)/applications" || :; command -v gtk-update-icon-cache >/dev/null 2>&1 && gtk-update-icon-cache -q -t "$(DATADIR)/icons/hicolor" || :; fi

uninstall:
	rm -f "$(DESTDIR)$(BINDIR)/unspecified-hostility" "$(DESTDIR)$(DATADIR)/applications/unspecified-hostility.desktop" "$(DESTDIR)$(DATADIR)/icons/hicolor/256x256/apps/unspecified-hostility.png"
	@if [ -z "$(DESTDIR)" ]; then command -v update-desktop-database >/dev/null 2>&1 && update-desktop-database "$(DATADIR)/applications" || :; command -v gtk-update-icon-cache >/dev/null 2>&1 && gtk-update-icon-cache -q -t "$(DATADIR)/icons/hicolor" || :; fi
