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

View File

@@ -27,6 +27,8 @@ ExternalProject_Add(
find_package(Boost REQUIRED)
include_directories(${Boost_INCLUDE_DIRS})
find_package(RdKafka REQUIRED)
option(ENABLE_ZOOKEEPER "Whether to enable zookeeper support" ON)
if (ENABLE_ZOOKEEPER)
find_package(Zookeeper REQUIRED)

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;
}

View File

@@ -2,7 +2,7 @@ include_directories(${GOOGLETEST_INCLUDE})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../include/)
link_directories(${GOOGLETEST_LIBRARY})
link_libraries(cppkafka rdkafka gtest gtest_main pthread)
link_libraries(cppkafka ${RDKAFKA_LIBRARY} gtest gtest_main pthread)
set(KAFKA_TEST_INSTANCE "kafka-vm:9092"
CACHE STRING "The kafka instance to which to connect to run tests")