duckstation

duckstation, but archived from the revision just before upstream changed it to a proprietary software project, this version is the libre one
git clone https://git.neptards.moe/u3shit/duckstation.git
Log | Files | Refs | README | LICENSE

build-dependencies-windows-x64.bat (16944B)


      1 @echo off
      2 setlocal enabledelayedexpansion
      3 
      4 echo Setting environment...
      5 if exist "%ProgramFiles%\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" (
      6   call "%ProgramFiles%\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
      7 ) else if exist "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" (
      8   call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
      9 ) else (
     10   echo Visual Studio 2022 not found.
     11   goto error
     12 )
     13 
     14 set SEVENZIP="C:\Program Files\7-Zip\7z.exe"
     15 set PATCH="C:\Program Files\Git\usr\bin\patch.exe"
     16 
     17 if defined DEBUG (
     18   echo DEBUG=%DEBUG%
     19 ) else (
     20   set DEBUG=1
     21 )
     22 
     23 pushd %~dp0
     24 set "SCRIPTDIR=%CD%"
     25 cd ..\..\dep\msvc
     26 mkdir deps-build
     27 cd deps-build || goto error
     28 set "BUILDDIR=%CD%"
     29 cd ..
     30 mkdir deps-x64
     31 cd deps-x64 || goto error
     32 set "INSTALLDIR=%CD%"
     33 popd
     34 
     35 echo SCRIPTDIR=%SCRIPTDIR%
     36 echo BUILDDIR=%BUILDDIR%
     37 echo INSTALLDIR=%INSTALLDIR%
     38 
     39 set "PATH=%PATH%;%INSTALLDIR%\bin"
     40 
     41 cd "%BUILDDIR%"
     42 
     43 set FREETYPE=2.13.3
     44 set HARFBUZZ=9.0.0
     45 set LIBJPEGTURBO=3.0.3
     46 set LIBPNG=1643
     47 set QT=6.7.2
     48 set QTMINOR=6.7
     49 set SDL2=2.30.6
     50 set WEBP=1.4.0
     51 set ZLIB=1.3.1
     52 set ZLIBSHORT=131
     53 set ZSTD=1.5.6
     54 
     55 set CPUINFO=7524ad504fdcfcf75a18a133da6abd75c5d48053
     56 set DISCORD_RPC=144f3a3f1209994d8d9e8a87964a989cb9911c1e
     57 set LUNASVG=9af1ac7b90658a279b372add52d6f77a4ebb482c
     58 set SHADERC=f60bb80e255144e71776e2ad570d89b78ea2ab4f
     59 set SOUNDTOUCH=463ade388f3a51da078dc9ed062bf28e4ba29da7
     60 set SPIRV_CROSS=vulkan-sdk-1.3.290.0
     61 
     62 call :downloadfile "freetype-%FREETYPE%.tar.gz" https://download.savannah.gnu.org/releases/freetype/freetype-%FREETYPE%.tar.gz 5c3a8e78f7b24c20b25b54ee575d6daa40007a5f4eea2845861c3409b3021747 || goto error
     63 call :downloadfile "harfbuzz-%HARFBUZZ%.zip" https://github.com/harfbuzz/harfbuzz/archive/refs/tags/%HARFBUZZ%.zip 314acd13d88c24826b88799439da8cd3dbcefd17a08dde9bdfd5ca4c3db62047 || goto error
     64 call :downloadfile "lpng%LIBPNG%.zip" https://download.sourceforge.net/libpng/lpng1643.zip fc466a1e638e635d6c66363bdf3f38555b81b0141d0b06ba45b49ccca327436d || goto error
     65 call :downloadfile "libjpeg-turbo-%LIBJPEGTURBO%.tar.gz" "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/%LIBJPEGTURBO%/libjpeg-turbo-%LIBJPEGTURBO%.tar.gz" 343e789069fc7afbcdfe44dbba7dbbf45afa98a15150e079a38e60e44578865d || goto error
     66 call :downloadfile "SDL2-%SDL2%.zip" "https://github.com/libsdl-org/SDL/releases/download/release-%SDL2%/SDL2-%SDL2%.zip" 6d4e00fcbee9fd8985cc2869edeb0b1a751912b87506cf2fb6471e73d981e1f4 || goto error
     67 call :downloadfile "qtbase-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtbase-everywhere-src-%QT%.zip" 488119aad60719a085a1e45c31641ac2406ef86fc088a3c99885c18e9d6b4bb9 || goto error
     68 call :downloadfile "qtimageformats-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtimageformats-everywhere-src-%QT%.zip" 8e736b02db7dd67dbe834d56503b242344ce85d3532da692f1812b30ccf80997 || goto error
     69 call :downloadfile "qtsvg-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtsvg-everywhere-src-%QT%.zip" 85a22142270a92be0dd0ab5d27cc53617b2a2f1a45fc0a3890024164032f8475 || goto error
     70 call :downloadfile "qttools-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qttools-everywhere-src-%QT%.zip" 9e15f1fdbd83e4123e733bff20aff1b45921c09056c3790fa42eb71d0a5cd01f || goto error
     71 call :downloadfile "qttranslations-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qttranslations-everywhere-src-%QT%.zip" d1f25e0f68a1282feffdd5fe795a027ee5f16ad19e3b1fa2e04a51cea19110ec || goto error
     72 call :downloadfile "libwebp-%WEBP%.tar.gz" "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-%WEBP%.tar.gz" 61f873ec69e3be1b99535634340d5bde750b2e4447caa1db9f61be3fd49ab1e5 || goto error
     73 call :downloadfile "zlib%ZLIBSHORT%.zip" "https://zlib.net/zlib%ZLIBSHORT%.zip" 72af66d44fcc14c22013b46b814d5d2514673dda3d115e64b690c1ad636e7b17 || goto error
     74 call :downloadfile "zstd-%ZSTD%.zip" "https://github.com/facebook/zstd/archive/refs/tags/v%ZSTD%.zip" 3b1c3b46e416d36931efd34663122d7f51b550c87f74de2d38249516fe7d8be5 || goto error
     75 call :downloadfile "zstd-fd5f8106a58601a963ee816e6a57aa7c61fafc53.patch" https://github.com/facebook/zstd/commit/fd5f8106a58601a963ee816e6a57aa7c61fafc53.patch 675f144b11f8ab2424b64bed8ccdca5d3f35b9326046fa7a883925dd180f0651 || goto error
     76 
     77 call :downloadfile "cpuinfo-%CPUINFO%.zip" "https://github.com/pytorch/cpuinfo/archive/%CPUINFO%.zip" 13146ae7983d767a678dd01b0d6af591e77cec82babd41264b9164ab808d7d41 || goto error
     78 call :downloadfile "discord-rpc-%DISCORD_RPC%.zip" "https://github.com/stenzek/discord-rpc/archive/%DISCORD_RPC%.zip" 61e185e75d37b360c314125bcdf4697192d15e2d5209db3306ed6cd736d508b3 || goto error
     79 call :downloadfile "lunasvg-%LUNASVG%.zip" "https://github.com/stenzek/lunasvg/archive/%LUNASVG%.zip" 1425ec2bda0228b73ffdc70b0dc666fc7d2b69c33eec75a35c4421157c0e220c || goto error
     80 call :downloadfile "shaderc-%SHADERC%.zip" "https://github.com/stenzek/shaderc/archive/%SHADERC%.zip" d24760f3c20a0ca39dfa85b84b6cf65eee077cd168e7aa08502e60c168ef05f6 || goto error
     81 call :downloadfile "soundtouch-%SOUNDTOUCH%.zip" "https://github.com/stenzek/soundtouch/archive/%SOUNDTOUCH%.zip" 107a1941181a69abe28018b9ad26fc0218625758ac193bc979abc9e26b7c0c3a || goto error
     82 
     83 if not exist SPIRV-Cross\ (
     84   git clone https://github.com/KhronosGroup/SPIRV-Cross/ -b %SPIRV_CROSS% --depth 1 || goto error
     85 )
     86 
     87 if %DEBUG%==1 (
     88   echo Building debug and release libraries...
     89 ) else (
     90   echo Building release libraries...
     91 )
     92 
     93 set FORCEPDB=-DCMAKE_SHARED_LINKER_FLAGS_RELEASE="/DEBUG"
     94 
     95 echo Building Zlib...
     96 rmdir /S /Q "zlib-%ZLIB%"
     97 %SEVENZIP% x "zlib%ZLIBSHORT%.zip" || goto error
     98 cd "zlib-%ZLIB%" || goto error
     99 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DZLIB_BUILD_EXAMPLES=OFF -B build -G Ninja || goto error
    100 cmake --build build --parallel || goto error
    101 ninja -C build install || goto error
    102 cd .. || goto error
    103 
    104 echo Building libpng...
    105 rmdir /S /Q "lpng%LIBPNG%"
    106 %SEVENZIP% x "lpng%LIBPNG%.zip" || goto error
    107 cd "lpng%LIBPNG%" || goto error
    108 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DBUILD_SHARED_LIBS=ON -DPNG_TESTS=OFF -DPNG_STATIC=OFF -DPNG_SHARED=ON -DPNG_TOOLS=OFF -B build -G Ninja || goto error
    109 cmake --build build --parallel || goto error
    110 ninja -C build install || goto error
    111 cd .. || goto error
    112 
    113 echo Building libjpeg...
    114 rmdir /S /Q "libjpeg-turbo-%LIBJPEGTURBO%"
    115 tar -xf "libjpeg-turbo-%LIBJPEGTURBO%.tar.gz" || goto error
    116 cd "libjpeg-turbo-%LIBJPEGTURBO%" || goto error
    117 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DENABLE_STATIC=OFF -DENABLE_SHARED=ON -B build -G Ninja || goto error
    118 cmake --build build --parallel || goto error
    119 ninja -C build install || goto error
    120 cd .. || goto error
    121 
    122 echo Building FreeType without HarfBuzz...
    123 rmdir /S /Q "freetype-%FREETYPE%"
    124 tar -xf "freetype-%FREETYPE%.tar.gz" || goto error
    125 cd "freetype-%FREETYPE%" || goto error
    126 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DFT_REQUIRE_ZLIB=TRUE -DFT_REQUIRE_PNG=TRUE -DFT_DISABLE_BZIP2=TRUE -DFT_DISABLE_BROTLI=TRUE -DFT_DISABLE_HARFBUZZ=TRUE -B build -G Ninja || goto error
    127 cmake --build build --parallel || goto error
    128 ninja -C build install || goto error
    129 cd .. || goto error
    130 
    131 echo Building HarfBuzz...
    132 rmdir /S /Q "harfbuzz-%HARFBUZZ%"
    133 %SEVENZIP% x "-x^!harfbuzz-%HARFBUZZ%\README" "harfbuzz-%HARFBUZZ%.zip" || goto error
    134 cd "harfbuzz-%HARFBUZZ%" || goto error
    135 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DHB_BUILD_UTILS=OFF -B build -G Ninja || goto error
    136 cmake --build build --parallel || goto error
    137 ninja -C build install || goto error
    138 cd .. || goto error
    139 
    140 echo Building FreeType with HarfBuzz...
    141 rmdir /S /Q "freetype-%FREETYPE%"
    142 tar -xf "freetype-%FREETYPE%.tar.gz" || goto error
    143 cd "freetype-%FREETYPE%" || goto error
    144 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DFT_REQUIRE_ZLIB=TRUE -DFT_REQUIRE_PNG=TRUE -DFT_DISABLE_BZIP2=TRUE -DFT_DISABLE_BROTLI=TRUE -DFT_REQUIRE_HARFBUZZ=TRUE -B build -G Ninja || goto error
    145 cmake --build build --parallel || goto error
    146 ninja -C build install || goto error
    147 cd .. || goto error
    148 
    149 echo Building Zstandard...
    150 rmdir /S /Q "zstd-%ZSTD%"
    151 %SEVENZIP% x "-x^!zstd-1.5.6\tests\cli-tests\bin" "zstd-%ZSTD%.zip" || goto error
    152 cd "zstd-%ZSTD%"
    153 %PATCH% -p1 < "..\zstd-fd5f8106a58601a963ee816e6a57aa7c61fafc53.patch" || goto error
    154 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DZSTD_BUILD_SHARED=ON -DZSTD_BUILD_STATIC=OFF -DZSTD_BUILD_PROGRAMS=OFF -B build -G Ninja build/cmake
    155 cmake --build build --parallel || goto error
    156 ninja -C build install || goto error
    157 cd .. || goto error
    158 
    159 echo Building WebP...
    160 rmdir /S /Q "libwebp-%WEBP%"
    161 tar -xf "libwebp-%WEBP%.tar.gz" || goto error
    162 cd "libwebp-%WEBP%" || goto error
    163 cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF -DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DBUILD_SHARED_LIBS=ON -G Ninja || goto error
    164 cmake --build build --parallel || goto error
    165 ninja -C build install || goto error
    166 cd .. || goto error
    167 
    168 echo Building SDL...
    169 rmdir /S /Q "SDL2-%SDL2%"
    170 %SEVENZIP% x "SDL2-%SDL2%.zip" || goto error
    171 cd "SDL2-%SDL2%" || goto error
    172 cmake -B build -DCMAKE_BUILD_TYPE=Release %FORCEPDB% -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DSDL_SHARED=ON -DSDL_STATIC=OFF -G Ninja || goto error
    173 cmake --build build --parallel || goto error
    174 ninja -C build install || goto error
    175 copy build\SDL2.pdb "%INSTALLDIR%\bin" || goto error
    176 cd .. || goto error
    177 
    178 if %DEBUG%==1 (
    179   set QTBUILDSPEC=-DCMAKE_CONFIGURATION_TYPES="Release;Debug" -G "Ninja Multi-Config"
    180 ) else (
    181   set QTBUILDSPEC=-DCMAKE_BUILD_TYPE=Release -G Ninja
    182 )
    183 
    184 echo Building Qt base...
    185 rmdir /S /Q "qtbase-everywhere-src-%QT%"
    186 %SEVENZIP% x "qtbase-everywhere-src-%QT%.zip" || goto error
    187 cd "qtbase-everywhere-src-%QT%" || goto error
    188 
    189 rem Disable the PCRE2 JIT, it doesn't properly verify AVX2 support.
    190 %PATCH% -p1 < "%SCRIPTDIR%\qtbase-disable-pcre2-jit.patch" || goto error
    191 
    192 cmake -B build -DFEATURE_sql=OFF -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" %FORCEPDB% -DINPUT_gui=yes -DINPUT_widgets=yes -DINPUT_ssl=yes -DINPUT_openssl=no -DINPUT_schannel=yes -DFEATURE_system_png=ON -DFEATURE_system_jpeg=ON -DFEATURE_system_zlib=ON -DFEATURE_system_freetype=ON -DFEATURE_system_harfbuzz=ON %QTBUILDSPEC% || goto error
    193 cmake --build build --parallel || goto error
    194 ninja -C build install || goto error
    195 cd .. || goto error
    196 
    197 echo Building Qt SVG...
    198 rmdir /S /Q "qtsvg-everywhere-src-%QT%"
    199 %SEVENZIP% x "qtsvg-everywhere-src-%QT%.zip" || goto error
    200 cd "qtsvg-everywhere-src-%QT%" || goto error
    201 mkdir build || goto error
    202 cd build || goto error
    203 call "%INSTALLDIR%\bin\qt-configure-module.bat" .. -- %FORCEPDB% -DCMAKE_PREFIX_PATH="%INSTALLDIR%" || goto error
    204 cmake --build . --parallel || goto error
    205 ninja install || goto error
    206 cd ..\.. || goto error
    207 
    208 echo Building Qt Image Formats...
    209 rmdir /S /Q "qtimageformats-everywhere-src-%QT%"
    210 %SEVENZIP% x "qtimageformats-everywhere-src-%QT%.zip" || goto error
    211 cd "qtimageformats-everywhere-src-%QT%" || goto error
    212 mkdir build || goto error
    213 cd build || goto error
    214 call "%INSTALLDIR%\bin\qt-configure-module.bat" .. -- %FORCEPDB% -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DFEATURE_system_webp=ON || goto error
    215 cmake --build . --parallel || goto error
    216 ninja install || goto error
    217 cd ..\.. || goto error
    218 
    219 echo Building Qt Tools...
    220 rmdir /S /Q "qtimageformats-everywhere-src-%QT%"
    221 %SEVENZIP% x "qttools-everywhere-src-%QT%.zip" || goto error
    222 cd "qttools-everywhere-src-%QT%" || goto error
    223 mkdir build || goto error
    224 cd build || goto error
    225 call "%INSTALLDIR%\bin\qt-configure-module.bat" .. -- %FORCEPDB% -DFEATURE_assistant=OFF -DFEATURE_clang=OFF -DFEATURE_designer=ON -DFEATURE_kmap2qmap=OFF -DFEATURE_pixeltool=OFF -DFEATURE_pkg_config=OFF -DFEATURE_qev=OFF -DFEATURE_qtattributionsscanner=OFF -DFEATURE_qtdiag=OFF -DFEATURE_qtplugininfo=OFF || goto error
    226 cmake --build . --parallel || goto error
    227 ninja install || goto error
    228 cd ..\.. || goto error
    229 
    230 echo Building Qt Translations...
    231 rmdir /S /Q "qttranslations-everywhere-src-%QT%"
    232 %SEVENZIP% x "qttranslations-everywhere-src-%QT%.zip" || goto error
    233 cd "qttranslations-everywhere-src-%QT%" || goto error
    234 mkdir build || goto error
    235 cd build || goto error
    236 call "%INSTALLDIR%\bin\qt-configure-module.bat" .. -- %FORCEPDB% || goto error
    237 cmake --build . --parallel || goto error
    238 ninja install || goto error
    239 cd ..\.. || goto error
    240 
    241 echo Building shaderc...
    242 rmdir /S /Q "shaderc-%SHADERC%"
    243 %SEVENZIP% x "shaderc-%SHADERC%.zip" || goto error
    244 cd "shaderc-%SHADERC%" || goto error
    245 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -DSHADERC_ENABLE_SHARED_CRT=ON -B build -G Ninja || goto error
    246 cmake --build build --parallel || goto error
    247 ninja -C build install || goto error
    248 cd .. || goto error
    249 
    250 echo Building SPIRV-Cross...
    251 cd SPIRV-Cross || goto error
    252 rmdir /S /Q "build"
    253 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DSPIRV_CROSS_SHARED=ON -DSPIRV_CROSS_STATIC=OFF -DSPIRV_CROSS_CLI=OFF -DSPIRV_CROSS_ENABLE_TESTS=OFF -DSPIRV_CROSS_ENABLE_GLSL=ON -DSPIRV_CROSS_ENABLE_HLSL=ON -DSPIRV_CROSS_ENABLE_MSL=OFF -DSPIRV_CROSS_ENABLE_CPP=OFF -DSPIRV_CROSS_ENABLE_REFLECT=OFF -DSPIRV_CROSS_ENABLE_C_API=ON -DSPIRV_CROSS_ENABLE_UTIL=ON -B build -G Ninja
    254 cmake --build build --parallel || goto error
    255 ninja -C build install || goto error
    256 cd .. || goto error
    257 
    258 echo Building cpuinfo...
    259 rmdir /S /Q "cpuinfo-%CPUINFO%"
    260 %SEVENZIP% x "cpuinfo-%CPUINFO%.zip" || goto error
    261 cd "cpuinfo-%CPUINFO%" || goto error
    262 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DCPUINFO_LIBRARY_TYPE=shared -DCPUINFO_RUNTIME_TYPE=shared -DCPUINFO_LOG_LEVEL=error -DCPUINFO_LOG_TO_STDIO=ON -DCPUINFO_BUILD_TOOLS=OFF -DCPUINFO_BUILD_UNIT_TESTS=OFF -DCPUINFO_BUILD_MOCK_TESTS=OFF -DCPUINFO_BUILD_BENCHMARKS=OFF -DUSE_SYSTEM_LIBS=ON -B build -G Ninja
    263 cmake --build build --parallel || goto error
    264 ninja -C build install || goto error
    265 cd .. || goto error
    266 
    267 echo Building discord-rpc...
    268 rmdir /S /Q "discord-rpc-%DISCORD_RPC%"
    269 %SEVENZIP% x "discord-rpc-%DISCORD_RPC%.zip" || goto error
    270 cd "discord-rpc-%DISCORD_RPC%" || goto error
    271 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -B build -G Ninja
    272 cmake --build build --parallel || goto error
    273 ninja -C build install || goto error
    274 cd .. || goto error
    275 
    276 echo Building lunasvg...
    277 rmdir /S /Q "lunasvg-%LUNASVG%"
    278 %SEVENZIP% x "lunasvg-%LUNASVG%.zip" || goto error
    279 cd "lunasvg-%LUNASVG%" || goto error
    280 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DLUNASVG_BUILD_EXAMPLES=OFF -B build -G Ninja
    281 cmake --build build --parallel || goto error
    282 ninja -C build install || goto error
    283 cd .. || goto error
    284 
    285 echo Building soundtouch...
    286 rmdir /S /Q "soundtouch-%SOUNDTOUCH%"
    287 %SEVENZIP% x "soundtouch-%SOUNDTOUCH%.zip" || goto error
    288 cd "soundtouch-%SOUNDTOUCH%" || goto error
    289 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl -B build -G Ninja || goto error
    290 cmake --build build --parallel || goto error
    291 ninja -C build install || goto error
    292 cd .. || goto error
    293 
    294 echo Cleaning up...
    295 cd ..
    296 rd /S /Q deps-build
    297 
    298 echo Exiting with success.
    299 exit 0
    300 
    301 :error
    302 echo Failed with error #%errorlevel%.
    303 pause
    304 exit %errorlevel%
    305 
    306 :downloadfile
    307 if not exist "%~1" (
    308   echo Downloading %~1 from %~2...
    309   curl -L -o "%~1" "%~2" || goto error
    310 )
    311 
    312 rem based on https://gist.github.com/gsscoder/e22daefaff9b5d8ac16afb070f1a7971
    313 set idx=0
    314 for /f %%F in ('certutil -hashfile "%~1" SHA256') do (
    315     set "out!idx!=%%F"
    316     set /a idx += 1
    317 )
    318 set filechecksum=%out1%
    319 
    320 if /i %~3==%filechecksum% (
    321     echo Validated %~1.
    322     exit /B 0
    323 ) else (
    324     echo Expected %~3 got %filechecksum%.
    325     exit /B 1
    326 )