Find rdkafka via cmake

This commit is contained in:
Matias Fontanini
2016-06-14 19:03:20 -07:00
parent 5dcf01c1fc
commit d90f039a87
5 changed files with 56 additions and 8 deletions

43
cmake/FindRdKafka.cmake Normal file
View File

@@ -0,0 +1,43 @@
find_path(RDKAFKA_ROOT_DIR
NAMES include/librdkafka/rdkafka.h
)
find_path(RDKAFKA_INCLUDE_DIR
NAMES librdkafka/rdkafka.h
HINTS ${RDKAFKA_ROOT_DIR}/include
)
set (HINT_DIR ${RDKAFKA_ROOT_DIR}/lib)
find_library(RDKAFKA_LIBRARY
NAMES rdkafka
HINTS ${HINT_DIR}
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(RDKAFKA DEFAULT_MSG
RDKAFKA_LIBRARY
RDKAFKA_INCLUDE_DIR
)
try_run(_rdkafka_version_check_run_result _rdkafka_version_check_compile_result
${CMAKE_CURRENT_BINARY_DIR}/cmake
${CMAKE_MODULE_PATH}/sources/check_rdkafka_version.cpp
CMAKE_FLAGS -DINCLUDE_DIRECTORIES:STRING=${RDKAFKA_INCLUDE_DIR}
-DLINK_LIBRARIES:STRING=${RDKAFKA_LIBRARY})
if (${_rdkafka_version_check_compile_result} STREQUAL "TRUE")
if (${_rdkafka_version_check_run_result} EQUAL 1)
message(STATUS "Found valid rdkafka version")
mark_as_advanced(
RDKAFKA_ROOT_DIR
RDKAFKA_INCLUDE_DIR
RDKAFKA_LIBRARY
)
else()
message(FATAL_ERROR "Invalid rdkafka version found (< 0.9)")
endif()
else()
message(FATAL_ERROR "Failed to find rdkafka")
endif()

View File

@@ -4,7 +4,7 @@ find_path(ZOOKEEPER_ROOT_DIR
find_path(ZOOKEEPER_INCLUDE_DIR
NAMES zookeeper/zookeeper.h
HINTS ${ZOOOKEEPER_ROOT_DIR}/include
HINTS ${ZOOKEEPER_ROOT_DIR}/include
)
set (HINT_DIR ${ZOOKEEPER_ROOT_DIR}/lib)
@@ -20,12 +20,6 @@ find_package_handle_standard_args(ZOOKEEPER DEFAULT_MSG
ZOOKEEPER_INCLUDE_DIR
)
include(CheckCXXSourceCompiles)
set(CMAKE_REQUIRED_LIBRARIES ${ZOOKEEPER_LIBRARY})
check_cxx_source_compiles("int main() { return 0; }" ZOOKEEPER_LINKS)
set(CMAKE_REQUIRED_LIBRARIES)
mark_as_advanced(
ZOOKEEPER_ROOT_DIR
ZOOKEEPER_INCLUDE_DIR

View File

@@ -0,0 +1,9 @@
#include <librdkafka/rdkafka.h>
int main() {
int version = rd_kafka_version();
int major = (version >> 32) & 0xff;
int minor = (version >> 24) & 0xff;
// We need version >= 0.9
return (major > 0 || minor >= 9) ? 0 : 1;
}