mirror of
https://github.com/NVIDIA/TensorRT-LLM.git
synced 2026-01-14 06:27:45 +08:00
76 lines
2.6 KiB
CMake
76 lines
2.6 KiB
CMake
#
|
|
# SPDX-FileCopyrightText: Copyright (c) 1993-2022 NVIDIA CORPORATION &
|
|
# AFFILIATES. All rights reserved. SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
# 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
|
|
#
|
|
# http://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.
|
|
#
|
|
|
|
macro(setup_sanitizers)
|
|
if(SANITIZE)
|
|
if(WIN32)
|
|
message(FATAL_ERROR "Sanitizer support is unimplemented on Windows.")
|
|
endif()
|
|
|
|
macro(add_clang_rt_lib lib_name)
|
|
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|
execute_process(
|
|
COMMAND
|
|
${CMAKE_CXX_COMPILER}
|
|
"-print-file-name=libclang_rt.${lib_name}-${CMAKE_SYSTEM_PROCESSOR}.so"
|
|
OUTPUT_VARIABLE CLANG_SAN_LIBRARY_PATH
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
link_libraries(${CLANG_SAN_LIBRARY_PATH})
|
|
endif()
|
|
endmacro()
|
|
|
|
string(TOLOWER ${SANITIZE} SANITIZE)
|
|
|
|
if("undefined" IN_LIST SANITIZE)
|
|
message(STATUS "Enabling extra sub-sanitizers for UBSan")
|
|
list(APPEND SANITIZE "float-divide-by-zero")
|
|
|
|
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|
list(APPEND SANITIZE "unsigned-integer-overflow" "implicit-conversion"
|
|
"local-bounds")
|
|
endif()
|
|
add_clang_rt_lib("ubsan_standalone")
|
|
add_compile_definitions("SANITIZE_UNDEFINED")
|
|
endif()
|
|
|
|
if("address" IN_LIST SANITIZE)
|
|
message(STATUS "Enabling extra sub-sanitizers for ASan")
|
|
list(APPEND SANITIZE "pointer-compare" "pointer-subtract")
|
|
add_compile_options("-fno-omit-frame-pointer;-fno-optimize-sibling-calls")
|
|
|
|
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|
add_compile_options("-fsanitize-address-use-after-return=always")
|
|
add_link_options("-fsanitize-address-use-after-return=always")
|
|
endif()
|
|
add_clang_rt_lib("asan")
|
|
endif()
|
|
|
|
if("thread" IN_LIST SANITIZE)
|
|
add_compile_options("-ftls-model=local-dynamic")
|
|
add_clang_rt_lib("tsan")
|
|
endif()
|
|
|
|
list(REMOVE_DUPLICATES SANITIZE)
|
|
message(STATUS "Enabled sanitizers: ${SANITIZE}")
|
|
|
|
foreach(SANITIZER IN LISTS SANITIZE)
|
|
add_compile_options("-fsanitize=${SANITIZER}")
|
|
add_link_options("-fsanitize=${SANITIZER}")
|
|
endforeach()
|
|
endif()
|
|
endmacro()
|