more cleanup
[m6w6/libmemcached] / CMake / _Include.cmake
index c09936b9c9b5359750848c1d36b7e2a48ee18192..6a5598d9235edae1ef476d3aa609fdd797ce15d8 100644 (file)
+include(_Configure)
+configure_init(${CMAKE_BINARY_DIR}/mem_config.h)
 
-# globals
 if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
     include(CTest)
 endif()
+
+include(CMakePushCheckState)
 include(GNUInstallDirs)
 include(CMakePackageConfigHelpers)
 
-if(CMAKE_HOST_SYSTEM_NAME MATCHES "BSD")
-    find_program(PKGCONF pkgconf)
-    if(PKGCONF)
-        set(PKG_CONFIG_EXECUTABLE ${PKGCONF})
+macro(make_have_identifier NAME ID)
+    string(MAKE_C_IDENTIFIER ${NAME} _make_have_identifier)
+    string(TOUPPER ${_make_have_identifier} _make_have_identifier)
+    set(${ID} HAVE_${_make_have_identifier})
+endmacro()
+
+include(CheckCCompilerFlag)
+macro(check_flag FLAG HAVE)
+    configure_define(${HAVE})
+    check_c_compiler_flag("${FLAG}" ${HAVE})
+endmacro()
+include(CheckCXXCompilerFlag)
+macro(check_cxx_flag FLAG HAVE)
+    configure_define(${HAVE})
+    check_cxx_compiler_flag("${FLAG}" ${HAVE})
+endmacro()
+include(CheckSymbolExists)
+macro(check_symbol NAME HEADER)
+    make_have_identifier(${NAME} HAVE)
+    configure_define(${HAVE})
+    cmake_push_check_state()
+    if(${ARGC} GREATER 1)
+        string(APPEND CMAKE_REQUIRED_FLAGS " ${ARGV2}")
     endif()
-endif()
-find_package(PkgConfig)
-set(THREADS_PREFER_PTHREAD_FLAG ON)
-find_package(Threads REQUIRED)
-
-# locals
-include(InstallPublicHeaders)
-include(SafeString)
-include(CheckDebug)
-include(CheckDecl)
-include(CheckDependency)
-include(CheckHeader)
-include(CheckCompiles)
-include(CheckType)
-include(TestBigEndian)
-include(CheckByteswap)
-
-# configuration
-
-## debug
-check_debug()
-
-## dtrace
-include(EnableDtrace)
-if(ENABLE_DTRACE)
-    find_package(DTrace)
-    if(DTRACE_EXECUTABLE)
-        set(HAVE_DTRACE 1)
-    else()
-        message(WARNING "The dtrace command is required to enable dtrace/systemtap support.")
+    check_symbol_exists(${NAME} ${HEADER} ${HAVE})
+    cmake_pop_check_state()
+endmacro()
+include(CheckCXXSymbolExists)
+macro(check_cxx_symbol NAME HEADER)
+    make_have_identifier(${NAME} HAVE)
+    configure_define(${HAVE})
+    cmake_push_check_state()
+    if(${ARGC} GREATER 1)
+        string(APPEND CMAKE_REQUIRED_FLAGS " ${ARGN}")
     endif()
-endif()
+    check_cxx_symbol_exists(${NAME} ${HEADER} ${HAVE})
+    cmake_pop_check_state()
+endmacro()
+include(CheckIncludeFile)
+macro(check_include HEADER)
+    make_have_identifier(${HEADER} HAVE)
+    configure_define(${HAVE})
+    cmake_push_check_state()
+    if(${ARGC} GREATER 1)
+        string(APPEND CMAKE_REQUIRED_FLAGS " ${ARGN}")
+    endif()
+    check_include_file(${HEADER} ${HAVE})
+    cmake_pop_check_state()
+endmacro()
+include(CheckIncludeFileCXX)
+macro(check_cxx_include HEADER)
+    make_have_identifier(${HEADER} HAVE)
+    configure_define(${HAVE})
+    cmake_push_check_state()
+    if(${ARGC} GREATER 1)
+        string(APPEND CMAKE_REQUIRED_FLAGS " ${ARGN}")
+    endif()
+    check_include_file_cxx(${HEADER} ${HAVE})
+    cmake_pop_check_state()
+endmacro()
+include(CheckTypeSize)
+macro(check_type TYPE)
+    make_have_identifier(${TYPE} HAVE)
+    configure_define(${HAVE})
+    cmake_push_check_state()
+    if(${ARGC} GREATER 1)
+        list(APPEND CMAKE_EXTRA_INCLUDE_FILES ${ARGN})
+    endif()
+    check_type_size(${TYPE} ${HAVE})
+    cmake_pop_check_state()
+endmacro()
+include(CheckCSourceCompiles)
+macro(check_c_source SOURCE HAVE)
+    configure_define(${HAVE})
+    check_c_source_compiles("${SOURCE}" ${HAVE})
+endmacro()
+include(CheckCXXSourceCompiles)
+macro(check_cxx_source SOURCE HAVE)
+    configure_define(${HAVE})
+    check_cxx_source_compiles("${SOURCE}" ${HAVE})
+endmacro()
+
+include(CheckBacktrace)
+include(CheckByteswap)
+include(CheckDependency)
+include(CheckDtrace)
+include(CheckPkgconf)
+include(CheckDebug)
+include(CheckThreads)
+include(CheckVisibility)
+include(InstallPublicHeaders)
 
 ## sasl
+configure_define_01(LIBMEMCACHED_WITH_SASL_SUPPORT)
 if(ENABLE_SASL)
-    check_dependency(LIBSASL sasl2 sasl/sasl.h)
+    check_dependency(LIBSASL sasl2)
     if(HAVE_LIBSASL)
         set(LIBMEMCACHED_WITH_SASL_SUPPORT 1)
     endif()
 endif()
 
 ## hashes
-if(ENABLE_HASH_FNV64)
-    set(HAVE_FNV64_HASH 1)
-endif()
-if(ENABLE_HASH_MURMUR)
-    set(HAVE_MURMUR_HASH 1)
-endif()
-if(ENABLE_HASH_HSIEH)
-    set(HAVE_HSIEH_HASH 1)
-endif()
-
-# system checks
-
-test_big_endian(WORDS_BIGENDIAN)
-check_byteswap()
+configure_set(HAVE_FNV64_HASH ${ENABLE_HASH_FNV64})
+configure_set(HAVE_MURMUR_HASH ${ENABLE_HASH_MURMUR})
+configure_set(HAVE_HSIEH_HASH ${ENABLE_HASH_HSIEH})
 
 # most of the following checks are due to mingw or msvc; see gnulib
-check_header(arpa/inet.h)
-check_header(dlfcn.h)
-check_header(netdb.h)
-check_header(poll.h)
-check_header(strings.h)
-check_header(sys/socket.h)
-check_header(sys/time.h)
-check_header(sys/un.h)
-check_header(time.h)
-check_header(unistd.h)
+check_include(arpa/inet.h)
+check_include(dlfcn.h)
+check_include(netdb.h)
+check_include(poll.h)
+check_include(strings.h)
+check_include(sys/socket.h)
+check_include(sys/time.h)
+check_include(sys/un.h)
+check_include(unistd.h)
 
 if(WIN32)
-    check_header(io.h)
-    check_header(winsock2.h)
-    check_header(ws2tcpip.h)
+    check_include(io.h)
+    check_include(winsock2.h)
+    check_include(ws2tcpip.h)
 endif()
 
-check_decl(abi::__cxa_demangle cxxabi.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(SO_RCVTIMEO sys/socket.h)
-check_decl(SO_SNDTIMEO sys/socket.h)
-check_decl(setenv stdlib.h)
-check_decl(strerror string.h)
-check_decl(strerror_r string.h)
-
 check_type(in_port_t netinet/in.h)
 
-check_compiles(HAVE_STRERROR_R_CHAR_P "
-        char x, y = *strerror_r(0,&x,1);"
-        string.h)
-
-
-find_package(Backtrace)
-if(Backtrace_FOUND)
-    set(HAVE_BACKTRACE 1)
-    set(BACKTRACE BACKTRACE)
-    add_library(BACKTRACE INTERFACE IMPORTED)
-    set_target_properties(BACKTRACE PROPERTIES
-            INTERFACE_LINK_LIBRARIES "${Backtrace_LIBRARIES}"
-            INTERFACE_INCLUDE_DIRECTORIES "${Backtrace_INCLUDE_DIR}")
-endif()
-
+check_cxx_symbol(abi::__cxa_demangle cxxabi.h)
+check_symbol(fcntl fcntl.h)
+check_symbol(htonll arpa/inet.h)
+check_symbol(MSG_DONTWAIT sys/socket.h)
+check_symbol(MSG_MORE sys/socket.h)
+check_symbol(MSG_NOSIGNAL sys/socket.h)
+check_symbol(SO_RCVTIMEO sys/socket.h)
+check_symbol(SO_SNDTIMEO sys/socket.h)
+check_symbol(setenv stdlib.h)
+check_symbol(strerror_r string.h)
+check_c_source("
+        #include <string.h>
+        int main() {
+            char x;
+            return *strerror_r(0, &x, 1);
+        }"
+        HAVE_STRERROR_R_CHAR_P
+)