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:
187
tools/Makefile
Normal file
187
tools/Makefile
Normal 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
|
||||
Reference in New Issue
Block a user