@@ -50,11 +50,63 @@ add_iceberg_lib(iceberg
5050
5151iceberg_install_all_headers(iceberg)
5252
53+ add_subdirectory (util)
54+
5355install (FILES ${CMAKE_CURRENT_BINARY_DIR} /iceberg_export.h
5456 DESTINATION ${ICEBERG_INSTALL_INCLUDEDIR} /iceberg)
5557
56- add_subdirectory (arrow)
57- add_subdirectory (avro)
58- add_subdirectory (puffin)
58+ if (ICEBERG_BUILD_BUNDLE)
59+ set (ICEBERG_BUNDLE_SOURCES arrow/demo_arrow.cc avro/demo_avro.cc)
60+
61+ # Libraries to link with exported libiceberg_bundle.{so,a}.
62+ set (ICEBERG_BUNDLE_STATIC_BUILD_INTERFACE_LIBS)
63+ set (ICEBERG_BUNDLE_SHARED_BUILD_INTERFACE_LIBS)
64+ set (ICEBERG_BUNDLE_STATIC_INSTALL_INTERFACE_LIBS)
65+ set (ICEBERG_BUNDLE_SHARED_INSTALL_INTERFACE_LIBS)
66+
67+ list (APPEND
68+ ICEBERG_BUNDLE_STATIC_BUILD_INTERFACE_LIBS
69+ "$<IF:$<TARGET_EXISTS:iceberg_static>,iceberg_static,iceberg_shared>"
70+ "$<IF:$<TARGET_EXISTS:Arrow::arrow_static>,Arrow::arrow_static,Arrow::arrow_shared>"
71+ "$<IF:$<TARGET_EXISTS:Avro::avrocpp_static>,Avro::avrocpp_static,Avro::avrocpp_shared>"
72+ )
73+ list (APPEND
74+ ICEBERG_BUNDLE_SHARED_BUILD_INTERFACE_LIBS
75+ "$<IF:$<TARGET_EXISTS:iceberg_shared>,iceberg_shared,iceberg_static>"
76+ "$<IF:$<TARGET_EXISTS:Arrow::arrow_shared>,Arrow::arrow_shared,Arrow::arrow_static>"
77+ "$<IF:$<TARGET_EXISTS:Avro::avrocpp_shared>,Avro::avrocpp_shared,Avro::avrocpp_static>"
78+ )
79+
80+ list (APPEND
81+ ICEBERG_BUNDLE_STATIC_INSTALL_INTERFACE_LIBS
82+ "$<IF:$<TARGET_EXISTS:Iceberg::iceberg_static>,Iceberg::iceberg_static,Iceberg::iceberg_shared>"
83+ "$<IF:$<BOOL:${ARROW_VENDORED} >,Iceberg::arrow_static,$<IF:$<TARGET_EXISTS:Arrow::arrow_static>,Arrow::arrow_static,Arrow::arrow_shared>>"
84+ "$<IF:$<BOOL:${AVRO_VENDORED} >,Iceberg::avrocpp_s,$<IF:$<TARGET_EXISTS:Avro::avrocpp_static>,Avro::avrocpp_static,Avro::avrocpp_shared>>"
85+ )
86+ list (APPEND
87+ ICEBERG_BUNDLE_SHARED_INSTALL_INTERFACE_LIBS
88+ "$<IF:$<TARGET_EXISTS:Iceberg::iceberg_shared>,Iceberg::iceberg_shared,Iceberg::iceberg_static>"
89+ "$<IF:$<BOOL:${ARROW_VENDORED} >,Iceberg::arrow_static,$<IF:$<TARGET_EXISTS:Arrow::arrow_shared>,Arrow::arrow_shared,Arrow::arrow_static>>"
90+ "$<IF:$<BOOL:${AVRO_VENDORED} >,Iceberg::avrocpp_s,$<IF:$<TARGET_EXISTS:Avro::avrocpp_shared>,Avro::avrocpp_shared,Avro::avrocpp_static>>"
91+ )
92+
93+ add_iceberg_lib(iceberg_bundle
94+ SOURCES
95+ ${ICEBERG_BUNDLE_SOURCES}
96+ SHARED_LINK_LIBS
97+ ${ICEBERG_BUNDLE_SHARED_BUILD_INTERFACE_LIBS}
98+ STATIC_LINK_LIBS
99+ ${ICEBERG_BUNDLE_STATIC_BUILD_INTERFACE_LIBS}
100+ STATIC_INSTALL_INTERFACE_LIBS
101+ ${ICEBERG_BUNDLE_STATIC_INSTALL_INTERFACE_LIBS}
102+ SHARED_INSTALL_INTERFACE_LIBS
103+ ${ICEBERG_BUNDLE_SHARED_INSTALL_INTERFACE_LIBS} )
104+
105+ add_subdirectory (arrow)
106+ add_subdirectory (avro)
107+
108+ install (FILES ${CMAKE_CURRENT_BINARY_DIR} /iceberg_bundle_export.h
109+ DESTINATION ${ICEBERG_INSTALL_INCLUDEDIR} /iceberg)
110+ endif ()
59111
60112iceberg_install_cmake_package(Iceberg iceberg_targets)
0 commit comments