github.com/rohankumardubey/aresdb@v0.0.2-0.20190517170215-e54e3ca06b9c/rdkafka.cmake (about)

     1  # Build only the static C library
     2  # Does not build C++ library
     3  # Does not build shared libraries
     4  # Does not run tests
     5  # Does not generate documentation
     6  
     7  
     8  # Protect multiple-inclusion of this CMake file
     9  if( NOT TARGET rdkafka::rdkafka )
    10  
    11  # librdkafka depends on pthread and zlib
    12  find_package(Threads REQUIRED)
    13  find_package(ZLIB    REQUIRED)  # sudo apt install zlib1g-dev
    14  
    15  # The librdkafka build is based on tools './configure' and 'make'
    16  include(ExternalProject)
    17  ExternalProject_Add(   rdkafka
    18  #   DEPENDS            Threads::Threads ZLIB::ZLIB
    19      SOURCE_DIR         ${CMAKE_CURRENT_LIST_DIR}/thirdparty/librdkafka
    20      BUILD_IN_SOURCE    1
    21  #   UPDATE_COMMAND     echo "Full clean (make clean)" && make clean && rm -f Makefile.config config.cache config.h config.log config.log.old rdkafka.pc
    22      UPDATE_COMMAND     echo "Full clean (make distclean)" && make distclean
    23      CONFIGURE_COMMAND  ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/librdkafka/configure
    24                         #--prefix=${CMAKE_BINARY_DIR}
    25                         --prefix=${CMAKE_CURRENT_SOURCE_DIR}
    26                         --cc=${CMAKE_C_COMPILER}
    27                         --cxx=${CMAKE_CXX_COMPILER}
    28  #                      --arch=${MARCH}
    29                         --CFLAGS=${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE}}      # TODO(olibre): Retrieve correct flags set by
    30                         --CXXFLAGS=${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}}  # add_compile_options() and add_definitions()
    31                         --LDFLAGS=${CMAKE_STATIC_LINKER_FLAGS}
    32                         --ARFLAGS=${CMAKE_STATIC_LINKER_FLAGS}
    33                         --enable-static
    34      BUILD_COMMAND      echo "Build only librdkafka.a (make librdkafka.a -j4) => No librdkafka++ No shared library No check" &&
    35                         #make -C src librdkafka.a -j4
    36                         make
    37      INSTALL_COMMAND    echo "Install only librdkafka.a" &&
    38                         make install
    39      BUILD_BYPRODUCTS   ${CMAKE_BINARY_DIR}/lib/librdkafka.a
    40  )
    41  
    42  # Target 'rdkafka::rdkafka' to define: lib-location, include-dir and dependencies
    43  add_library(           rdkafka::rdkafka STATIC IMPORTED GLOBAL )
    44  add_dependencies(      rdkafka::rdkafka rdkafka )
    45  set_target_properties( rdkafka::rdkafka PROPERTIES 
    46                         IMPORTED_LOCATION             ${CMAKE_CURRENT_SOURCE_DIR}/lib/librdkafka.a
    47                         INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/librdkafka/src
    48                         INTERFACE_LINK_LIBRARIES      "Threads::Threads;${ZLIB_LIBRARIES}") #ZLIB::ZLIB
    49  endif()
    50