Merge pull request #140 from hussainnaqvee/patch-1
[awesomized/libmemcached] / CMake / _Include.cmake
index 39442dc2901cfc5cd8b6499d85a0de5f64e06088..7466b4cab006a29244b316b50c24ab5d7d642016 100644 (file)
@@ -1,6 +1,11 @@
 include(_Configure)
 configure_init(${CMAKE_BINARY_DIR}/mem_config.h)
 
+add_compile_definitions(${GLOBAL_DEFINITIONS})
+# list(TRANSFORM) requires >=3.12
+string(REPLACE ";" " -D" GLOBAL_DEFINITION_FLAGS "${GLOBAL_DEFINITIONS}")
+set(GLOBAL_DEFINITION_FLAGS -D${GLOBAL_DEFINITION_FLAGS})
+
 if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
     include(CTest)
 endif()
@@ -32,6 +37,7 @@ macro(check_symbol NAME HEADER)
     if(${ARGC} GREATER 1)
         string(APPEND CMAKE_REQUIRED_FLAGS " ${ARGV2}")
     endif()
+    list(APPEND CMAKE_REQUIRED_DEFINITIONS ${GLOBAL_DEFINITION_FLAGS})
     check_symbol_exists(${NAME} ${HEADER} ${HAVE})
     cmake_pop_check_state()
 endmacro()
@@ -43,6 +49,7 @@ macro(check_cxx_symbol NAME HEADER)
     if(${ARGC} GREATER 1)
         string(APPEND CMAKE_REQUIRED_FLAGS " ${ARGN}")
     endif()
+    list(APPEND CMAKE_REQUIRED_DEFINITIONS ${GLOBAL_DEFINITION_FLAGS})
     check_cxx_symbol_exists(${NAME} ${HEADER} ${HAVE})
     cmake_pop_check_state()
 endmacro()
@@ -54,6 +61,7 @@ macro(check_include HEADER)
     if(${ARGC} GREATER 1)
         string(APPEND CMAKE_REQUIRED_FLAGS " ${ARGN}")
     endif()
+    list(APPEND CMAKE_REQUIRED_DEFINITIONS ${GLOBAL_DEFINITION_FLAGS})
     check_include_file(${HEADER} ${HAVE})
     cmake_pop_check_state()
 endmacro()
@@ -65,6 +73,7 @@ macro(check_cxx_include HEADER)
     if(${ARGC} GREATER 1)
         string(APPEND CMAKE_REQUIRED_FLAGS " ${ARGN}")
     endif()
+    list(APPEND CMAKE_REQUIRED_DEFINITIONS ${GLOBAL_DEFINITION_FLAGS})
     check_include_file_cxx(${HEADER} ${HAVE})
     cmake_pop_check_state()
 endmacro()
@@ -76,18 +85,25 @@ macro(check_type TYPE)
     if(${ARGC} GREATER 1)
         list(APPEND CMAKE_EXTRA_INCLUDE_FILES ${ARGN})
     endif()
+    list(APPEND CMAKE_REQUIRED_DEFINITIONS ${GLOBAL_DEFINITION_FLAGS})
     check_type_size(${TYPE} ${HAVE})
     cmake_pop_check_state()
 endmacro()
 include(CheckCSourceCompiles)
 macro(check_c_source SOURCE HAVE)
     configure_define(${HAVE})
+    cmake_push_check_state()
+    list(APPEND CMAKE_REQUIRED_DEFINITIONS ${GLOBAL_DEFINITION_FLAGS})
     check_c_source_compiles("${SOURCE}" ${HAVE})
+    cmake_pop_check_state()
 endmacro()
 include(CheckCXXSourceCompiles)
 macro(check_cxx_source SOURCE HAVE)
     configure_define(${HAVE})
+    cmake_push_check_state()
+    list(APPEND CMAKE_REQUIRED_DEFINITIONS ${GLOBAL_DEFINITION_FLAGS})
     check_cxx_source_compiles("${SOURCE}" ${HAVE})
+    cmake_pop_check_state()
 endmacro()
 
 include(CheckBacktrace)
@@ -100,12 +116,26 @@ include(CheckThreads)
 include(CheckVisibility)
 include(InstallPublicHeaders)
 
+function(pkgconfig_export VAR VAL)
+    get_property(PREV GLOBAL PROPERTY PKGCONFIG_${VAR})
+    set_property(GLOBAL PROPERTY PKGCONFIG_${VAR} "${PREV} ${VAL}")
+endfunction()
+macro(pkgconfig_import VAR)
+    get_property(PKGCONFIG_${VAR} GLOBAL PROPERTY PKGCONFIG_${VAR})
+endmacro()
+
 ## sasl
 configure_define_01(LIBMEMCACHED_WITH_SASL_SUPPORT)
 if(ENABLE_SASL)
     check_dependency(LIBSASL sasl2)
     if(HAVE_LIBSASL)
         set(LIBMEMCACHED_WITH_SASL_SUPPORT 1)
+        pkgconfig_export(REQUIRES libsasl2)
+        cmake_push_check_state()
+        set(CMAKE_REQUIRED_INCLUDES "${LIBSASL_INCLUDEDIR}")
+        set(CMAKE_REQUIRED_LIBRARIES "${LIBSASL_LIBRARIES}")
+        check_symbol(sasl_client_done sasl/sasl.h)
+        cmake_pop_check_state()
     endif()
 endif()
 
@@ -134,8 +164,11 @@ check_type(in_port_t netinet/in.h)
 check_type(pid_t sys/types.h)
 check_type(ssize_t sys/types.h)
 check_type("struct msghdr" sys/socket.h)
+check_type("struct timespec" time.h)
 
 check_cxx_symbol(abi::__cxa_demangle cxxabi.h)
+check_symbol(CLOCK_MONOTONIC time.h)
+check_symbol(clock_gettime time.h)
 check_symbol(ERESTART errno.h)
 check_symbol(fcntl fcntl.h)
 check_symbol(gettimeofday sys/time.h)