| # Copyright 2020 Google LLC | 
 | # | 
 | # Licensed under the Apache License, Version 2.0 (the "License"); | 
 | # you may not use this file except in compliance with the License. | 
 | # You may obtain a copy of the License at | 
 | # | 
 | #      https://www.apache.org/licenses/LICENSE-2.0 | 
 | # | 
 | # Unless required by applicable law or agreed to in writing, software | 
 | # distributed under the License is distributed on an "AS IS" BASIS, | 
 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | # See the License for the specific language governing permissions and | 
 | # limitations under the License. | 
 |  | 
 | #------------------------------------------------------------------------------- | 
 | # Sanitizer configurations | 
 | #------------------------------------------------------------------------------- | 
 |  | 
 | # Note: we add these flags to the global CMake flags, not to IREE-specific | 
 | # variables such as IREE_DEFAULT_COPTS so that all symbols are consistently | 
 | # defined with the same sanitizer flags, including e.g. standard library | 
 | # symbols that might be used by both IREE and non-IREE (e.g. LLVM) code. | 
 |  | 
 | if(${IREE_ENABLE_ASAN}) | 
 |   string(APPEND CMAKE_CXX_FLAGS " -fsanitize=address") | 
 |   string(APPEND CMAKE_C_FLAGS " -fsanitize=address") | 
 | endif() | 
 | if(${IREE_ENABLE_MSAN}) | 
 |   string(APPEND CMAKE_CXX_FLAGS " -fsanitize=memory") | 
 |   string(APPEND CMAKE_C_FLAGS " -fsanitize=memory") | 
 | endif() | 
 | if(${IREE_ENABLE_TSAN}) | 
 |   string(APPEND CMAKE_CXX_FLAGS " -fsanitize=thread") | 
 |   string(APPEND CMAKE_C_FLAGS " -fsanitize=thread") | 
 | endif() | 
 | if(ANDROID) | 
 |   # Work around https://github.com/android/ndk/issues/1088 | 
 |   if(${IREE_ENABLE_ASAN} OR ${IREE_ENABLE_MSAN} OR ${IREE_ENABLE_TSAN}) | 
 |     string(APPEND CMAKE_EXE_LINKER_FLAGS " -fuse-ld=gold") | 
 |     string(APPEND CMAKE_SHARED_LINKER_FLAGS " -fuse-ld=gold") | 
 |   endif() | 
 | endif() |