-
Notifications
You must be signed in to change notification settings - Fork 594
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Scripts: Add Windows dependency build scripts
- Loading branch information
Showing
4 changed files
with
343 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
deps-arm64/ | ||
deps-x64/ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,171 @@ | ||
@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.5.2 | ||
set QTMINOR=6.5 | ||
set SDL=SDL2-2.28.2 | ||
|
||
call :downloadfile "%SDL%.zip" "https://libsdl.org/release/%SDL%.zip" 22383a6b242bac072f949d2b3854cf04c6856cae7a87eaa78c60dd733b71e41e || goto error | ||
call :downloadfile "qtbase-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtbase-everywhere-src-%QT%.zip" f770a087e350d688441880d08ad2791465e5e3b9a0f8fc2cfbeb5dd305a11d50 || goto error | ||
call :downloadfile "qtimageformats-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtimageformats-everywhere-src-%QT%.zip" 9757899b00eea4e6b65f81f922c0215c70969661567398d91da6639a50a788e7 || goto error | ||
call :downloadfile "qtsvg-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtsvg-everywhere-src-%QT%.zip" 0546a6aa19f5e0188d1ba4a0e0a1423d22b7dc55ce8a614cc4aa65bfac506f74 || goto error | ||
call :downloadfile "qttools-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qttools-everywhere-src-%QT%.zip" 3148f4f263bf9930d89107eb44bc452481a5f8c6178459e26ecbf3c8dca3b5c7 || goto error | ||
call :downloadfile "qttranslations-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qttranslations-everywhere-src-%QT%.zip" 8b99046b54c40106d4e310be63b41331b717cfd8b42da4b4fc1c9169604be7fc || goto error | ||
|
||
call :downloadfile "4b119f48f5cb5e1499f91a0791150231c47430d4.diff" "https://github.com/qt/qtbase/commit/4b119f48f5cb5e1499f91a0791150231c47430d4.diff" d86bd2bd4ee2aff5f5e97da027aa926178dca250d163427eb21503bb357730a5 || goto error | ||
|
||
if %DEBUG%==1 ( | ||
echo Building debug and release libraries... | ||
) else ( | ||
echo Building release libraries... | ||
) | ||
|
||
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 | ||
) | ||
cmake -B build %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Release -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 | ||
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 | ||
"C:\Program Files\Git\usr\bin\patch" -p1 < ../4b119f48f5cb5e1499f91a0791150231c47430d4.diff || goto error | ||
cmake -B build %ARM64TOOLCHAIN% -DFEATURE_sql=OFF -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DQT_HOST_PATH="%X64INSTALLDIR%" -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" .. || 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" .. || 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" .. -- -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" .. || 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 | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,165 @@ | ||
@echo off | ||
setlocal enabledelayedexpansion | ||
|
||
echo Setting environment... | ||
if exist "%ProgramFiles%\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" ( | ||
call "%ProgramFiles%\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | ||
) else if exist "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" ( | ||
call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.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-x64 | ||
cd deps-x64 || goto error | ||
set "INSTALLDIR=%CD%" | ||
popd | ||
|
||
echo SCRIPTDIR=%SCRIPTDIR% | ||
echo BUILDDIR=%BUILDDIR% | ||
echo INSTALLDIR=%INSTALLDIR% | ||
|
||
cd "%BUILDDIR%" | ||
|
||
set QT=6.5.2 | ||
set QTMINOR=6.5 | ||
set SDL=SDL2-2.28.2 | ||
|
||
call :downloadfile "%SDL%.zip" "https://libsdl.org/release/%SDL%.zip" 22383a6b242bac072f949d2b3854cf04c6856cae7a87eaa78c60dd733b71e41e || goto error | ||
call :downloadfile "qtbase-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtbase-everywhere-src-%QT%.zip" f770a087e350d688441880d08ad2791465e5e3b9a0f8fc2cfbeb5dd305a11d50 || goto error | ||
call :downloadfile "qtimageformats-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtimageformats-everywhere-src-%QT%.zip" 9757899b00eea4e6b65f81f922c0215c70969661567398d91da6639a50a788e7 || goto error | ||
call :downloadfile "qtsvg-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtsvg-everywhere-src-%QT%.zip" 0546a6aa19f5e0188d1ba4a0e0a1423d22b7dc55ce8a614cc4aa65bfac506f74 || goto error | ||
call :downloadfile "qttools-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qttools-everywhere-src-%QT%.zip" 3148f4f263bf9930d89107eb44bc452481a5f8c6178459e26ecbf3c8dca3b5c7 || goto error | ||
call :downloadfile "qttranslations-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qttranslations-everywhere-src-%QT%.zip" 8b99046b54c40106d4e310be63b41331b717cfd8b42da4b4fc1c9169604be7fc || goto error | ||
|
||
call :downloadfile "4b119f48f5cb5e1499f91a0791150231c47430d4.diff" "https://github.com/qt/qtbase/commit/4b119f48f5cb5e1499f91a0791150231c47430d4.diff" d86bd2bd4ee2aff5f5e97da027aa926178dca250d163427eb21503bb357730a5 || goto error | ||
|
||
if %DEBUG%==1 ( | ||
echo Building debug and release libraries... | ||
) else ( | ||
echo Building release libraries... | ||
) | ||
|
||
echo Building SDL... | ||
rmdir /S /Q "%SDL%" | ||
%SEVENZIP% x "%SDL%.zip" || goto error | ||
cd "%SDL%" || goto error | ||
if %DEBUG%==1 ( | ||
cmake -B build-debug -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 | ||
) | ||
cmake -B build -DCMAKE_BUILD_TYPE=Release -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 | ||
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 | ||
"C:\Program Files\Git\usr\bin\patch" -p1 < ../4b119f48f5cb5e1499f91a0791150231c47430d4.diff || goto error | ||
cmake -B build -DFEATURE_sql=OFF -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -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" .. || 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" .. || 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" .. -- -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" .. || 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 | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
set(CMAKE_CROSSCOMPILING TRUE) | ||
set(CMAKE_SYSTEM_NAME Windows) | ||
set(CMAKE_SYSTEM_VERSION 10) | ||
set(CMAKE_SYSTEM_PROCESSOR arm64) |