DN/build.bat

66 lines
2.6 KiB
Batchfile

@echo OFF
setlocal EnableDelayedExpansion
set script_dir_backslash=%~dp0
set script_dir=%script_dir_backslash:~0,-1%
set build_dir=%script_dir%\Build
if not exist %build_dir% mkdir %build_dir%
pushd %build_dir%
:: Build CURL if we can and incorporate it into the compile flags
where /q cmake && (
if not exist %build_dir%/Curl/Install/lib/libcurl-d.lib (
cmake -B %build_dir%/Curl ^
-S %script_dir%/External/curl-8.17.0 ^
-G Ninja ^
-D BUILD_SHARED_LIBS=OFF ^
-D BUILD_STATIC_LIBS=ON ^
-D BUILD_CURL_EXE=OFF ^
-D BUILD_LIBCURL_DOCS=OFF ^
-D BUILD_MISC_DOCS=OFF ^
-D ENABLE_CURL_MANUAL=OFF ^
-D CURL_USE_SCHANNEL=ON ^
-D CURL_USE_LIBPSL=OFF ^
-D CURL_STATIC_CRT=ON ^
-D CMAKE_INSTALL_PREFIX=%build_dir%/Curl/Install
cmake --build %build_dir%/Curl --parallel --target install
)
)
:: MT Static CRT
:: EHa- Disable exception handling
:: GR- Disable C RTTI
:: Oi Use CPU Intrinsics
:: Z7 Combine multi-debug files to one debug file
set flags=%flags% -D DN_UNIT_TESTS_WITH_KECCAK %script_dir%\Source\Extra\dn_tests_main.cpp
set msvc_driver_flags=-EHa -GR- -Od -Oi -Z7 -wd4201 -W4 -nologo %flags% -fsanitize=address
where /q emcc && (
echo [BUILD] Emscripten emcc detected, compiling ...
call emcc -g -msimd128 -msse2 %flags% -o %build_dir%\dn_unit_tests_emcc.js -s FETCH=1 -pthread -s ASYNCIFY=1 -lwebsocket -Wall
)
where /q cl && (
echo [BUILD] MSVC cl detected, compiling ...
set msvc_cmd=cl -MTd %msvc_driver_flags% -analyze -Fe:dn_unit_tests_msvc -Fo:dn_unit_tests_msvc
if exist %build_dir%/Curl/Install/lib/libcurl-d.lib (
set msvc_cmd=!msvc_cmd! -D DN_UNIT_TESTS_WITH_CURL -I %build_dir%/Curl/Install/include %build_dir%/Curl/Install/lib/libcurl-d.lib crypt32.lib ws2_32.lib advapi32.lib wldap32.lib iphlpapi.lib secur32.lib
)
set msvc_cmd=!msvc_cmd! -link
powershell -Command "$time = Measure-Command { !msvc_cmd! | Out-Default }; Write-Host '[BUILD] msvc:'$time.TotalSeconds's'; exit $LASTEXITCODE" || exit /b 1
call cl %script_dir%\single_header_generator.cpp -Z7 -nologo -link
call %build_dir%\single_header_generator.exe %script_dir%\Source %script_dir%\Single-Header
)
where /q clang-cl && (
echo [BUILD] LLVM clang-cl detected, compiling ...
set clang_cmd=clang-cl -MT %msvc_driver_flags% -fsanitize=undefined -Fe:dn_unit_tests_clang -link
powershell -Command "$time = Measure-Command { !clang_cmd! | Out-Default }; Write-Host '[BUILD] clang-cl:'$time.TotalSeconds's'; exit $LASTEXITCODE" || exit /b 1
)
exit /b 1
popd