diff --git a/Makefile b/Makefile index 09ba2ad..9339505 100644 --- a/Makefile +++ b/Makefile @@ -11,11 +11,12 @@ APP_NAME := Shadertoy RELEASE_FOLDER := shadertoy_release RESOURCE_FILE := release/shadertoy.res -# Versión automática basada en la fecha actual (específica por SO) +# Versión automática basada en la fecha actual (formato YYYY.MM.DD para que +# CFBundleShortVersionString del bundle macOS sea conforme a la spec de Apple). ifeq ($(OS),Windows_NT) - VERSION := $(shell powershell -Command "Get-Date -Format 'yyyy-MM-dd'") + VERSION := $(shell powershell -Command "Get-Date -Format 'yyyy.MM.dd'") else - VERSION := $(shell date +%Y-%m-%d) + VERSION := $(shell date +%Y.%m.%d) endif # Variables específicas para Windows (usando APP_NAME) @@ -128,8 +129,28 @@ macos_debug: 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) +# 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)" @@ -150,6 +171,12 @@ macos_release: cp LICENSE "$(RELEASE_FOLDER)" cp README.md "$(RELEASE_FOLDER)" +# 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" + # Compila la versión para procesadores Apple Silicon $(CXX) $(APP_SOURCES) $(INCLUDES) -DMACOS_BUNDLE -DRELEASE_BUILD $(CXXFLAGS) $(LDFLAGS) -o "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/MacOS/$(TARGET_NAME)" -rpath @executable_path/../Frameworks/ -target arm64-apple-macos11