ES-DE/tools/Windows_dependencies_setup_MSVC.bat
Leon Styhre a58eaa83b5 (Windows) Added the Poppler library to the dependency setup scripts
Also changed all dependencies to not include version numbers in their directory names and updated curl to 8.1.2, FreeType to 2.13.0, libgit2 to 1.6.4 and pugixml to 1.13
2023-06-24 13:27:42 +02:00

309 lines
7 KiB
Batchfile

:: SPDX-License-Identifier: MIT
::
:: EmulationStation Desktop Edition
:: Windows_dependencies_setup_MSVC.bat
::
:: Downloads and prepares the external dependencies for building in-tree using MSVC.
:: If the directories already exist they will be removed and the libraries will be downloaded again.
::
:: This script needs to run from the root of the repository and 7z.exe and curl.exe need to be
:: reachable via the Path environment variable.
::
@echo off
if not exist .clang-format (
echo You need to run this script from the root of the repository.
goto end
)
where /Q 7z.exe
if %ERRORLEVEL% neq 0 (
echo Can't find 7z.exe and it's required by this script, aborting.
goto end
)
where /Q curl.exe
if %ERRORLEVEL% neq 0 (
echo Can't find curl.exe and it's required by this script, aborting.
goto end
)
echo Setting up dependencies in the .\external directory...
echo:
cd external
echo Setting up curl
if exist curl-8.1.2_3-win64-mingw\ (
rmdir /S /Q curl-8.1.2_3-win64-mingw
)
if exist curl\ (
rmdir /S /Q curl
)
curl -O https://curl.se/windows/dl-8.1.2_3/curl-8.1.2_3-win64-mingw.zip
7z x curl-8.1.2_3-win64-mingw.zip
if not exist curl-8.1.2_3-win64-mingw\bin\ (
echo curl directory is missing, aborting.
cd ..
goto end
)
rename curl-8.1.2_3-win64-mingw curl
cd curl\bin
dumpbin /exports libcurl-x64.dll > exports.txt
echo LIBRARY libcurl-x64 > libcurl-x64.def
echo EXPORTS >> libcurl-x64.def
for /f "skip=19 tokens=4" %%A in (exports.txt) do echo %%A >> libcurl-x64.def
lib /def:libcurl-x64.def /out:libcurl-x64.lib /machine:x64
copy /Y libcurl-x64.dll ..\..\..
copy /Y libcurl-x64.lib ..\..\..
cd ..\..
echo:
echo Setting up GLEW
if exist glew-2.1.0\ (
rmdir /S /Q glew-2.1.0
)
if exist glew\ (
rmdir /S /Q glew
)
curl -LO https://downloads.sourceforge.net/project/glew/glew/2.1.0/glew-2.1.0-win32.zip
7z x glew-2.1.0-win32.zip
if not exist glew-2.1.0\ (
echo GLEW directory is missing, aborting.
cd ..
goto end
)
rename glew-2.1.0 glew
copy /Y glew\bin\Release\x64\glew32.dll ..
copy /Y glew\lib\Release\x64\glew32.lib ..
echo:
echo Setting up FreeType
if exist freetype\ (
rmdir /S /Q freetype
)
git clone https://github.com/freetype/freetype.git
if not exist freetype\ (
echo FreeType directory is missing, aborting.
cd ..
goto end
)
cd freetype
git checkout VER-2-13-0
mkdir build
cd ..
echo:
echo Setting up FreeImage
if exist FreeImage\ (
rmdir /S /Q FreeImage
)
curl -LO https://downloads.sourceforge.net/project/freeimage/Binary%%20Distribution/3.18.0/FreeImage3180Win32Win64.zip
7z x FreeImage3180Win32Win64.zip
if not exist FreeImage\ (
echo FreeImage directory is missing, aborting.
cd ..
goto end
)
copy /Y FreeImage\Dist\x64\FreeImage.dll ..
copy /Y FreeImage\Dist\x64\FreeImage.lib ..
echo:
echo Setting up libgit2
if exist libgit2\ (
rmdir /S /Q libgit2
)
git clone https://github.com/libgit2/libgit2.git
if not exist libgit2\ (
echo libgit2 directory is missing, aborting.
cd ..
goto end
)
cd libgit2
git checkout v1.6.4
mkdir build
cd ..
echo:
echo Setting up Poppler
if exist poppler-23.05.0\ (
rmdir /S /Q poppler-23.05.0
)
if exist poppler\ (
rmdir /S /Q poppler
)
curl -LO https://github.com/oschwartz10612/poppler-windows/releases/download/v23.05.0-0/Release-23.05.0-0.zip
7z x Release-23.05.0-0.zip
if not exist poppler-23.05.0\Library\ (
echo Poppler directory is missing, aborting.
cd ..
goto end
)
rename poppler-23.05.0 poppler
copy /Y poppler\Library\lib\poppler-cpp.lib ..\es-pdf-converter
copy /Y poppler\Library\bin\charset.dll ..\es-pdf-converter
copy /Y poppler\Library\bin\deflate.dll ..\es-pdf-converter
copy /Y poppler\Library\bin\freetype.dll ..\es-pdf-converter
copy /Y poppler\Library\bin\iconv.dll ..\es-pdf-converter
copy /Y poppler\Library\bin\jpeg8.dll ..\es-pdf-converter
copy /Y poppler\Library\bin\lcms2.dll ..\es-pdf-converter
copy /Y poppler\Library\bin\Lerc.dll ..\es-pdf-converter
copy /Y poppler\Library\bin\libcrypto-3-x64.dll ..\es-pdf-converter
copy /Y poppler\Library\bin\libcurl.dll ..\es-pdf-converter
copy /Y poppler\Library\bin\liblzma.dll ..\es-pdf-converter
copy /Y poppler\Library\bin\libssh2.dll ..\es-pdf-converter
copy /Y poppler\Library\bin\openjp2.dll ..\es-pdf-converter
copy /Y poppler\Library\bin\poppler.dll ..\es-pdf-converter
copy /Y poppler\Library\bin\poppler-cpp.dll ..\es-pdf-converter
copy /Y poppler\Library\bin\tiff.dll ..\es-pdf-converter
copy /Y poppler\Library\bin\zlib.dll ..\es-pdf-converter
copy /Y poppler\Library\bin\zstd.dll ..\es-pdf-converter
echo:
echo Setting up pugixml
if exist pugixml\ (
rmdir /S /Q pugixml
)
git clone https://github.com/zeux/pugixml.git
if not exist pugixml\ (
echo pugixml directory is missing, aborting.
cd ..
goto end
)
cd pugixml
git checkout v1.13
cd ..
echo:
echo Setting up SDL
if exist SDL2-2.26.5\ (
rmdir /S /Q SDL2-2.26.5
)
if exist SDL2\ (
rmdir /S /Q SDL2
)
curl -LO https://libsdl.org/release/SDL2-devel-2.26.5-VC.zip
7z x SDL2-devel-2.26.5-VC.zip
if not exist SDL2-2.26.5\ (
echo SDL directory is missing, aborting.
cd ..
goto end
)
rename SDL2-2.26.5 SDL2
cd SDL2
rename include SDL2
cd ..
copy /Y SDL2\lib\x64\SDL2.dll ..
copy /Y SDL2\lib\x64\SDL2.lib ..
copy /Y SDL2\lib\x64\SDL2main.lib ..
echo:
echo Setting up FFmpeg
if exist ffmpeg-n5.1.2-1-g05d6157aab-win64-gpl-shared-5.1\ (
rmdir /S /Q ffmpeg-n5.1.2-1-g05d6157aab-win64-gpl-shared-5.1
)
if exist ffmpeg\ (
rmdir /S /Q ffmpeg
)
:: This package should be available for download for two years.
curl -LO https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2022-09-30-12-41/ffmpeg-n5.1.2-1-g05d6157aab-win64-gpl-shared-5.1.zip
7z x ffmpeg-n5.1.2-1-g05d6157aab-win64-gpl-shared-5.1.zip
if not exist ffmpeg-n5.1.2-1-g05d6157aab-win64-gpl-shared-5.1\ (
echo FFmpeg directory is missing, aborting.
cd ..
goto end
)
rename ffmpeg-n5.1.2-1-g05d6157aab-win64-gpl-shared-5.1 ffmpeg
copy /Y ffmpeg\bin\avcodec-59.dll ..
copy /Y ffmpeg\bin\avfilter-8.dll ..
copy /Y ffmpeg\bin\avformat-59.dll ..
copy /Y ffmpeg\bin\avutil-57.dll ..
copy /Y ffmpeg\bin\postproc-56.dll ..
copy /Y ffmpeg\bin\swresample-4.dll ..
copy /Y ffmpeg\bin\swscale-6.dll ..
copy /Y ffmpeg\lib\avcodec.lib ..
copy /Y ffmpeg\lib\avfilter.lib ..
copy /Y ffmpeg\lib\avformat.lib ..
copy /Y ffmpeg\lib\avutil.lib ..
copy /Y ffmpeg\lib\swresample.lib ..
copy /Y ffmpeg\lib\swscale.lib ..
echo:
echo Setting up OpenSSL
if not exist "C:\Program Files\OpenSSL-Win64\libcrypto-1_1-x64.dll" (
curl -O https://slproweb.com/download/Win64OpenSSL_Light-1_1_1m.exe
:: Run the installer.
.\Win64OpenSSL_Light-1_1_1m.exe
)
:: Return to the root of the repository.
cd ..
if exist "C:\Program Files\OpenSSL-Win64\libcrypto-1_1-x64.dll" (
copy /Y "C:\Program Files\OpenSSL-Win64\libcrypto-1_1-x64.dll"
copy /Y "C:\Program Files\OpenSSL-Win64\libssl-1_1-x64.dll"
)
echo:
echo Copying DLL files from Windows\System32
copy /Y C:\Windows\System32\MSVCP140.dll
copy /Y C:\Windows\System32\VCOMP140.DLL
copy /Y C:\Windows\System32\VCRUNTIME140.dll
copy /Y C:\Windows\System32\VCRUNTIME140_1.dll
echo:
echo Done setting up all dependencies.
:end