summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authoryangwei <[email protected]>2024-08-08 16:18:39 +0800
committerluwenpeng <[email protected]>2024-08-12 15:48:37 +0800
commitd2ad393795918509cb1f63708f832f2aa4323014 (patch)
treec1eda2c06bdd4d796d05f84a5383d8c9cdd0cfbe /CMakeLists.txt
parent42d4e2bee8c2f4879860cacd80d79da79c95d31d (diff)
🔧 build(root CMake Lists): update ASAN option
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt59
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)