@@ -75,6 +75,36 @@ function(_set_target_prefix_and_suffix target kind sdk)
7575 endif ()
7676endfunction ()
7777
78+ function (_add_host_variant_swift_sanitizer_flags target )
79+ if (LLVM_USE_SANITIZER)
80+ if (LLVM_USE_SANITIZER STREQUAL "Address" )
81+ set (_Swift_SANITIZER_FLAGS "-sanitize=address" )
82+ elseif (LLVM_USE_SANITIZER STREQUAL "HWAddress" )
83+ # Not supported?
84+ elseif (LLVM_USE_SANITIZER MATCHES "Memory(WithOrigins)?" )
85+ # Not supported
86+ if (LLVM_USE_SANITIZER STREQUAL "MemoryWithOrigins" )
87+ # Not supported
88+ endif ()
89+ elseif (LLVM_USE_SANITIZER STREQUAL "Undefined" )
90+ set (_Swift_SANITIZER_FLAGS "-sanitize=undefined" )
91+ elseif (LLVM_USE_SANITIZER STREQUAL "Thread" )
92+ set (_Swift_SANITIZER_FLAGS "-sanitize=thread" )
93+ elseif (LLVM_USE_SANITIZER STREQUAL "DataFlow" )
94+ # Not supported
95+ elseif (LLVM_USE_SANITIZER STREQUAL "Address;Undefined" OR
96+ LLVM_USE_SANITIZER STREQUAL "Undefined;Address" )
97+ set (_Swift_SANITIZER_FLAGS "-sanitize=address -sanitize=undefined" )
98+ elseif (LLVM_USE_SANITIZER STREQUAL "Leaks" )
99+ # Not supported
100+ else ()
101+ message (SEND_ERROR "unsupported value for LLVM_USE_SANITIZER: ${LLVM_USE_SANITIZER} " )
102+ endif ()
103+
104+ target_compile_options (${name} PRIVATE $<$<COMPILE_LANGUAGE:Swift>:${_Swift_SANITIZER_FLAGS} >)
105+ endif ()
106+ endfunction ()
107+
78108# Usage:
79109# _add_host_variant_c_compile_link_flags(name)
80110function (_add_host_variant_c_compile_link_flags name )
@@ -100,6 +130,8 @@ function(_add_host_variant_c_compile_link_flags name)
100130 MACCATALYST_BUILD_FLAVOR ""
101131 DEPLOYMENT_VERSION "${DEPLOYMENT_VERSION} " )
102132 target_compile_options (${name} PRIVATE $<$<COMPILE_LANGUAGE:Swift>:-target ;${target} >)
133+
134+ _add_host_variant_swift_sanitizer_flags(${name} )
103135 endif ()
104136
105137 set (_sysroot
0 commit comments