# SPDX-License-Identifier: CC0-1.0
#
# Makefile that builds the Anarch game and its assets.
#
# Written in 2025 by Marcin Serwin <marcin@serwin.dev>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>

.POSIX:
.SUFFIXES:
.SUFFIXES: .c .in

include config.mk

LIBS != $(PKG_CONFIG) --cflags --libs sdl3
FULL_CFLAGS = -DSFG_VERSION_STRING=\"$(FULL_VERSION)\" \
	-DSFG_IDENTIFIER_STRING=\"$(APP_ID)\" \
	$(CFLAGS)

SRC = main_sdl3.c
HEADERS = constants.h game.h images.h levels.h palette.h raycastlib.h \
	settings.h sounds.h texts.h stc.h

all: anarch-re$(EXE) anarch-re.6

.c:
	$(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $<

.in:
	sed s/@APP_ID@/$(APP_ID)/g < $< > $@

include assets.mk

anarch-re$(EXE): $(SRC) $(HEADERS) assets
	$(CC) $(FULL_CFLAGS) $(LDFLAGS) -o $@ $(SRC) $(LIBS)

assets: $(ASSETS)

main_test: $(HEADERS) assets

check: main_test
	./main_test

clean:
	rm -f assets/font2array assets/img2array assets/img2map assets/img2palette \
		assets/img2touchcontrols assets/snd2array
	rm -f $(ASSETS)
	rm -f main_test
	rm -f anarch-re$(EXE)

install: all entry.desktop
	install -Dm 755 anarch-re$(EXE) $(DESTDIR)$(BINDIR)/anarch-re$(EXE)
	install -Dm 644 anarch-re.6 ${DESTDIR}${MANDIR}/man6/anarch-re.6
	install -Dm 644 entry.desktop ${DESTDIR}${DATADIR}/applications/$(APP_ID).desktop
	install -Dm 644 media/logo_big.png ${DESTDIR}${DATADIR}/icons/hicolor/128x128/apps/anarch-re.png

uninstall:
	rm -f $(DESTDIR)$(BINDIR)/anarch-re$(EXE)
	rm -f ${DESTDIR}${MANDIR}/man6/anarch-re.6
	rm -f ${DESTDIR}${DATADIR}/applications/$(APP_ID).desktop
	rm -f ${DESTDIR}${DATADIR}/icons/hicolor/128x128/apps/anarch-re.png

.PHONY: all clean install uninstall assets check
