diff options
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 3d73910c887a..6bb2622a8622 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,9 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 3.1.0 FATAL_ERROR) +CMAKE_MINIMUM_REQUIRED(VERSION 3.5.0 FATAL_ERROR) PROJECT(libucl C) SET(LIBUCL_VERSION_MAJOR 0) SET(LIBUCL_VERSION_MINOR 9) -SET(LIBUCL_VERSION_PATCH 2) +SET(LIBUCL_VERSION_PATCH 3) SET(LIBUCL_VERSION "${LIBUCL_VERSION_MAJOR}.${LIBUCL_VERSION_MINOR}.${LIBUCL_VERSION_PATCH}") @@ -19,6 +19,9 @@ OPTION(BUILD_SHARED_LIBS "Build Shared Libraries [default: OFF]" OFF) OPTION(ENABLE_LUA "Enable lua support [default: OFF]" OFF) OPTION(ENABLE_LUAJIT "Enable luajit support [default: OFF]" OFF) OPTION(ENABLE_UTILS "Enable building utility binaries [default: OFF]" OFF) +OPTION(ENABLE_SANITIZERS "Enable sanitizers (address, undefined, etc.) [default: OFF]" OFF) +SET(SANITIZE_TYPE "address" CACHE STRING "Type of sanitizer to use (address, thread, undefined, memory, leak)") +SET_PROPERTY(CACHE SANITIZE_TYPE PROPERTY STRINGS address thread undefined memory leak) # Find lua installation MACRO(FindLua) @@ -195,6 +198,23 @@ ENDIF(SUPPORT_WUNUSED_PARAMETER) SET( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_WARN_FLAGS}" ) +IF(ENABLE_SANITIZERS MATCHES "ON") + SET(SANITIZE_FLAGS "-fsanitize=${SANITIZE_TYPE} -fno-omit-frame-pointer -fno-optimize-sibling-calls") + SET(CMAKE_REQUIRED_FLAGS "${SANITIZE_FLAGS}") + SET(CMAKE_REQUIRED_LIBRARIES "${SANITIZE_FLAGS}") + CHECK_C_SOURCE_COMPILES("int main() { return 0; }" COMPILER_SUPPORTS_SANITIZE) + UNSET(CMAKE_REQUIRED_FLAGS) + UNSET(CMAKE_REQUIRED_LIBRARIES) + IF(COMPILER_SUPPORTS_SANITIZE) + MESSAGE(STATUS "Enabling sanitizer: ${SANITIZE_TYPE}") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${SANITIZE_FLAGS}") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${SANITIZE_FLAGS}") + SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${SANITIZE_FLAGS}") + ELSE() + MESSAGE(WARNING "Compiler does not support -fsanitize=${SANITIZE_TYPE}") + ENDIF() +ENDIF() + IF(ENABLE_URL_SIGN MATCHES "ON") IF(OPENSSL_FOUND) SET(HAVE_OPENSSL 1) @@ -258,10 +278,12 @@ IF(ENABLE_LUA MATCHES "ON") INCLUDE_DIRECTORIES("${LUA_INCLUDE_DIR}") ENDIF(NOT LUA_FOUND) ELSE(ENABLE_LUAJIT MATCHES "ON") - FindLua(VERSION_MAJOR "5" VERSION_MINOR "2" ROOT "${LUA_ROOT}") - IF(NOT LUA_FOUND) - FindLua(VERSION_MAJOR "5" VERSION_MINOR "1" ROOT "${LUA_ROOT}") - ENDIF(NOT LUA_FOUND) + FOREACH(LUA_MINOR RANGE 4 1 -1) + FindLua(VERSION_MAJOR "5" VERSION_MINOR ${LUA_MINOR} ROOT "${LUA_ROOT}") + IF(LUA_FOUND) + BREAK() + ENDIF(LUA_FOUND) + ENDFOREACH(LUA_MINOR RANGE 4 1 -1) IF(NOT LUA_FOUND) MESSAGE(FATAL_ERROR "Lua not found, lua support is required") ELSE(NOT LUA_FOUND) @@ -309,6 +331,9 @@ SET_TARGET_PROPERTIES(ucl PROPERTIES INSTALL(TARGETS ucl EXPORT uclConfig DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +ENABLE_TESTING() +ADD_SUBDIRECTORY(tests) + IF(ENABLE_UTILS MATCHES "ON") ADD_SUBDIRECTORY(utils) ENDIF() |
