WiP cmake-ify
[awesomized/libmemcached] / Include.cmake
1
2 include(CheckTypeSize)
3 include(CheckIncludeFileCXX)
4 include(CheckCXXSymbolExists)
5 include(CheckCXXCompilerFlag)
6
7 function(safe_string STRING OUTPUT)
8 string(REGEX REPLACE "[^0-9a-zA-Z_]" "_" HEADER_SAFE ${STRING})
9 string(TOUPPER "${HEADER_SAFE}" HEADER_DEFN)
10 set(${OUTPUT} ${HEADER_DEFN} PARENT_SCOPE)
11 endfunction(safe_string)
12
13 function(define_cpp DEF)
14 safe_string(${DEF} CNST)
15 add_compile_definitions(HAVE_${CNST}=1)
16 endfunction(define_cpp)
17
18 function(check_header HEADER_PATH)
19 safe_string(${HEADER_PATH} HEADER_CONST)
20 check_include_file_cxx(${HEADER_PATH} HAVE_${HEADER_CONST})
21 endfunction(check_header)
22
23 function(check_decl DECL HEADER)
24 safe_string(${DECL} DECL_CONST)
25 check_cxx_symbol_exists(${DECL} ${HEADER} HAVE_${DECL_CONST})
26 endfunction(check_decl)
27
28 function(check_type TYPE HEADER)
29 safe_string(${TYPE} TYPE_CONST)
30 SET(CMAKE_EXTRA_INCLUDE_FILES ${HEADER})
31 check_type_size(${TYPE} ${TYPE_CONST})
32 SET(CMAKE_EXTRA_INCLUDE_FILES)
33 endfunction(check_type)
34
35 function(check_debug)
36 if(${CMAKE_BUILD_TYPE} STREQUAL Debug)
37 add_compile_definitions(DEBUG=1)
38 add_compile_options(-Wall -Wextra)
39 endif()
40 endfunction(check_debug)