check asan before use (#30)

This commit is contained in:
PikachuHy 2022-11-01 16:20:49 +08:00 committed by GitHub
parent fe283787a0
commit 98dfd3bcd3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 4 deletions

View File

@ -7,6 +7,9 @@ project(yaLanTingLibs
)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
message(STATUS "CMAKE_MODULE_PATH: ${CMAKE_MODULE_PATH}")
find_package(Threads REQUIRED)
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcoroutines")
set(CMAKE_CXX_FLAGS_RELEASE "-O2")
@ -19,8 +22,14 @@ endif ()
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
if (NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
message("-- Use flag -fsanitize=address")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
include(CheckASan)
check_asan(HAVE_ASAN)
if (HAVE_ASAN)
message("-- Use flag -fsanitize=address")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
else ()
message(WARNING "asan not found, you'd better install it for better code security!")
endif ()
endif ()
endif ()
option(COVERAGE_TEST "Build with unit test coverage" OFF)
@ -89,4 +98,4 @@ foreach (proj ${yaLanTingLibs_ENABLE_PROJECTS})
endif ()
endforeach ()
install(DIRECTORY include DESTINATION include)
install(DIRECTORY include DESTINATION include)

14
cmake/CheckASan.cmake Normal file
View File

@ -0,0 +1,14 @@
macro(CHECK_ASAN _RESULT)
include(CheckCXXSourceCompiles)
set(CMAKE_REQUIRED_FLAGS "-fsanitize=address")
check_cxx_source_compiles(
[====[
int main()
{
return 0;
}
]====]
${_RESULT}
)
unset(CMAKE_REQUIRED_FLAGS)
endmacro()

View File

@ -4,7 +4,7 @@ target_include_directories(libcoro_rpc INTERFACE
$<BUILD_INTERFACE:${yaLanTingLibs_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
)
find_package(Threads REQUIRED)
target_link_libraries(libcoro_rpc INTERFACE
Threads::Threads
asio::asio