revised scripts, add master to prepare zips for win release builds
This commit is contained in:
parent
c2f99a603a
commit
27d662c503
|
|
@ -0,0 +1,108 @@
|
||||||
|
@echo off
|
||||||
|
setlocal enabledelayedexpansion
|
||||||
|
|
||||||
|
:: ==============================================================================
|
||||||
|
:: PATHS
|
||||||
|
:: ==============================================================================
|
||||||
|
:: This script lives in scripts/
|
||||||
|
set "SCRIPT_DIR=%~dp0"
|
||||||
|
|
||||||
|
:: The build scripts live in windows/
|
||||||
|
pushd "%SCRIPT_DIR%..\windows"
|
||||||
|
set "WINDOWS_SCRIPTS_DIR=%CD%"
|
||||||
|
popd
|
||||||
|
|
||||||
|
:: The output dir is build_windows/
|
||||||
|
pushd "%SCRIPT_DIR%.."
|
||||||
|
set "PROJECT_ROOT=%CD%"
|
||||||
|
popd
|
||||||
|
set "OUTPUT_ROOT=%PROJECT_ROOT%\build_windows"
|
||||||
|
|
||||||
|
echo [MASTER] Project Root: %PROJECT_ROOT%
|
||||||
|
echo [MASTER] Scripts Dir: %WINDOWS_SCRIPTS_DIR%
|
||||||
|
echo [MASTER] Output Dir: %OUTPUT_ROOT%
|
||||||
|
echo.
|
||||||
|
|
||||||
|
:: ==============================================================================
|
||||||
|
:: 1. BUILD ARM64
|
||||||
|
:: ==============================================================================
|
||||||
|
echo [MASTER] Starting ARM64 Build...
|
||||||
|
echo ------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
:: Navigate to the windows directory so the script runs in its native context
|
||||||
|
pushd "%WINDOWS_SCRIPTS_DIR%"
|
||||||
|
|
||||||
|
:: Run the script
|
||||||
|
call build_arm64.bat
|
||||||
|
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo.
|
||||||
|
echo [MASTER] CRITICAL ERROR: ARM64 Build Failed.
|
||||||
|
popd
|
||||||
|
pause
|
||||||
|
exit /b %errorlevel%
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Return to master context
|
||||||
|
popd
|
||||||
|
echo.
|
||||||
|
|
||||||
|
:: ==============================================================================
|
||||||
|
:: 2. ZIP ARM64
|
||||||
|
:: ==============================================================================
|
||||||
|
echo [MASTER] Packaging ARM64...
|
||||||
|
set "ARM64_SOURCE=%OUTPUT_ROOT%\arm64"
|
||||||
|
set "ARM64_ZIP=%OUTPUT_ROOT%\YrCrystals_Win_ARM64.zip"
|
||||||
|
|
||||||
|
if exist "%ARM64_SOURCE%\YrCrystals.exe" (
|
||||||
|
if exist "%ARM64_ZIP%" del "%ARM64_ZIP%"
|
||||||
|
powershell -NoProfile -Command "Compress-Archive -Path '%ARM64_SOURCE%\*' -DestinationPath '%ARM64_ZIP%' -Force"
|
||||||
|
echo [SUCCESS] Created: %ARM64_ZIP%
|
||||||
|
) else (
|
||||||
|
echo [ERROR] ARM64 Output directory missing or empty. Skipping Zip.
|
||||||
|
)
|
||||||
|
echo.
|
||||||
|
|
||||||
|
:: ==============================================================================
|
||||||
|
:: 3. BUILD x64
|
||||||
|
:: ==============================================================================
|
||||||
|
echo [MASTER] Starting x64 Build...
|
||||||
|
echo ------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
pushd "%WINDOWS_SCRIPTS_DIR%"
|
||||||
|
call build_x64.bat
|
||||||
|
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo.
|
||||||
|
echo [MASTER] CRITICAL ERROR: x64 Build Failed.
|
||||||
|
popd
|
||||||
|
pause
|
||||||
|
exit /b %errorlevel%
|
||||||
|
)
|
||||||
|
popd
|
||||||
|
echo.
|
||||||
|
|
||||||
|
:: ==============================================================================
|
||||||
|
:: 4. ZIP x64
|
||||||
|
:: ==============================================================================
|
||||||
|
echo [MASTER] Packaging x64...
|
||||||
|
set "X64_SOURCE=%OUTPUT_ROOT%\x64"
|
||||||
|
set "X64_ZIP=%OUTPUT_ROOT%\YrCrystals_Win_x64.zip"
|
||||||
|
|
||||||
|
if exist "%X64_SOURCE%\YrCrystals.exe" (
|
||||||
|
if exist "%X64_ZIP%" del "%X64_ZIP%"
|
||||||
|
powershell -NoProfile -Command "Compress-Archive -Path '%X64_SOURCE%\*' -DestinationPath '%X64_ZIP%' -Force"
|
||||||
|
echo [SUCCESS] Created: %X64_ZIP%
|
||||||
|
) else (
|
||||||
|
echo [ERROR] x64 Output directory missing or empty. Skipping Zip.
|
||||||
|
)
|
||||||
|
|
||||||
|
:: ==============================================================================
|
||||||
|
:: DONE
|
||||||
|
:: ==============================================================================
|
||||||
|
echo.
|
||||||
|
echo ------------------------------------------------------------------------------
|
||||||
|
echo [MASTER] All builds completed successfully.
|
||||||
|
echo [OUTPUT] %OUTPUT_ROOT%
|
||||||
|
echo ------------------------------------------------------------------------------
|
||||||
|
pause
|
||||||
|
|
@ -11,14 +11,8 @@ set "SOURCE_IMG=%~2"
|
||||||
set "DEST_ICO=%~3"
|
set "DEST_ICO=%~3"
|
||||||
|
|
||||||
:: --- FIX FOR MISSING DELEGATES / REGISTRY ERRORS ---
|
:: --- FIX FOR MISSING DELEGATES / REGISTRY ERRORS ---
|
||||||
:: The x86 ImageMagick on ARM64 often fails to find the registry keys.
|
|
||||||
:: We extract the directory from the executable path and set MAGICK_HOME manually.
|
|
||||||
|
|
||||||
for %%I in ("%MAGICK_EXE%") do set "MAGICK_DIR=%%~dpI"
|
for %%I in ("%MAGICK_EXE%") do set "MAGICK_DIR=%%~dpI"
|
||||||
|
|
||||||
:: Remove trailing backslash for safety (optional but cleaner)
|
|
||||||
if "%MAGICK_DIR:~-1%"=="\" set "MAGICK_DIR=%MAGICK_DIR:~0,-1%"
|
if "%MAGICK_DIR:~-1%"=="\" set "MAGICK_DIR=%MAGICK_DIR:~0,-1%"
|
||||||
|
|
||||||
set "MAGICK_HOME=%MAGICK_DIR%"
|
set "MAGICK_HOME=%MAGICK_DIR%"
|
||||||
set "MAGICK_CONFIGURE_PATH=%MAGICK_DIR%"
|
set "MAGICK_CONFIGURE_PATH=%MAGICK_DIR%"
|
||||||
set "MAGICK_CODER_MODULE_PATH=%MAGICK_DIR%\modules\coders"
|
set "MAGICK_CODER_MODULE_PATH=%MAGICK_DIR%\modules\coders"
|
||||||
|
|
@ -33,11 +27,21 @@ if not exist "%SOURCE_IMG%" (
|
||||||
:: 2. Ensure Destination Directory Exists
|
:: 2. Ensure Destination Directory Exists
|
||||||
if not exist "%~dp3" mkdir "%~dp3"
|
if not exist "%~dp3" mkdir "%~dp3"
|
||||||
|
|
||||||
:: 3. Generate the .ico
|
:: 3. Generate the .ico (Nearest Neighbor / Pixel Art Mode)
|
||||||
:: We create a multi-layer ICO with standard Windows sizes
|
echo [ICONS] Generating Pixel-Perfect Windows Icon: %DEST_ICO%
|
||||||
echo [ICONS] Generating Windows Icon: %DEST_ICO%
|
|
||||||
|
|
||||||
"%MAGICK_EXE%" "%SOURCE_IMG%" -define icon:auto-resize=256,128,64,48,32,16 "%DEST_ICO%"
|
:: We use -sample (Nearest Neighbor) explicitly for each standard icon size.
|
||||||
|
:: We clone the original (index 0) for every resize to ensure maximum accuracy from the source.
|
||||||
|
"%MAGICK_EXE%" "%SOURCE_IMG%" ^
|
||||||
|
-background none -alpha on ^
|
||||||
|
( -clone 0 -sample 256x256 ) ^
|
||||||
|
( -clone 0 -sample 128x128 ) ^
|
||||||
|
( -clone 0 -sample 64x64 ) ^
|
||||||
|
( -clone 0 -sample 48x48 ) ^
|
||||||
|
( -clone 0 -sample 32x32 ) ^
|
||||||
|
( -clone 0 -sample 16x16 ) ^
|
||||||
|
-delete 0 ^
|
||||||
|
"%DEST_ICO%"
|
||||||
|
|
||||||
if %errorlevel% neq 0 (
|
if %errorlevel% neq 0 (
|
||||||
echo [ERROR] ImageMagick failed to generate icon.
|
echo [ERROR] ImageMagick failed to generate icon.
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
# scripts/generate_icons.sh
|
|
||||||
|
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Argument 1: Path to magick executable
|
# Argument 1: Path to magick executable
|
||||||
|
|
@ -32,51 +30,58 @@ mkdir -p "$MACOS_OUT_DIR"
|
||||||
ICONSET="$MACOS_OUT_DIR/icon.iconset"
|
ICONSET="$MACOS_OUT_DIR/icon.iconset"
|
||||||
mkdir -p "$ICONSET"
|
mkdir -p "$ICONSET"
|
||||||
|
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 16x16 "$ICONSET/icon_16x16.png"
|
echo "[ICONS] Generating macOS iconset (Pixel Perfect)..."
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 32x32 "$ICONSET/icon_16x16@2x.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 16x16 "$ICONSET/icon_16x16.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 32x32 "$ICONSET/icon_32x32.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 32x32 "$ICONSET/icon_16x16@2x.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 64x64 "$ICONSET/icon_32x32@2x.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 32x32 "$ICONSET/icon_32x32.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 128x128 "$ICONSET/icon_128x128.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 64x64 "$ICONSET/icon_32x32@2x.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 256x256 "$ICONSET/icon_128x128@2x.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 128x128 "$ICONSET/icon_128x128.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 256x256 "$ICONSET/icon_256x256.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 256x256 "$ICONSET/icon_128x128@2x.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 512x512 "$ICONSET/icon_256x256@2x.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 256x256 "$ICONSET/icon_256x256.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 512x512 "$ICONSET/icon_512x512.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 512x512 "$ICONSET/icon_256x256@2x.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 1024x1024 "$ICONSET/icon_512x512@2x.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 512x512 "$ICONSET/icon_512x512.png"
|
||||||
|
"$MAGICK_BIN" "$SOURCE" -sample 1024x1024 "$ICONSET/icon_512x512@2x.png"
|
||||||
|
|
||||||
iconutil -c icns "$ICONSET" -o "$MACOS_OUT_DIR/app_icon.icns"
|
iconutil -c icns "$ICONSET" -o "$MACOS_OUT_DIR/app_icon.icns"
|
||||||
rm -rf "$ICONSET"
|
rm -rf "$ICONSET"
|
||||||
|
|
||||||
# Windows
|
# --- Windows ---
|
||||||
|
echo "[ICONS] Generating Windows .ico (Pixel Perfect)..."
|
||||||
|
# Updated to match the high-quality logic from the Windows Batch file
|
||||||
|
# (Removed -alpha off and -colors 256 which would ruin transparency)
|
||||||
"$MAGICK_BIN" "$SOURCE" \
|
"$MAGICK_BIN" "$SOURCE" \
|
||||||
\( -clone 0 -scale 256x256 \) \
|
-background none -alpha on \
|
||||||
\( -clone 0 -scale 128x128 \) \
|
\( -clone 0 -sample 256x256 \) \
|
||||||
\( -clone 0 -scale 64x64 \) \
|
\( -clone 0 -sample 128x128 \) \
|
||||||
\( -clone 0 -scale 48x48 \) \
|
\( -clone 0 -sample 64x64 \) \
|
||||||
\( -clone 0 -scale 32x32 \) \
|
\( -clone 0 -sample 48x48 \) \
|
||||||
\( -clone 0 -scale 16x16 \) \
|
\( -clone 0 -sample 32x32 \) \
|
||||||
-delete 0 -alpha off -colors 256 "$MACOS_OUT_DIR/app_icon.ico"
|
\( -clone 0 -sample 16x16 \) \
|
||||||
|
-delete 0 "$MACOS_OUT_DIR/app_icon.ico"
|
||||||
|
|
||||||
# --- Android ---
|
# --- Android ---
|
||||||
# Output directly to android/res so QT_ANDROID_PACKAGE_SOURCE_DIR picks it up
|
# Output directly to android/res so QT_ANDROID_PACKAGE_SOURCE_DIR picks it up
|
||||||
|
echo "[ICONS] Generating Android mipmaps (Pixel Perfect)..."
|
||||||
ANDROID_DIR="android/res"
|
ANDROID_DIR="android/res"
|
||||||
|
|
||||||
mkdir -p "$ANDROID_DIR/mipmap-mdpi"
|
mkdir -p "$ANDROID_DIR/mipmap-mdpi"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 48x48 "$ANDROID_DIR/mipmap-mdpi/ic_launcher.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 48x48 "$ANDROID_DIR/mipmap-mdpi/ic_launcher.png"
|
||||||
|
|
||||||
mkdir -p "$ANDROID_DIR/mipmap-hdpi"
|
mkdir -p "$ANDROID_DIR/mipmap-hdpi"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 72x72 "$ANDROID_DIR/mipmap-hdpi/ic_launcher.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 72x72 "$ANDROID_DIR/mipmap-hdpi/ic_launcher.png"
|
||||||
|
|
||||||
mkdir -p "$ANDROID_DIR/mipmap-xhdpi"
|
mkdir -p "$ANDROID_DIR/mipmap-xhdpi"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 96x96 "$ANDROID_DIR/mipmap-xhdpi/ic_launcher.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 96x96 "$ANDROID_DIR/mipmap-xhdpi/ic_launcher.png"
|
||||||
|
|
||||||
mkdir -p "$ANDROID_DIR/mipmap-xxhdpi"
|
mkdir -p "$ANDROID_DIR/mipmap-xxhdpi"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 144x144 "$ANDROID_DIR/mipmap-xxhdpi/ic_launcher.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 144x144 "$ANDROID_DIR/mipmap-xxhdpi/ic_launcher.png"
|
||||||
|
|
||||||
mkdir -p "$ANDROID_DIR/mipmap-xxxhdpi"
|
mkdir -p "$ANDROID_DIR/mipmap-xxxhdpi"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 192x192 "$ANDROID_DIR/mipmap-xxxhdpi/ic_launcher.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 192x192 "$ANDROID_DIR/mipmap-xxxhdpi/ic_launcher.png"
|
||||||
|
|
||||||
# --- iOS ---
|
# --- iOS ---
|
||||||
# Output directly to ios/Assets.xcassets
|
# Output directly to ios/Assets.xcassets
|
||||||
|
echo "[ICONS] Generating iOS AppIcon (Pixel Perfect)..."
|
||||||
XCASSETS_DIR="ios/Assets.xcassets"
|
XCASSETS_DIR="ios/Assets.xcassets"
|
||||||
IOS_DIR="$XCASSETS_DIR/AppIcon.appiconset"
|
IOS_DIR="$XCASSETS_DIR/AppIcon.appiconset"
|
||||||
mkdir -p "$IOS_DIR"
|
mkdir -p "$IOS_DIR"
|
||||||
|
|
@ -90,21 +95,21 @@ cat > "$XCASSETS_DIR/Contents.json" <<EOF
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 20x20 "$IOS_DIR/Icon-20.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 20x20 "$IOS_DIR/Icon-20.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 40x40 "$IOS_DIR/Icon-20@2x.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 40x40 "$IOS_DIR/Icon-20@2x.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 60x60 "$IOS_DIR/Icon-20@3x.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 60x60 "$IOS_DIR/Icon-20@3x.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 29x29 "$IOS_DIR/Icon-29.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 29x29 "$IOS_DIR/Icon-29.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 58x58 "$IOS_DIR/Icon-29@2x.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 58x58 "$IOS_DIR/Icon-29@2x.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 87x87 "$IOS_DIR/Icon-29@3x.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 87x87 "$IOS_DIR/Icon-29@3x.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 40x40 "$IOS_DIR/Icon-40.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 40x40 "$IOS_DIR/Icon-40.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 80x80 "$IOS_DIR/Icon-40@2x.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 80x80 "$IOS_DIR/Icon-40@2x.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 120x120 "$IOS_DIR/Icon-40@3x.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 120x120 "$IOS_DIR/Icon-40@3x.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 120x120 "$IOS_DIR/Icon-60@2x.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 120x120 "$IOS_DIR/Icon-60@2x.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 180x180 "$IOS_DIR/Icon-60@3x.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 180x180 "$IOS_DIR/Icon-60@3x.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 76x76 "$IOS_DIR/Icon-76.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 76x76 "$IOS_DIR/Icon-76.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 152x152 "$IOS_DIR/Icon-76@2x.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 152x152 "$IOS_DIR/Icon-76@2x.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 167x167 "$IOS_DIR/Icon-83.5@2x.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 167x167 "$IOS_DIR/Icon-83.5@2x.png"
|
||||||
"$MAGICK_BIN" "$SOURCE" -scale 1024x1024 "$IOS_DIR/Icon-1024.png"
|
"$MAGICK_BIN" "$SOURCE" -sample 1024x1024 "$IOS_DIR/Icon-1024.png"
|
||||||
|
|
||||||
cat > "$IOS_DIR/Contents.json" <<EOF
|
cat > "$IOS_DIR/Contents.json" <<EOF
|
||||||
{
|
{
|
||||||
|
|
@ -134,4 +139,6 @@ cat > "$IOS_DIR/Contents.json" <<EOF
|
||||||
"author" : "xcode"
|
"author" : "xcode"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
echo "[SUCCESS] All platform icons generated."
|
||||||
Loading…
Reference in New Issue