From 319d59631052949bd4a4f634728b2012f4a02d11 Mon Sep 17 00:00:00 2001 From: Yuta Saito Date: Tue, 6 May 2025 11:49:41 +0800 Subject: [PATCH] [ASan][cmake] Exclude .so build when building for WASI by default --- compiler-rt/lib/asan/CMakeLists.txt | 47 +++++++++++++++++------------ 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/compiler-rt/lib/asan/CMakeLists.txt b/compiler-rt/lib/asan/CMakeLists.txt index e2f39f224df9c..5616a40164bd1 100644 --- a/compiler-rt/lib/asan/CMakeLists.txt +++ b/compiler-rt/lib/asan/CMakeLists.txt @@ -1,5 +1,12 @@ # Build for the AddressSanitizer runtime support library. +set(COMPILER_RT_ASAN_BUILD_SHARED_LIBS_default ON) +if (CMAKE_SYSTEM_NAME STREQUAL "WASI") + set(COMPILER_RT_ASAN_BUILD_SHARED_LIBS_default OFF) +endif() +option(COMPILER_RT_ASAN_BUILD_SHARED_LIBS + "Build AddressSanitizer shared libraries" ${COMPILER_RT_ASAN_BUILD_SHARED_LIBS_default}) + set(ASAN_SOURCES asan_allocator.cpp asan_activation.cpp @@ -307,25 +314,27 @@ else() endif() set(ASAN_DYNAMIC_WEAK_INTERCEPTION) - add_compiler_rt_runtime(clang_rt.asan - SHARED - ARCHS ${arch} - OBJECT_LIBS ${ASAN_COMMON_RUNTIME_OBJECT_LIBS} - RTAsan_dynamic - # The only purpose of RTAsan_dynamic_version_script_dummy is to - # carry a dependency of the shared runtime on the version script. - # Replacing it with a straightforward - # add_dependencies(clang_rt.asan-dynamic-${arch} clang_rt.asan-dynamic-${arch}-version-list) - # generates an order-only dependency in ninja. - RTAsan_dynamic_version_script_dummy - RTUbsan_cxx - ${ASAN_DYNAMIC_WEAK_INTERCEPTION} - CFLAGS ${ASAN_DYNAMIC_CFLAGS} - LINK_FLAGS ${ASAN_DYNAMIC_LINK_FLAGS} - ${VERSION_SCRIPT_FLAG} - LINK_LIBS ${ASAN_DYNAMIC_LIBS} - DEFS ${ASAN_DYNAMIC_DEFINITIONS} - PARENT_TARGET asan) + if (COMPILER_RT_ASAN_BUILD_SHARED_LIBS) + add_compiler_rt_runtime(clang_rt.asan + SHARED + ARCHS ${arch} + OBJECT_LIBS ${ASAN_COMMON_RUNTIME_OBJECT_LIBS} + RTAsan_dynamic + # The only purpose of RTAsan_dynamic_version_script_dummy is to + # carry a dependency of the shared runtime on the version script. + # Replacing it with a straightforward + # add_dependencies(clang_rt.asan-dynamic-${arch} clang_rt.asan-dynamic-${arch}-version-list) + # generates an order-only dependency in ninja. + RTAsan_dynamic_version_script_dummy + RTUbsan_cxx + ${ASAN_DYNAMIC_WEAK_INTERCEPTION} + CFLAGS ${ASAN_DYNAMIC_CFLAGS} + LINK_FLAGS ${ASAN_DYNAMIC_LINK_FLAGS} + ${VERSION_SCRIPT_FLAG} + LINK_LIBS ${ASAN_DYNAMIC_LIBS} + DEFS ${ASAN_DYNAMIC_DEFINITIONS} + PARENT_TARGET asan) + endif() if (SANITIZER_USE_SYMBOLS AND NOT ${arch} STREQUAL "i386") add_sanitizer_rt_symbols(clang_rt.asan_cxx