test: poll_timeout; see php-memcached-dev/php-memcached#531
[awesomized/libmemcached] / CMakeLists.txt
index e0de2a011c3e5640fef116dd266fb7b145a00a62..1396a42a587a35afee82ca9ab37c4caa283260ea 100644 (file)
@@ -1,74 +1,93 @@
-cmake_minimum_required(VERSION 3.9..3.16)
+cmake_minimum_required(VERSION 3.9...3.18)
 
 if(${CMAKE_VERSION} VERSION_LESS 3.12)
     cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
 endif()
 
-project(libmemcached
-        VERSION 1.99
-        DESCRIPTION "libmemcached https://github.com/m6w6/libmemcached"
+include(CMakeVersions.txt)
+
+project(libmemcached-awesome
+        VERSION "${LIBMEMCACHED_VERSION}"
+        DESCRIPTION "libmemcached-awesome, a C/C++ memcached client library"
         )
+set(PROJECT_HOMEPAGE_URL "https://github.com/awesomized/libmemcached")
+set(PROJECT_CONTACT "Michael Wallner <mike@php.net>")
 
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CXX_STANDARD 11)
 set(CMAKE_POSITION_INDEPENDENT_CODE ON)
 
-include(Config.cmake)
-include(Include.cmake)
-
-find_package(Threads REQUIRED)
-find_library(HAVE_LIBSASL NAMES sasl sasl2)
-check_header(sasl/sasl.h)
-
-check_header(arpa/inet.h)
-check_header(dlfcn.h)
-check_header(errno.h)
-check_header(execinfo.h)
-check_header(fcntl.h)
-check_header(io.h)
-check_header(limits.h)
-check_header(netdb.h)
-check_header(poll.h)
-check_header(stddef.h)
-check_header(stdlib.h)
-check_header(strings.h)
-check_header(sys/socket.h)
-check_header(sys/time.h)
-check_header(sys/types.h)
-check_header(sys/un.h)
-check_header(time.h)
-check_header(umem.h)
-check_header(unistd.h)
-check_header(winsock2.h)
-check_header(ws2tcpip.h)
-
-check_decl(fcntl fcntl.h)
-check_decl(htonll arpa/inet.h)
-check_decl(MSG_DONTWAIT sys/socket.h)
-check_decl(MSG_MORE sys/socket.h)
-check_decl(MSG_NOSIGNAL sys/socket.h)
-check_decl(rcvtimeo sys/socket.h)
-check_decl(sndtimeo sys/socket.h)
-check_decl(strerror_r string.h)
-check_decl(strerror string.h)
-check_decl(abi::__cxa_demangle cxxabi.h)
-set(HAVE_GCC_ABI_DEMANGLE ${HAVE_ABI____CXA_DEMANGLE})
-
-check_type(in_port_t netinet/in.h)
-
-check_header(cstdint)
-check_header(cinttypes)
-
-check_debug()
-
-include_directories(${CMAKE_BINARY_DIR})
-
-add_subdirectory(clients)
-add_subdirectory(libhashkit)
-add_subdirectory(libhashkit-1.0)
-add_subdirectory(libmemcached)
-add_subdirectory(libmemcached-1.0)
-add_subdirectory(libmemcachedutil)
-
-# keep last
-configure_file(mem_config.h.in ${CMAKE_BINARY_DIR}/mem_config.h @ONLY)
+set(GLOBAL_DEFINITIONS _GNU_SOURCE)
+
+include(CMakeConfig.txt)
+include(GNUInstallDirs)
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMake")
+
+if(BUILD_DOCS OR BUILD_DOCSONLY)
+    add_subdirectory(docs)
+endif()
+
+if(NOT BUILD_DOCSONLY)
+    include(CMake/_Include.cmake)
+
+    set(CLIENTS
+            capable
+            cat
+            cp
+            dump
+            error
+            exist
+            flush
+            parse
+            ping
+            rm
+            slap
+            stat
+            touch
+            )
+
+    add_subdirectory(include)
+    add_subdirectory(src)
+    add_subdirectory(contrib)
+    add_subdirectory(support)
+
+    # tests need c++17 support
+    add_subdirectory(test)
+
+    # keep last
+    configure_file(${CONFIGURE_FILE_IN} ${CONFIGURE_FILE_OUT} @ONLY)
+endif()
+
+list(APPEND PROJECT_CONFIG ${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_PROCESSOR})
+list(APPEND PROJECT_CONFIG ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION})
+list(APPEND PROJECT_CONFIG ${CMAKE_BUILD_TYPE})
+
+include(CPack.txt)
+
+install(FILES
+            AUTHORS
+            BUGS.md
+            ChangeLog-0.md
+            ChangeLog-1.0.md
+            ChangeLog-1.1.md
+            CONTRIBUTING.md
+            LICENSE
+            NEWS
+            README.md
+            TODO
+        COMPONENT doc
+        DESTINATION ${CMAKE_INSTALL_DOCDIR}/
+        )
+if(NOT WIN32)
+    # skip links on windows (cmake bug?)
+    install(FILES
+                ChangeLog
+                ChangeLog.md
+                COPYING
+            COMPONENT doc
+            DESTINATION ${CMAKE_INSTALL_DOCDIR}/
+            )
+endif()
+
+if(ENV{INVALID_CONFIGURATION})
+    message(FATAL_ERROR "invalid configuration -- giving up")
+endif()