@echo off setlocal enabledelayedexpansion echo Setting environment... if exist "%ProgramFiles%\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsamd64_arm64.bat" ( call "%ProgramFiles%\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsamd64_arm64.bat" ) else if exist "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsamd64_arm64.bat" ( call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsamd64_arm64.bat" ) else ( echo Visual Studio 2022 not found. goto error ) set SEVENZIP="C:\Program Files\7-Zip\7z.exe" if defined DEBUG ( echo DEBUG=%DEBUG% ) else ( set DEBUG=1 ) pushd %~dp0 set "SCRIPTDIR=%CD%" cd ..\dep\msvc mkdir deps-build cd deps-build || goto error set "BUILDDIR=%CD%" cd .. mkdir deps-arm64 cd deps-arm64 || goto error set "INSTALLDIR=%CD%" cd .. cd deps-x64 || goto error set "X64INSTALLDIR=%CD%" cd .. popd echo SCRIPTDIR=%SCRIPTDIR% echo BUILDDIR=%BUILDDIR% echo INSTALLDIR=%INSTALLDIR% cd "%BUILDDIR%" set QT=6.6.2 set QTMINOR=6.6 set SDL=SDL2-2.30.1 call :downloadfile "%SDL%.zip" "https://libsdl.org/release/%SDL%.zip" c15ded54e9f32f8a1f9ed3e3dc072837a320ed23c5d0e95b7c18ecbe05c1187b || goto error call :downloadfile "qtbase-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtbase-everywhere-src-%QT%.zip" 3582dbc46df280365fc5d5e6cc8fcfc72ddbddbd330a03a98eec24b8b44fa4d0 || goto error call :downloadfile "qtimageformats-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtimageformats-everywhere-src-%QT%.zip" 2176b623c9141b1136d57ff9ca1ed12e3636146b53c6feed2083e1cbecff6454 || goto error call :downloadfile "qtsvg-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtsvg-everywhere-src-%QT%.zip" 84ba758ef06b93532f2d098f0d08d7bbddf6f3e6273c9e0d3a58498338f85b18 || goto error call :downloadfile "qttools-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qttools-everywhere-src-%QT%.zip" c760fbd229de8a02e793fa41ddd6843cd2cb9c93a4e99bc5384c646599aee996 || goto error call :downloadfile "qttranslations-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qttranslations-everywhere-src-%QT%.zip" a061e8d61eb7c03823ead92fe46b5722ed7b8119aeb84157d80f10a53c77d262 || goto error if %DEBUG%==1 ( echo Building debug and release libraries... ) else ( echo Building release libraries... ) set FORCEPDB=-DCMAKE_SHARED_LINKER_FLAGS_RELEASE="/DEBUG" set ARM64TOOLCHAIN=-DCMAKE_TOOLCHAIN_FILE="%SCRIPTDIR%\cmake-toolchain-windows-arm64.cmake" echo Building SDL... rmdir /S /Q "%SDL%" %SEVENZIP% x "%SDL%.zip" || goto error cd "%SDL%" || goto error if %DEBUG%==1 ( cmake -B build-debug %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DSDL_SHARED=ON -DSDL_STATIC=OFF -G Ninja || goto error cmake --build build-debug --parallel || goto error ninja -C build-debug install || goto error copy build-debug\SDL2d.pdb "%INSTALLDIR%\bin" || goto error ) cmake -B build %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Release %FORCEPDB% -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DSDL_SHARED=ON -DSDL_STATIC=OFF -G Ninja || goto error cmake --build build --parallel || goto error ninja -C build install || goto error copy build\SDL2.pdb "%INSTALLDIR%\bin" || goto error cd .. || goto error if %DEBUG%==1 ( set QTBUILDSPEC=-DCMAKE_CONFIGURATION_TYPES="Release;Debug" -G "Ninja Multi-Config" ) else ( set QTBUILDSPEC=-DCMAKE_BUILD_TYPE=Release -G Ninja ) echo Building Qt base... rmdir /S /Q "qtbase-everywhere-src-%QT%" %SEVENZIP% x "qtbase-everywhere-src-%QT%.zip" || goto error cd "qtbase-everywhere-src-%QT%" || goto error cmake -B build %ARM64TOOLCHAIN% -DFEATURE_sql=OFF -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DQT_HOST_PATH="%X64INSTALLDIR%" %FORCEPDB% -DINPUT_gui=yes -DINPUT_widgets=yes -DINPUT_ssl=yes -DINPUT_openssl=no -DINPUT_schannel=yes %QTBUILDSPEC% || goto error cmake --build build --parallel || goto error ninja -C build install || goto error cd .. || goto error echo Building Qt SVG... rmdir /S /Q "qtsvg-everywhere-src-%QT%" %SEVENZIP% x "qtsvg-everywhere-src-%QT%.zip" || goto error cd "qtsvg-everywhere-src-%QT%" || goto error mkdir build || goto error cd build || goto error call "%INSTALLDIR%\bin\qt-configure-module.bat" .. -- %FORCEPDB% || goto error cmake --build . --parallel || goto error ninja install || goto error cd ..\.. || goto error echo Building Qt Image Formats... rmdir /S /Q "qtimageformats-everywhere-src-%QT%" %SEVENZIP% x "qtimageformats-everywhere-src-%QT%.zip" || goto error cd "qtimageformats-everywhere-src-%QT%" || goto error mkdir build || goto error cd build || goto error call "%INSTALLDIR%\bin\qt-configure-module.bat" .. -- %FORCEPDB% || goto error cmake --build . --parallel || goto error ninja install || goto error cd ..\.. || goto error echo Building Qt Tools... rmdir /S /Q "qtimageformats-everywhere-src-%QT%" %SEVENZIP% x "qttools-everywhere-src-%QT%.zip" || goto error cd "qttools-everywhere-src-%QT%" || goto error mkdir build || goto error cd build || goto error call "%INSTALLDIR%\bin\qt-configure-module.bat" .. -- %FORCEPDB% -DFEATURE_assistant=OFF -DFEATURE_clang=OFF -DFEATURE_designer=OFF -DFEATURE_kmap2qmap=OFF -DFEATURE_pixeltool=OFF -DFEATURE_pkg_config=OFF -DFEATURE_qev=OFF -DFEATURE_qtattributionsscanner=OFF -DFEATURE_qtdiag=OFF -DFEATURE_qtplugininfo=OFF || goto error cmake --build . --parallel || goto error ninja install || goto error cd ..\.. || goto error echo Building Qt Translations... rmdir /S /Q "qttranslations-everywhere-src-%QT%" %SEVENZIP% x "qttranslations-everywhere-src-%QT%.zip" || goto error cd "qttranslations-everywhere-src-%QT%" || goto error mkdir build || goto error cd build || goto error call "%INSTALLDIR%\bin\qt-configure-module.bat" .. -- %FORCEPDB% || goto error cmake --build . --parallel || goto error ninja install || goto error cd ..\.. || goto error echo Cleaning up... cd .. rd /S /Q deps-build echo Exiting with success. exit 0 :error echo Failed with error #%errorlevel%. pause exit %errorlevel% :downloadfile if not exist "%~1" ( echo Downloading %~1 from %~2... curl -L -o "%~1" "%~2" || goto error ) rem based on https://gist.github.com/gsscoder/e22daefaff9b5d8ac16afb070f1a7971 set idx=0 for /f %%F in ('certutil -hashfile "%~1" SHA256') do ( set "out!idx!=%%F" set /a idx += 1 ) set filechecksum=%out1% if /i %~3==%filechecksum% ( echo Validated %~1. exit /B 0 ) else ( echo Expected %~3 got %filechecksum%. exit /B 1 )