From 2fd6d99a6116f87b00e3e34dc89c46e5c0ddfde5 Mon Sep 17 00:00:00 2001 From: Sergio Date: Thu, 23 Oct 2025 09:48:57 +0200 Subject: [PATCH] =?UTF-8?q?A=C3=B1adir=20sistema=20de=20Makefiles=20para?= =?UTF-8?q?=20herramienta=20de=20empaquetado=20de=20recursos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Crear tools/Makefile con soporte multiplataforma (Windows/Linux/macOS) - Añadir targets: pack_tool, resource_pack, test_pack, clean, help - Mejorar Makefile raíz con target force_resource_pack - Integrar regeneración automática de resources.pack en todos los releases - Los releases siempre generan un resources.pack actualizado 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- Makefile | 20 ++++-- tools/Makefile | 187 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 201 insertions(+), 6 deletions(-) create mode 100644 tools/Makefile diff --git a/Makefile b/Makefile index 58877a3..2518d7b 100644 --- a/Makefile +++ b/Makefile @@ -121,6 +121,13 @@ resources.pack: $(PACK_TOOL) $(DATA_FILES) $(PACK_TOOL) data resources.pack @echo "✓ resources.pack generado exitosamente" +# Target para forzar regeneración de resources.pack (usado por releases) +.PHONY: force_resource_pack +force_resource_pack: $(PACK_TOOL) + @echo "Regenerando resources.pack para release..." + $(PACK_TOOL) data resources.pack + @echo "✓ resources.pack regenerado exitosamente" + # Reglas para compilación windows: @echo off @@ -139,7 +146,7 @@ windows_debug: @echo Compilando version debug para Windows: "$(APP_NAME)_debug.exe" $(CXX) $(APP_SOURCES) $(INCLUDES) -DDEBUG -DVERBOSE $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(WIN_TARGET_FILE)_debug.exe" -windows_release: resources.pack +windows_release: force_resource_pack @echo "Creando release para Windows - Version: $(VERSION)" # Crea carpeta temporal 'RELEASE_FOLDER' @@ -175,7 +182,7 @@ macos_debug: @echo "Compilando version debug para macOS: $(TARGET_NAME)_debug" $(CXX) $(APP_SOURCES) $(INCLUDES) -DDEBUG -DVERBOSE $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_debug" -macos_release: resources.pack +macos_release: force_resource_pack @echo "Creando release para macOS - Version: $(VERSION)" # Elimina datos de compilaciones anteriores $(RMDIR) "$(RELEASE_FOLDER)" @@ -243,7 +250,7 @@ linux_debug: @echo "Compilando version debug para Linux: $(TARGET_NAME)_debug" $(CXX) $(APP_SOURCES) $(INCLUDES) -DDEBUG -DVERBOSE $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_debug" -linux_release: resources.pack +linux_release: force_resource_pack @echo "Creando release para Linux - Version: $(VERSION)" # Elimina carpetas previas $(RMDIR) "$(RELEASE_FOLDER)" @@ -268,7 +275,7 @@ linux_release: resources.pack # Elimina la carpeta temporal $(RMDIR) "$(RELEASE_FOLDER)" -linux_release_desktop: resources.pack +linux_release_desktop: force_resource_pack @echo "Creando release con integracion desktop para Linux - Version: $(VERSION)" # Elimina carpetas previas $(RMDIR) "$(RELEASE_FOLDER)" @@ -372,7 +379,7 @@ raspi_debug: @echo "Compilando version debug para Raspberry Pi: $(TARGET_NAME)_debug" $(CXX) $(APP_SOURCES) $(INCLUDES) -DVERBOSE -DDEBUG $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_debug" -raspi_release: resources.pack +raspi_release: force_resource_pack @echo "Creando release para Raspberry Pi - Version: $(VERSION)" # Elimina carpetas previas $(RMDIR) "$(RELEASE_FOLDER)" @@ -397,7 +404,7 @@ raspi_release: resources.pack # Elimina la carpeta temporal $(RMDIR) "$(RELEASE_FOLDER)" -anbernic: resources.pack +anbernic: force_resource_pack @echo "Compilando para Anbernic: $(TARGET_NAME)" # Elimina carpetas previas $(RMDIR) "$(RELEASE_FOLDER)"_anbernic @@ -436,6 +443,7 @@ help: @echo " macos_release - Crear release completo para macOS (.dmg)" @echo " pack_tool - Compilar herramienta de empaquetado" @echo " resources.pack - Generar pack de recursos desde data/" + @echo " force_resource_pack - Regenerar resources.pack (usado por releases)" @echo " show_version - Mostrar version actual ($(VERSION))" @echo " help - Mostrar esta ayuda" diff --git a/tools/Makefile b/tools/Makefile new file mode 100644 index 0000000..6481055 --- /dev/null +++ b/tools/Makefile @@ -0,0 +1,187 @@ +# ============================================================================ +# ViBe3 Physics - Resource Packer Tool Makefile +# ============================================================================ + +# Directorios +DIR_ROOT := $(dir $(abspath $(dir $(MAKEFILE_LIST)))) +DIR_SOURCES := $(DIR_ROOT)source/ +DIR_TOOLS := $(DIR_ROOT)tools/ +DIR_DATA := $(DIR_ROOT)data/ + +# Archivos fuente +PACK_SOURCES := $(DIR_TOOLS)pack_resources.cpp $(DIR_SOURCES)resource_pack.cpp +PACK_INCLUDES := -I$(DIR_ROOT) + +# Compilador y flags +CXX := g++ +CXXFLAGS := -std=c++17 -Wall -Os -ffunction-sections -fdata-sections + +# Variables específicas por sistema operativo +ifeq ($(OS),Windows_NT) + # Windows + PACK_TOOL := pack_resources.exe + RESOURCE_PACK := ../resources.pack + TEST_PACK := test_resources.pack + LDFLAGS := -Wl,--gc-sections -static-libstdc++ -static-libgcc + RMFILE := del /Q + MKDIR := mkdir + FixPath = $(subst /,\,$1) +else + UNAME_S := $(shell uname -s) + ifeq ($(UNAME_S),Linux) + # Linux + PACK_TOOL := pack_resources + RESOURCE_PACK := ../resources.pack + TEST_PACK := test_resources.pack + LDFLAGS := -Wl,--gc-sections + RMFILE := rm -f + MKDIR := mkdir -p + FixPath = $1 + endif + ifeq ($(UNAME_S),Darwin) + # macOS + PACK_TOOL := pack_resources + RESOURCE_PACK := ../resources.pack + TEST_PACK := test_resources.pack + LDFLAGS := + RMFILE := rm -f + MKDIR := mkdir -p + FixPath = $1 + endif +endif + +# Detectar todos los archivos en data/ como dependencias +DATA_FILES := $(shell find ../data -type f 2>/dev/null) + +# ============================================================================ +# Targets principales +# ============================================================================ + +.PHONY: all pack_tool resource_pack test_pack clean help + +# Target por defecto: compilar herramienta +all: pack_tool + +# Compilar herramienta de empaquetado +pack_tool: $(PACK_TOOL) + +$(PACK_TOOL): $(PACK_SOURCES) + @echo "==========================================" + @echo "Compilando herramienta de empaquetado..." + @echo "==========================================" + $(CXX) $(CXXFLAGS) $(PACK_INCLUDES) $(PACK_SOURCES) $(LDFLAGS) -o $(PACK_TOOL) +ifeq ($(OS),Windows_NT) + @echo. +else + @echo "" +endif + @echo "✓ Herramienta compilada: $(PACK_TOOL)" +ifeq ($(OS),Windows_NT) + @echo. +else + @echo "" +endif + +# Crear pack de recursos final +resource_pack: $(PACK_TOOL) + @echo "==========================================" + @echo "Generando resources.pack..." + @echo "==========================================" + @echo "Directorio de datos: ../data" + @echo "Archivo de salida: $(RESOURCE_PACK)" +ifeq ($(OS),Windows_NT) + @echo. +else + @echo "" +endif + ./$(PACK_TOOL) ../data $(RESOURCE_PACK) +ifeq ($(OS),Windows_NT) + @echo. +else + @echo "" +endif + @echo "✓ Pack de recursos creado exitosamente" +ifeq ($(OS),Windows_NT) + @echo. +else + @echo "" +endif + +# Crear pack de recursos de prueba +test_pack: $(PACK_TOOL) + @echo "==========================================" + @echo "Generando pack de prueba..." + @echo "==========================================" + @echo "Directorio de datos: ../data" + @echo "Archivo de salida: $(TEST_PACK)" +ifeq ($(OS),Windows_NT) + @echo. +else + @echo "" +endif + ./$(PACK_TOOL) ../data $(TEST_PACK) +ifeq ($(OS),Windows_NT) + @echo. +else + @echo "" +endif + @echo "✓ Pack de prueba creado: $(TEST_PACK)" +ifeq ($(OS),Windows_NT) + @echo. +else + @echo "" +endif + +# Limpiar archivos generados +clean: + @echo "Limpiando archivos generados..." +ifeq ($(OS),Windows_NT) + @if exist "$(PACK_TOOL)" $(RMFILE) "$(PACK_TOOL)" + @if exist "$(TEST_PACK)" $(RMFILE) "$(TEST_PACK)" +else + @$(RMFILE) $(PACK_TOOL) $(TEST_PACK) +endif + @echo "✓ Limpieza completada" + +# Mostrar ayuda +help: + @echo "==========================================" + @echo "ViBe3 Physics - Resource Packer Makefile" + @echo "==========================================" +ifeq ($(OS),Windows_NT) + @echo. +else + @echo "" +endif + @echo "Comandos disponibles:" +ifeq ($(OS),Windows_NT) + @echo. +else + @echo "" +endif + @echo " make - Compilar herramienta (equivalente a 'make pack_tool')" + @echo " make pack_tool - Compilar herramienta de empaquetado" + @echo " make resource_pack - Crear ../resources.pack desde ../data" + @echo " make test_pack - Crear pack de prueba (test_resources.pack)" + @echo " make clean - Limpiar archivos generados" + @echo " make help - Mostrar esta ayuda" +ifeq ($(OS),Windows_NT) + @echo. +else + @echo "" +endif + @echo "Ejemplos de uso:" +ifeq ($(OS),Windows_NT) + @echo. +else + @echo "" +endif + @echo " cd tools" + @echo " make # Compilar herramienta" + @echo " make resource_pack # Crear pack de recursos" + @echo " ./$(PACK_TOOL) --help # Ver ayuda de la herramienta" +ifeq ($(OS),Windows_NT) + @echo. +else + @echo "" +endif