X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=CMakeLists.txt;h=1396a42a587a35afee82ca9ab37c4caa283260ea;hb=92d18858b417309f6bdee6bce464a4f3d6a375fd;hp=e0de2a011c3e5640fef116dd266fb7b145a00a62;hpb=4c0ac29dbad968b0a09fe4dc85c555627d3ac35a;p=awesomized%2Flibmemcached diff --git a/CMakeLists.txt b/CMakeLists.txt index e0de2a01..1396a42a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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 ") -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()