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,106 +26,96 @@ IF %errorlevel% NEQ 0 (
exit /b %errorlevel% exit /b %errorlevel%
) )
if not exist "zlib" ( mkdir third_libs
git clone https://github.com/madler/zlib.git cd third_libs
cd zlib
git checkout v1.3.1
cd contrib\vstudio\vc14
msbuild zlibstat.vcxproj /p:Configuration=ReleaseWithoutAsm /p:platform=x64 -p:PlatformToolset=v142
IF %errorlevel% NEQ 0 ( set third_libs=%cd%
echo Can't install zlib echo %third_libs%
exit /b %errorlevel%
) if not exist "zlib" (
cd ..\..\..\.. git clone https://github.com/madler/zlib.git
cd zlib
git checkout v1.3.1
cd contrib\vstudio\vc14
msbuild zlibstat.vcxproj /p:Configuration=ReleaseWithoutAsm /p:platform=x64 -p:PlatformToolset=v142
cd ..\..\..\..
) else ( ) else (
echo Using zlib... echo Using zlib...
) )
if not exist "lz4" ( 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\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
cd ..\..\..\..
IF %errorlevel% NEQ 0 (
echo Can't install lz4
exit /b %errorlevel%
)
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
IF %errorlevel% NEQ 0 ( cd libmicrohttpd
echo Can't download libmicrohttpd git checkout v1.0.1
exit /b %errorlevel% cd w32\VS2019
) msbuild libmicrohttpd.vcxproj /p:Configuration=Release-static /p:platform=x64 -p:PlatformToolset=v142
unzip -q libmicrohttpd-0.9.77-w32-bin.zip IF %errorlevel% NEQ 0 (
echo Can't compile libmicrohttpd
exit /b %errorlevel%
)
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,33 +158,38 @@ 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
for %%I in (build\storage\storage-daemon\storage-daemon.exe ^ for %%I in (build\storage\storage-daemon\storage-daemon.exe ^
build\storage\storage-daemon\storage-daemon-cli.exe ^ build\storage\storage-daemon\storage-daemon-cli.exe ^
build\blockchain-explorer\blockchain-explorer.exe ^ build\blockchain-explorer\blockchain-explorer.exe ^
build\crypto\fift.exe ^ build\crypto\fift.exe ^
build\crypto\tlbc.exe ^ build\crypto\tlbc.exe ^
build\crypto\func.exe ^ build\crypto\func.exe ^
build\tolk\tolk.exe ^ build\tolk\tolk.exe ^
build\crypto\create-state.exe ^ build\crypto\create-state.exe ^
build\validator-engine-console\validator-engine-console.exe ^ build\validator-engine-console\validator-engine-console.exe ^
build\tonlib\tonlib-cli.exe ^ build\tonlib\tonlib-cli.exe ^
build\tonlib\tonlibjson.dll ^ build\tonlib\tonlibjson.dll ^
build\http\http-proxy.exe ^ build\http\http-proxy.exe ^
build\rldp-http-proxy\rldp-http-proxy.exe ^ build\rldp-http-proxy\rldp-http-proxy.exe ^
build\dht-server\dht-server.exe ^ build\dht-server\dht-server.exe ^
build\lite-client\lite-client.exe ^ 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\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,109 +26,96 @@ 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
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=v143 msbuild zlibstat.vcxproj /p:Configuration=ReleaseWithoutAsm /p:platform=x64 -p:PlatformToolset=v143
cd ..\..\..\..
IF %errorlevel% NEQ 0 (
echo Can't install zlib
exit /b %errorlevel%
)
cd ..\..\..\..
) else ( ) else (
echo Using zlib... echo Using zlib...
) )
if not exist "lz4" ( 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 cd ..\..\..\..
IF %errorlevel% NEQ 0 (
echo Can't install lz4
exit /b %errorlevel%
)
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
IF %errorlevel% NEQ 0 ( cd libmicrohttpd
echo Can't download libmicrohttpd git checkout v1.0.1
exit /b %errorlevel% cd w32\VS2022
) msbuild libmicrohttpd.vcxproj /p:Configuration=Release-static /p:platform=x64 -p:PlatformToolset=v143
unzip -q libmicrohttpd-0.9.77-w32-bin.zip IF %errorlevel% NEQ 0 (
echo Can't compile libmicrohttpd
exit /b %errorlevel%
)
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,32 +158,38 @@ 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
for %%I in (build\storage\storage-daemon\storage-daemon.exe ^ for %%I in (build\storage\storage-daemon\storage-daemon.exe ^
build\storage\storage-daemon\storage-daemon-cli.exe ^ build\storage\storage-daemon\storage-daemon-cli.exe ^
build\blockchain-explorer\blockchain-explorer.exe ^ build\blockchain-explorer\blockchain-explorer.exe ^
build\crypto\fift.exe ^ build\crypto\fift.exe ^
build\crypto\tlbc.exe ^ build\crypto\tlbc.exe ^
build\crypto\func.exe ^ build\crypto\func.exe ^
build\tolk\tolk.exe ^ build\tolk\tolk.exe ^
build\crypto\create-state.exe ^ build\crypto\create-state.exe ^
build\validator-engine-console\validator-engine-console.exe ^ build\validator-engine-console\validator-engine-console.exe ^
build\tonlib\tonlib-cli.exe ^ build\tonlib\tonlib-cli.exe ^
build\tonlib\tonlibjson.dll ^ build\tonlib\tonlibjson.dll ^
build\http\http-proxy.exe ^ build\http\http-proxy.exe ^
build\rldp-http-proxy\rldp-http-proxy.exe ^ build\rldp-http-proxy\rldp-http-proxy.exe ^
build\dht-server\dht-server.exe ^ build\dht-server\dht-server.exe ^
build\lite-client\lite-client.exe ^ 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\adnl\adnl-proxy.exe ^ build\utils\proxy-liteserver.exe ^
build\emulator\emulator.dll) do (strip -s %%I & copy %%I artifacts\) build\adnl\adnl-proxy.exe ^
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