Check for rd_kafka_commited to check for valid rdkafka version

This commit is contained in:
Matias Fontanini
2016-06-17 15:47:26 -07:00
parent ac90aebfe5
commit a12c0eb1f8
3 changed files with 18 additions and 28 deletions

View File

@@ -4,6 +4,10 @@ project(cppkafka)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/")
# Set output directories
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
include_directories(${CMAKE_SOURCE_DIR}/include/cppkafka)
# Look for Boost (just need boost.optional headers here)
@@ -41,4 +45,4 @@ if(EXISTS "${GOOGLETEST_ROOT}/CMakeLists.txt")
add_dependencies(cppkafka googletest)
else()
message(STATUS "Disabling tests")
endif()
endif()

View File

@@ -20,24 +20,19 @@ find_package_handle_standard_args(RDKAFKA DEFAULT_MSG
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})
include(CheckFunctionExists)
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()
set(CMAKE_REQUIRED_LIBRARIES ${RDKAFKA_LIBRARY})
check_function_exists(rd_kafka_committed HAVE_VALID_KAFKA_VERSION)
set(CMAKE_REQUIRED_LIBRARIES)
if (HAVE_VALID_KAFKA_VERSION)
message(STATUS "Found valid rdkafka version")
mark_as_advanced(
RDKAFKA_ROOT_DIR
RDKAFKA_INCLUDE_DIR
RDKAFKA_LIBRARY
)
else()
message(FATAL_ERROR "Failed to find rdkafka")
message(FATAL_ERROR "Failed to find valid rdkafka version")
endif()

View File

@@ -1,9 +0,0 @@
#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;
}