Makefile (2820B)
1 CC ?= cc 2 CFLAGS ?= -O2 -g 3 CFLAGS += -std=c99 -Wall -Wextra -Wshadow -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 4 COMUN ?= ../comun 5 include $(COMUN)/comun.mk 6 CPPFLAGS += -I. $(COMUN_INC) 7 CORE := $(wildcard core/*.c) 8 GFX := $(wildcard gfx/*.c) 9 LINUX := $(wildcard linux/*.c) 10 NCURSES := $(shell pkg-config --libs ncursesw 2>/dev/null || echo -lncursesw) 11 SDL := $(shell pkg-config --cflags --libs sdl3 2>/dev/null) 12 LDLIBS += $(NCURSES) $(SDL) -lpthread -lm 13 HDRS := $(wildcard core/*.h gfx/*.h linux/*.h server/*.h) app_config.h $(COMUN_HDRS) 14 15 SERVER := server/chess_game.c 16 CLIENT_SRC := $(CORE) $(GFX) $(LINUX) $(SERVER) $(COMUN_BASE) $(COMUN_GFX) $(COMUN_LINUX) $(COMUN_TUI) $(COMUN_GUI) $(COMUN_SERVER) 17 SERVER_SRC := $(CORE) $(SERVER) server/main.c $(COMUN_BASE) $(COMUN_SERVER) 18 19 SIM_SRC := $(CORE) $(GFX) pico/app.c $(COMUN_BASE) $(COMUN_GFX) $(COMUN_SIM) 20 21 all: ajedrez ajedrez-server ajedrez-picosim 22 23 ajedrez: $(CLIENT_SRC) $(HDRS) 24 $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $(CLIENT_SRC) $(LDLIBS) 25 26 # servidor: solo nucleo + server, sin ncurses ni SDL (estatico para copiar al VPS) 27 ajedrez-server: $(SERVER_SRC) $(HDRS) 28 $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $(SERVER_SRC) -lm 29 30 ajedrez-server-static: $(SERVER_SRC) $(HDRS) 31 $(CC) $(CPPFLAGS) $(CFLAGS) -static -o ajedrez-server $(SERVER_SRC) -lm 32 33 # simulador de la PicoCalc en la PC (mismo codigo que el firmware, con SDL) 34 ajedrez-picosim: $(SIM_SRC) $(HDRS) 35 $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $(SIM_SRC) $(SDL) 36 37 # firmware para la PicoCalc (necesita arm-none-eabi-gcc y PICO_SDK_PATH) 38 pico: 39 cmake -S pico -B pico/build -DPICO_SDK_PATH=$${PICO_SDK_PATH:-$$HOME/pico-sdk} -DCOMUN_DIR=$(abspath $(COMUN)) && $(MAKE) -C pico/build -j4 40 @mkdir -p sd/pico1-apps sd/firmware 41 cp pico/build/ajedrez_picocalc.uf2 sd/pico1-apps/Ajedrez.uf2 42 cp pico/build/ajedrez_picocalc_sd200k.bin sd/firmware/Ajedrez.bin 43 python3 $(COMUN_TOOLS)/patch_reset.py pico/build/ajedrez_picocalc_sd200k.elf sd/firmware/Ajedrez.bin 44 @test -f sd/AJEDREZ.LOG || head -c 262144 /dev/zero | tr '\0' ' ' > sd/AJEDREZ.LOG 45 @test -f sd/AJEDREZ.SAV || head -c 81920 /dev/zero > sd/AJEDREZ.SAV 46 @echo "Listo: copiá el contenido de sd/ a la raíz de la tarjeta SD de la PicoCalc" 47 @echo "AJEDREZ.LOG y AJEDREZ.SAV van solo la primera vez: si los pisás, perdés el log y la partida guardada" 48 49 core/book_data.c: tools/mkbook.py ../ajedrez/lib/openings.tsv 50 python3 tools/mkbook.py ../ajedrez/lib/openings.tsv > $@ 51 52 core/puzzles_data.c: tools/mkpuzzles.py puzzles.tsv 53 python3 tools/mkpuzzles.py puzzles.tsv > $@ 54 55 debug: 56 $(MAKE) -B ajedrez CFLAGS="-O1 -g -fsanitize=address,undefined -fno-omit-frame-pointer" 57 58 test: ajedrez 59 ./ajedrez --selftest 60 ./ajedrez --sim 100 1 61 62 clean: 63 rm -f ajedrez ajedrez-server ajedrez-picosim 64 rm -rf pico/build 65 66 .PHONY: all debug test clean pico ajedrez-server-static