@@ -75,6 +75,41 @@ function(_set_target_prefix_and_suffix target kind sdk)
75
75
endif ()
76
76
endfunction ()
77
77
78
+ function (_add_host_variant_swift_sanitizer_flags target )
79
+ if (LLVM_USE_SANITIZER )
80
+ if (LLVM_ON_UNIX )
81
+
82
+ if (LLVM_USE_SANITIZER STREQUAL "Address" )
83
+ set (_Swift_SANITIZER_FLAGS "-sanitize=address" )
84
+ elseif (LLVM_USE_SANITIZER STREQUAL "HWAddress" )
85
+ # Not supported?
86
+ elseif (LLVM_USE_SANITIZER MATCHES "Memory(WithOrigins)?" )
87
+ # Not supported
88
+ if (LLVM_USE_SANITIZER STREQUAL "MemoryWithOrigins" )
89
+ # Not supported
90
+ endif ()
91
+ elseif (LLVM_USE_SANITIZER STREQUAL "Undefined" )
92
+ set (_Swift_SANITIZER_FLAGS "-sanitize=undefined" )
93
+ elseif (LLVM_USE_SANITIZER STREQUAL "Thread" )
94
+ set (_Swift_SANITIZER_FLAGS "-sanitize=thread" )
95
+ elseif (LLVM_USE_SANITIZER STREQUAL "DataFlow" )
96
+ # Not supported
97
+ elseif (LLVM_USE_SANITIZER STREQUAL "Address;Undefined" OR
98
+ LLVM_USE_SANITIZER STREQUAL "Undefined;Address" )
99
+ set (_Swift_SANITIZER_FLAGS "-sanitize=address -sanitize=undefined" )
100
+ elseif (LLVM_USE_SANITIZER STREQUAL "Leaks" )
101
+ # Not supported
102
+ else ()
103
+ message (FATAL_ERROR "Unsupported value of LLVM_USE_SANITIZER: ${LLVM_USE_SANITIZER} " )
104
+ endif ()
105
+
106
+ target_compile_options (${name} PRIVATE $< $< COMPILE_LANGUAGE:Swift> :${_Swift_SANITIZER_FLAGS} > )
107
+ else ()
108
+ # TODO (etcwilde): Pass sanitizer flags to swiftc on windows
109
+ endif ()
110
+ endif ()
111
+ endfunction ()
112
+
78
113
# Usage:
79
114
# _add_host_variant_c_compile_link_flags(name)
80
115
function (_add_host_variant_c_compile_link_flags name )
@@ -100,6 +135,8 @@ function(_add_host_variant_c_compile_link_flags name)
100
135
MACCATALYST_BUILD_FLAVOR ""
101
136
DEPLOYMENT_VERSION "${DEPLOYMENT_VERSION} " )
102
137
target_compile_options (${name} PRIVATE $< $< COMPILE_LANGUAGE:Swift> :-target;${target} > )
138
+
139
+ _add_host_variant_swift_sanitizer_flags (${name} )
103
140
endif ()
104
141
105
142
set (_sysroot
0 commit comments