diff --git a/CMakeLists.txt b/CMakeLists.txt index b95e395..3c044c5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,17 +2,17 @@ cmake_minimum_required(VERSION 2.8.1) 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/") include_directories(${CMAKE_SOURCE_DIR}/include/cppkafka) -add_subdirectory(src) - set(GOOGLETEST_ROOT ${CMAKE_SOURCE_DIR}/third_party/googletest) set(GOOGLETEST_INCLUDE ${GOOGLETEST_ROOT}/googletest/include) set(GOOGLETEST_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/googletest) set(GOOGLETEST_LIBRARY ${GOOGLETEST_BINARY_DIR}/googletest) include(ExternalProject) + ExternalProject_Add( googletest DOWNLOAD_COMMAND "" @@ -22,12 +22,18 @@ ExternalProject_Add( "-Dgtest_force_shared_crt:bool=ON" INSTALL_COMMAND "" ) -# Make sure we build googletest before anything else -add_dependencies(cppkafka googletest) + +# Look for Boost (just need boost.optional headers here) +find_package(Boost REQUIRED) +include_directories(${Boost_INCLUDE_DIRS}) option(ENABLE_ZOOKEEPER "Whether to enable zookeeper support" ON) - if (ENABLE_ZOOKEEPER) + find_package(Zookeeper REQUIRED) + + message(STATUS "Found zookeeper library") + include_directories(${ZOOKEEPER_INCLUDE_DIR}) + set(CPPKAFKA_HAVE_ZOOKEEPER ON) endif() @@ -37,5 +43,8 @@ configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/include/cppkafka/config.h" ) +add_subdirectory(src) +# Make sure we build googletest before anything else +add_dependencies(cppkafka googletest) enable_testing() -add_subdirectory(tests) \ No newline at end of file +add_subdirectory(tests) diff --git a/cmake/FindZookeeper.cmake b/cmake/FindZookeeper.cmake new file mode 100644 index 0000000..c9c1981 --- /dev/null +++ b/cmake/FindZookeeper.cmake @@ -0,0 +1,33 @@ +find_path(ZOOKEEPER_ROOT_DIR + NAMES include/zookeeper/zookeeper.h +) + +find_path(ZOOKEEPER_INCLUDE_DIR + NAMES zookeeper/zookeeper.h + HINTS ${ZOOOKEEPER_ROOT_DIR}/include +) + +set (HINT_DIR ${ZOOKEEPER_ROOT_DIR}/lib) + +find_library(ZOOKEEPER_LIBRARY + NAMES zookeeper_mt zookeeper_st + HINTS ${HINT_DIR} +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(ZOOKEEPER DEFAULT_MSG + ZOOKEEPER_LIBRARY + 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 + ZOOKEEPER_LIBRARY +) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 2cdec40..5bbde04 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -19,7 +19,7 @@ add_definitions("-DKAFKA_TEST_INSTANCE=\"${KAFKA_TEST_INSTANCE}\"") add_definitions("-DZOOKEEPER_TEST_INSTANCE=\"${ZOOKEEPER_TEST_INSTANCE}\"") if (ENABLE_ZOOKEEPER) - link_libraries(zookeeper_mt) + link_libraries(${ZOOKEEPER_LIBRARY}) endif() create_test(consumer)