mirror of
https://github.com/PCSX2/pcsx2.git
synced 2026-07-11 01:34:17 +02:00
8f8968cbb1
This reverts commit 7ade24fc77.
572 lines
29 KiB
Batchfile
Executable File
572 lines
29 KiB
Batchfile
Executable File
@echo off
|
|
setlocal enabledelayedexpansion
|
|
|
|
echo Setting environment...
|
|
rem Favour VS2022 over VS2026 for now.
|
|
if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" (
|
|
for /f "usebackq tokens=*" %%i in (`call "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -version "[17, 18)" -latest -property installationPath`) do set "VSINSTPATH=%%i"
|
|
if defined VSINSTPATH (
|
|
echo VSINSTPATH=!VSINSTPATH!
|
|
call "!VSINSTPATH!\VC\Auxiliary\Build\vcvars64.bat" || goto error
|
|
) else (
|
|
for /f "usebackq tokens=*" %%i in (`call "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -version "[18, 19)" -latest -property installationPath`) do set "VSINSTPATH=%%i"
|
|
if defined VSINSTPATH (
|
|
echo VSINSTPATH=!VSINSTPATH!
|
|
call "!VSINSTPATH!\VC\Auxiliary\Build\vcvars64.bat" || goto error
|
|
) else (
|
|
echo Visual Studio not found.
|
|
goto error
|
|
)
|
|
)
|
|
) else (
|
|
echo Visual Studio not found.
|
|
goto error
|
|
)
|
|
|
|
set SEVENZIP="C:\Program Files\7-Zip\7z.exe"
|
|
set PATCH="C:\Program Files\Git\usr\bin\patch.exe"
|
|
set BASH="C:\Program Files\Git\usr\bin\bash.exe"
|
|
|
|
set "UNIX_TOOLS=C:\Program Files\Git\usr\bin\"
|
|
|
|
if defined DEBUG (
|
|
echo DEBUG=%DEBUG%
|
|
) else (
|
|
set DEBUG=1
|
|
)
|
|
|
|
if defined BUILD_FFMPEG (
|
|
echo BUILD_FFMPEG=%BUILD_FFMPEG%
|
|
) else (
|
|
set BUILD_FFMPEG=0
|
|
)
|
|
|
|
pushd %~dp0
|
|
set "SCRIPTDIR=%CD%"
|
|
cd ..\..\..\..
|
|
mkdir deps-build
|
|
cd deps-build || goto error
|
|
set "BUILDDIR=%CD%"
|
|
cd ..
|
|
mkdir deps
|
|
cd deps || goto error
|
|
set "INSTALLDIR=%CD%"
|
|
popd
|
|
|
|
echo SCRIPTDIR=%SCRIPTDIR%
|
|
echo BUILDDIR=%BUILDDIR%
|
|
echo INSTALLDIR=%INSTALLDIR%
|
|
|
|
set "PATH=%PATH%;%INSTALLDIR%\bin"
|
|
|
|
cd "%BUILDDIR%"
|
|
|
|
set QT=6.11.1
|
|
set QTMINOR=6.11
|
|
set QTAPNG=1.3.0
|
|
|
|
set FFMPEG=8.1
|
|
set MESON=1.10.2
|
|
set PKGCONF=2.5.1
|
|
set AMF=1.5.0
|
|
set LIBVPL=2.16.0
|
|
set NVENC=13.0.19.0
|
|
set LIBOPUS=1.6.1
|
|
set LIBSVTAV1=4.0.1
|
|
set LIBX264=b35605ace3ddf7c1a5d67a2eb553f034aef41d55
|
|
|
|
set FREETYPE=2.14.3
|
|
set HARFBUZZ=14.2.0
|
|
set SDL=SDL3-3.4.12
|
|
set LIBJPEGTURBO=3.2.0
|
|
set LIBPNG=1658
|
|
set LIBPNGLONG=1.6.58
|
|
set LZ4=1.10.0
|
|
set WEBP=1.6.0
|
|
set ZLIB=1.3.2
|
|
set ZLIBSHORT=132
|
|
set ZSTD=1.5.7
|
|
set KDDOCKWIDGETS=2.4.0
|
|
set PLUTOVG=1.3.2
|
|
set PLUTOSVG=0.0.7
|
|
set RAPIDYAML=0.12.1
|
|
|
|
set SHADERC=2026.2
|
|
set SHADERC_GLSLANG=275822a6261ee689aadb1da5f09a0ec2f058685c
|
|
set SHADERC_SPIRVHEADERS=58006c901d1d5c37dece6b6610e9af87fa951375
|
|
set SHADERC_SPIRVTOOLS=6337eb62cadd7d124ac6789bf39c0f71148f0a73
|
|
|
|
set AGILITYSDK=1.619.2
|
|
set DXHEADERS=1.619.1
|
|
|
|
call :downloadfile "qtbase-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtbase-everywhere-src-%QT%.zip" 3529cc37297a5a7aae4486843b9fd41c30df1d79a770f85e240b537dcc327ca5 || goto error
|
|
call :downloadfile "qtimageformats-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtimageformats-everywhere-src-%QT%.zip" 37fba768f2780580dfae535ad6654cb9dc0bf2272e71b9b9781988de9ed0dac0 || goto error
|
|
call :downloadfile "qtsvg-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtsvg-everywhere-src-%QT%.zip" 767730188d4610a89bf8da502f87acf1c8881a3ac54f1e0eb167ab1e08b03a75 || goto error
|
|
call :downloadfile "qttools-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qttools-everywhere-src-%QT%.zip" 2d6ed2a98f458152e3cb17bf0be0494250194933a2d937b5a434e5b2006efca9 || goto error
|
|
call :downloadfile "qttranslations-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qttranslations-everywhere-src-%QT%.zip" eef43700ffd079f5893e435aca1330c8bdbf2a94ae45013e3fc63870df53d3b0 || goto error
|
|
call :downloadfile "QtApng-%QTAPNG%.zip" "https://github.com/jurplel/QtApng/archive/refs/tags/%QTAPNG%.zip" 5176082cdd468047a7eb1ec1f106b032f57df207aa318d559b29606b00d159ac || goto error
|
|
|
|
call :downloadfile "ffmpeg-%FFMPEG%.tar.xz" "https://ffmpeg.org/releases/ffmpeg-%FFMPEG%.tar.xz" b072aed6871998cce9b36e7774033105ca29e33632be5b6347f3206898e0756a || goto error
|
|
call :downloadfile "meson-%MESON%.tar.gz" "https://github.com/mesonbuild/meson/releases/download/%MESON%/meson-%MESON%.tar.gz" 7890287d911dd4ee1ebd0efb61ed0321bfcd87c725df923a837cf90c6508f96b || goto error
|
|
call :downloadfile "pkgconf-pkgconf-%PKGCONF%.zip" "https://github.com/pkgconf/pkgconf/archive/refs/tags/pkgconf-%PKGCONF%.zip" c5b5f88a2ca2324dc5d857e35bb145e24290e326357ea94a86d47b8d7fa15477 || goto error
|
|
call :downloadfile "amf-headers-v%AMF%.tar.gz" "https://github.com/GPUOpen-LibrariesAndSDKs/AMF/releases/download/v%AMF%/AMF-headers-v%AMF%.tar.gz" d569647fa26f289affe81a206259fa92f819d06db1e80cc334559953e82a3f01 || goto error
|
|
call :downloadfile "libvpl-%LIBVPL%.zip" "https://github.com/intel/libvpl/archive/v%LIBVPL%.zip" 0b2ee8da8b9ef07ed4b52bf9ddee05008ec999b7c3c41944d7a9f804631c398e || goto error
|
|
call :downloadfile "nv-codec-headers-%NVENC%.tar.gz" "https://github.com/FFmpeg/nv-codec-headers/releases/download/n%NVENC%/nv-codec-headers-%NVENC%.tar.gz" 13da39edb3a40ed9713ae390ca89faa2f1202c9dda869ef306a8d4383e242bee || goto error
|
|
call :downloadfile "opus-%LIBOPUS%.tar.gz" "https://downloads.xiph.org/releases/opus/opus-%LIBOPUS%.tar.gz" 6ffcb593207be92584df15b32466ed64bbec99109f007c82205f0194572411a1 || goto error
|
|
call :downloadfile "SVT-AV1-v%LIBSVTAV1%.zip" "https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/v%LIBSVTAV1%/SVT-AV1-v%LIBSVTAV1%.zip" bfafad9af17f87fff75e44ca9b2c10cdd83c576047c3e96229285a8a64c81afc || goto error
|
|
call :downloadfile "x264-%LIBX264%.zip" "https://code.videolan.org/videolan/x264/-/archive/%LIBX264%.zip" d95d059eff81cc565165cd058b66e208f0cc9874106a8fe94a811a66cf8a85a2 || goto error
|
|
|
|
call :downloadfile "freetype-%FREETYPE%.tar.gz" https://sourceforge.net/projects/freetype/files/freetype2/%FREETYPE%/freetype-%FREETYPE%.tar.gz/download e61b31ab26358b946e767ed7eb7f4bb2e507da1cfefeb7a8861ace7fd5c899a1 || goto error
|
|
call :downloadfile "harfbuzz-%HARFBUZZ%.zip" https://github.com/harfbuzz/harfbuzz/archive/refs/tags/%HARFBUZZ%.zip bb2f83255706b1c92d731541c7cefaf98bb5b93e8f76d16f6deda05225ff20ee || goto error
|
|
call :downloadfile "lpng%LIBPNG%.zip" https://download.sourceforge.net/libpng/lpng1658.zip b32f170855dbbe3e6d9e645af40b538137041773672c3ba3e02db5816c82d376 || goto error
|
|
call :downloadfile "lpng%LIBPNG%-apng.patch.gz" https://download.sourceforge.net/libpng-apng/libpng-%LIBPNGLONG%-apng.patch.gz eee7dea22ed502868017971c86c63c4ed1e6085de0baebfdcc3d3322f00f3eb0 || goto error
|
|
call :downloadfile "libjpeg-turbo-%LIBJPEGTURBO%.tar.gz" "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/%LIBJPEGTURBO%/libjpeg-turbo-%LIBJPEGTURBO%.tar.gz" 6f30092cef9fb839779646608f4ee14ae3cbac989c47fa05e841b0841f09878e || goto error
|
|
call :downloadfile "libwebp-%WEBP%.tar.gz" "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-%WEBP%.tar.gz" e4ab7009bf0629fd11982d4c2aa83964cf244cffba7347ecd39019a9e38c4564 || goto error
|
|
call :downloadfile "%SDL%.zip" "https://libsdl.org/release/%SDL%.zip" 3d4de8967a49c0451e775a0c1e9022092c19fdef41ba38a83fcf031c5a6496e2 || goto error
|
|
call :downloadfile "lz4-%LZ4%.zip" "https://github.com/lz4/lz4/archive/refs/tags/v%LZ4%.zip" 3224b4c80f351f194984526ef396f6079bd6332dd9825c72ac0d7a37b3cdc565 || goto error
|
|
call :downloadfile "zlib%ZLIBSHORT%.zip" "https://github.com/madler/zlib/releases/download/v%ZLIB%/zlib%ZLIBSHORT%.zip" e8bf55f3017aa181690990cb58a994e77885da140609fc8f94abe9b65d2cae28 || goto error
|
|
call :downloadfile "zstd-%ZSTD%.zip" "https://github.com/facebook/zstd/archive/refs/tags/v%ZSTD%.zip" 7897bc5d620580d9b7cd3539c44b59d78f3657d33663fe97a145e07b4ebd69a4 || goto error
|
|
call :downloadfile "KDDockWidgets-%KDDOCKWIDGETS%.zip" "https://github.com/KDAB/KDDockWidgets/archive/v%KDDOCKWIDGETS%.zip" 47ddb48197872055f0adf8e90a7235f8a3b795ca1ee3a28ac2c504c673ae3806 || goto error
|
|
call :downloadfile "plutovg-%PLUTOVG%.zip" "https://github.com/sammycage/plutovg/archive/v%PLUTOVG%.zip" 4fe4e48f28aa80171b2166d45c0976ab0f21eecedb52cd4c3ef73b5afb48fac9 || goto error
|
|
call :downloadfile "plutosvg-%PLUTOSVG%.zip" "https://github.com/sammycage/plutosvg/archive/v%PLUTOSVG%.zip" 82dee2c57ad712bdd6d6d81d3e76249d89caa4b5a4214353660fd5adff12201a || goto error
|
|
call :downloadfile "agility-sdk-%AGILITYSDK%.nupkg" "https://www.nuget.org/api/v2/package/Microsoft.Direct3D.D3D12/%AGILITYSDK%" eb92d90bb23b2ec23410c41d791e41dbdbec942ab946924d1fdcb31eac6f0735 || goto error
|
|
call :downloadfile "DirectX-Headers-%DXHEADERS%.zip" "https://github.com/microsoft/DirectX-Headers/archive/v%DXHEADERS%.zip" 9eb8b102a90a42e4ea72a825f7d249d55ec90d164f030966c9b7784b93374927 || goto error
|
|
call :downloadfile "rapidyaml-%RAPIDYAML%-src.zip" "https://github.com/biojppm/rapidyaml/releases/download/v%RAPIDYAML%/rapidyaml-%RAPIDYAML%-src.zip" 96276f55b9fa7837ac8f3f72fd52965879cbb5d5d2e6af548c69a177fb078304 || goto error
|
|
|
|
call :downloadfile "shaderc-%SHADERC%.zip" "https://github.com/google/shaderc/archive/refs/tags/v%SHADERC%.zip" f9401cc5cb36c276cd1e072b6595dbd728148e8dba389e50f7339e2d388dbc08 || goto error
|
|
call :downloadfile "shaderc-glslang-%SHADERC_GLSLANG%.zip" "https://github.com/KhronosGroup/glslang/archive/%SHADERC_GLSLANG%.zip" 2b63189efad0348d88d410a5e12ec550a612e0b6ceef64624b8f45491269fb9c || goto error
|
|
call :downloadfile "shaderc-spirv-headers-%SHADERC_SPIRVHEADERS%.zip" "https://github.com/KhronosGroup/SPIRV-Headers/archive/%SHADERC_SPIRVHEADERS%.zip" d2f071e94c081f5a4606559770ebf1f7d1eac92a1def0c3e10609844aa8b69b2 || goto error
|
|
call :downloadfile "shaderc-spirv-tools-%SHADERC_SPIRVTOOLS%.zip" "https://github.com/KhronosGroup/SPIRV-Tools/archive/%SHADERC_SPIRVTOOLS%.zip" 4011be89aa73e3461c9deef73936a62c79a3097590c5135d058041cc9fb99c6f || goto error
|
|
|
|
if %DEBUG%==1 (
|
|
echo Building debug and release libraries...
|
|
) else (
|
|
echo Building release libraries...
|
|
)
|
|
|
|
set FORCEPDB=-DCMAKE_SHARED_LINKER_FLAGS_RELEASE="/DEBUG" -DCMAKE_MODULE_LINKER_FLAGS_RELEASE="/DEBUG" -DCMAKE_SHARED_LINKER_FLAGS_MINSIZEREL="/DEBUG" -DCMAKE_MODULE_LINKER_FLAGS_MINSIZEREL="/DEBUG"
|
|
|
|
if %BUILD_FFMPEG%==1 (
|
|
if not "%INSTALLDIR%"=="%INSTALLDIR: =%" (
|
|
echo FFmpeg does not support building in paths with spaces.
|
|
goto error
|
|
)
|
|
|
|
where nasm /q
|
|
set FOUND_NASM=0
|
|
if !ERRORLEVEL!==0 (
|
|
set FOUND_NASM=1
|
|
)
|
|
|
|
echo "Installing AMF headers"
|
|
rmdir /S /Q "amf-headers-v%AMF%"
|
|
tar -xf "amf-headers-v%AMF%.tar.gz" || goto error
|
|
xcopy "%BUILDDIR%\amf-headers-v%AMF%\AMF" "%INSTALLDIR%\include\AMF\" /y /s || goto error
|
|
echo.
|
|
|
|
echo "Installing libvpl"
|
|
rmdir /S /Q "libvpl-%LIBVPL%"
|
|
%SEVENZIP% x "libvpl-%LIBVPL%.zip" || goto error
|
|
cd "libvpl-%LIBVPL%" || goto error
|
|
cmake -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=OFF -DINSTALL_EXAMPLES=OFF -DINSTALL_LIB=OFF -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -B build -G Ninja || goto error
|
|
cmake --build build --parallel || goto error
|
|
ninja -C build install || goto error
|
|
cd .. || goto error
|
|
|
|
echo "Installing libopus"
|
|
rmdir /S /Q "opus-%LIBOPUS%"
|
|
tar -xf "opus-%LIBOPUS%.tar.gz" || goto error
|
|
cd "opus-%LIBOPUS%" || goto error
|
|
cmake -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=OFF -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -B build -G Ninja || goto error
|
|
cmake --build build --parallel || goto error
|
|
ninja -C build install || goto error
|
|
cd .. || goto error
|
|
|
|
echo "Installing libsvtav1"
|
|
rmdir /S /Q "SVT-AV1-v%LIBSVTAV1%"
|
|
tar -xf "SVT-AV1-v%LIBSVTAV1%.zip" || goto error
|
|
cd "SVT-AV1-v%LIBSVTAV1%" || goto error
|
|
if !FOUND_NASM!==0 (
|
|
set LIBSTVAV1_NASM=-DCOMPILE_C_ONLY=ON
|
|
)
|
|
cmake -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF -DBUILD_APPS=OFF -DSVT_AV1_LTO=ON !LIBSTVAV1_NASM! -B build -G Ninja || goto error
|
|
cmake --build build --parallel || goto error
|
|
ninja -C build install || goto error
|
|
cd .. || goto error
|
|
|
|
echo "Extracting meson"
|
|
rmdir /S /Q "meson-%MESON%"
|
|
tar xf "meson-%MESON%.tar.gz" || goto error
|
|
set MASON_PY=python "%BUILDDIR%\meson-%MESON%\meson.py"
|
|
!MASON_PY! -v || goto error
|
|
echo.
|
|
|
|
rem Alternatively we could grab pkg-config-lite from chocolatey or WinGet.
|
|
echo "Installing pkgconf"
|
|
rmdir /S /Q "pkgconf-pkgconf-%PKGCONF%"
|
|
%SEVENZIP% x "pkgconf-pkgconf-%PKGCONF%.zip" || goto error
|
|
cd "pkgconf-pkgconf-%PKGCONF%" || goto error
|
|
!MASON_PY! setup --buildtype=release --prefix="%INSTALLDIR%" -Dtests=disabled build --backend=ninja || goto error
|
|
!MASON_PY! compile -C build || goto error
|
|
ninja -C build install || goto error
|
|
set PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1
|
|
set PKG_CONFIG_ALLOW_SYSTEM_LIBS=1
|
|
Set "PKG_CONFIG_PATH=%INSTALLDIR%\lib\pkgconfig"
|
|
cd .. || goto error
|
|
|
|
set "OLD_PATH=%PATH%"
|
|
set "PATH=%PATH%;%UNIX_TOOLS%"
|
|
|
|
echo "Installing nvenc headers..."
|
|
rmdir /S /Q "nv-codec-headers-%NVENC%"
|
|
tar xf "nv-codec-headers-%NVENC%.tar.gz" || goto error
|
|
make -C "nv-codec-headers-%NVENC%" PREFIX="%INSTALLDIR%" install || goto error
|
|
echo.
|
|
|
|
set CC=cl
|
|
set CXX=cl
|
|
|
|
echo "Installing libx264"
|
|
rmdir /S /Q "x264-%LIBX264%"
|
|
%SEVENZIP% x "x264-%LIBX264%.zip" || goto error
|
|
cd "x264-%LIBX264%" || goto error
|
|
if !FOUND_NASM!==0 (
|
|
set LIBX264_NASM=--disable-asm
|
|
)
|
|
%BASH% configure --prefix="%INSTALLDIR%" --disable-cli --enable-static --extra-cflags="-MD -w -Os -GL" !LIBX264_NASM! || goto error
|
|
make -j%NUMBER_OF_PROCESSORS% || goto error
|
|
make install || goto error
|
|
cd .. || goto error
|
|
echo.
|
|
|
|
echo "Installing FFmpeg..."
|
|
rmdir /S /Q "ffmpeg-%FFMPEG%"
|
|
tar xf "ffmpeg-%FFMPEG%.tar.xz" || goto error
|
|
cd "ffmpeg-%FFMPEG%"
|
|
%PATCH% -p1 < "%SCRIPTDIR%\ffmpeg-configure-escape.patch" || goto error
|
|
if not !FOUND_NASM!==1 (
|
|
rem MSVC LTO gives linker errors when building without nasm.
|
|
rem The following patches fixes that issue.
|
|
%PATCH% -p1 < "%SCRIPTDIR%\ffmpeg-no-nasm-fix-avc-air.patch" || goto error
|
|
%PATCH% -p1 < "%SCRIPTDIR%\ffmpeg-no-nasm-fix-swc-air.patch" || goto error
|
|
set FFMPEG_NASM=--disable-x86asm
|
|
)
|
|
rem FFmpeg's build seems to choke when extra-cflags contain `\`, so use `/` as the path separator.
|
|
set VULKAN_INCLUDE=%INSTALLDIR:\=/%/../3rdparty/vulkan/include
|
|
rem libvpl needs to have advapi32.lib & ole32.lib added as extra libs.
|
|
rem For some reason QSV requires the hevc parser on windows.
|
|
rem --enable-small removes the display names of codecs, so instead we specify optflag for minsize
|
|
%BASH% configure --prefix="%INSTALLDIR%" --disable-all --disable-autodetect --disable-static --enable-shared --disable-debug ^
|
|
--toolchain=msvc --extra-ldflags="-LTCG" --extra-libs="advapi32.lib ole32.lib" !FFMPEG_NASM! --pkg-config="%INSTALLDIR%\bin\pkgconf.exe" ^
|
|
--extra-cflags="-MD -GL -I!VULKAN_INCLUDE!" --extra-cxxflags="-MD -GL -I!VULKAN_INCLUDE!" --optflags="-O1" ^
|
|
--enable-avcodec --enable-avformat --enable-avutil --enable-swresample --enable-swscale ^
|
|
--enable-gpl --enable-libx264 --enable-libsvtav1 --enable-libopus --enable-vulkan --enable-ffnvcodec --enable-nvenc --enable-libvpl --enable-amf ^
|
|
--enable-d3d11va --enable-mediafoundation ^
|
|
--enable-encoder=ffv1,qtrle,libx264*,libsvtav1,aac,flac,libopus,pcm_s16be,pcm_s16le ^
|
|
--enable-encoder=h264_qsv,hevc_qsv,av1_qsv ^
|
|
--enable-encoder=h264_nvenc,hevc_nvenc,av1_nvenc ^
|
|
--enable-encoder=h264_amf,hevc_amf,av1_amf ^
|
|
--enable-encoder=h264_vulkan,hevc_vulkan,av1_vulkan ^
|
|
--enable-encoder=h264_mf,hevc_mf,av1_mf ^
|
|
--enable-parser=hevc ^
|
|
--enable-muxer=avi,matroska,mov,mp3,mp4,wav ^
|
|
--enable-protocol=file || goto error
|
|
make -j%NUMBER_OF_PROCESSORS% || goto error
|
|
make install || goto error
|
|
cd ..
|
|
echo.
|
|
|
|
set "PATH=!OLD_PATH!"
|
|
)
|
|
|
|
echo Building Zlib...
|
|
rmdir /S /Q "zlib-%ZLIB%"
|
|
%SEVENZIP% x "zlib%ZLIBSHORT%.zip" || goto error
|
|
cd "zlib-%ZLIB%" || goto error
|
|
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
|
|
cmake --build build --parallel || goto error
|
|
ninja -C build install || goto error
|
|
cd .. || goto error
|
|
|
|
echo Building libpng...
|
|
rmdir /S /Q "lpng%LIBPNG%"
|
|
%SEVENZIP% x "lpng%LIBPNG%.zip" || goto error
|
|
rem apng not in released libpng yet
|
|
%SEVENZIP% x "lpng%LIBPNG%-apng.patch.gz" -aoa || goto error
|
|
cd "lpng%LIBPNG%" || goto error
|
|
%PATCH% -p1 < "../libpng-%LIBPNGLONG%-apng.patch" || goto error
|
|
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
|
|
cmake --build build --parallel || goto error
|
|
ninja -C build install || goto error
|
|
cd .. || goto error
|
|
|
|
echo Building libjpegturbo...
|
|
rmdir /S /Q "libjpeg-turbo-%LIBJPEGTURBO%"
|
|
tar -xf "libjpeg-turbo-%LIBJPEGTURBO%.tar.gz" || goto error
|
|
cd "libjpeg-turbo-%LIBJPEGTURBO%" || goto error
|
|
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=OFF -B build -G Ninja || goto error
|
|
cmake --build build --parallel || goto error
|
|
ninja -C build install || goto error
|
|
cd .. || goto error
|
|
|
|
echo Building LZ4...
|
|
rmdir /S /Q "lz4"
|
|
%SEVENZIP% x "lz4-%LZ4%.zip" || goto error
|
|
rename "lz4-%LZ4%" "lz4" || goto error
|
|
cd "lz4" || goto error
|
|
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DLZ4_BUILD_CLI=OFF -DLZ4_BUILD_LEGACY_LZ4C=OFF -DCMAKE_C_FLAGS="/wd4711 /wd5045" -B build-dir -G Ninja build/cmake || goto error
|
|
cmake --build build-dir --parallel || goto error
|
|
ninja -C build-dir install || goto error
|
|
cd ..
|
|
|
|
echo Building FreeType without HarfBuzz...
|
|
rmdir /S /Q "freetype-%FREETYPE%"
|
|
tar -xf "freetype-%FREETYPE%.tar.gz" || goto error
|
|
cd "freetype-%FREETYPE%" || goto error
|
|
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
|
|
cmake --build build --parallel || goto error
|
|
ninja -C build install || goto error
|
|
cd .. || goto error
|
|
|
|
echo Building HarfBuzz...
|
|
rmdir /S /Q "harfbuzz-%HARFBUZZ%"
|
|
%SEVENZIP% x "-x^!harfbuzz-%HARFBUZZ%\README" "harfbuzz-%HARFBUZZ%.zip" || goto error
|
|
cd "harfbuzz-%HARFBUZZ%" || goto error
|
|
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DHB_BUILD_UTILS=OFF -DHB_BUILD_GPU=OFF -B build -G Ninja || goto error
|
|
cmake --build build --parallel || goto error
|
|
ninja -C build install || goto error
|
|
cd .. || goto error
|
|
|
|
echo Building FreeType with HarfBuzz...
|
|
rmdir /S /Q "freetype-%FREETYPE%"
|
|
tar -xf "freetype-%FREETYPE%.tar.gz" || goto error
|
|
cd "freetype-%FREETYPE%" || goto error
|
|
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
|
|
cmake --build build --parallel || goto error
|
|
ninja -C build install || goto error
|
|
cd .. || goto error
|
|
|
|
echo Building Zstandard...
|
|
rmdir /S /Q "zstd-%ZSTD%"
|
|
%SEVENZIP% x "-x^!zstd-%ZSTD%\tests\cli-tests\bin" "zstd-%ZSTD%.zip" || goto error
|
|
cd "zstd-%ZSTD%"
|
|
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
|
|
cmake --build build --parallel || goto error
|
|
ninja -C build install || goto error
|
|
cd .. || goto error
|
|
|
|
echo Building WebP...
|
|
rmdir /S /Q "libwebp-%WEBP%"
|
|
tar -xf "libwebp-%WEBP%.tar.gz" || goto error
|
|
cd "libwebp-%WEBP%" || goto error
|
|
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
|
|
cmake --build build --parallel || goto error
|
|
ninja -C build install || goto error
|
|
cd .. || goto error
|
|
|
|
echo Building SDL...
|
|
rmdir /S /Q "%SDL%"
|
|
%SEVENZIP% x "%SDL%.zip" || goto error
|
|
cd "%SDL%" || goto error
|
|
cmake -B build -DCMAKE_BUILD_TYPE=Release %FORCEPDB% -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DSDL_SHARED=ON -DSDL_STATIC=OFF -DSDL_VIDEO=OFF -DSDL_POWER=OFF -DSDL_SENSOR=OFF -DSDL_DIALOG=OFF -DSDL_TRAY=OFF -DSDL_TEST_LIBRARY=OFF -G Ninja || goto error
|
|
cmake --build build --parallel || goto error
|
|
ninja -C build install || goto error
|
|
copy build\SDL3.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=MinSizeRel -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 -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 -DQT_FEATURE_windows_ioring=OFF %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% -DCMAKE_PREFIX_PATH="%INSTALLDIR%" || 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% -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DFEATURE_system_webp=ON || goto error
|
|
cmake --build . --parallel || goto error
|
|
ninja install || goto error
|
|
cd ..\.. || goto error
|
|
|
|
echo Building Qt Tools...
|
|
rmdir /S /Q "qttools-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=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
|
|
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
|
|
|
|
if %DEBUG%==1 (
|
|
set QTAPNGBUILDSPEC=-DCMAKE_CONFIGURATION_TYPES="Release;Debug" -DCMAKE_CROSS_CONFIGS=all -DCMAKE_DEFAULT_BUILD_TYPE=Release -DCMAKE_DEFAULT_CONFIGS=all -G "Ninja Multi-Config"
|
|
) else (
|
|
set QTAPNGBUILDSPEC=-DCMAKE_BUILD_TYPE=Release -G Ninja
|
|
)
|
|
|
|
echo Building Qt APNG...
|
|
rmdir /S /Q "QtApng-%QTAPNG%"
|
|
%SEVENZIP% x "QtApng-%QTAPNG%.zip" || goto error
|
|
cd "QtApng-%QTAPNG%" || goto error
|
|
%PATCH% -p1 < "%SCRIPTDIR%\..\common\qtapng-cmake.patch" || goto error
|
|
cmake -B build -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" %FORCEPDB% %QTAPNGBUILDSPEC% || goto error
|
|
cmake --build build --parallel || goto error
|
|
ninja -C build install || goto error
|
|
cd .. || goto error
|
|
|
|
if %DEBUG%==1 (
|
|
set KDDOCKWIDGETSBUILDSPEC=-DCMAKE_CONFIGURATION_TYPES="Release;Debug" -DCMAKE_CROSS_CONFIGS=all -DCMAKE_DEFAULT_BUILD_TYPE=Release -DCMAKE_DEFAULT_CONFIGS=all -G "Ninja Multi-Config"
|
|
) else (
|
|
rem kddockwidgets slightly changes the name of the dll depending on if CMAKE_BUILD_TYPE or CMAKE_CONFIGURATION_TYPES is used
|
|
rem The dll name being kddockwidgets-qt62.dll or kddockwidgets-qt6.dll respectively
|
|
rem Always use CMAKE_CONFIGURATION_TYPES to give consistent naming
|
|
set KDDOCKWIDGETSBUILDSPEC=-DCMAKE_CONFIGURATION_TYPES=Release -DCMAKE_CROSS_CONFIGS=all -DCMAKE_DEFAULT_BUILD_TYPE=Release -DCMAKE_DEFAULT_CONFIGS=Release -G "Ninja Multi-Config"
|
|
)
|
|
|
|
echo "Building KDDockWidgets..."
|
|
rmdir /S /Q "KDDockWidgets-%KDDOCKWIDGETS%"
|
|
%SEVENZIP% x "KDDockWidgets-%KDDOCKWIDGETS%.zip" || goto error
|
|
cd "KDDockWidgets-%KDDOCKWIDGETS%" || goto error
|
|
cmake -B build -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DKDDockWidgets_QT6=true -DKDDockWidgets_EXAMPLES=false -DKDDockWidgets_FRONTENDS=qtwidgets %KDDOCKWIDGETSBUILDSPEC% || goto error
|
|
cmake --build build --parallel || goto error
|
|
ninja -C build install || goto error
|
|
cd .. || goto error
|
|
|
|
echo "Building PlutoVG..."
|
|
rmdir /S /Q "plutovg-%PLUTOVG%"
|
|
%SEVENZIP% x "plutovg-%PLUTOVG%.zip" || goto error
|
|
cd "plutovg-%PLUTOVG%" || goto error
|
|
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DPLUTOVG_BUILD_EXAMPLES=OFF -B build -G Ninja || goto error
|
|
cmake --build build --parallel || goto error
|
|
ninja -C build install || goto error
|
|
cd .. || goto error
|
|
|
|
echo "Building PlutoSVG..."
|
|
rmdir /S /Q "plutosvg-%PLUTOSVG%"
|
|
%SEVENZIP% x "plutosvg-%PLUTOSVG%.zip" || goto error
|
|
cd "plutosvg-%PLUTOSVG%" || goto error
|
|
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DPLUTOSVG_ENABLE_FREETYPE=ON -DPLUTOSVG_BUILD_EXAMPLES=OFF -B build -G Ninja || goto error
|
|
cmake --build build --parallel || goto error
|
|
ninja -C build install || goto error
|
|
cd .. || goto error
|
|
|
|
echo "Building RapidYAML..."
|
|
rmdir /S /Q "rapidyaml-%RAPIDYAML%-src"
|
|
%SEVENZIP% x "rapidyaml-%RAPIDYAML%-src.zip" || goto error
|
|
cd "rapidyaml-%RAPIDYAML%-src" || goto error
|
|
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -B build -G Ninja || goto error
|
|
cmake --build build --parallel || goto error
|
|
ninja -C build install || goto error
|
|
cd .. || goto error
|
|
|
|
echo Unpacking Agility SDK
|
|
rmdir /S /Q "agility-sdk-%AGILITYSDK%"
|
|
%SEVENZIP% x -o"agility-sdk-%AGILITYSDK%" "agility-sdk-%AGILITYSDK%.nupkg" || goto error
|
|
cd "agility-sdk-%AGILITYSDK%" || goto error
|
|
if not exist "%INSTALLDIR%\bin\D3D12" (
|
|
mkdir "%INSTALLDIR%\bin\D3D12" || goto error
|
|
)
|
|
rem the pdbs aren't in the list of distributable files, so only copy the dlls.
|
|
copy "build\native\bin\x64\D3D12Core.dll" "%INSTALLDIR%\bin\D3D12\D3D12Core.dll" || goto error
|
|
if %DEBUG%==1 (
|
|
copy "build\native\bin\x64\d3d12SDKLayers.dll" "%INSTALLDIR%\bin\D3D12\d3d12SDKLayers.dll" || goto error
|
|
)
|
|
cd .. || goto error
|
|
|
|
rem DirectX Headers include a CMakeList file, which is absent in the Nuget package
|
|
echo Unpacking DirectX Headers
|
|
rmdir /S /Q "DirectX-Headers-%DXHEADERS%"
|
|
%SEVENZIP% x "DirectX-Headers-%DXHEADERS%.zip" || goto error
|
|
cd "DirectX-Headers-%DXHEADERS%" || goto error
|
|
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DDXHEADERS_BUILD_TEST=OFF -DDXHEADERS_BUILD_GOOGLE_TEST=OFF -B build -G Ninja || goto error
|
|
cmake --build build --parallel || goto error
|
|
ninja -C build install || goto error
|
|
cd .. || goto error
|
|
|
|
echo Building shaderc...
|
|
rmdir /S /Q "shaderc-%SHADERC%"
|
|
%SEVENZIP% x "shaderc-%SHADERC%.zip" || goto error
|
|
cd "shaderc-%SHADERC%" || goto error
|
|
cd third_party || goto error
|
|
%SEVENZIP% x "..\..\shaderc-glslang-%SHADERC_GLSLANG%.zip" || goto error
|
|
rename "glslang-%SHADERC_GLSLANG%" "glslang" || goto error
|
|
%SEVENZIP% x "..\..\shaderc-spirv-headers-%SHADERC_SPIRVHEADERS%.zip" || goto error
|
|
rename "SPIRV-Headers-%SHADERC_SPIRVHEADERS%" "spirv-headers" || goto error
|
|
%SEVENZIP% x "..\..\shaderc-spirv-tools-%SHADERC_SPIRVTOOLS%.zip" || goto error
|
|
rename "SPIRV-Tools-%SHADERC_SPIRVTOOLS%" "spirv-tools" || goto error
|
|
cd .. || goto error
|
|
%PATCH% -p1 < "%SCRIPTDIR%\..\common\shaderc-changes.patch" || goto error
|
|
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
|
|
cmake --build build --parallel || goto error
|
|
ninja -C build 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
|
|
)
|