From 0e49f35d3b314b170459bb646e676f1820f9bfde Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sun, 3 May 2026 17:55:54 +0200 Subject: [PATCH] correccions en makefile de macos i en el numero de versio (de guionets a punts) --- Makefile | 95 ++++++++++++++++++++++++++++------------ source/utils/defines.hpp | 2 +- 2 files changed, 69 insertions(+), 28 deletions(-) diff --git a/Makefile b/Makefile index 6d002c3..585206a 100644 --- a/Makefile +++ b/Makefile @@ -190,12 +190,28 @@ _macos_release: @$(MAKE) pack @echo "Creando release para macOS - Version: $(VERSION)" -# Verificar e instalar create-dmg si es necesario - @which create-dmg > /dev/null || (echo "Instalando create-dmg..." && brew install create-dmg) - -# Compila la versión para procesadores Intel con cmake - @cmake -S . -B build/intel -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 -DMACOS_BUNDLE=ON - @cmake --build build/intel +# Verifica dependencias necesarias (create-dmg). Si falta, intenta instalarla +# con brew; si brew tampoco está, indica el comando exacto al usuario. + @command -v create-dmg >/dev/null 2>&1 || { \ + echo ""; \ + echo "============================================"; \ + echo " Falta la dependencia: create-dmg"; \ + echo "============================================"; \ + if command -v brew >/dev/null 2>&1; then \ + echo " Instalando con: brew install create-dmg"; \ + brew install create-dmg || { \ + echo ""; \ + echo " ERROR: 'brew install create-dmg' ha fallado."; \ + echo " Ejecuta el comando manualmente y vuelve a probar."; \ + exit 1; \ + }; \ + else \ + echo " Homebrew no está instalado."; \ + echo " Instálalo desde https://brew.sh y luego ejecuta:"; \ + echo " brew install create-dmg"; \ + exit 1; \ + fi; \ + } # Elimina datos de compilaciones anteriores $(RMDIR) "$(RELEASE_FOLDER)" @@ -219,30 +235,55 @@ _macos_release: cp LICENSE "$(RELEASE_FOLDER)" cp README.md "$(RELEASE_FOLDER)" -# Copia el ejecutable Intel al bundle - cp "$(TARGET_FILE)" "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/MacOS/$(TARGET_NAME)" +# Actualiza versión en Info.plist + @echo "Actualizando Info.plist con versión $(VERSION)..." + @RAW_VERSION=$$(echo "$(VERSION)" | sed 's/^v//'); \ + sed -i '' '/CFBundleShortVersionString<\/key>/{n;s|.*|'"$$RAW_VERSION"'|;}' "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/Info.plist"; \ + sed -i '' '/CFBundleVersion<\/key>/{n;s|.*|'"$$RAW_VERSION"'|;}' "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/Info.plist" -# Firma la aplicación - codesign --deep --force --sign - --timestamp=none "$(RELEASE_FOLDER)/$(APP_NAME).app" - -# Empaqueta el .dmg de la versión Intel con create-dmg - @echo "Creando DMG Intel con iconos de 96x96..." - create-dmg \ - --volname "$(APP_NAME)" \ - --window-pos 200 120 \ - --window-size 720 300 \ - --icon-size 96 \ - --text-size 12 \ - --icon "$(APP_NAME).app" 278 102 \ - --icon "LICENSE" 441 102 \ - --icon "README.md" 604 102 \ - --app-drop-link 115 102 \ - --hide-extension "$(APP_NAME).app" \ - "$(MACOS_INTEL_RELEASE)" \ - "$(RELEASE_FOLDER)" || true - @echo "Release Intel creado: $(MACOS_INTEL_RELEASE)" +# Compila y empaqueta la versión Intel (best-effort: si falla, se omite el +# DMG Intel y continúa con la build de Apple Silicon). + @echo "" + @echo "============================================" + @echo " Compilando version Intel (x86_64)" + @echo "============================================" + @if cmake -S . -B build/intel -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_OSX_ARCHITECTURES=x86_64 \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 \ + -DMACOS_BUNDLE=ON \ + && cmake --build build/intel; then \ + cp "$(TARGET_FILE)" "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/MacOS/$(TARGET_NAME)"; \ + codesign --deep --force --sign - --timestamp=none "$(RELEASE_FOLDER)/$(APP_NAME).app"; \ + echo "Creando DMG Intel con iconos de 96x96..."; \ + create-dmg \ + --volname "$(APP_NAME)" \ + --window-pos 200 120 \ + --window-size 720 300 \ + --icon-size 96 \ + --text-size 12 \ + --icon "$(APP_NAME).app" 278 102 \ + --icon "LICENSE" 441 102 \ + --icon "README.md" 604 102 \ + --app-drop-link 115 102 \ + --hide-extension "$(APP_NAME).app" \ + "$(MACOS_INTEL_RELEASE)" \ + "$(RELEASE_FOLDER)" || true; \ + echo "Release Intel creado: $(MACOS_INTEL_RELEASE)"; \ + else \ + echo ""; \ + echo "============================================"; \ + echo " WARNING: la build Intel ha fallado."; \ + echo " Se omite el DMG Intel y se continúa con"; \ + echo " la build de Apple Silicon."; \ + echo "============================================"; \ + echo ""; \ + fi # Compila la versión para procesadores Apple Silicon con cmake + @echo "" + @echo "============================================" + @echo " Compilando version Apple Silicon (arm64)" + @echo "============================================" @cmake -S . -B build/arm -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=arm64 -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 -DMACOS_BUNDLE=ON @cmake --build build/arm cp "$(TARGET_FILE)" "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/MacOS/$(TARGET_NAME)" diff --git a/source/utils/defines.hpp b/source/utils/defines.hpp index b98ad2d..bd7bb7e 100644 --- a/source/utils/defines.hpp +++ b/source/utils/defines.hpp @@ -1,5 +1,5 @@ #pragma once namespace Texts { - constexpr const char* VERSION = "2026-04-14"; // Versión del juego (también usada por el Makefile) + constexpr const char* VERSION = "2026.04.14"; // Versión del juego (también usada por el Makefile) } // namespace Texts