1
0
Fork 0
mirror of https://github.com/ton-blockchain/ton synced 2025-03-09 15:40:10 +00:00

improve windows builds

This commit is contained in:
neodiX 2024-12-03 17:41:55 +04:00
parent 4aa6412f9c
commit e2ed70f41a
2 changed files with 176 additions and 188 deletions

View file

@ -26,17 +26,18 @@ IF %errorlevel% NEQ 0 (
exit /b %errorlevel% exit /b %errorlevel%
) )
mkdir third_libs
cd third_libs
set third_libs=%cd%
echo %third_libs%
if not exist "zlib" ( if not exist "zlib" (
git clone https://github.com/madler/zlib.git git clone https://github.com/madler/zlib.git
cd zlib cd zlib
git checkout v1.3.1 git checkout v1.3.1
cd contrib\vstudio\vc14 cd contrib\vstudio\vc14
msbuild zlibstat.vcxproj /p:Configuration=ReleaseWithoutAsm /p:platform=x64 -p:PlatformToolset=v142 msbuild zlibstat.vcxproj /p:Configuration=ReleaseWithoutAsm /p:platform=x64 -p:PlatformToolset=v142
IF %errorlevel% NEQ 0 (
echo Can't install zlib
exit /b %errorlevel%
)
cd ..\..\..\.. cd ..\..\..\..
) else ( ) else (
echo Using zlib... echo Using zlib...
@ -48,84 +49,73 @@ cd lz4
git checkout v1.9.4 git checkout v1.9.4
cd build\VS2017\liblz4 cd build\VS2017\liblz4
msbuild liblz4.vcxproj /p:Configuration=Release /p:platform=x64 -p:PlatformToolset=v142 msbuild liblz4.vcxproj /p:Configuration=Release /p:platform=x64 -p:PlatformToolset=v142
IF %errorlevel% NEQ 0 (
echo Can't install lz4
exit /b %errorlevel%
)
cd ..\..\..\.. cd ..\..\..\..
) else ( ) else (
echo Using lz4... echo Using lz4...
) )
curl --retry 5 --retry-delay 10 -Lo libsodium-1.0.18-stable-msvc.zip https://download.libsodium.org/libsodium/releases/libsodium-1.0.18-stable-msvc.zip if not exist "libsodium" (
IF %errorlevel% NEQ 0 ( git clone https://github.com/jedisct1/libsodium
echo Can't download libsodium cd libsodium
exit /b %errorlevel% git checkout 1.0.18-RELEASE
) msbuild libsodium.vcxproj /p:Configuration=Release /p:platform=x64 -p:PlatformToolset=v142
unzip libsodium-1.0.18-stable-msvc.zip cd ..
) else ( ) else (
echo Using libsodium... echo Using libsodium...
) )
if not exist "openssl-3.1.4" ( if not exist "openssl" (
curl -Lo openssl-3.1.4.zip https://github.com/neodiX42/precompiled-openssl-win64/raw/main/openssl-3.1.4.zip git clone https://github.com/openssl/openssl.git
IF %errorlevel% NEQ 0 ( cd openssl
echo Can't download OpenSSL git checkout openssl-3.1.4
exit /b %errorlevel% where perl
) perl Configure VC-WIN64A
unzip -q openssl-3.1.4.zip nmake
cd ..
) else ( ) else (
echo Using openssl... echo Using openssl...
) )
if not exist "libmicrohttpd-0.9.77-w32-bin" ( if not exist "libmicrohttpd" (
curl -Lo libmicrohttpd-0.9.77-w32-bin.zip https://github.com/neodiX42/precompiled-openssl-win64/raw/main/libmicrohttpd-0.9.77-w32-bin.zip git clone https://github.com/Karlson2k/libmicrohttpd.git
cd libmicrohttpd
git checkout v1.0.1
cd w32\VS2019
msbuild libmicrohttpd.vcxproj /p:Configuration=Release-static /p:platform=x64 -p:PlatformToolset=v142
IF %errorlevel% NEQ 0 ( IF %errorlevel% NEQ 0 (
echo Can't download libmicrohttpd echo Can't compile libmicrohttpd
exit /b %errorlevel% exit /b %errorlevel%
) )
unzip -q libmicrohttpd-0.9.77-w32-bin.zip cd ../../..
) else ( ) else (
echo Using libmicrohttpd... echo Using libmicrohttpd...
) )
if not exist "readline-5.0-1-lib" ( cd ..
curl -Lo readline-5.0-1-lib.zip https://github.com/neodiX42/precompiled-openssl-win64/raw/main/readline-5.0-1-lib.zip echo Current dir %cd%
IF %errorlevel% NEQ 0 (
echo Can't download readline
exit /b %errorlevel%
)
unzip -q -d readline-5.0-1-lib readline-5.0-1-lib.zip
) else (
echo Using readline...
)
set root=%cd%
echo %root%
set SODIUM_DIR=%root%\libsodium
mkdir build mkdir build
cd build cd build
cmake -GNinja -DCMAKE_BUILD_TYPE=Release ^ cmake -GNinja -DCMAKE_BUILD_TYPE=Release ^
-DPORTABLE=1 ^ -DPORTABLE=1 ^
-DSODIUM_USE_STATIC_LIBS=1 ^ -DSODIUM_USE_STATIC_LIBS=1 ^
-DSODIUM_LIBRARY_RELEASE=%third_libs%\libsodium\Build\Release\x64\libsodium.lib ^
-DSODIUM_LIBRARY_DEBUG=%third_libs%\libsodium\Build\Release\x64\libsodium.lib ^
-DSODIUM_INCLUDE_DIR=%third_libs%\libsodium\src\libsodium\include ^
-DLZ4_FOUND=1 ^ -DLZ4_FOUND=1 ^
-DLZ4_INCLUDE_DIRS=%root%\lz4\lib ^ -DLZ4_INCLUDE_DIRS=%third_libs%\lz4\lib ^
-DLZ4_LIBRARIES=%root%\lz4\build\VS2017\liblz4\bin\x64_Release\liblz4_static.lib ^ -DLZ4_LIBRARIES=%third_libs%\lz4\build\VS2017\liblz4\bin\x64_Release\liblz4_static.lib ^
-DMHD_FOUND=1 ^ -DMHD_FOUND=1 ^
-DMHD_LIBRARY=%root%\libmicrohttpd-0.9.77-w32-bin\x86_64\VS2019\Release-static\libmicrohttpd.lib ^ -DMHD_LIBRARY=%third_libs%\libmicrohttpd\w32\VS2019\Output\x64\libmicrohttpd.lib ^
-DMHD_INCLUDE_DIR=%root%\libmicrohttpd-0.9.77-w32-bin\x86_64\VS2019\Release-static ^ -DMHD_INCLUDE_DIR=%third_libs%\libmicrohttpd\src\include ^
-DZLIB_FOUND=1 ^ -DZLIB_FOUND=1 ^
-DZLIB_INCLUDE_DIR=%root%\zlib ^ -DZLIB_INCLUDE_DIR=%third_libs%\zlib ^
-DZLIB_LIBRARIES=%root%\zlib\contrib\vstudio\vc14\x64\ZlibStatReleaseWithoutAsm\zlibstat.lib ^ -DZLIB_LIBRARIES=%third_libs%\zlib\contrib\vstudio\vc14\x64\ZlibStatReleaseWithoutAsm\zlibstat.lib ^
-DOPENSSL_FOUND=1 ^ -DOPENSSL_FOUND=1 ^
-DOPENSSL_INCLUDE_DIR=%root%\openssl-3.1.4\x64\include ^ -DOPENSSL_INCLUDE_DIR=%third_libs%\openssl\include ^
-DOPENSSL_CRYPTO_LIBRARY=%root%\openssl-3.1.4\x64\lib\libcrypto_static.lib ^ -DOPENSSL_CRYPTO_LIBRARY=%third_libs%\openssl\libcrypto_static.lib ^
-DREADLINE_INCLUDE_DIR=%root%\readline-5.0-1-lib\include ^
-DREADLINE_LIBRARY=%root%\readline-5.0-1-lib\lib\readline.lib ^
-DCMAKE_CXX_FLAGS="/DTD_WINDOWS=1 /EHsc /bigobj" .. -DCMAKE_CXX_FLAGS="/DTD_WINDOWS=1 /EHsc /bigobj" ..
IF %errorlevel% NEQ 0 ( IF %errorlevel% NEQ 0 (
echo Can't configure TON echo Can't configure TON
exit /b %errorlevel% exit /b %errorlevel%
@ -168,9 +158,10 @@ REM ctest -C Release --output-on-failure -E "test-catchain|test-actors|test-val
) )
) )
echo Strip and copy artifacts
echo Creating artifacts...
cd .. cd ..
echo where strip
where strip
mkdir artifacts mkdir artifacts
mkdir artifacts\smartcont mkdir artifacts\smartcont
mkdir artifacts\lib mkdir artifacts\lib
@ -195,6 +186,10 @@ build\utils\generate-random-id.exe ^
build\utils\json2tlo.exe ^ build\utils\json2tlo.exe ^
build\utils\proxy-liteserver.exe ^ build\utils\proxy-liteserver.exe ^
build\adnl\adnl-proxy.exe ^ build\adnl\adnl-proxy.exe ^
build\emulator\emulator.dll) do (strip -s %%I & copy %%I artifacts\) build\emulator\emulator.dll) do (
echo strip -s %%I & copy %%I artifacts\
strip -s %%I & copy %%I artifacts\
)
xcopy /e /k /h /i crypto\smartcont artifacts\smartcont xcopy /e /k /h /i crypto\smartcont artifacts\smartcont
xcopy /e /k /h /i crypto\fift\lib artifacts\lib xcopy /e /k /h /i crypto\fift\lib artifacts\lib

View file

@ -26,7 +26,11 @@ IF %errorlevel% NEQ 0 (
exit /b %errorlevel% exit /b %errorlevel%
) )
rd /s /q ".\third-party\secp256k1\build" mkdir third_libs
cd third_libs
set third_libs=%cd%
echo %third_libs%
if not exist "zlib" ( if not exist "zlib" (
git clone https://github.com/madler/zlib.git git clone https://github.com/madler/zlib.git
@ -34,11 +38,6 @@ cd zlib
git checkout v1.3.1 git checkout v1.3.1
cd contrib\vstudio\vc14 cd contrib\vstudio\vc14
msbuild zlibstat.vcxproj /p:Configuration=ReleaseWithoutAsm /p:platform=x64 -p:PlatformToolset=v143 msbuild zlibstat.vcxproj /p:Configuration=ReleaseWithoutAsm /p:platform=x64 -p:PlatformToolset=v143
IF %errorlevel% NEQ 0 (
echo Can't install zlib
exit /b %errorlevel%
)
cd ..\..\..\.. cd ..\..\..\..
) else ( ) else (
echo Using zlib... echo Using zlib...
@ -48,87 +47,75 @@ if not exist "lz4" (
git clone https://github.com/lz4/lz4.git git clone https://github.com/lz4/lz4.git
cd lz4 cd lz4
git checkout v1.9.4 git checkout v1.9.4
cd build\VS2017\liblz4 cd build\VS2022\liblz4
msbuild liblz4.vcxproj /p:Configuration=Release /p:platform=x64 -p:PlatformToolset=v143 msbuild liblz4.vcxproj /p:Configuration=Release /p:platform=x64 -p:PlatformToolset=v143
dir /s
IF %errorlevel% NEQ 0 (
echo Can't install lz4
exit /b %errorlevel%
)
cd ..\..\..\.. cd ..\..\..\..
) else ( ) else (
echo Using lz4... echo Using lz4...
) )
if not exist "libsodium" ( if not exist "libsodium" (
curl -Lo libsodium-1.0.18-stable-msvc.zip https://download.libsodium.org/libsodium/releases/libsodium-1.0.18-stable-msvc.zip git clone https://github.com/jedisct1/libsodium
IF %errorlevel% NEQ 0 ( cd libsodium
echo Can't download libsodium git checkout 1.0.18-RELEASE
exit /b %errorlevel% msbuild libsodium.vcxproj /p:Configuration=Release /p:platform=x64 -p:PlatformToolset=v143
) cd ..
unzip libsodium-1.0.18-stable-msvc.zip
) else ( ) else (
echo Using libsodium... echo Using libsodium...
) )
if not exist "openssl-3.1.4" ( if not exist "openssl" (
curl -Lo openssl-3.1.4.zip https://github.com/neodiX42/precompiled-openssl-win64/raw/main/openssl-3.1.4.zip git clone https://github.com/openssl/openssl.git
IF %errorlevel% NEQ 0 ( cd openssl
echo Can't download OpenSSL git checkout openssl-3.1.4
exit /b %errorlevel% where perl
) perl Configure VC-WIN64A
unzip -q openssl-3.1.4.zip nmake
cd ..
) else ( ) else (
echo Using openssl... echo Using openssl...
) )
if not exist "libmicrohttpd-0.9.77-w32-bin" ( if not exist "libmicrohttpd" (
curl -Lo libmicrohttpd-0.9.77-w32-bin.zip https://github.com/neodiX42/precompiled-openssl-win64/raw/main/libmicrohttpd-0.9.77-w32-bin.zip git clone https://github.com/Karlson2k/libmicrohttpd.git
cd libmicrohttpd
git checkout v1.0.1
cd w32\VS2022
msbuild libmicrohttpd.vcxproj /p:Configuration=Release-static /p:platform=x64 -p:PlatformToolset=v143
IF %errorlevel% NEQ 0 ( IF %errorlevel% NEQ 0 (
echo Can't download libmicrohttpd echo Can't compile libmicrohttpd
exit /b %errorlevel% exit /b %errorlevel%
) )
unzip -q libmicrohttpd-0.9.77-w32-bin.zip cd ../../..
) else ( ) else (
echo Using libmicrohttpd... echo Using libmicrohttpd...
) )
if not exist "readline-5.0-1-lib" ( cd ..
curl -Lo readline-5.0-1-lib.zip https://github.com/neodiX42/precompiled-openssl-win64/raw/main/readline-5.0-1-lib.zip echo Current dir %cd%
IF %errorlevel% NEQ 0 (
echo Can't download readline
exit /b %errorlevel%
)
unzip -q -d readline-5.0-1-lib readline-5.0-1-lib.zip
) else (
echo Using readline...
)
set root=%cd%
echo %root%
set SODIUM_DIR=%root%\libsodium
mkdir build mkdir build
cd build cd build
cmake -GNinja -DCMAKE_BUILD_TYPE=Release ^ cmake -GNinja -DCMAKE_BUILD_TYPE=Release ^
-DPORTABLE=1 ^ -DPORTABLE=1 ^
-DSODIUM_USE_STATIC_LIBS=1 ^ -DSODIUM_USE_STATIC_LIBS=1 ^
-DSODIUM_LIBRARY_RELEASE=%third_libs%\libsodium\Build\Release\x64\libsodium.lib ^
-DSODIUM_LIBRARY_DEBUG=%third_libs%\libsodium\Build\Release\x64\libsodium.lib ^
-DSODIUM_INCLUDE_DIR=%third_libs%\libsodium\src\libsodium\include ^
-DLZ4_FOUND=1 ^ -DLZ4_FOUND=1 ^
-DLZ4_INCLUDE_DIRS=%root%\lz4\lib ^ -DLZ4_INCLUDE_DIRS=%third_libs%\lz4\lib ^
-DLZ4_LIBRARIES=%root%\lz4\build\VS2017\liblz4\bin\x64_Release\liblz4_static.lib ^ -DLZ4_LIBRARIES=%third_libs%\lz4\build\VS2022\liblz4\bin\x64_Release\liblz4_static.lib ^
-DMHD_FOUND=1 ^ -DMHD_FOUND=1 ^
-DMHD_LIBRARY=%root%\libmicrohttpd-0.9.77-w32-bin\x86_64\VS2019\Release-static\libmicrohttpd.lib ^ -DMHD_LIBRARY=%third_libs%\libmicrohttpd\w32\VS2022\Output\x64\libmicrohttpd.lib ^
-DMHD_INCLUDE_DIR=%root%\libmicrohttpd-0.9.77-w32-bin\x86_64\VS2019\Release-static ^ -DMHD_INCLUDE_DIR=%third_libs%\libmicrohttpd\src\include ^
-DZLIB_FOUND=1 ^ -DZLIB_FOUND=1 ^
-DZLIB_INCLUDE_DIR=%root%\zlib ^ -DZLIB_INCLUDE_DIR=%third_libs%\zlib ^
-DZLIB_LIBRARIES=%root%\zlib\contrib\vstudio\vc14\x64\ZlibStatReleaseWithoutAsm\zlibstat.lib ^ -DZLIB_LIBRARIES=%third_libs%\zlib\contrib\vstudio\vc14\x64\ZlibStatReleaseWithoutAsm\zlibstat.lib ^
-DOPENSSL_FOUND=1 ^ -DOPENSSL_FOUND=1 ^
-DOPENSSL_INCLUDE_DIR=%root%\openssl-3.1.4\x64\include ^ -DOPENSSL_INCLUDE_DIR=%third_libs%\openssl\include ^
-DOPENSSL_CRYPTO_LIBRARY=%root%\openssl-3.1.4\x64\lib\libcrypto_static.lib ^ -DOPENSSL_CRYPTO_LIBRARY=%third_libs%\openssl\libcrypto_static.lib ^
-DREADLINE_INCLUDE_DIR=%root%\readline-5.0-1-lib\include ^
-DREADLINE_LIBRARY=%root%\readline-5.0-1-lib\lib\readline.lib ^
-DCMAKE_CXX_FLAGS="/DTD_WINDOWS=1 /EHsc /bigobj" .. -DCMAKE_CXX_FLAGS="/DTD_WINDOWS=1 /EHsc /bigobj" ..
IF %errorlevel% NEQ 0 ( IF %errorlevel% NEQ 0 (
echo Can't configure TON echo Can't configure TON
exit /b %errorlevel% exit /b %errorlevel%
@ -171,9 +158,10 @@ REM ctest -C Release --output-on-failure -E "test-catchain|test-actors|test-val
) )
) )
echo Strip and copy artifacts
echo Creating artifacts...
cd .. cd ..
echo where strip
where strip
mkdir artifacts mkdir artifacts
mkdir artifacts\smartcont mkdir artifacts\smartcont
mkdir artifacts\lib mkdir artifacts\lib
@ -196,7 +184,12 @@ build\lite-client\lite-client.exe ^
build\validator-engine\validator-engine.exe ^ build\validator-engine\validator-engine.exe ^
build\utils\generate-random-id.exe ^ build\utils\generate-random-id.exe ^
build\utils\json2tlo.exe ^ build\utils\json2tlo.exe ^
build\utils\proxy-liteserver.exe ^
build\adnl\adnl-proxy.exe ^ build\adnl\adnl-proxy.exe ^
build\emulator\emulator.dll) do (strip -s %%I & copy %%I artifacts\) build\emulator\emulator.dll) do (
echo strip -s %%I & copy %%I artifacts\
strip -s %%I & copy %%I artifacts\
)
xcopy /e /k /h /i crypto\smartcont artifacts\smartcont xcopy /e /k /h /i crypto\smartcont artifacts\smartcont
xcopy /e /k /h /i crypto\fift\lib artifacts\lib xcopy /e /k /h /i crypto\fift\lib artifacts\lib