Skip to content
Snippets Groups Projects
Commit add53807 authored by Dmitri Naumov's avatar Dmitri Naumov
Browse files

Merge pull request #935 from bilke/sanitizer

CMake options for enabling Clang sanitizer
parents 146ca5ce 84a4fa23
No related branches found
No related tags found
No related merge requests found
...@@ -10,6 +10,9 @@ ...@@ -10,6 +10,9 @@
- Added CMake option `OGS_CPU_ARCHITECTURE`, #858, [downloadable binaries](http://docs.opengeosys.org/download) build by Jenkins should now run on more CPUs - Added CMake option `OGS_CPU_ARCHITECTURE`, #858, [downloadable binaries](http://docs.opengeosys.org/download) build by Jenkins should now run on more CPUs
- Added CMake options for Boost, VTK and Eigen (`OGS_LIB_BOOST`, ...) to specify if libs are searched on the system first, then build them locally (`Default`), or you can specify to just use system libs (`System`) or force a local build (`Local`) - Added CMake options for Boost, VTK and Eigen (`OGS_LIB_BOOST`, ...) to specify if libs are searched on the system first, then build them locally (`Default`), or you can specify to just use system libs (`System`) or force a local build (`Local`)
- Added CMake options for enabling Clang sanitizer:
- `OGS_ADDRESS_SANITIZER`
- `OGS_UNDEFINED_BEHAVIOR_SANITIZER`
### Documentation ### Documentation
......
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.6")
return()
endif()
option(OGS_ADDRESS_SANITIZER OFF "Use Clangs AddressSanitizer")
option(OGS_UNDEFINED_BEHAVIOR_SANITIZER OFF "Use Clangs UndefinedBehaviorSanitizer")
if(OGS_ADDRESS_SANITIZER)
set(SANITIZE_FLAG_VALUE "address")
set(ADDITIONAL_FLAGS "-fno-omit-frame-pointer")
endif()
if(OGS_UNDEFINED_BEHAVIOR_SANITIZER)
set(SANITIZE_FLAG_VALUE "${SANITIZE_FLAG_VALUE},undefined,integer")
endif()
if(DEFINED SANITIZE_FLAG_VALUE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=${SANITIZE_FLAG_VALUE} ${ADDITIONAL_FLAGS}")
endif()
...@@ -61,6 +61,9 @@ if(COMPILER_IS_CLANG) ...@@ -61,6 +61,9 @@ if(COMPILER_IS_CLANG)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_ASSERT -D_GLIBCXX_DEBUG_PEDASSERT -D_GLIBCXX_DEBUG_VERIFY") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_ASSERT -D_GLIBCXX_DEBUG_PEDASSERT -D_GLIBCXX_DEBUG_VERIFY")
endif() endif()
endif() endif()
include(ClangSanitizer)
endif() # COMPILER_IS_CLANG endif() # COMPILER_IS_CLANG
### Intel compiler ### Intel compiler
......
...@@ -9,12 +9,11 @@ macro(InstallDependencies TARGET INSTALL_COMPONENT) ...@@ -9,12 +9,11 @@ macro(InstallDependencies TARGET INSTALL_COMPONENT)
if(EXISTS ${TARGET_EXE}) if(EXISTS ${TARGET_EXE})
include(GetPrerequisites) include(GetPrerequisites)
# arg3: exclude system, arg4: recursive # arg3: exclude system, arg4: recursive
get_prerequisites(${TARGET_EXE} TARGET_DEPENDENCIES 1 1 "" "") get_prerequisites(${TARGET_EXE} TARGET_DEPENDENCIES 1 0 "" "")
message(STATUS "${TARGET_EXE} dependencies:") message(STATUS "${TARGET_EXE} dependencies:")
foreach(DEPENDENCY ${TARGET_DEPENDENCIES}) foreach(DEPENDENCY ${TARGET_DEPENDENCIES})
if(NOT ${DEPENDENCY} MATCHES "@loader_path") if(NOT ${DEPENDENCY} MATCHES "@loader_path")
gp_resolve_item("/" "${DEPENDENCY}" ${TARGET_EXE} gp_resolve_item("${TARGET_EXE}" "${DEPENDENCY}" "" "" DEPENDENCY_PATH)
"/usr/local/lib;/;${VTK_DIR};/usr/lib64;" DEPENDENCY_PATH)
get_filename_component(RESOLVED_DEPENDENCY_PATH "${DEPENDENCY_PATH}" REALPATH) get_filename_component(RESOLVED_DEPENDENCY_PATH "${DEPENDENCY_PATH}" REALPATH)
string(TOLOWER ${DEPENDENCY} DEPENDENCY_LOWER) string(TOLOWER ${DEPENDENCY} DEPENDENCY_LOWER)
set(DEPENDENCY_PATHS ${DEPENDENCY_PATHS} ${RESOLVED_DEPENDENCY_PATH}) set(DEPENDENCY_PATHS ${DEPENDENCY_PATHS} ${RESOLVED_DEPENDENCY_PATH})
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment