prepare v1.1.4
[awesomized/libmemcached] / CMake / _Include.cmake
index 90ebc261b471b98ad893a62bc44d3219ef7132b0..7466b4cab006a29244b316b50c24ab5d7d642016 100644 (file)
@@ -1,8 +1,11 @@
-list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMake")
-
 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()
@@ -34,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()
@@ -45,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()
@@ -56,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()
@@ -67,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()
@@ -78,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)
@@ -102,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()
 
@@ -136,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)