skip extranous athor section in manpages
[m6w6/libmemcached] / Include.cmake
1
2 set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake)
3
4 include(CheckTypeSize)
5 include(CheckCSourceRuns)
6 include(CheckIncludeFileCXX)
7 include(CheckCXXSymbolExists)
8 include(CheckCXXCompilerFlag)
9 include(CheckCXXSourceRuns)
10
11 function(safe_string STRING OUTPUT)
12 string(REGEX REPLACE "[^0-9a-zA-Z_]" "_" HEADER_SAFE ${STRING})
13 string(TOUPPER "${HEADER_SAFE}" HEADER_DEFN)
14 set(${OUTPUT} ${HEADER_DEFN} PARENT_SCOPE)
15 endfunction(safe_string)
16
17 function(define_cpp DEF)
18 safe_string(${DEF} CNST)
19 add_compile_definitions(HAVE_${CNST}=1)
20 endfunction(define_cpp)
21
22 function(check_header HEADER_PATH)
23 safe_string(${HEADER_PATH} HEADER_CONST)
24 check_include_file_cxx(${HEADER_PATH} HAVE_${HEADER_CONST})
25 endfunction(check_header)
26
27 function(check_decl DECL HEADER)
28 safe_string(${DECL} DECL_CONST)
29 check_cxx_symbol_exists(${DECL} ${HEADER} HAVE_${DECL_CONST})
30 endfunction(check_decl)
31
32 function(check_type TYPE HEADER)
33 safe_string(${TYPE} TYPE_CONST)
34 SET(CMAKE_EXTRA_INCLUDE_FILES ${HEADER})
35 check_type_size(${TYPE} ${TYPE_CONST} LANGUAGE CXX)
36 SET(CMAKE_EXTRA_INCLUDE_FILES)
37 endfunction(check_type)
38
39 function(check_debug)
40 if(${CMAKE_BUILD_TYPE} STREQUAL Debug)
41 add_compile_definitions(DEBUG=1)
42 add_compile_options(-Wall -Wextra)
43 endif()
44 endfunction(check_debug)
45
46 function(check_stdatomic)
47 check_cxx_source_runs(
48 "#include <atomic>
49 int main() {
50 std::atomic<int> i(0);
51 return atomic_fetch_add(&i,1);
52 }"
53 HAVE_CXX_STDATOMIC)
54 check_c_source_runs(
55 "#include <stdatomic.h>
56 int main() {
57 atomic_int i;
58 atomic_init(&i, 0);
59 return atomic_fetch_add(&i,1);
60 }"
61 HAVE_C_STDATOMIC)
62 endfunction(check_atomic_builtins)