Skip to content

Commit e1a194d

Browse files
lib: librdkafka: cmake: allow compilation without CXX support
e.g. fluent-bit is a c-only library, so allow compilation without cxx See: confluentinc/librdkafka#4366 Signed-off-by: Thomas Devoogdt <[email protected]>
1 parent 46c086e commit e1a194d

File tree

2 files changed

+39
-14
lines changed

2 files changed

+39
-14
lines changed

lib/librdkafka-2.8.0/CMakeLists.txt

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,16 @@ cmake_minimum_required(VERSION 3.5)
33
include("packaging/cmake/parseversion.cmake")
44
parseversion("src/rdkafka.h")
55

6-
project(RdKafka VERSION ${RDKAFKA_VERSION})
6+
project(RdKafka VERSION ${RDKAFKA_VERSION} LANGUAGES C)
7+
8+
# Check for CXX support
9+
include(CheckLanguage)
10+
check_language(CXX)
11+
if(CMAKE_CXX_COMPILER)
12+
enable_language(CXX)
13+
else()
14+
message(STATUS "C++ compiler not found, skipping C++ support")
15+
endif()
716

817
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/packaging/cmake/Modules/")
918

@@ -181,7 +190,11 @@ endif()
181190

182191
option(RDKAFKA_BUILD_STATIC "Build static rdkafka library" OFF)
183192
option(RDKAFKA_BUILD_EXAMPLES "Build examples" ON)
184-
option(RDKAFKA_BUILD_TESTS "Build tests" ON)
193+
194+
if(CMAKE_CXX_COMPILER)
195+
option(RDKAFKA_BUILD_TESTS "Build tests" ON)
196+
endif()
197+
185198
if(WIN32)
186199
option(WITHOUT_WIN32_CONFIG "Avoid including win32_config.h on cmake builds" ON)
187200
endif(WIN32)
@@ -279,7 +292,10 @@ install(
279292
)
280293

281294
add_subdirectory(src)
282-
add_subdirectory(src-cpp)
295+
296+
if(CMAKE_CXX_COMPILER)
297+
add_subdirectory(src-cpp)
298+
endif()
283299

284300
if(RDKAFKA_BUILD_EXAMPLES)
285301
add_subdirectory(examples)

lib/librdkafka-2.8.0/examples/CMakeLists.txt

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,31 @@ endif(WIN32)
55
add_executable(producer producer.c ${win32_sources})
66
target_link_libraries(producer PUBLIC rdkafka)
77

8-
add_executable(producer_cpp producer.cpp ${win32_sources})
9-
target_link_libraries(producer_cpp PUBLIC rdkafka++)
8+
if(CMAKE_CXX_COMPILER)
9+
add_executable(producer_cpp producer.cpp ${win32_sources})
10+
target_link_libraries(producer_cpp PUBLIC rdkafka++)
11+
endif()
1012

1113
add_executable(consumer consumer.c ${win32_sources})
1214
target_link_libraries(consumer PUBLIC rdkafka)
1315

1416
add_executable(rdkafka_performance rdkafka_performance.c ${win32_sources})
1517
target_link_libraries(rdkafka_performance PUBLIC rdkafka)
1618

17-
add_executable(rdkafka_example_cpp rdkafka_example.cpp ${win32_sources})
18-
target_link_libraries(rdkafka_example_cpp PUBLIC rdkafka++)
19+
if(CMAKE_CXX_COMPILER)
20+
add_executable(rdkafka_example_cpp rdkafka_example.cpp ${win32_sources})
21+
target_link_libraries(rdkafka_example_cpp PUBLIC rdkafka++)
22+
endif()
1923

20-
add_executable(rdkafka_complex_consumer_example_cpp rdkafka_complex_consumer_example.cpp ${win32_sources})
21-
target_link_libraries(rdkafka_complex_consumer_example_cpp PUBLIC rdkafka++)
24+
if(CMAKE_CXX_COMPILER)
25+
add_executable(rdkafka_complex_consumer_example_cpp rdkafka_complex_consumer_example.cpp ${win32_sources})
26+
target_link_libraries(rdkafka_complex_consumer_example_cpp PUBLIC rdkafka++)
27+
endif()
2228

23-
add_executable(openssl_engine_example_cpp openssl_engine_example.cpp ${win32_sources})
24-
target_link_libraries(openssl_engine_example_cpp PUBLIC rdkafka++)
29+
if(CMAKE_CXX_COMPILER)
30+
add_executable(openssl_engine_example_cpp openssl_engine_example.cpp ${win32_sources})
31+
target_link_libraries(openssl_engine_example_cpp PUBLIC rdkafka++)
32+
endif()
2533

2634
add_executable(misc misc.c ${win32_sources})
2735
target_link_libraries(misc PUBLIC rdkafka)
@@ -73,7 +81,8 @@ if(NOT WIN32)
7381
add_executable(rdkafka_complex_consumer_example rdkafka_complex_consumer_example.c)
7482
target_link_libraries(rdkafka_complex_consumer_example PUBLIC rdkafka)
7583

76-
add_executable(kafkatest_verifiable_client kafkatest_verifiable_client.cpp)
77-
target_link_libraries(kafkatest_verifiable_client PUBLIC rdkafka++)
78-
84+
if(CMAKE_CXX_COMPILER)
85+
add_executable(kafkatest_verifiable_client kafkatest_verifiable_client.cpp)
86+
target_link_libraries(kafkatest_verifiable_client PUBLIC rdkafka++)
87+
endif()
7988
endif(NOT WIN32)

0 commit comments

Comments
 (0)