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"
|
||||
|
||||
:: --- 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"
|
||||
|
||||
:: Remove trailing backslash for safety (optional but cleaner)
|
||||
if "%MAGICK_DIR:~-1%"=="\" set "MAGICK_DIR=%MAGICK_DIR:~0,-1%"
|
||||
|
||||
set "MAGICK_HOME=%MAGICK_DIR%"
|
||||
set "MAGICK_CONFIGURE_PATH=%MAGICK_DIR%"
|
||||
set "MAGICK_CODER_MODULE_PATH=%MAGICK_DIR%\modules\coders"
|
||||
|
|
@ -33,11 +27,21 @@ if not exist "%SOURCE_IMG%" (
|
|||
:: 2. Ensure Destination Directory Exists
|
||||
if not exist "%~dp3" mkdir "%~dp3"
|
||||
|
||||
:: 3. Generate the .ico
|
||||
:: We create a multi-layer ICO with standard Windows sizes
|
||||
echo [ICONS] Generating Windows Icon: %DEST_ICO%
|
||||
:: 3. Generate the .ico (Nearest Neighbor / Pixel Art Mode)
|
||||
echo [ICONS] Generating Pixel-Perfect 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 (
|
||||
echo [ERROR] ImageMagick failed to generate icon.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,3 @@
|
|||
# scripts/generate_icons.sh
|
||||
|
||||
#!/bin/bash
|
||||
|
||||
# Argument 1: Path to magick executable
|
||||
|
|
@ -32,51 +30,58 @@ mkdir -p "$MACOS_OUT_DIR"
|
|||
ICONSET="$MACOS_OUT_DIR/icon.iconset"
|
||||
mkdir -p "$ICONSET"
|
||||
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 16x16 "$ICONSET/icon_16x16.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 32x32 "$ICONSET/icon_16x16@2x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 32x32 "$ICONSET/icon_32x32.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 64x64 "$ICONSET/icon_32x32@2x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 128x128 "$ICONSET/icon_128x128.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 256x256 "$ICONSET/icon_128x128@2x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 256x256 "$ICONSET/icon_256x256.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 512x512 "$ICONSET/icon_256x256@2x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 512x512 "$ICONSET/icon_512x512.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 1024x1024 "$ICONSET/icon_512x512@2x.png"
|
||||
echo "[ICONS] Generating macOS iconset (Pixel Perfect)..."
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 16x16 "$ICONSET/icon_16x16.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 32x32 "$ICONSET/icon_16x16@2x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 32x32 "$ICONSET/icon_32x32.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 64x64 "$ICONSET/icon_32x32@2x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 128x128 "$ICONSET/icon_128x128.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 256x256 "$ICONSET/icon_128x128@2x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 256x256 "$ICONSET/icon_256x256.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 512x512 "$ICONSET/icon_256x256@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"
|
||||
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" \
|
||||
\( -clone 0 -scale 256x256 \) \
|
||||
\( -clone 0 -scale 128x128 \) \
|
||||
\( -clone 0 -scale 64x64 \) \
|
||||
\( -clone 0 -scale 48x48 \) \
|
||||
\( -clone 0 -scale 32x32 \) \
|
||||
\( -clone 0 -scale 16x16 \) \
|
||||
-delete 0 -alpha off -colors 256 "$MACOS_OUT_DIR/app_icon.ico"
|
||||
-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 "$MACOS_OUT_DIR/app_icon.ico"
|
||||
|
||||
# --- Android ---
|
||||
# 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"
|
||||
|
||||
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"
|
||||
"$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"
|
||||
"$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"
|
||||
"$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"
|
||||
"$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 ---
|
||||
# Output directly to ios/Assets.xcassets
|
||||
echo "[ICONS] Generating iOS AppIcon (Pixel Perfect)..."
|
||||
XCASSETS_DIR="ios/Assets.xcassets"
|
||||
IOS_DIR="$XCASSETS_DIR/AppIcon.appiconset"
|
||||
mkdir -p "$IOS_DIR"
|
||||
|
|
@ -90,21 +95,21 @@ cat > "$XCASSETS_DIR/Contents.json" <<EOF
|
|||
}
|
||||
EOF
|
||||
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 20x20 "$IOS_DIR/Icon-20.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 40x40 "$IOS_DIR/Icon-20@2x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 60x60 "$IOS_DIR/Icon-20@3x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 29x29 "$IOS_DIR/Icon-29.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 58x58 "$IOS_DIR/Icon-29@2x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 87x87 "$IOS_DIR/Icon-29@3x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 40x40 "$IOS_DIR/Icon-40.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 80x80 "$IOS_DIR/Icon-40@2x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 120x120 "$IOS_DIR/Icon-40@3x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 120x120 "$IOS_DIR/Icon-60@2x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 180x180 "$IOS_DIR/Icon-60@3x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 76x76 "$IOS_DIR/Icon-76.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 152x152 "$IOS_DIR/Icon-76@2x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 167x167 "$IOS_DIR/Icon-83.5@2x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -scale 1024x1024 "$IOS_DIR/Icon-1024.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 20x20 "$IOS_DIR/Icon-20.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 40x40 "$IOS_DIR/Icon-20@2x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 60x60 "$IOS_DIR/Icon-20@3x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 29x29 "$IOS_DIR/Icon-29.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 58x58 "$IOS_DIR/Icon-29@2x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 87x87 "$IOS_DIR/Icon-29@3x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 40x40 "$IOS_DIR/Icon-40.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 80x80 "$IOS_DIR/Icon-40@2x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 120x120 "$IOS_DIR/Icon-40@3x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 120x120 "$IOS_DIR/Icon-60@2x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 180x180 "$IOS_DIR/Icon-60@3x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 76x76 "$IOS_DIR/Icon-76.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 152x152 "$IOS_DIR/Icon-76@2x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 167x167 "$IOS_DIR/Icon-83.5@2x.png"
|
||||
"$MAGICK_BIN" "$SOURCE" -sample 1024x1024 "$IOS_DIR/Icon-1024.png"
|
||||
|
||||
cat > "$IOS_DIR/Contents.json" <<EOF
|
||||
{
|
||||
|
|
@ -134,4 +139,6 @@ cat > "$IOS_DIR/Contents.json" <<EOF
|
|||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
EOF
|
||||
EOF
|
||||
|
||||
echo "[SUCCESS] All platform icons generated."
|
||||
Loading…
Reference in New Issue