diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index 6043b5a603bfdb733fb9ff15d8d00d0666cd3fa7..a6d386ce7344fa887695f527c0ef997b33f09363 100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -32,6 +32,9 @@ set(CMAKE_CXX_FLAGS_DEBUG "$ENV{LL_BUILD_DEBUG}") # Portable compilation flags. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DADDRESS_SIZE=${ADDRESS_SIZE}") +# Configure asan +set(ASAN OFF CACHE BOOL "Enable use of asan in builds") + # Configure crash reporting set(RELEASE_CRASH_REPORTING OFF CACHE BOOL "Enable use of crash reporting in release builds") set(NON_RELEASE_CRASH_REPORTING OFF CACHE BOOL "Enable use of crash reporting in developer builds") @@ -63,6 +66,10 @@ if (WINDOWS) # http://www.cmake.org/pipermail/cmake/2009-September/032143.html string(REPLACE "/Zm1000" " " CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) + if(ASAN) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fsanitize=address") + endif(ASAN) + # Without PreferredToolArchitecture=x64, as of 2020-06-26 the 32-bit # compiler on our TeamCity build hosts has started running out of virtual # memory for the precompiled header file. diff --git a/indra/cmake/LLSharedLibs.cmake b/indra/cmake/LLSharedLibs.cmake index f69b45cd926193e04ce625a7ae2ed0c1674d2d81..0773e7587a4c803b1f544a86036ee4a43f2e5213 100644 --- a/indra/cmake/LLSharedLibs.cmake +++ b/indra/cmake/LLSharedLibs.cmake @@ -18,6 +18,13 @@ macro(ll_deploy_sharedlibs_command target_exe) if(NOT DARWIN) if(WINDOWS) SET_TEST_PATH(SEARCH_DIRS) + if(ASAN) + if(ADDRESS_SIZE EQUAL 32) + LIST(APPEND SEARCH_DIRS "$ENV{VCToolsInstallDir}bin\\Hostx64\\x86") + else(ADDRESS_SIZE EQUAL 32) + LIST(APPEND SEARCH_DIRS "$ENV{VCToolsInstallDir}bin\\Hostx64\\x64") + endif(ADDRESS_SIZE EQUAL 32) + endif(ASAN) LIST(APPEND SEARCH_DIRS "$ENV{SystemRoot}/system32") elseif(LINUX) SET_TEST_PATH(SEARCH_DIRS) diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake index 3cb235a9d58775166c57cb0f70878829a824dae8..18e44d72e53092a7c81c5886ed2d7708b4981574 100644 --- a/indra/cmake/Linking.cmake +++ b/indra/cmake/Linking.cmake @@ -69,6 +69,22 @@ if (WINDOWS) ole32 dbghelp ) + + if(ASAN) + if(ADDRESS_SIZE EQUAL 32) + set(WINDOWS_LIBRARIES + ${WINDOWS_LIBRARIES} + clang_rt.asan_dynamic_runtime_thunk-i386 + clang_rt.asan_dynamic-i386 + ) + else(ADDRESS_SIZE EQUAL 32) + set(WINDOWS_LIBRARIES + ${WINDOWS_LIBRARIES} + clang_rt.asan_dynamic_runtime_thunk-x86_64 + clang_rt.asan_dynamic-x86_64 + ) + endif(ADDRESS_SIZE EQUAL 32) + endif(ASAN) else (WINDOWS) set(WINDOWS_LIBRARIES "") endif (WINDOWS)