|
1 | 1 | cmake_minimum_required(VERSION 3.7.2) |
2 | 2 |
|
| 3 | +# RdKafka is required for Kafka adapter |
| 4 | +find_package(RdKafka REQUIRED) |
| 5 | + |
| 6 | +# On Windows with vcpkg, librdkafka with SSL requires explicit OpenSSL linking |
| 7 | +# because vcpkg's static library transitive dependencies don't propagate properly |
| 8 | +if(WIN32 AND CSP_USE_VCPKG) |
| 9 | + find_package(OpenSSL REQUIRED) |
| 10 | + set(KAFKA_OPENSSL_LIBRARIES OpenSSL::SSL OpenSSL::Crypto CACHE INTERNAL "") |
| 11 | +else() |
| 12 | + set(KAFKA_OPENSSL_LIBRARIES "" CACHE INTERNAL "") |
| 13 | +endif() |
| 14 | + |
| 15 | +# Avro is optional - Kafka adapter works with JSON/raw bytes without it |
| 16 | +set(CSP_KAFKA_ENABLE_AVRO FALSE) |
| 17 | + |
3 | 18 | if (CSP_USE_VCPKG) |
4 | | - find_package(RdKafka CONFIG REQUIRED) |
5 | | - find_package(unofficial-avro-cpp CONFIG REQUIRED) |
6 | | - if(NOT WIN32) |
| 19 | + find_package(unofficial-avro-cpp CONFIG) |
| 20 | + |
| 21 | + if(unofficial-avro-cpp_FOUND) |
| 22 | + # Check avro-cpp version on Windows - require >= 1.12.1 for fmt compatibility |
| 23 | + if(WIN32 AND unofficial-avro-cpp_VERSION VERSION_LESS "1.12.1") |
| 24 | + message(WARNING |
| 25 | + "avro-cpp ${unofficial-avro-cpp_VERSION} has incompatible fmt::formatter on Windows. " |
| 26 | + "Kafka Avro support will be disabled. Update vcpkg to get avro-cpp >= 1.12.1.") |
| 27 | + else() |
| 28 | + set(CSP_KAFKA_ENABLE_AVRO TRUE) |
| 29 | + set(AVRO_LIBRARIES unofficial::avro-cpp::avrocpp CACHE INTERNAL "") |
| 30 | + endif() |
| 31 | + endif() |
| 32 | + |
| 33 | + if(NOT WIN32 AND CSP_KAFKA_ENABLE_AVRO) |
7 | 34 | # Bad, but a temporary workaround for |
8 | 35 | # https://github.com/microsoft/vcpkg/issues/40320 |
9 | 36 | link_directories(${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib) |
10 | 37 | endif() |
11 | | - set(AVRO_LIBRARIES unofficial::avro-cpp::avrocpp CACHE INTERNAL "") |
12 | | - set(DepsKafkaAdapter_FOUND TRUE) |
13 | 38 | else() |
14 | | - find_package(RdKafka REQUIRED) |
15 | 39 | find_package(Avro) |
16 | | - if(NOT Avro_FOUND) |
17 | | - set(DepsKafkaAdapter_FOUND FALSE) |
18 | | - else() |
| 40 | + |
| 41 | + if(Avro_FOUND) |
| 42 | + set(CSP_KAFKA_ENABLE_AVRO TRUE) |
19 | 43 | set(AVRO_LIBRARIES Avro::avrocpp CACHE INTERNAL "") |
20 | | - set(DepsKafkaAdapter_FOUND TRUE) |
21 | 44 | endif() |
22 | 45 | endif() |
| 46 | + |
| 47 | +# Kafka adapter is available if RdKafka is found |
| 48 | +set(DepsKafkaAdapter_FOUND TRUE) |
0 commit comments