mirror of https://github.com/stenzek/duckstation
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			172 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Batchfile
		
	
			
		
		
	
	
			172 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Batchfile
		
	
@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.1
 | 
						|
set QTMINOR=6.6
 | 
						|
set SDL=SDL2-2.28.5
 | 
						|
 | 
						|
call :downloadfile "%SDL%.zip" "https://libsdl.org/release/%SDL%.zip" 97bd14ee0ec67494d2b93f1a4f7da2bf891103c57090d96fdcc2b019d885c76a || goto error
 | 
						|
call :downloadfile "qtbase-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtbase-everywhere-src-%QT%.zip" 818f92518d1a89ee98ae818891a7d2f0e41aa45b933d55215da2df6d5459428e || goto error
 | 
						|
call :downloadfile "qtimageformats-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtimageformats-everywhere-src-%QT%.zip" 03f01042f86b4dbf7329a179f20835817c660a183178c11570cc0535b3c3ba58 || goto error
 | 
						|
call :downloadfile "qtsvg-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtsvg-everywhere-src-%QT%.zip" d44d5ead8d4682f54c91687b5e32f2735f086419e3889e05609feae1a7f02da9 || goto error
 | 
						|
call :downloadfile "qttools-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qttools-everywhere-src-%QT%.zip" a17eba4e1c00dbd62c13d708c2bc918c2954b2b25a94d3c05e891d62e8f187c8 || goto error
 | 
						|
call :downloadfile "qttranslations-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qttranslations-everywhere-src-%QT%.zip" e5ccf0eefd6b1ef9604fdf57f6d16ad8484d07fb141ca3a2d9c3f1771296ae25 || 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
 | 
						|
)
 |