Skip to content

Commit

Permalink
Write to librdkafka.a instead of librdkafka_windows.a
Browse files Browse the repository at this point in the history
Update CMakeLists.txt to only generate -static .pc files when building static lib
Run cmake-format on CMakeLists.txt
  • Loading branch information
neptoess committed Nov 3, 2020
1 parent 3d714b7 commit 1a589f6
Show file tree
Hide file tree
Showing 7 changed files with 161 additions and 215 deletions.
68 changes: 30 additions & 38 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,14 @@ parseversion("src/rdkafka.h")

project(RdKafka VERSION ${RDKAFKA_VERSION})

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/packaging/cmake/Modules/")
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.).
# 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)
Expand All @@ -36,7 +37,7 @@ endif()
include(CheckLibraryExists)
check_library_exists(m pow "" WITH_HDRHISTOGRAM)
if(WITH_HDRHISTOGRAM)
list(APPEND BUILT_WITH "HDRHISTOGRAM")
list(APPEND BUILT_WITH "HDRHISTOGRAM")
endif()
# }

Expand Down Expand Up @@ -68,11 +69,10 @@ endif()

# LibDL {
try_compile(
WITH_LIBDL
"${CMAKE_CURRENT_BINARY_DIR}/try_compile"
"${TRYCOMPILE_SRC_DIR}/dlopen_test.c"
LINK_LIBRARIES "${CMAKE_DL_LIBS}"
)
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()
Expand Down Expand Up @@ -117,11 +117,10 @@ else()
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"
)
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")
Expand Down Expand Up @@ -163,7 +162,8 @@ 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)
option(WITHOUT_WIN32_CONFIG "Avoid including win32_config.h on cmake builds"
ON)
endif(WIN32)

# In:
Expand Down Expand Up @@ -226,35 +226,27 @@ set(namespace "${PROJECT_NAME}::")
include(CMakePackageConfigHelpers)

# In:
# * targets_export_name
# * PROJECT_NAME
# * targets_export_name
# * PROJECT_NAME
configure_package_config_file(
"packaging/cmake/Config.cmake.in"
"${project_config}"
INSTALL_DESTINATION "${config_install_dir}"
)
"packaging/cmake/Config.cmake.in" "${project_config}"
INSTALL_DESTINATION "${config_install_dir}")

write_basic_package_version_file(
"${project_version}"
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion
)
"${project_version}"
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion)

install(
FILES "${project_config}" "${project_version}" "packaging/cmake/Modules/FindLZ4.cmake"
DESTINATION "${config_install_dir}"
)
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}"
)
EXPORT "${targets_export_name}"
NAMESPACE "${namespace}"
DESTINATION "${config_install_dir}")

install(
FILES LICENSES.txt
DESTINATION "share/licenses/librdkafka"
)
install(FILES LICENSES.txt DESTINATION "share/licenses/librdkafka")

# }

Expand Down
18 changes: 10 additions & 8 deletions examples/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
if(WIN32)
set(win32_sources ../win32/wingetopt.c ../win32/wingetopt.h)
set(win32_sources ../win32/wingetopt.c ../win32/wingetopt.h)
endif(WIN32)

add_executable(producer producer.c ${win32_sources})
Expand All @@ -17,17 +17,19 @@ target_link_libraries(rdkafka_performance PUBLIC rdkafka)
add_executable(rdkafka_example_cpp rdkafka_example.cpp ${win32_sources})
target_link_libraries(rdkafka_example_cpp PUBLIC rdkafka++)

add_executable(rdkafka_complex_consumer_example_cpp rdkafka_complex_consumer_example.cpp ${win32_sources})
add_executable(rdkafka_complex_consumer_example_cpp
rdkafka_complex_consumer_example.cpp ${win32_sources})
target_link_libraries(rdkafka_complex_consumer_example_cpp PUBLIC rdkafka++)

# The targets below has Unix include dirs and do not compile on Windows.
if(NOT WIN32)
add_executable(rdkafka_example rdkafka_example.c)
target_link_libraries(rdkafka_example PUBLIC rdkafka)
add_executable(rdkafka_example rdkafka_example.c)
target_link_libraries(rdkafka_example PUBLIC rdkafka)

add_executable(rdkafka_complex_consumer_example rdkafka_complex_consumer_example.c)
target_link_libraries(rdkafka_complex_consumer_example PUBLIC rdkafka)
add_executable(rdkafka_complex_consumer_example
rdkafka_complex_consumer_example.c)
target_link_libraries(rdkafka_complex_consumer_example PUBLIC rdkafka)

add_executable(kafkatest_verifiable_client kafkatest_verifiable_client.cpp)
target_link_libraries(kafkatest_verifiable_client PUBLIC rdkafka++)
add_executable(kafkatest_verifiable_client kafkatest_verifiable_client.cpp)
target_link_libraries(kafkatest_verifiable_client PUBLIC rdkafka++)
endif(NOT WIN32)
14 changes: 12 additions & 2 deletions packaging/mingw-w64/configure-build-msys2-mingw.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,9 @@ cp /C/tools/msys64/mingw64/lib/libcrypto.a ./
cp /C/tools/msys64/mingw64/lib/liblz4.a ./
cp /C/tools/msys64/mingw64/lib/libssl.a ./
cp ../src/librdkafka.a ./
cp ../src-cpp/librdkafka++.a ./librdkafkapp.a
ar -M << EOF
create librdkafka_windows.a
create librdkafka_merge.a
addlib librdkafka.a
addlib libzstd.a
addlib libcrypto.a
Expand All @@ -38,7 +39,16 @@ save
end
EOF

cp ./librdkafka_windows.a ../dest/
ar -M << EOF
create librdkafkapp_merge.a
addlib librdkafka_merge.a
addlib librdkafkapp.a
save
end
EOF

cp ./librdkafka_merge.a ../dest/lib/librdkafka.a
cp ./librdkafkapp_merge.a ../dest/lib/librdkafka++.a
popd
rm -rf ./mergescratch

Expand Down
103 changes: 41 additions & 62 deletions src-cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
set(LIBVER 1)

set(
sources
set(sources
ConfImpl.cpp
ConsumerImpl.cpp
HandleImpl.cpp
Expand All @@ -13,8 +12,7 @@ set(
QueueImpl.cpp
RdKafka.cpp
TopicImpl.cpp
TopicPartitionImpl.cpp
)
TopicPartitionImpl.cpp)

if(RDKAFKA_BUILD_STATIC)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
Expand All @@ -31,69 +29,50 @@ endif()
target_link_libraries(rdkafka++ PUBLIC rdkafka)

# Support '#include <rdkafcpp.h>'
target_include_directories(rdkafka++ PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}>")
target_include_directories(
rdkafka++ PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}>")
if(NOT RDKAFKA_BUILD_STATIC)
target_compile_definitions(rdkafka++ PRIVATE LIBRDKAFKACPP_EXPORTS)
target_compile_definitions(rdkafka++ PRIVATE LIBRDKAFKACPP_EXPORTS)
endif()

# Generate pkg-config file
set(PKG_CONFIG_NAME
"librdkafka++"
)
set(PKG_CONFIG_DESCRIPTION
"The Apache Kafka C/C++ library"
)
set(PKG_CONFIG_VERSION
"${PROJECT_VERSION}"
)
set(PKG_CONFIG_REQUIRES "rdkafka")
set(PKG_CONFIG_CFLAGS
"-I\${includedir}"
)
set(PKG_CONFIG_LIBS
"-L\${libdir} -lrdkafka++"
)
set(PKG_CONFIG_LIBS_PRIVATE
"-lrdkafka"
)
configure_file(
"../packaging/cmake/rdkafka.pc.in"
"${GENERATED_DIR}/rdkafka++.pc"
@ONLY
)
install(FILES ${GENERATED_DIR}/rdkafka++.pc
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
)
if(RDKAFKA_BUILD_STATIC)
set(PKG_CONFIG_NAME
"librdkafka++-static"
)
set(PKG_CONFIG_DESCRIPTION
"The Apache Kafka C/C++ library (static)"
)
set(PKG_CONFIG_LIBS
"-L\${libdir} \${libdir}/librdkafka++.a"
)
configure_file(
"../packaging/cmake/rdkafka.pc.in"
"${GENERATED_DIR}/rdkafka++-static.pc"
@ONLY
)
install(FILES ${GENERATED_DIR}/rdkafka.pc
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
)
set(PKG_CONFIG_VERSION "${PROJECT_VERSION}")
if(NOT RDKAFKA_BUILD_STATIC)
set(PKG_CONFIG_NAME "librdkafka++")
set(PKG_CONFIG_DESCRIPTION "The Apache Kafka C/C++ library")
set(PKG_CONFIG_REQUIRES "rdkafka")
set(PKG_CONFIG_CFLAGS "-I\${includedir}")
set(PKG_CONFIG_LIBS "-L\${libdir} -lrdkafka++")
set(PKG_CONFIG_LIBS_PRIVATE "-lrdkafka")
configure_file("../packaging/cmake/rdkafka.pc.in"
"${GENERATED_DIR}/rdkafka++.pc" @ONLY)
install(FILES ${GENERATED_DIR}/rdkafka++.pc
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
else()
set(PKG_CONFIG_NAME "librdkafka++-static")
set(PKG_CONFIG_DESCRIPTION "The Apache Kafka C/C++ library (static)")
set(PKG_CONFIG_REQUIRES "")
set(PKG_CONFIG_CFLAGS "-I\${includedir} -DLIBRDKAFKA_STATICLIB")
if(WIN32)
set(PKG_CONFIG_LIBS
"-L\${libdir} \${libdir}/librdkafka++.a -lws2_32 -lsecur32 -lcrypt32")
else()
set(PKG_CONFIG_LIBS "-L\${libdir} \${libdir}/librdkafka++.a")
endif()
configure_file("../packaging/cmake/rdkafka.pc.in"
"${GENERATED_DIR}/rdkafka++-static.pc" @ONLY)
install(FILES ${GENERATED_DIR}/rdkafka++-static.pc
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
endif()

install(
TARGETS rdkafka++
EXPORT "${targets_export_name}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
)
TARGETS rdkafka++
EXPORT "${targets_export_name}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
INCLUDES
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")

install(
FILES "rdkafkacpp.h"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/librdkafka"
)
install(FILES "rdkafkacpp.h"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/librdkafka")
Loading

0 comments on commit 1a589f6

Please sign in to comment.