From 05da75f1fb08719b373ba94a9faf5d5ce77d3874 Mon Sep 17 00:00:00 2001 From: Dimitri Staessens Date: Tue, 14 Nov 2017 20:46:50 +0100 Subject: build: Add options for debug builds with sanitizer This adds three build types, DebugASan, DebugTSan and DebugLSan that enable the Address, Thread and Leak Sanitizer by setting the fsanitize flag to the compiler. This option is supported by both gcc and clang. Signed-off-by: Dimitri Staessens Signed-off-by: Sander Vrijders --- CMakeLists.txt | 7 +++++++ src/ipcpd/local/CMakeLists.txt | 4 ++-- src/ipcpd/normal/CMakeLists.txt | 4 ++-- src/ipcpd/shim-eth-llc/CMakeLists.txt | 4 ++-- src/ipcpd/shim-udp/CMakeLists.txt | 4 ++-- src/irmd/CMakeLists.txt | 4 ++-- src/lib/CMakeLists.txt | 4 ++-- 7 files changed, 19 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f23925fe..f5836217 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -70,6 +70,13 @@ test_and_set_c_compiler_flag_global(-fmax-errors=5) if (CMAKE_BUILD_TYPE STREQUAL "Release") test_and_set_c_compiler_flag_global(-O3) endif () +if (CMAKE_BUILD_TYPE STREQUAL "DebugASan") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address") +elseif (CMAKE_BUILD_TYPE STREQUAL "DebugTSan") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread") +elseif (CMAKE_BUILD_TYPE STREQUAL "DebugLSan") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=leak") +endif () configure_file("${CMAKE_CURRENT_SOURCE_DIR}/ouroboros-dev.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/ouroboros-dev.pc" @ONLY) diff --git a/src/ipcpd/local/CMakeLists.txt b/src/ipcpd/local/CMakeLists.txt index 788c1139..422fa709 100644 --- a/src/ipcpd/local/CMakeLists.txt +++ b/src/ipcpd/local/CMakeLists.txt @@ -22,9 +22,9 @@ add_executable(ipcpd-local ${SHIM_LOCAL_SOURCES} ${IPCP_SOURCES}) target_link_libraries(ipcpd-local LINK_PUBLIC ouroboros-common ouroboros-dev) include(AddCompileFlags) -if (CMAKE_BUILD_TYPE MATCHES Debug) +if (CMAKE_BUILD_TYPE MATCHES "Debug*") add_compile_flags(ipcpd-local -DCONFIG_OUROBOROS_DEBUG) -endif (CMAKE_BUILD_TYPE MATCHES Debug) +endif () install(TARGETS ipcpd-local RUNTIME DESTINATION sbin) diff --git a/src/ipcpd/normal/CMakeLists.txt b/src/ipcpd/normal/CMakeLists.txt index dd67ce05..c84d66ce 100644 --- a/src/ipcpd/normal/CMakeLists.txt +++ b/src/ipcpd/normal/CMakeLists.txt @@ -53,9 +53,9 @@ add_executable(ipcpd-normal ${SOURCE_FILES} ${IPCP_SOURCES} target_link_libraries(ipcpd-normal LINK_PUBLIC ouroboros-dev ouroboros-irm) include(AddCompileFlags) -if (CMAKE_BUILD_TYPE MATCHES Debug) +if (CMAKE_BUILD_TYPE MATCHES "Debug*") add_compile_flags(ipcpd-normal -DCONFIG_OUROBOROS_DEBUG) -endif (CMAKE_BUILD_TYPE MATCHES Debug) +endif () install(TARGETS ipcpd-normal RUNTIME DESTINATION sbin) diff --git a/src/ipcpd/shim-eth-llc/CMakeLists.txt b/src/ipcpd/shim-eth-llc/CMakeLists.txt index 600340b7..e9c34bbd 100644 --- a/src/ipcpd/shim-eth-llc/CMakeLists.txt +++ b/src/ipcpd/shim-eth-llc/CMakeLists.txt @@ -95,9 +95,9 @@ if (HAVE_LLC) ouroboros-dev ${PROTOBUF_C_LIBRARY}) include(AddCompileFlags) - if (CMAKE_BUILD_TYPE MATCHES Debug) + if (CMAKE_BUILD_TYPE MATCHES "Debug*") add_compile_flags(ipcpd-shim-eth-llc -DCONFIG_OUROBOROS_DEBUG) - endif (CMAKE_BUILD_TYPE MATCHES Debug) + endif () install(TARGETS ipcpd-shim-eth-llc RUNTIME DESTINATION sbin) endif () diff --git a/src/ipcpd/shim-udp/CMakeLists.txt b/src/ipcpd/shim-udp/CMakeLists.txt index 89a446a7..2bc68154 100644 --- a/src/ipcpd/shim-udp/CMakeLists.txt +++ b/src/ipcpd/shim-udp/CMakeLists.txt @@ -57,8 +57,8 @@ else () endif () include(AddCompileFlags) -if (CMAKE_BUILD_TYPE MATCHES Debug) +if (CMAKE_BUILD_TYPE MATCHES "Debug*") add_compile_flags(ipcpd-shim-udp -DCONFIG_OUROBOROS_DEBUG) -endif (CMAKE_BUILD_TYPE MATCHES Debug) +endif () install(TARGETS ipcpd-shim-udp RUNTIME DESTINATION sbin) diff --git a/src/irmd/CMakeLists.txt b/src/irmd/CMakeLists.txt index 55288263..51b6f965 100644 --- a/src/irmd/CMakeLists.txt +++ b/src/irmd/CMakeLists.txt @@ -44,9 +44,9 @@ add_executable (irmd ${SOURCE_FILES}) target_link_libraries (irmd LINK_PUBLIC ouroboros-common) include(AddCompileFlags) -if (CMAKE_BUILD_TYPE MATCHES Debug) +if (CMAKE_BUILD_TYPE MATCHES "Debug*") add_compile_flags(irmd -DCONFIG_OUROBOROS_DEBUG) -endif (CMAKE_BUILD_TYPE MATCHES Debug) +endif () install(TARGETS irmd RUNTIME DESTINATION sbin) diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index 1c5877df..f0454bd8 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -219,11 +219,11 @@ add_library(ouroboros-dev SHARED ${SOURCE_FILES_DEV} ${CACEP_PROTO_SRCS}) add_library(ouroboros-irm SHARED ${SOURCE_FILES_IRM}) include(AddCompileFlags) -if (CMAKE_BUILD_TYPE MATCHES Debug) +if (CMAKE_BUILD_TYPE MATCHES "Debug*") add_compile_flags(ouroboros-common -DCONFIG_OUROBOROS_DEBUG) add_compile_flags(ouroboros-dev -DCONFIG_OUROBOROS_DEBUG) add_compile_flags(ouroboros-irm -DCONFIG_OUROBOROS_DEBUG) -endif (CMAKE_BUILD_TYPE MATCHES Debug) +endif () target_link_libraries(ouroboros-common ${LIBRT_LIBRARIES} ${LIBPTHREAD_LIBRARIES} ${PROTOBUF_C_LIBRARY} ${OPENSSL_LIBRARIES} -- cgit v1.2.3