cmake: build&run tests (sortof)
[awesomized/libmemcached] / CMakeLists.txt
1 cmake_minimum_required(VERSION 3.9..3.16)
2
3 if(${CMAKE_VERSION} VERSION_LESS 3.12)
4 cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
5 endif()
6
7 project(libmemcached
8 VERSION 1.99
9 DESCRIPTION "libmemcached https://github.com/m6w6/libmemcached"
10 )
11
12 set(CMAKE_CXX_STANDARD 11)
13 set(CMAKE_CXX_STANDARD_REQUIRED ON)
14 set(CMAKE_POSITION_INDEPENDENT_CODE ON)
15
16 include(Config.cmake)
17 include(Include.cmake)
18
19 find_package(Threads REQUIRED)
20 set(THREADS_PREFER_PTHREAD_FLAG ON)
21
22 find_library(HAVE_LIBSASL NAMES sasl sasl2)
23 check_header(sasl/sasl.h)
24
25 check_header(arpa/inet.h)
26 check_header(dlfcn.h)
27 check_header(errno.h)
28 check_header(execinfo.h)
29 check_header(fcntl.h)
30 check_header(io.h)
31 check_header(limits.h)
32 check_header(netdb.h)
33 check_header(poll.h)
34 check_header(stddef.h)
35 check_header(stdlib.h)
36 check_header(strings.h)
37 check_header(sys/socket.h)
38 check_header(sys/time.h)
39 check_header(sys/types.h)
40 check_header(sys/un.h)
41 check_header(sys/wait.h)
42 check_header(time.h)
43 check_header(umem.h)
44 check_header(unistd.h)
45 check_header(winsock2.h)
46 check_header(ws2tcpip.h)
47
48 check_decl(fcntl fcntl.h)
49 check_decl(htonll arpa/inet.h)
50 check_decl(MSG_DONTWAIT sys/socket.h)
51 check_decl(MSG_MORE sys/socket.h)
52 check_decl(MSG_NOSIGNAL sys/socket.h)
53 check_decl(rcvtimeo sys/socket.h)
54 check_decl(sndtimeo sys/socket.h)
55 check_decl(strerror_r string.h)
56 check_decl(strerror string.h)
57 check_decl(abi::__cxa_demangle cxxabi.h)
58 set(HAVE_GCC_ABI_DEMANGLE ${HAVE_ABI____CXA_DEMANGLE})
59
60 check_type(in_port_t netinet/in.h)
61
62 check_header(cstdint)
63 check_header(cinttypes)
64
65 check_debug()
66
67 include_directories(${CMAKE_BINARY_DIR})
68 set(AUTOHEADER_FILE mem_config.h)
69
70 set(CLIENTS
71 memcapable
72 memcat
73 memcp
74 memdump
75 memerror
76 memexist
77 memflush
78 memparse
79 memping
80 memrm
81 memslap
82 memstat
83 memtouch
84 )
85
86 add_subdirectory(clients)
87 add_subdirectory(libhashkit)
88 add_subdirectory(libhashkit-1.0)
89 add_subdirectory(libmemcached)
90 add_subdirectory(libmemcached-1.0)
91 add_subdirectory(libmemcachedutil)
92
93
94 include(CTest)
95 enable_testing()
96 add_subdirectory(libtest)
97 add_subdirectory(tests)
98
99 add_subdirectory(docs)
100
101 # keep last
102 configure_file(mem_config.h.in ${CMAKE_BINARY_DIR}/${AUTOHEADER_FILE} @ONLY)