From 6bdb5c207ca1e13434641811447933c0d10afd28 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sun, 3 May 2026 17:44:23 +0200 Subject: [PATCH] arreglos en makefile per a macos --- Makefile | 91 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 63 insertions(+), 28 deletions(-) diff --git a/Makefile b/Makefile index 348b226..56c6d4a 100644 --- a/Makefile +++ b/Makefile @@ -166,12 +166,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 -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)" @@ -200,30 +216,49 @@ _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..." - 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 "$(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..."; \ + 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 "$(TARGET_FILE)" "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/MacOS/$(TARGET_NAME)"