summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri.staessens@ugent.be>2017-11-14 20:46:50 +0100
committerSander Vrijders <sander.vrijders@ugent.be>2017-11-14 21:43:27 +0100
commit05da75f1fb08719b373ba94a9faf5d5ce77d3874 (patch)
treee907261dd79c5b082f8bfd75cf6c30caddb60d01
parent4c402ad8d7d38f00c2c3794675a0e99a03fca4be (diff)
downloadouroboros-05da75f1fb08719b373ba94a9faf5d5ce77d3874.tar.gz
ouroboros-05da75f1fb08719b373ba94a9faf5d5ce77d3874.zip
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 <dimitri.staessens@ugent.be> Signed-off-by: Sander Vrijders <sander.vrijders@ugent.be>
-rw-r--r--CMakeLists.txt7
-rw-r--r--src/ipcpd/local/CMakeLists.txt4
-rw-r--r--src/ipcpd/normal/CMakeLists.txt4
-rw-r--r--src/ipcpd/shim-eth-llc/CMakeLists.txt4
-rw-r--r--src/ipcpd/shim-udp/CMakeLists.txt4
-rw-r--r--src/irmd/CMakeLists.txt4
-rw-r--r--src/lib/CMakeLists.txt4
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}