diff --git a/cmake_modules/IcebergThirdpartyToolchain.cmake b/cmake_modules/IcebergThirdpartyToolchain.cmake index 0f95ea42..da4afcbf 100644 --- a/cmake_modules/IcebergThirdpartyToolchain.cmake +++ b/cmake_modules/IcebergThirdpartyToolchain.cmake @@ -198,3 +198,38 @@ endfunction() if(ICEBERG_AVRO) resolve_avro_dependency() endif() + +# ---------------------------------------------------------------------- +# Apache Iceberg (Rust) + +function(resolve_iceberg_c_dependency) + prepare_fetchcontent() + + fetchcontent_declare(IcebergC + ${FC_DECLARE_COMMON_OPTIONS} + GIT_REPOSITORY https://github.com/lidavidm/iceberg-rust.git + GIT_TAG add-c-binding + SOURCE_SUBDIR + bindings/c + FIND_PACKAGE_ARGS) + + fetchcontent_makeavailable(IcebergC) + + if(icebergc_SOURCE_DIR) + message(STATUS "Using vendored Iceberg C library") + set(ICEBERG_C_VENDORED TRUE) + else() + message(STATUS "Using system Iceberg C library") + set(ICEBERG_C_VENDORED FALSE) + list(APPEND ICEBERG_SYSTEM_DEPENDENCIES IcebergC) + endif() + + set(ICEBERG_SYSTEM_DEPENDENCIES + ${ICEBERG_SYSTEM_DEPENDENCIES} + PARENT_SCOPE) + set(ICEBERG_C_VENDORED + ${ICEBERG_C_VENDORED} + PARENT_SCOPE) +endfunction() + +resolve_iceberg_c_dependency() diff --git a/src/iceberg/CMakeLists.txt b/src/iceberg/CMakeLists.txt index 8411c7ac..b6fb5753 100644 --- a/src/iceberg/CMakeLists.txt +++ b/src/iceberg/CMakeLists.txt @@ -21,7 +21,11 @@ add_iceberg_lib(iceberg SOURCES ${ICEBERG_SOURCES} PRIVATE_INCLUDES - ${ICEBERG_INCLUDES}) + ${ICEBERG_INCLUDES} + SHARED_LINK_LIBS + IcebergC::iceberg_c_shared + STATIC_LINK_LIBS + IcebergC::iceberg_c_static) iceberg_install_all_headers(iceberg)