X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=CMake%2F_Include.cmake;h=7466b4cab006a29244b316b50c24ab5d7d642016;hb=refs%2Fheads%2Ftest%2Fpoll_timeout;hp=a419d8dfdc0b023fff9106e7b3ef8635807764f9;hpb=2f289c64f625962d945ec3bee80f36bc5c61ee35;p=awesomized%2Flibmemcached diff --git a/CMake/_Include.cmake b/CMake/_Include.cmake index a419d8df..7466b4ca 100644 --- a/CMake/_Include.cmake +++ b/CMake/_Include.cmake @@ -1,12 +1,16 @@ include(_Configure) configure_init(${CMAKE_BINARY_DIR}/mem_config.h) +add_compile_definitions(${GLOBAL_DEFINITIONS}) +# list(TRANSFORM) requires >=3.12 +string(REPLACE ";" " -D" GLOBAL_DEFINITION_FLAGS "${GLOBAL_DEFINITIONS}") +set(GLOBAL_DEFINITION_FLAGS -D${GLOBAL_DEFINITION_FLAGS}) + if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) include(CTest) endif() include(CMakePushCheckState) -include(GNUInstallDirs) include(CMakePackageConfigHelpers) macro(make_have_identifier NAME ID) @@ -33,6 +37,7 @@ macro(check_symbol NAME HEADER) if(${ARGC} GREATER 1) string(APPEND CMAKE_REQUIRED_FLAGS " ${ARGV2}") endif() + list(APPEND CMAKE_REQUIRED_DEFINITIONS ${GLOBAL_DEFINITION_FLAGS}) check_symbol_exists(${NAME} ${HEADER} ${HAVE}) cmake_pop_check_state() endmacro() @@ -44,6 +49,7 @@ macro(check_cxx_symbol NAME HEADER) if(${ARGC} GREATER 1) string(APPEND CMAKE_REQUIRED_FLAGS " ${ARGN}") endif() + list(APPEND CMAKE_REQUIRED_DEFINITIONS ${GLOBAL_DEFINITION_FLAGS}) check_cxx_symbol_exists(${NAME} ${HEADER} ${HAVE}) cmake_pop_check_state() endmacro() @@ -55,6 +61,7 @@ macro(check_include HEADER) if(${ARGC} GREATER 1) string(APPEND CMAKE_REQUIRED_FLAGS " ${ARGN}") endif() + list(APPEND CMAKE_REQUIRED_DEFINITIONS ${GLOBAL_DEFINITION_FLAGS}) check_include_file(${HEADER} ${HAVE}) cmake_pop_check_state() endmacro() @@ -66,6 +73,7 @@ macro(check_cxx_include HEADER) if(${ARGC} GREATER 1) string(APPEND CMAKE_REQUIRED_FLAGS " ${ARGN}") endif() + list(APPEND CMAKE_REQUIRED_DEFINITIONS ${GLOBAL_DEFINITION_FLAGS}) check_include_file_cxx(${HEADER} ${HAVE}) cmake_pop_check_state() endmacro() @@ -77,18 +85,25 @@ macro(check_type TYPE) if(${ARGC} GREATER 1) list(APPEND CMAKE_EXTRA_INCLUDE_FILES ${ARGN}) endif() + list(APPEND CMAKE_REQUIRED_DEFINITIONS ${GLOBAL_DEFINITION_FLAGS}) check_type_size(${TYPE} ${HAVE}) cmake_pop_check_state() endmacro() include(CheckCSourceCompiles) macro(check_c_source SOURCE HAVE) configure_define(${HAVE}) + cmake_push_check_state() + list(APPEND CMAKE_REQUIRED_DEFINITIONS ${GLOBAL_DEFINITION_FLAGS}) check_c_source_compiles("${SOURCE}" ${HAVE}) + cmake_pop_check_state() endmacro() include(CheckCXXSourceCompiles) macro(check_cxx_source SOURCE HAVE) configure_define(${HAVE}) + cmake_push_check_state() + list(APPEND CMAKE_REQUIRED_DEFINITIONS ${GLOBAL_DEFINITION_FLAGS}) check_cxx_source_compiles("${SOURCE}" ${HAVE}) + cmake_pop_check_state() endmacro() include(CheckBacktrace) @@ -101,12 +116,26 @@ include(CheckThreads) include(CheckVisibility) include(InstallPublicHeaders) +function(pkgconfig_export VAR VAL) + get_property(PREV GLOBAL PROPERTY PKGCONFIG_${VAR}) + set_property(GLOBAL PROPERTY PKGCONFIG_${VAR} "${PREV} ${VAL}") +endfunction() +macro(pkgconfig_import VAR) + get_property(PKGCONFIG_${VAR} GLOBAL PROPERTY PKGCONFIG_${VAR}) +endmacro() + ## sasl configure_define_01(LIBMEMCACHED_WITH_SASL_SUPPORT) if(ENABLE_SASL) check_dependency(LIBSASL sasl2) if(HAVE_LIBSASL) set(LIBMEMCACHED_WITH_SASL_SUPPORT 1) + pkgconfig_export(REQUIRES libsasl2) + cmake_push_check_state() + set(CMAKE_REQUIRED_INCLUDES "${LIBSASL_INCLUDEDIR}") + set(CMAKE_REQUIRED_LIBRARIES "${LIBSASL_LIBRARIES}") + check_symbol(sasl_client_done sasl/sasl.h) + cmake_pop_check_state() endif() endif() @@ -121,6 +150,8 @@ check_include(dlfcn.h) check_include(getopt.h) check_include(libgen.h) check_include(netdb.h) +check_include(netinet/in.h) +check_include(netinet/tcp.h) check_include(poll.h) check_include(strings.h) check_include(sys/poll.h) @@ -133,8 +164,12 @@ check_type(in_port_t netinet/in.h) check_type(pid_t sys/types.h) check_type(ssize_t sys/types.h) check_type("struct msghdr" sys/socket.h) +check_type("struct timespec" time.h) check_cxx_symbol(abi::__cxa_demangle cxxabi.h) +check_symbol(CLOCK_MONOTONIC time.h) +check_symbol(clock_gettime time.h) +check_symbol(ERESTART errno.h) check_symbol(fcntl fcntl.h) check_symbol(gettimeofday sys/time.h) check_symbol(htonll arpa/inet.h)