juegos

Juegos de terminal de Pancho: Catan (TUI, GUI, web, servidor, PicoCalc), ajedrez, calculadora y minijuegos
git clone https://git.lu3dhn.xyz/juegos.git
Log | Files | Refs

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