diff options
Diffstat (limited to 'lib/ubsan/CMakeLists.txt')
-rw-r--r-- | lib/ubsan/CMakeLists.txt | 68 |
1 files changed, 38 insertions, 30 deletions
diff --git a/lib/ubsan/CMakeLists.txt b/lib/ubsan/CMakeLists.txt index 246236b78ab52..5ece9a62cfebf 100644 --- a/lib/ubsan/CMakeLists.txt +++ b/lib/ubsan/CMakeLists.txt @@ -49,15 +49,16 @@ if(APPLE) ARCHS ${UBSAN_SUPPORTED_ARCH} SOURCES ${UBSAN_STANDALONE_SOURCES} CFLAGS ${UBSAN_STANDALONE_CFLAGS}) - foreach(os ${SANITIZER_COMMON_SUPPORTED_OS}) - add_compiler_rt_darwin_dynamic_runtime(clang_rt.ubsan_${os}_dynamic ${os} - ARCHS ${UBSAN_SUPPORTED_ARCH} - SOURCES $<TARGET_OBJECTS:RTUbsan.${os}> - $<TARGET_OBJECTS:RTUbsan_standalone.${os}> - $<TARGET_OBJECTS:RTSanitizerCommon.${os}>) - add_dependencies(ubsan clang_rt.ubsan_${os}_dynamic) - endforeach() + add_compiler_rt_runtime(clang_rt.ubsan + SHARED + OS ${SANITIZER_COMMON_SUPPORTED_OS} + ARCHS ${UBSAN_SUPPORTED_ARCH} + OBJECT_LIBS RTUbsan + RTUbsan_standalone + RTSanitizerCommon + RTSanitizerCommonLibc + PARENT_TARGET ubsan) endif() else() @@ -76,29 +77,36 @@ else() ARCHS ${UBSAN_SUPPORTED_ARCH} SOURCES ${UBSAN_STANDALONE_SOURCES} CFLAGS ${UBSAN_STANDALONE_CFLAGS}) - foreach(arch ${UBSAN_SUPPORTED_ARCH}) - # Standalone UBSan runtimes. - add_compiler_rt_runtime(clang_rt.ubsan_standalone-${arch} ${arch} STATIC - SOURCES $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> - $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> - $<TARGET_OBJECTS:RTUbsan.${arch}> - $<TARGET_OBJECTS:RTUbsan_standalone.${arch}> - CFLAGS ${UBSAN_CFLAGS}) - add_compiler_rt_runtime(clang_rt.ubsan_standalone_cxx-${arch} ${arch} STATIC - SOURCES $<TARGET_OBJECTS:RTUbsan_cxx.${arch}> - CFLAGS ${UBSAN_CXXFLAGS}) + # Standalone UBSan runtimes. + add_compiler_rt_runtime(clang_rt.ubsan_standalone + STATIC + ARCHS ${UBSAN_SUPPORTED_ARCH} + OBJECT_LIBS RTSanitizerCommon + RTSanitizerCommonLibc + RTUbsan + RTUbsan_standalone + CFLAGS ${UBSAN_CFLAGS} + PARENT_TARGET ubsan) + + add_compiler_rt_runtime(clang_rt.ubsan_standalone_cxx + STATIC + ARCHS ${UBSAN_SUPPORTED_ARCH} + OBJECT_LIBS RTUbsan_cxx + CFLAGS ${UBSAN_CXXFLAGS} + PARENT_TARGET ubsan) - add_dependencies(ubsan - clang_rt.ubsan_standalone-${arch} - clang_rt.ubsan_standalone_cxx-${arch}) - if (UNIX AND NOT ${arch} MATCHES "i386|i686") - add_sanitizer_rt_symbols(clang_rt.ubsan_standalone-${arch} ubsan.syms.extra) - add_sanitizer_rt_symbols(clang_rt.ubsan_standalone_cxx-${arch} ubsan.syms.extra) - add_dependencies(ubsan - clang_rt.ubsan_standalone-${arch}-symbols - clang_rt.ubsan_standalone_cxx-${arch}-symbols) - endif() - endforeach() + if (UNIX) + set(ARCHS_FOR_SYMBOLS ${UBSAN_SUPPORTED_ARCH}) + list(REMOVE_ITEM ARCHS_FOR_SYMBOLS i386 i686) + add_sanitizer_rt_symbols(clang_rt.ubsan_standalone + ARCHS ${ARCHS_FOR_SYMBOLS} + PARENT_TARGET ubsan + EXTRA ubsan.syms.extra) + add_sanitizer_rt_symbols(clang_rt.ubsan_standalone_cxx + ARCHS ${ARCHS_FOR_SYMBOLS} + PARENT_TARGET ubsan + EXTRA ubsan.syms.extra) + endif() endif() endif() |