1 Star 0 Fork 0

依天丶/librdkafka

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
CMakeLists.txt 6.57 KB
一键复制 编辑 原始数据 按行查看 历史
cmake_minimum_required(VERSION 3.2)
include("packaging/cmake/parseversion.cmake")
parseversion("src/rdkafka.h")
project(RdKafka VERSION ${RDKAFKA_VERSION})
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/packaging/cmake/Modules/")
# Options. No 'RDKAFKA_' prefix to match old C++ code. {
# This option doesn't affect build in fact, only C code
# (see 'rd_kafka_version_str'). In CMake the build type feature usually used
# (like Debug, Release, etc.).
option(WITHOUT_OPTIMIZATION "Disable optimization" OFF)
option(ENABLE_DEVEL "Enable development asserts, checks, etc" OFF)
option(ENABLE_REFCNT_DEBUG "Enable refcnt debugging" OFF)
set(TRYCOMPILE_SRC_DIR "${CMAKE_CURRENT_LIST_DIR}/packaging/cmake/try_compile")
set(BUILT_WITH "CMAKE")
# Toolchain {
list(APPEND BUILT_WITH "${CMAKE_C_COMPILER_ID}")
list(APPEND BUILT_WITH "${CMAKE_CXX_COMPILER_ID}")
# }
# PkgConfig {
find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
set(WITH_PKGCONFIG ON)
list(APPEND BUILT_WITH "PKGCONFIG")
endif()
# }
# LIBM {
include(CheckLibraryExists)
check_library_exists(m pow "" WITH_HDRHISTOGRAM)
if(WITH_HDRHISTOGRAM)
list(APPEND BUILT_WITH "HDRHISTOGRAM")
endif()
# }
# ZLIB {
find_package(ZLIB QUIET)
if(ZLIB_FOUND)
set(with_zlib_default ON)
else()
set(with_zlib_default OFF)
endif()
option(WITH_ZLIB "With ZLIB" ${with_zlib_default})
if(WITH_ZLIB)
list(APPEND BUILT_WITH "ZLIB")
endif()
# }
# CURL {
find_package(CURL QUIET)
if(CURL_FOUND)
set(with_curl_default ON)
else()
set(with_curl_default OFF)
endif()
option(WITH_CURL "With CURL" ${with_curl_default})
if(WITH_CURL)
list(APPEND BUILT_WITH "CURL")
endif()
# }
# ZSTD {
find_package(ZSTD QUIET)
if(ZSTD_FOUND)
set(with_zstd_default ON)
else()
set(with_zstd_default OFF)
endif()
option(WITH_ZSTD "With ZSTD" ${with_zstd_default})
if(WITH_ZSTD)
list(APPEND BUILT_WITH "ZSTD")
endif()
# }
# LibDL {
try_compile(
WITH_LIBDL
"${CMAKE_CURRENT_BINARY_DIR}/try_compile"
"${TRYCOMPILE_SRC_DIR}/dlopen_test.c"
LINK_LIBRARIES "${CMAKE_DL_LIBS}"
)
if(WITH_LIBDL)
list(APPEND BUILT_WITH "LIBDL")
endif()
# }
# WITH_PLUGINS {
if(WITH_LIBDL OR WIN32)
set(with_plugins_default ON)
else()
set(with_plugins_default OFF)
endif()
option(WITH_PLUGINS "With plugin support" ${with_plugins_default})
if(WITH_PLUGINS)
list(APPEND BUILT_WITH "PLUGINS")
endif()
# }
# OpenSSL {
if(WITH_BUNDLED_SSL) # option from 'h2o' parent project
set(with_ssl_default ON)
else()
find_package(OpenSSL QUIET)
if(OpenSSL_FOUND)
set(with_ssl_default ON)
else()
set(with_ssl_default OFF)
endif()
endif()
option(WITH_SSL "With SSL" ${with_ssl_default})
if(WITH_SSL)
list(APPEND BUILT_WITH "SSL")
endif()
# }
# SASL {
if(WIN32)
set(with_sasl_default ON)
else()
if(PkgConfig_FOUND)
pkg_check_modules(SASL libsasl2)
if(SASL_FOUND)
set(with_sasl_default ON)
else()
try_compile(
WITH_SASL_CYRUS_BOOL
"${CMAKE_CURRENT_BINARY_DIR}/try_compile"
"${TRYCOMPILE_SRC_DIR}/libsasl2_test.c"
LINK_LIBRARIES "-lsasl2"
)
if(WITH_SASL_CYRUS_BOOL)
set(with_sasl_default ON)
set(SASL_LIBRARIES "-lsasl2")
else()
set(with_sasl_default OFF)
endif()
endif()
endif()
endif()
option(WITH_SASL "With SASL" ${with_sasl_default})
if(WITH_SASL)
if(SASL_FOUND)
link_directories(${SASL_LIBRARY_DIRS})
endif()
if(WITH_SSL)
set(WITH_SASL_SCRAM ON)
set(WITH_SASL_OAUTHBEARER ON)
list(APPEND BUILT_WITH "SASL_SCRAM SASL_OAUTHBEARER")
endif()
if(NOT WIN32)
set(WITH_SASL_CYRUS ON)
list(APPEND BUILT_WITH "SASL_CYRUS")
endif()
endif()
# }
if(WITH_SSL AND WITH_CURL)
set(WITH_OAUTHBEARER_OIDC ON)
endif()
# LZ4 {
option(ENABLE_LZ4_EXT "Enable external LZ4 library support" ON)
set(WITH_LZ4_EXT OFF)
if(ENABLE_LZ4_EXT)
find_package(LZ4)
if(LZ4_FOUND)
set(WITH_LZ4_EXT ON)
list(APPEND BUILT_WITH "LZ4_EXT")
else()
message(STATUS "Using bundled LZ4 implementation.")
endif()
endif()
# }
option(RDKAFKA_BUILD_STATIC "Build static rdkafka library" OFF)
option(RDKAFKA_BUILD_EXAMPLES "Build examples" ON)
option(RDKAFKA_BUILD_TESTS "Build tests" ON)
if(WIN32)
option(WITHOUT_WIN32_CONFIG "Avoid including win32_config.h on cmake builds" ON)
endif(WIN32)
# In:
# * TRYCOMPILE_SRC_DIR
# Out:
# * HAVE_ATOMICS_32
# * HAVE_ATOMICS_32_SYNC
# * HAVE_ATOMICS_64
# * HAVE_ATOMICS_64_SYNC
# * HAVE_REGEX
# * HAVE_STRNDUP
# * HAVE_PTHREAD_SETNAME_GNU
# * HAVE_PTHREAD_SETNAME_DARWIN
# * HAVE_PTHREAD_SETNAME_FREEBSD
# * WITH_C11THREADS
# * WITH_CRC32C_HW
# * LINK_ATOMIC
include("packaging/cmake/try_compile/rdkafka_setup.cmake")
if(WITH_C11THREADS)
list(APPEND BUILT_WITH "C11THREADS")
endif()
if(WITH_CRC32C_HW)
list(APPEND BUILT_WITH "CRC32C_HW")
endif()
set(GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated")
# In:
# * WITHOUT_OPTIMIZATION
# * ENABLE_DEVEL
# * ENABLE_REFCNT_DEBUG
# * HAVE_ATOMICS_32
# * HAVE_ATOMICS_32_SYNC
# * HAVE_ATOMICS_64
# * HAVE_ATOMICS_64_SYNC
# * WITH_ZLIB
# * WITH_SSL
# * WITH_SASL
# * HAVE_REGEX
# * HAVE_STRNDUP
# * HAVE_PTHREAD_SETNAME_GNU
# * HAVE_PTHREAD_SETNAME_DARWIN
# * HAVE_PTHREAD_SETNAME_FREEBSD
list(APPEND BUILT_WITH "SNAPPY")
list(APPEND BUILT_WITH "SOCKEM")
string(REPLACE ";" " " BUILT_WITH "${BUILT_WITH}")
configure_file("packaging/cmake/config.h.in" "${GENERATED_DIR}/config.h")
# Installation (https://github.com/forexample/package-example) {
include(GNUInstallDirs)
set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake")
set(project_version "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake")
set(targets_export_name "${PROJECT_NAME}Targets")
set(namespace "${PROJECT_NAME}::")
include(CMakePackageConfigHelpers)
# In:
# * targets_export_name
# * PROJECT_NAME
configure_package_config_file(
"packaging/cmake/Config.cmake.in"
"${project_config}"
INSTALL_DESTINATION "${config_install_dir}"
)
write_basic_package_version_file(
"${project_version}"
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion
)
install(
FILES "${project_config}" "${project_version}" "packaging/cmake/Modules/FindLZ4.cmake"
DESTINATION "${config_install_dir}"
)
install(
EXPORT "${targets_export_name}"
NAMESPACE "${namespace}"
DESTINATION "${config_install_dir}"
)
install(
FILES LICENSES.txt
DESTINATION "share/licenses/librdkafka"
)
add_subdirectory(src)
add_subdirectory(src-cpp)
if(RDKAFKA_BUILD_EXAMPLES)
add_subdirectory(examples)
endif()
if(RDKAFKA_BUILD_TESTS)
enable_testing()
add_subdirectory(tests)
endif()
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/xhji/librdkafka.git
git@gitee.com:xhji/librdkafka.git
xhji
librdkafka
librdkafka
master

搜索帮助

D67c1975 1850385 1daf7b77 1850385