@@ -8,7 +8,11 @@ include(CheckCXXSourceCompiles)
88
99
1010macro (myproject_supports_sanitizers)
11- if ((CMAKE_CXX_COMPILER_ID MATCHES ".*Clang.*" OR CMAKE_CXX_COMPILER_ID MATCHES ".*GNU.*" ) AND NOT WIN32 )
11+ # Emscripten doesn't support sanitizers
12+ if (EMSCRIPTEN)
13+ set (SUPPORTS_UBSAN OFF )
14+ set (SUPPORTS_ASAN OFF )
15+ elseif ((CMAKE_CXX_COMPILER_ID MATCHES ".*Clang.*" OR CMAKE_CXX_COMPILER_ID MATCHES ".*GNU.*" ) AND NOT WIN32 )
1216
1317 message (STATUS "Sanity checking UndefinedBehaviorSanitizer, it should be supported on this platform" )
1418 set (TEST_PROGRAM "int main() { return 0; }" )
@@ -166,19 +170,22 @@ macro(myproject_local_options)
166170 ""
167171 "" )
168172
169- if (myproject_ENABLE_USER_LINKER)
170- include (cmake/Linker.cmake)
171- myproject_configure_linker(myproject_options)
172- endif ()
173+ # Linker and sanitizers not supported in Emscripten
174+ if (NOT EMSCRIPTEN)
175+ if (myproject_ENABLE_USER_LINKER)
176+ include (cmake/Linker.cmake)
177+ myproject_configure_linker(myproject_options)
178+ endif ()
173179
174- include (cmake/Sanitizers.cmake)
175- myproject_enable_sanitizers(
176- myproject_options
177- ${myproject_ENABLE_SANITIZER_ADDRESS}
178- ${myproject_ENABLE_SANITIZER_LEAK}
179- ${myproject_ENABLE_SANITIZER_UNDEFINED}
180- ${myproject_ENABLE_SANITIZER_THREAD}
181- ${myproject_ENABLE_SANITIZER_MEMORY} )
180+ include (cmake/Sanitizers.cmake)
181+ myproject_enable_sanitizers(
182+ myproject_options
183+ ${myproject_ENABLE_SANITIZER_ADDRESS}
184+ ${myproject_ENABLE_SANITIZER_LEAK}
185+ ${myproject_ENABLE_SANITIZER_UNDEFINED}
186+ ${myproject_ENABLE_SANITIZER_THREAD}
187+ ${myproject_ENABLE_SANITIZER_MEMORY} )
188+ endif ()
182189
183190 set_target_properties (myproject_options PROPERTIES UNITY_BUILD ${myproject_ENABLE_UNITY_BUILD} )
184191
0 commit comments