# Makefile for VoidTunnel — Linux Demo Development for Beginners
# https://wizvoid.space

CC       ?= gcc
SDL_CF   := $(shell sdl2-config --cflags 2>/dev/null || echo -I/usr/include/SDL2 -D_REENTRANT)
SDL_LF   := $(shell sdl2-config --libs 2>/dev/null || echo -lSDL2)
LIBS     := $(SDL_LF) -lGL -lm

CFLAGS   := -Wall -Wextra -O2 $(SDL_CF)
SLIM_FLG := -Os -ffast-math -fno-ident -fno-stack-protector \
            -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections \
            -Wl,--gc-sections -s $(SDL_CF)

TARGETS  := tunnel_step1 void_tunnel_part1 void_intro void_intro_slim void_intro_4k

.PHONY: all run pack clean

all: $(TARGETS)

tunnel_step1: tunnel_step1.c
	$(CC) $(CFLAGS) $< -o $@ $(LIBS)

void_tunnel_part1: void_tunnel_part1.c
	$(CC) $(CFLAGS) $< -o $@ $(LIBS)

void_intro: void_intro.c
	$(CC) $(CFLAGS) $< -o $@ $(LIBS)

void_intro_slim: void_intro.c
	$(CC) $(SLIM_FLG) $< -o $@ $(LIBS)

void_intro_4k: void_intro_slim
	@printf '#!/bin/sh\ntail -n+3 "$$0"|xz -d>/tmp/i;chmod +x /tmp/i;/tmp/i;rm -f /tmp/i;exit\n' > $@
	xz --format=lzma -9 --extreme --stdout $< >> $@
	chmod +x $@

pack: void_intro void_intro_slim void_intro_4k
	@echo "=== Size Comparison ==="
	@wc -c void_intro void_intro_slim void_intro_4k | awk 'NR<=3 {printf "  %-18s : %6d bytes\n", $$2, $$1}'
	@wc -c < void_intro_4k | awk '{printf "  4K Compo Margin    : %6d bytes remaining (of 4096)\n", 4096 - $$1}'
	@wc -c < void_intro_4k | awk '{printf "  64K Compo Margin   : %6d bytes remaining (of 65536)\n", 65536 - $$1}'

run: void_intro
	./void_intro

clean:
	rm -f $(TARGETS)
