From 3e6fcfeb72bf6f3427f24548f371ff30d07d7f88 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sun, 3 May 2026 18:03:30 +0200 Subject: [PATCH] correccions en el makefile de macos --- Makefile | 98 ++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 67 insertions(+), 31 deletions(-) diff --git a/Makefile b/Makefile index af87562fc..b373d5f3f 100644 --- a/Makefile +++ b/Makefile @@ -186,12 +186,28 @@ _windows_release: _macos_release: @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 (genera shaders y resources.pack) - @cmake -S . -B build/intel -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 -DMACOS_BUNDLE=ON -DGIT_HASH=$(GIT_HASH) - @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)" @@ -205,12 +221,11 @@ _macos_release: $(MKDIR) "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/MacOS" $(MKDIR) "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/Resources" -# Copia carpetas y ficheros - cp resources.pack "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/Resources" - cp gamecontrollerdb.txt "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/Resources" +# Copia carpetas y ficheros del bundle (resources.pack se generará al compilar) cp -R release/macos/frameworks/SDL3.xcframework/macos-arm64_x86_64/SDL3.framework "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/Frameworks" cp release/icons/*.icns "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/Resources" cp release/macos/Info.plist "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents" + cp gamecontrollerdb.txt "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/Resources" cp LICENSE "$(RELEASE_FOLDER)" cp README.md "$(RELEASE_FOLDER)" @@ -220,32 +235,53 @@ _macos_release: 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" -# Copia el ejecutable Intel al bundle - cp "$(TARGET_FILE)" "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/MacOS/$(TARGET_NAME)" - -# 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 -DGIT_HASH=$(GIT_HASH) \ + && cmake --build build/intel; then \ + cp resources.pack "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/Resources"; \ + 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 -DGIT_HASH=$(GIT_HASH) @cmake --build build/arm + cp resources.pack "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/Resources" cp "$(TARGET_FILE)" "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/MacOS/$(TARGET_NAME)" # Firma la aplicación