diff options
| author | yangwei <[email protected]> | 2024-08-08 16:18:39 +0800 |
|---|---|---|
| committer | luwenpeng <[email protected]> | 2024-08-12 15:48:37 +0800 |
| commit | d2ad393795918509cb1f63708f832f2aa4323014 (patch) | |
| tree | c1eda2c06bdd4d796d05f84a5383d8c9cdd0cfbe /CMakeLists.txt | |
| parent | 42d4e2bee8c2f4879860cacd80d79da79c95d31d (diff) | |
🔧 build(root CMake Lists): update ASAN option
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 59 |
1 files changed, 29 insertions, 30 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 97fff68..966e2c6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,9 +13,12 @@ set(CMAKE_C_STANDARD 11) add_compile_options(-Wall -Wextra -Werror) if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE RelWithDebInfo) + set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING + "Build type (default: RelWithDebInfo)" FORCE) endif() +set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Debug Release RelWithDebInfo MinSizeRel) + if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set (CMAKE_INSTALL_PREFIX "/opt/tsg/stellar" CACHE PATH "default install path" FORCE) endif() @@ -48,39 +51,35 @@ else() message(FATAL_ERROR "Could not find the program cppcheck.") endif() -option(ENABLE_PIC "Generate position independent code (necessary for shared libraries)" TRUE) -option(ENABLE_WARNING_ALL "Enable all optional warnings which are desirable for normal code" TRUE) +#option(ENABLE_PIC "Generate position independent code (necessary for shared libraries)" TRUE) +#if(ENABLE_PIC) +# set(CMAKE_POSITION_INDEPENDENT_CODE 1) +#endif() +#option(ENABLE_WARNING_ALL "Enable all optional warnings which are desirable for normal code" TRUE) +#if(ENABLE_WARNING_ALL) +# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") +# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") +#endif() -if(NOT ASAN_OPTION) - option(ENABLE_SANITIZE_ADDRESS "Enable AddressSanitizer" FALSE) -else() - option(ENABLE_SANITIZE_ADDRESS "Enable AddressSanitizer" TRUE) -endif() +set(CMAKE_POSITION_INDEPENDENT_CODE 1) -option(ENABLE_SANITIZE_THREAD "Enable ThreadSanitizer" FALSE) - -if(ENABLE_PIC) - set(CMAKE_POSITION_INDEPENDENT_CODE 1) -endif() - -if(ENABLE_WARNING_ALL) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") -endif() - -if(ENABLE_SANITIZE_ADDRESS) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lasan") -elseif(ENABLE_SANITIZE_THREAD) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread -fno-omit-frame-pointer") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread -fno-omit-frame-pointer") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lasan") -endif() +#for ASAN +set(ASAN_OPTION "OFF" CACHE STRING " set asan type chosen by the user, using OFF as default") +set_property(CACHE ASAN_OPTION PROPERTY STRINGS OFF ADDRESS THREAD) +message(STATUS "ASAN_OPTION='${ASAN_OPTION}'") -if(ENABLE_SANITIZE_ADDRESS AND ENABLE_SANITIZE_THREAD) - message(WARNING "Both ENABLE_SANITIZE_ADDRESS and ENABLE_SANITIZE_THREAD set, only ENABLE_SANITIZE_ADDRESS effected.") +if(ASAN_OPTION MATCHES "ADDRESS") + set(CMAKE_C_FLAGS "${CMAKADDRESS} -g -DCMAKE_BUILD_TYPE=Debug -fsanitize=address -fno-omit-frame-pointer") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -DCMAKE_BUILD_TYPE=Debug -fsanitize=address -fno-omit-frame-pointer") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lasan") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lasan") +elseif(ASAN_OPTION MATCHES "THREAD") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -DCMAKE_BUILD_TYPE=Debug -fsanitize=thread -fno-omit-frame-pointer") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -DCMAKE_BUILD_TYPE=Debug -fsanitize=thread -fno-omit-frame-pointer") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lasan") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lasan") endif() +# end of for ASAN enable_testing() add_subdirectory(conf) |
