diff --git a/CMakeLists.txt b/CMakeLists.txt index a0508adfd..f6abac6b4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,6 +33,7 @@ include(CheckCCompilerFlag) include(CheckCXXCompilerFlag) include(CheckLinkerFlag) include(CheckLibraryExists) +include(CheckFunctionExists) if (IOS) INCLUDE(CmakeLists_IOS.txt) @@ -80,6 +81,22 @@ function (add_linker_flag_if_supported flag var) endif() endfunction() +function (add_definition_if_function_found function var) + string(REPLACE "-" "_" supported ${function}_function) + check_function_exists(${function} ${supported}) + if(${${supported}}) + add_definitions("-D${var}") + endif() +endfunction() + +function (add_definition_if_library_exists library function header var) + string(REPLACE "-" "_" supported ${function}_library) + check_library_exists(${library} ${function} ${header} ${supported}) + if(${${supported}}) + add_definitions("-D${var}") + endif() +endfunction() + if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE) message(STATUS "Setting default build type: ${CMAKE_BUILD_TYPE}") @@ -395,6 +412,10 @@ if(STATIC AND NOT IOS) endif() endif() +add_definition_if_library_exists(c memset_s "string.h" HAVE_MEMSET_S) +add_definition_if_library_exists(c explicit_bzero "strings.h" HAVE_EXPLICIT_BZERO) +add_definition_if_function_found(strptime HAVE_STRPTIME) + add_definitions(-DAUTO_INITIALIZE_EASYLOGGINGPP) # Generate header for embedded translations @@ -867,10 +888,3 @@ option(INSTALL_VENDORED_LIBUNBOUND "Install libunbound binary built from source CHECK_C_COMPILER_FLAG(-std=c11 HAVE_C11) - -include(CheckLibraryExists) -include(CheckFunctionExists) - -check_library_exists(c memset_s "string.h" HAVE_MEMSET_S) -check_library_exists(c explicit_bzero "strings.h" HAVE_EXPLICIT_BZERO) -check_function_exists(strptime HAVE_STRPTIME)