Makefile (2277B)
1 # Minijuegos para la PicoCalc (y su simulador en la PC). 2 # make simuladores: ./sim-buscaminas, ./sim-snake, ... 3 # make pico firmware de todos -> sd/ (copiar a la raiz de la SD) 4 # make shots capturas de cada juego en shots/ (sin abrir ventanas) 5 COMUN ?= ../comun 6 include $(COMUN)/comun.mk 7 8 JUEGOS := $(patsubst %/app_config.h,%,$(wildcard */app_config.h)) 9 CFLAGS ?= -O2 -g 10 CFLAGS += -std=gnu11 -Wall -Wextra -Wshadow -Wno-unused-parameter 11 SDL := $(shell pkg-config --cflags --libs sdl3 2>/dev/null) 12 PICO_SDK_PATH ?= $(HOME)/pico-sdk 13 14 all: $(addprefix sim-,$(JUEGOS)) 15 16 .SECONDEXPANSION: 17 sim-%: $$(wildcard %/*.c %/*.h) mini.c mini.h 18 $(CC) $(CFLAGS) -I$* -I. $(COMUN_INC) -o $@ $(wildcard $*/*.c) mini.c $(COMUN_BASE) $(COMUN_GFX) $(COMUN_SIM) $(SDL) 19 20 21 pico: 22 cmake -S . -B build -DPICO_SDK_PATH=$(PICO_SDK_PATH) -DCOMUN_DIR=$(abspath $(COMUN)) >/dev/null && $(MAKE) -C build -j8 23 @mkdir -p sd/pico1-apps sd/firmware 24 @set -e; for j in $(JUEGOS); do \ 25 t=$$(sed -n 's/.*APP_TITLE *"\(.*\)".*/\1/p' $$j/app_config.h); \ 26 log=$$(sed -n 's/.*APP_SD_LOG *"\(.*\)".*/\1/p' $$j/app_config.h); \ 27 sav=$$(sed -n 's/.*APP_SD_SAV *"\(.*\)".*/\1/p' $$j/app_config.h); \ 28 cp build/mini_$$j.uf2 sd/pico1-apps/$$t.uf2; \ 29 cp build/mini_$$j\_sd200k.bin sd/firmware/$$t.bin; \ 30 python3 $(COMUN_TOOLS)/patch_reset.py build/mini_$$j\_sd200k.elf sd/firmware/$$t.bin >/dev/null; \ 31 test -f sd/$$log || head -c 65536 /dev/zero | tr '\0' ' ' > sd/$$log; \ 32 test -f sd/$$sav || head -c 8192 /dev/zero > sd/$$sav; \ 33 echo " $$t: firmware/$$t.bin pico1-apps/$$t.uf2 $$log $$sav"; \ 34 done 35 @echo "Listo: copiá el contenido de sd/ a la raíz de la SD (los .LOG/.SAV solo la primera vez)" 36 37 # APP_KEYS de cada juego para las capturas (ver shots/*.keys) 38 shots: all 39 @mkdir -p shots/tmp 40 @for j in $(JUEGOS); do \ 41 keys=$$(cat shots/$$j.keys 2>/dev/null || echo '~.!'); \ 42 rm -f shots/tmp/$$j.sav; \ 43 SDL_VIDEO_DRIVER=offscreen APP_SHOT=shots/$$j.ppm APP_KEYS="$$keys" timeout 60 ./sim-$$j --store shots/tmp/$$j.sav; \ 44 python3 -c "from PIL import Image; Image.open('shots/$$j.ppm').save('shots/$$j.png')" && rm shots/$$j.ppm; \ 45 echo "shots/$$j.png"; \ 46 done 47 48 clean: 49 rm -rf build sim-* shots/*.png shots/tmp 50 51 .PHONY: all pico shots clean