|
@@ -38,16 +38,18 @@ if(KAFKA)
|
|
|
Please run git submodule update --init --recursive")
|
|
|
endif()
|
|
|
|
|
|
+ set(LIBRDKAFKA_BUILD_DIR "${PROJECT_BINARY_DIR}/../../build")
|
|
|
+
|
|
|
if(APPLE)
|
|
|
- set(LIBRDKAFKA_LIB ${PROJECT_BINARY_DIR}/lib/librdkafka.dylib)
|
|
|
- set(LIBRDKAFKA_LIB_REAL ${PROJECT_BINARY_DIR}/lib/librdkafka.1.dylib)
|
|
|
- set(LIBRDKAFKACPP_LIB ${PROJECT_BINARY_DIR}/lib/librdkafka++.dylib)
|
|
|
- set(LIBRDKAFKACPP_LIB_REAL ${PROJECT_BINARY_DIR}/lib/librdkafka++.1.dylib)
|
|
|
+ set(LIBRDKAFKA_LIB ${LIBRDKAFKA_BUILD_DIR}/lib/librdkafka.dylib)
|
|
|
+ set(LIBRDKAFKA_LIB_REAL ${LIBRDKAFKA_BUILD_DIR}/lib/librdkafka.1.dylib)
|
|
|
+ set(LIBRDKAFKACPP_LIB ${LIBRDKAFKA_BUILD_DIR}/lib/librdkafka++.dylib)
|
|
|
+ set(LIBRDKAFKACPP_LIB_REAL ${LIBRDKAFKA_BUILD_DIR}/lib/librdkafka++.1.dylib)
|
|
|
else()
|
|
|
- set(LIBRDKAFKA_LIB ${PROJECT_BINARY_DIR}/lib/librdkafka.so)
|
|
|
- set(LIBRDKAFKA_LIB_REAL ${PROJECT_BINARY_DIR}/lib/librdkafka.so.1)
|
|
|
- set(LIBRDKAFKACPP_LIB ${PROJECT_BINARY_DIR}/lib/librdkafka++.so)
|
|
|
- set(LIBRDKAFKACPP_LIB_REAL ${PROJECT_BINARY_DIR}/lib/librdkafka++.so.1)
|
|
|
+ set(LIBRDKAFKA_LIB ${LIBRDKAFKA_BUILD_DIR}/lib/librdkafka.so)
|
|
|
+ set(LIBRDKAFKA_LIB_REAL ${LIBRDKAFKA_BUILD_DIR}/lib/librdkafka.so.1)
|
|
|
+ set(LIBRDKAFKACPP_LIB ${LIBRDKAFKA_BUILD_DIR}/lib/librdkafka++.so)
|
|
|
+ set(LIBRDKAFKACPP_LIB_REAL ${LIBRDKAFKA_BUILD_DIR}/lib/librdkafka++.so.1)
|
|
|
endif()
|
|
|
|
|
|
# librdkafka does not support out-of-source builds, so let's copy all
|
|
@@ -55,24 +57,26 @@ if(KAFKA)
|
|
|
# we need to pull some working directory shenanigans for each command
|
|
|
# in order to make the built scripts function correctly
|
|
|
|
|
|
- add_custom_command(
|
|
|
- OUTPUT ${LIBRDKAFKA_LIB}
|
|
|
- COMMAND cp -r ${PROJECT_SOURCE_DIR}/librdkafka ${PROJECT_BINARY_DIR}/src
|
|
|
- COMMAND cd ${PROJECT_BINARY_DIR}/src && ./configure --prefix=${PROJECT_BINARY_DIR}
|
|
|
- COMMAND cd ${PROJECT_BINARY_DIR}/src && make && make install
|
|
|
- COMMENT Copying and building librdkafka)
|
|
|
+ add_custom_target(librdkafka-build ALL
|
|
|
+ COMMAND mkdir -p ${LIBRDKAFKA_BUILD_DIR}
|
|
|
+ # If we've copied the source files before, compute checksums
|
|
|
+ COMMAND if [ -d ${LIBRDKAFKA_BUILD_DIR}/src ]\; then md5sum ${LIBRDKAFKA_BUILD_DIR}/src/*/*.c ${LIBRDKAFKA_BUILD_DIR}/src/*/*.cpp ${LIBRDKAFKA_BUILD_DIR}/src/*/*.h > ${LIBRDKAFKA_BUILD_DIR}/src/_md5.txt\; fi
|
|
|
+ COMMAND echo "Copying librdkafka source files" && cp -rp ${PROJECT_SOURCE_DIR}/librdkafka ${LIBRDKAFKA_BUILD_DIR}/src
|
|
|
+ # Run configure if it hasn't been run before
|
|
|
+ COMMAND if [ ! -f ${LIBRDKAFKA_BUILD_DIR}/src/Makefile.config ]\; then echo "Configuring librdkafka" && cd ${LIBRDKAFKA_BUILD_DIR}/src && ./configure --prefix=${LIBRDKAFKA_BUILD_DIR}\; fi
|
|
|
+ # If either there is no checksum file or if the checksums are different, re-make librdkafka
|
|
|
+ COMMAND if [ ! -f ${LIBRDKAFKA_BUILD_DIR}/src/_md5.txt ] || ! md5sum --quiet --status -c ${LIBRDKAFKA_BUILD_DIR}/src/_md5.txt\; then echo "Building librdkafka" && cd ${LIBRDKAFKA_BUILD_DIR}/src && make libs && make install\; fi
|
|
|
+ COMMENT Copying and building librdkafka)
|
|
|
|
|
|
- add_custom_target(librdkafka-build ALL DEPENDS ${LIBRDKAFKA_LIB})
|
|
|
+ install(CODE "set(ENV{LD_LIBRARY_PATH} \"\$ENV{LD_LIBRARY_PATH}:${LIBRDKAFKA_BUILD_DIR}/lib\")")
|
|
|
|
|
|
- install(CODE "set(ENV{LD_LIBRARY_PATH} \"\$ENV{LD_LIBRARY_PATH}:${PROJECT_BINARY_DIR}/lib\")")
|
|
|
-
|
|
|
add_library(librdkafka SHARED IMPORTED)
|
|
|
- set_property(TARGET librdkafka PROPERTY IMPORTED_LOCATION ${LIBRDKAFKA_LIB})
|
|
|
- add_dependencies(librdkafka librdkafka-build)
|
|
|
+ set_property(TARGET librdkafka PROPERTY IMPORTED_LOCATION ${LIBRDKAFKA_LIB})
|
|
|
+ add_dependencies(librdkafka librdkafka-build)
|
|
|
|
|
|
- add_library(librdkafkacpp SHARED IMPORTED)
|
|
|
- set_property(TARGET librdkafkacpp PROPERTY IMPORTED_LOCATION ${LIBRDKAFKACPP_LIB})
|
|
|
- add_dependencies(librdkafkacpp librdkafka-build)
|
|
|
+ add_library(librdkafkacpp SHARED IMPORTED)
|
|
|
+ set_property(TARGET librdkafkacpp PROPERTY IMPORTED_LOCATION ${LIBRDKAFKACPP_LIB})
|
|
|
+ add_dependencies(librdkafkacpp librdkafka-build)
|
|
|
|
|
|
set(
|
|
|
SRCS
|
|
@@ -85,7 +89,7 @@ if(KAFKA)
|
|
|
./../../rtl/include
|
|
|
./../../common/deftype
|
|
|
./../../system/jlib
|
|
|
- ${PROJECT_BINARY_DIR}/include
|
|
|
+ ${LIBRDKAFKA_BUILD_DIR}/include
|
|
|
${CMAKE_BINARY_DIR}
|
|
|
${CMAKE_BINARY_DIR}/oss)
|
|
|
|
|
@@ -119,7 +123,7 @@ if(KAFKA)
|
|
|
librdkafkacpp
|
|
|
eclrtl
|
|
|
jlib
|
|
|
- ${ZLIB_LIBRARIES})
|
|
|
+ ${ZLIB_LIBRARIES})
|
|
|
endif()
|
|
|
endif()
|
|
|
|