Añadir sistema de Makefiles para herramienta de empaquetado de recursos

- 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 <noreply@anthropic.com>
This commit is contained in:
2025-10-23 09:48:57 +02:00
parent 2fa1684f01
commit 2fd6d99a61
2 changed files with 201 additions and 6 deletions

View File

@@ -121,6 +121,13 @@ resources.pack: $(PACK_TOOL) $(DATA_FILES)
$(PACK_TOOL) data resources.pack $(PACK_TOOL) data resources.pack
@echo "✓ resources.pack generado exitosamente" @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 # Reglas para compilación
windows: windows:
@echo off @echo off
@@ -139,7 +146,7 @@ windows_debug:
@echo Compilando version debug para Windows: "$(APP_NAME)_debug.exe" @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" $(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)" @echo "Creando release para Windows - Version: $(VERSION)"
# Crea carpeta temporal 'RELEASE_FOLDER' # Crea carpeta temporal 'RELEASE_FOLDER'
@@ -175,7 +182,7 @@ macos_debug:
@echo "Compilando version debug para macOS: $(TARGET_NAME)_debug" @echo "Compilando version debug para macOS: $(TARGET_NAME)_debug"
$(CXX) $(APP_SOURCES) $(INCLUDES) -DDEBUG -DVERBOSE $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_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)" @echo "Creando release para macOS - Version: $(VERSION)"
# Elimina datos de compilaciones anteriores # Elimina datos de compilaciones anteriores
$(RMDIR) "$(RELEASE_FOLDER)" $(RMDIR) "$(RELEASE_FOLDER)"
@@ -243,7 +250,7 @@ linux_debug:
@echo "Compilando version debug para Linux: $(TARGET_NAME)_debug" @echo "Compilando version debug para Linux: $(TARGET_NAME)_debug"
$(CXX) $(APP_SOURCES) $(INCLUDES) -DDEBUG -DVERBOSE $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_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)" @echo "Creando release para Linux - Version: $(VERSION)"
# Elimina carpetas previas # Elimina carpetas previas
$(RMDIR) "$(RELEASE_FOLDER)" $(RMDIR) "$(RELEASE_FOLDER)"
@@ -268,7 +275,7 @@ linux_release: resources.pack
# Elimina la carpeta temporal # Elimina la carpeta temporal
$(RMDIR) "$(RELEASE_FOLDER)" $(RMDIR) "$(RELEASE_FOLDER)"
linux_release_desktop: resources.pack linux_release_desktop: force_resource_pack
@echo "Creando release con integracion desktop para Linux - Version: $(VERSION)" @echo "Creando release con integracion desktop para Linux - Version: $(VERSION)"
# Elimina carpetas previas # Elimina carpetas previas
$(RMDIR) "$(RELEASE_FOLDER)" $(RMDIR) "$(RELEASE_FOLDER)"
@@ -372,7 +379,7 @@ raspi_debug:
@echo "Compilando version debug para Raspberry Pi: $(TARGET_NAME)_debug" @echo "Compilando version debug para Raspberry Pi: $(TARGET_NAME)_debug"
$(CXX) $(APP_SOURCES) $(INCLUDES) -DVERBOSE -DDEBUG $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_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)" @echo "Creando release para Raspberry Pi - Version: $(VERSION)"
# Elimina carpetas previas # Elimina carpetas previas
$(RMDIR) "$(RELEASE_FOLDER)" $(RMDIR) "$(RELEASE_FOLDER)"
@@ -397,7 +404,7 @@ raspi_release: resources.pack
# Elimina la carpeta temporal # Elimina la carpeta temporal
$(RMDIR) "$(RELEASE_FOLDER)" $(RMDIR) "$(RELEASE_FOLDER)"
anbernic: resources.pack anbernic: force_resource_pack
@echo "Compilando para Anbernic: $(TARGET_NAME)" @echo "Compilando para Anbernic: $(TARGET_NAME)"
# Elimina carpetas previas # Elimina carpetas previas
$(RMDIR) "$(RELEASE_FOLDER)"_anbernic $(RMDIR) "$(RELEASE_FOLDER)"_anbernic
@@ -436,6 +443,7 @@ help:
@echo " macos_release - Crear release completo para macOS (.dmg)" @echo " macos_release - Crear release completo para macOS (.dmg)"
@echo " pack_tool - Compilar herramienta de empaquetado" @echo " pack_tool - Compilar herramienta de empaquetado"
@echo " resources.pack - Generar pack de recursos desde data/" @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 " show_version - Mostrar version actual ($(VERSION))"
@echo " help - Mostrar esta ayuda" @echo " help - Mostrar esta ayuda"

187
tools/Makefile Normal file
View File

@@ -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