# ============================================================ # Makefile.miyoo - Cross-compile CyberMatris per Miyoo Mini Plus # Toolchain: mini_toolchain-v1.0 (SigmaStar ARM) # SDL2: sdl2-miyoo (build custom con backend MI GFX/AO) # # Usage: make -f Makefile.miyoo # Deploy: make -f Makefile.miyoo deploy (richiede SSH su 10.0.0.199) # ============================================================ TOOLCHAIN_ROOT = /home/enne2/dev/mini_toolchain-v1.0/mini SDL2_ROOT = /home/enne2/dev/sdl2-miyoo CROSS = $(TOOLCHAIN_ROOT)/bin/arm-linux-gnueabihf- CXX = $(CROSS)g++ STRIP = $(CROSS)strip SDL2_INC = $(SDL2_ROOT)/sdl2/include SDL2_LIB = $(SDL2_ROOT)/sdl2/build/.libs SYSROOT = $(TOOLCHAIN_ROOT)/arm-buildroot-linux-gnueabihf/sysroot CXXFLAGS = -std=c++17 -O2 -Wall -Wextra \ -I$(SDL2_INC) \ -I$(SDL2_INC)/SDL2 \ -DSDL_MAIN_HANDLED \ -DMIYOO_BUILD # Linka SDL2 dinamicamente (il .so Miyoo custom include il backend MI_GFX/MI_AO) # Le libmi_*.so sono proprietarie SigmaStar: esistono SOLO sul device in /config/lib/ # Vengono risolte a runtime tramite LD_LIBRARY_PATH=.:/config/lib # Usiamo --allow-shlib-undefined perché il linker host non le vede ma sul device ci sono. LDFLAGS = -L$(SDL2_LIB) \ -lSDL2 \ -lpthread -lm -ldl -lrt \ -Wl,-rpath,'$$ORIGIN' \ -Wl,--allow-shlib-undefined TARGET = cybermatris_miyoo OBJS = main.o Game.o Synth.o Renderer.o DEPLOY_IP = 10.0.0.199 DEPLOY_USER = root DEPLOY_PASS = DEPLOY_DIR = /mnt/SDCARD/Roms/PORTS/Games/CyberMatris # Runtime libs da copiare nella stessa cartella del binario RUNTIME_LIBS = \ $(SDL2_ROOT)/sdl2/build/.libs/libSDL2-2.0.so.0 \ $(SDL2_ROOT)/sdl2/build/.libs/libSDL2-2.0.so.0.18.2 \ $(SDL2_ROOT)/sdl2/build/.libs/libEGL.so \ $(SDL2_ROOT)/sdl2/build/.libs/libGLESv2.so \ $(SYSROOT)/usr/lib/libjson-c.so.5 \ $(SYSROOT)/usr/lib/libjson-c.so.5.1.0 .PHONY: all clean deploy all: $(TARGET) $(TARGET): $(OBJS) $(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) $(STRIP) $@ @echo "" @echo ">>> Build completata: $(TARGET)" @echo ">>> Dimensione: $$(du -sh $(TARGET) | cut -f1)" main.o: main.cpp Game.hpp Synth.hpp Renderer.hpp Font.hpp $(CXX) $(CXXFLAGS) -c main.cpp Game.o: Game.cpp Game.hpp Synth.hpp $(CXX) $(CXXFLAGS) -c Game.cpp Synth.o: Synth.cpp Synth.hpp $(CXX) $(CXXFLAGS) -c Synth.cpp Renderer.o: Renderer.cpp Renderer.hpp Game.hpp Synth.hpp Font.hpp $(CXX) $(CXXFLAGS) -c Renderer.cpp clean: rm -f $(OBJS) $(TARGET) # ------------------------------------------------------- # Crea il pacchetto di deploy (cartella con binario + libs + launcher) # ------------------------------------------------------- package: $(TARGET) @mkdir -p dist_miyoo @cp $(TARGET) dist_miyoo/ @for lib in $(RUNTIME_LIBS); do \ if [ -f "$$lib" ]; then cp "$$lib" dist_miyoo/; echo " Copiata: $$(basename $$lib)"; \ else echo " WARN: $$lib non trovata, skip"; fi; \ done @cp launch_miyoo.sh dist_miyoo/ 2>/dev/null || true @echo "" @echo ">>> Pacchetto pronto in ./dist_miyoo/" @ls -lh dist_miyoo/ # ------------------------------------------------------- # Deploy via SSH + sshpass (password vuota) # ------------------------------------------------------- deploy: package @echo ">>> Deploy su $(DEPLOY_USER)@$(DEPLOY_IP):$(DEPLOY_DIR)" sshpass -p '$(DEPLOY_PASS)' ssh -o StrictHostKeyChecking=no \ $(DEPLOY_USER)@$(DEPLOY_IP) "mkdir -p $(DEPLOY_DIR)" sshpass -p '$(DEPLOY_PASS)' scp -o StrictHostKeyChecking=no \ dist_miyoo/* $(DEPLOY_USER)@$(DEPLOY_IP):$(DEPLOY_DIR)/ @echo ">>> Deploy completato!" @echo "" @echo ">>> Per lanciare sul device:" @echo " ssh root@$(DEPLOY_IP)" @echo " kill -STOP \`pidof MainUI\`" @echo " cd $(DEPLOY_DIR) && LD_LIBRARY_PATH=.:/config/lib ./cybermatris_miyoo"