@@ -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