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 (2570B)


      1 # Calculadora estilo Casio "natural": terminal, ventana SDL, simulador y PicoCalc.
      2 CC      ?= cc
      3 CFLAGS  ?= -O2 -g
      4 CFLAGS  += -std=gnu11 -Wall -Wextra -Wshadow -Wno-unused-parameter
      5 COMUN   ?= ../comun
      6 include $(COMUN)/comun.mk
      7 CPPFLAGS += -I. -Icore -Igfx -Ilinux $(COMUN_INC)
      8 NCURSES := $(shell pkg-config --libs ncursesw 2>/dev/null || echo -lncursesw)
      9 SDL     := $(shell pkg-config --cflags --libs sdl3 2>/dev/null)
     10 
     11 CORE    := $(wildcard core/*.c)
     12 GFX     := $(wildcard gfx/*.c)
     13 HDRS    := $(wildcard core/*.h gfx/*.h linux/*.h) $(COMUN_HDRS)
     14 TEST    := linux/selftest.c linux/selftest_num.c linux/selftest_calc.c
     15 LINUX   := linux/main.c linux/gui.c linux/tui.c linux/tui_modes.c linux/store.c
     16 CLIENT  := $(CORE) $(GFX) $(TEST) $(LINUX) $(COMUN_BASE) $(COMUN_GFX) $(COMUN_LINUX) $(COMUN_TUI) $(COMUN_GUI)
     17 SIM_SRC := $(CORE) $(GFX) pico/app.c $(COMUN_BASE) $(COMUN_GFX) $(COMUN_SIM)
     18 
     19 all: calc calc-picosim
     20 
     21 calc: $(CLIENT) $(HDRS)
     22 	$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $(CLIENT) -lm $(NCURSES) $(SDL)
     23 
     24 # simulador de la PicoCalc (mismo pico/app.c que el firmware)
     25 calc-picosim: $(SIM_SRC) $(HDRS)
     26 	$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $(SIM_SRC) -lm $(SDL)
     27 
     28 gfx/calcfont.c: tools/mkcalcfont.py
     29 	python3 tools/mkcalcfont.py > $@
     30 
     31 test: calc
     32 	./calc --selftest
     33 
     34 debug:
     35 	$(MAKE) -B calc CFLAGS="-O1 -g -fsanitize=address,undefined -fno-omit-frame-pointer"
     36 
     37 # el nucleo tiene que compilar para la Pico: tamano de codigo y RAM
     38 check-arm:
     39 	@for f in $(CORE); do arm-none-eabi-gcc -mcpu=cortex-m0plus -mthumb -std=gnu11 -O2 -Wall -Wextra -Wshadow \
     40 	  -Wno-unused-parameter -Icore -I$(COMUN)/base -c $$f -o /tmp/calc-arm-$$(basename $$f).o || exit 1; done
     41 	@arm-none-eabi-size -t /tmp/calc-arm-*.o | tail -1; rm -f /tmp/calc-arm-*.o
     42 
     43 # firmware para la PicoCalc (necesita arm-none-eabi-gcc y PICO_SDK_PATH)
     44 pico:
     45 	cmake -S pico -B pico/build -DPICO_SDK_PATH=$${PICO_SDK_PATH:-$$HOME/pico-sdk} -DCOMUN_DIR=$(abspath $(COMUN)) >/dev/null && $(MAKE) -C pico/build -j8
     46 	@mkdir -p sd/pico1-apps sd/firmware
     47 	cp pico/build/calc_picocalc.uf2 sd/pico1-apps/Calculadora.uf2
     48 	cp pico/build/calc_picocalc_sd200k.bin sd/firmware/Calculadora.bin
     49 	python3 $(COMUN_TOOLS)/patch_reset.py pico/build/calc_picocalc_sd200k.elf sd/firmware/Calculadora.bin
     50 	@test -f sd/CALC.LOG || head -c 65536 /dev/zero | tr '\0' ' ' > sd/CALC.LOG
     51 	@test -f sd/CALC.SAV || head -c 40960 /dev/zero > sd/CALC.SAV
     52 	@echo "Listo: copiá el contenido de sd/ a la raíz de la SD (CALC.LOG y CALC.SAV solo la primera vez)"
     53 
     54 clean:
     55 	rm -f calc calc-picosim
     56 	rm -rf pico/build
     57 
     58 .PHONY: all test debug check-arm clean pico