diff --git a/.github/workflows/asan.yml b/.github/workflows/asan.yml index 06505a4b3c8..5571eb8af37 100644 --- a/.github/workflows/asan.yml +++ b/.github/workflows/asan.yml @@ -21,7 +21,8 @@ jobs: strategy: fail-fast: false matrix: - os: [windows-latest, ubuntu-latest, macos-latest] + #os: [windows-latest, ubuntu-latest, macos-latest] + os: [ubuntu-latest, macos-latest] # Temporarily remove windows asan preset: [vcpkg-asan-debug, vcpkg-ubsan-debug] exclude: # UBSan not supported by MSVC on Windows diff --git a/.github/workflows/build_windows_cmake.yml b/.github/workflows/build_windows_cmake.yml index ece9dea602f..af4aacc4a98 100644 --- a/.github/workflows/build_windows_cmake.yml +++ b/.github/workflows/build_windows_cmake.yml @@ -25,7 +25,7 @@ jobs: CMAKE_BUILD_DIR: ${{ github.workspace }}/vw/build SOURCE_DIR: ${{ github.workspace }}/vw VCPKG_ROOT: ${{ github.workspace }}/vw/ext_libs/vcpkg - VCPKG_REF: 501db0f17ef6df184fcdbfbe0f87cde2313b6ab1 + VCPKG_REF: 53bef8994c541b6561884a8395ea35715ece75db steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/python_wheels.yml b/.github/workflows/python_wheels.yml index 118d733e6ad..2302c48c0a6 100644 --- a/.github/workflows/python_wheels.yml +++ b/.github/workflows/python_wheels.yml @@ -284,7 +284,7 @@ jobs: runs-on: windows-2019 env: VCPKG_ROOT: ${{ github.workspace }}\\vcpkg - VCPKG_REF: 501db0f17ef6df184fcdbfbe0f87cde2313b6ab1 + VCPKG_REF: 53bef8994c541b6561884a8395ea35715ece75db VCPKG_DEFAULT_BINARY_CACHE: ${{ github.workspace }}\vcpkg_binary_cache strategy: matrix: diff --git a/CMakeLists.txt b/CMakeLists.txt index ea8c108eb68..7b373508f90 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,10 +60,10 @@ if(VW_FEAT_LDA AND NOT BUILD_PYTHON) list(APPEND VCPKG_MANIFEST_FEATURES "lda") endif() -option(BUILD_TESTING "Build tests" ON) -if(BUILD_TESTING) - list(APPEND VCPKG_MANIFEST_FEATURES "tests") -endif() +#option(BUILD_TESTING "Build tests" ON) +#if(BUILD_TESTING) +# list(APPEND VCPKG_MANIFEST_FEATURES "tests") +#endif() option(BUILD_BENCHMARKS "Build benchmarks" OFF) if(BUILD_BENCHMARKS) @@ -100,6 +100,31 @@ set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_VISIBILITY_INLINES_HIDDEN TRUE) set(CMAKE_CXX_VISIBILITY_PRESET "hidden") +option(VW_USE_ASAN "Compile with AddressSanitizer" OFF) +option(VW_USE_UBSAN "Compile with UndefinedBehaviorSanitizer" OFF) + +if(VW_USE_ASAN) + add_compile_definitions(VW_USE_ASAN) + if(MSVC) + add_compile_options(/fsanitize=address) + add_link_options(/InferASanLibs /incremental:no /debug) + else() + add_compile_options(-fsanitize=address -fno-omit-frame-pointer -g3) + add_link_options(-fsanitize=address -fno-omit-frame-pointer -g3) + endif() +endif() + +if(VW_USE_UBSAN) + add_compile_definitions(VW_USE_UBSAN) + if(MSVC) + message(FATAL_ERROR "UBSan not supported on MSVC") + else() + add_compile_options(-fsanitize=undefined -fno-sanitize-recover -fno-omit-frame-pointer -g3) + add_link_options(-fsanitize=undefined -fno-sanitize-recover -fno-omit-frame-pointer -g3) + endif() +endif() + + include(VowpalWabbitUtils) if(MSVC) @@ -152,33 +177,8 @@ option(VW_SSE2NEON_SYS_DEP "Override using the submodule for SSE2Neon dependency option(VW_BUILD_VW_C_WRAPPER "Enable building the c_wrapper project" ON) option(vw_BUILD_NET_CORE "Build .NET Core targets" OFF) option(vw_BUILD_NET_FRAMEWORK "Build .NET Framework targets" OFF) -option(VW_USE_ASAN "Compile with AddressSanitizer" OFF) -option(VW_USE_UBSAN "Compile with UndefinedBehaviorSanitizer" OFF) option(VW_BUILD_WASM "Add WASM target" OFF) -if(VW_USE_ASAN) - add_compile_definitions(VW_USE_ASAN) - if(MSVC) - add_compile_options(/fsanitize=address /GS- /wd5072) - add_link_options(/InferASanLibs /incremental:no /debug) - # Workaround for MSVC ASan issue here: https://developercommunity.visualstudio.com/t/VS2022---Address-sanitizer-on-x86-Debug-/10116361 - add_compile_definitions(_DISABLE_STRING_ANNOTATION) - else() - add_compile_options(-fsanitize=address -fno-omit-frame-pointer -g3) - add_link_options(-fsanitize=address -fno-omit-frame-pointer -g3) - endif() -endif() - -if(VW_USE_UBSAN) - add_compile_definitions(VW_USE_UBSAN) - if(MSVC) - message(FATAL_ERROR "UBSan not supported on MSVC") - else() - add_compile_options(-fsanitize=undefined -fno-sanitize-recover -fno-omit-frame-pointer -g3) - add_link_options(-fsanitize=undefined -fno-sanitize-recover -fno-omit-frame-pointer -g3) - endif() -endif() - if(VW_INSTALL AND NOT VW_ZLIB_SYS_DEP) message(WARNING "Installing with a vendored version of zlib is not recommended. Use VW_ZLIB_SYS_DEP to use a system dependency or specify VW_INSTALL=OFF to silence this warning.") endif() diff --git a/CMakePresets.json b/CMakePresets.json index 235c09a25e9..2c9110de54c 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -41,7 +41,7 @@ }, "VW_GTEST_SYS_DEP": { "type": "BOOL", - "value": "ON" + "value": "OFF" }, "VW_EIGEN_SYS_DEP": { "type": "BOOL", diff --git a/cmake/VowpalWabbitUtils.cmake b/cmake/VowpalWabbitUtils.cmake index 5a932db4a5b..e55c9827548 100644 --- a/cmake/VowpalWabbitUtils.cmake +++ b/cmake/VowpalWabbitUtils.cmake @@ -22,7 +22,7 @@ if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) include(FetchContent) FetchContent_Declare( googletest - URL https://github.com/google/googletest/archive/refs/tags/release-1.11.0.zip + URL https://github.com/google/googletest/archive/refs/tags/v1.13.0.zip ) # For Windows: Prevent overriding the parent project's compiler/linker settings set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) diff --git a/ext_libs/vcpkg b/ext_libs/vcpkg index 501db0f17ef..53bef8994c5 160000 --- a/ext_libs/vcpkg +++ b/ext_libs/vcpkg @@ -1 +1 @@ -Subproject commit 501db0f17ef6df184fcdbfbe0f87cde2313b6ab1 +Subproject commit 53bef8994c541b6561884a8395ea35715ece75db diff --git a/vowpalwabbit/test_common/CMakeLists.txt b/vowpalwabbit/test_common/CMakeLists.txt index 51143b2523e..5370ececd90 100644 --- a/vowpalwabbit/test_common/CMakeLists.txt +++ b/vowpalwabbit/test_common/CMakeLists.txt @@ -9,9 +9,9 @@ vw_add_library( NAME "test_common" TYPE "STATIC_ONLY" SOURCES ${vw_test_common_sources} - PUBLIC_DEPS vw_common vw_config vw_core + PUBLIC_DEPS vw_common vw_config vw_core GTest::gmock GTest::gtest DESCRIPTION "Test utilties" EXCEPTION_DESCRIPTION "Yes" ) -target_include_directories(vw_test_common PRIVATE $) \ No newline at end of file +target_include_directories(vw_test_common PRIVATE $)