@ECHO OFF REM ================================================================ REM This script installs the "vcpkg" source package manager and uses REM it to build the third-party libraries that git requires when it REM is built using MSVC. REM REM [1] Install VCPKG. REM [a] Create <root>/compat/vcbuild/vcpkg/ REM [b] Download "vcpkg". REM [c] Compile using the currently installed version of VS. REM [d] Create <root>/compat/vcbuild/vcpkg/vcpkg.exe REM REM [2] Install third-party libraries. REM [a] Download each (which may also install CMAKE). REM [b] Compile in RELEASE mode and install in: REM vcpkg/installed/<arch>/{bin,lib} REM [c] Compile in DEBUG mode and install in: REM vcpkg/installed/<arch>/debug/{bin,lib} REM [d] Install headers in: REM vcpkg/installed/<arch>/include REM REM [3] Create a set of MAKE definitions for the top-level REM Makefile to allow "make MSVC=1" to find the above REM third-party libraries. REM [a] Write vcpkg/VCPGK-DEFS REM REM https://blogs.msdn.microsoft.com/vcblog/2016/09/19/vcpkg-a-tool-to-acquire-and-build-c-open-source-libraries-on-windows/ REM https://github.com/Microsoft/vcpkg REM https://vcpkg.readthedocs.io/en/latest/ REM ================================================================ SETLOCAL EnableDelayedExpansion @FOR /F "delims=" %%D IN ("%~dp0") DO @SET cwd=%%~fD cd %cwd% dir vcpkg\vcpkg.exe >nul 2>nul && GOTO :install_libraries echo Fetching vcpkg in %cwd%vcpkg git.exe clone https://github.com/Microsoft/vcpkg vcpkg IF ERRORLEVEL 1 ( EXIT /B 1 ) cd vcpkg echo Building vcpkg powershell -exec bypass scripts\bootstrap.ps1 IF ERRORLEVEL 1 ( EXIT /B 1 ) echo Successfully installed %cwd%vcpkg\vcpkg.exe :install_libraries SET arch=x64-windows echo Installing third-party libraries... FOR %%i IN (zlib expat libiconv openssl libssh2 curl) DO ( cd %cwd%vcpkg IF NOT EXIST "packages\%%i_%arch%" CALL :sub__install_one %%i IF ERRORLEVEL 1 ( EXIT /B 1 ) ) :install_defines cd %cwd% SET inst=%cwd%vcpkg\installed\%arch% echo vcpkg_inc=-I"%inst%\include">VCPKG-DEFS echo vcpkg_rel_lib=-L"%inst%\lib">>VCPKG-DEFS echo vcpkg_rel_bin="%inst%\bin">>VCPKG-DEFS echo vcpkg_dbg_lib=-L"%inst%\debug\lib">>VCPKG-DEFS echo vcpkg_dbg_bin="%inst%\debug\bin">>VCPKG-DEFS EXIT /B 0 :sub__install_one echo Installing package %1... .\vcpkg.exe install %1:%arch% IF ERRORLEVEL 1 ( EXIT /B 1 ) echo Finished %1 goto :EOF