@@ -198,3 +198,59 @@ endfunction()
198198if (ICEBERG_AVRO)
199199 resolve_avro_dependency()
200200endif ()
201+
202+ # ----------------------------------------------------------------------
203+ # Nanoarrow
204+
205+ # It is also possible to vendor nanoarrow using the bundled source code.
206+ function (resolve_nanoarrow_dependency)
207+ prepare_fetchcontent()
208+ fetchcontent_declare(nanoarrow
209+ ${FC_DECLARE_COMMON_OPTIONS}
210+ URL "https://dlcdn.apache.org/arrow/apache-arrow-nanoarrow-0.6.0/apache-arrow-nanoarrow-0.6.0.tar.gz"
211+ )
212+ fetchcontent_makeavailable(nanoarrow)
213+
214+ set_target_properties (nanoarrow PROPERTIES OUTPUT_NAME "iceberg_vendored_nanoarrow" )
215+ install (TARGETS nanoarrow
216+ EXPORT iceberg_targets
217+ RUNTIME DESTINATION "${ICEBERG_INSTALL_BINDIR} "
218+ ARCHIVE DESTINATION "${ICEBERG_INSTALL_LIBDIR} "
219+ LIBRARY DESTINATION "${ICEBERG_INSTALL_LIBDIR} " )
220+ endfunction ()
221+
222+ resolve_nanoarrow_dependency()
223+
224+ # ----------------------------------------------------------------------
225+ # Sparrow
226+
227+ function (resolve_sparrow_dependency)
228+ prepare_fetchcontent()
229+
230+ # Add the sparrow cmake module path to the CMAKE_MODULE_PATH
231+ # Otherwise we will see error below:
232+ # include could not find requested file: sanitizers
233+ list (PREPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR} /_deps/sparrow-src/cmake)
234+
235+ fetchcontent_declare(sparrow
236+ ${FC_DECLARE_COMMON_OPTIONS}
237+ GIT_REPOSITORY https://github.com/man-group/sparrow.git
238+ GIT_TAG b0794cace22a55c32e90c0236034e040b822b957 # 0.3.0
239+ )
240+ fetchcontent_makeavailable(sparrow)
241+
242+ set_target_properties (sparrow PROPERTIES OUTPUT_NAME "iceberg_vendored_sparrow" )
243+ install (TARGETS sparrow
244+ EXPORT iceberg_targets
245+ RUNTIME DESTINATION "${ICEBERG_INSTALL_BINDIR} "
246+ ARCHIVE DESTINATION "${ICEBERG_INSTALL_LIBDIR} "
247+ LIBRARY DESTINATION "${ICEBERG_INSTALL_LIBDIR} " )
248+
249+ # sparrow depends on date::date and date::date-tz
250+ list (APPEND ICEBERG_SYSTEM_DEPENDENCIES date)
251+ set (ICEBERG_SYSTEM_DEPENDENCIES
252+ ${ICEBERG_SYSTEM_DEPENDENCIES}
253+ PARENT_SCOPE)
254+ endfunction ()
255+
256+ resolve_sparrow_dependency()
0 commit comments