1919# third party libraries.
2020set (ICEBERG_SYSTEM_DEPENDENCIES)
2121set (ICEBERG_ARROW_INSTALL_INTERFACE_LIBS)
22-
23- if (ICEBERG_SIGV4)
24- set (ICEBERG_AWSSDK_SOURCE_RESOLVED "${ICEBERG_AWSSDK_SOURCE} " )
25- if (ICEBERG_AWSSDK_SOURCE_RESOLVED STREQUAL "AUTO" )
26- if (ICEBERG_S3)
27- set (ICEBERG_AWSSDK_SOURCE_RESOLVED "BUNDLED" )
28- else ()
29- set (ICEBERG_AWSSDK_SOURCE_RESOLVED "SYSTEM" )
30- endif ()
22+ set (ICEBERG_AWSSDK_BUNDLED FALSE )
23+ if (ICEBERG_S3 AND ICEBERG_BUNDLE_AWSSDK)
24+ if (NOT ICEBERG_BUILD_BUNDLE)
25+ message (FATAL_ERROR "ICEBERG_BUNDLE_AWSSDK requires ICEBERG_BUILD_BUNDLE to be ON" )
3126 endif ()
32- if (ICEBERG_AWSSDK_SOURCE_RESOLVED STREQUAL "BUNDLED" AND NOT ICEBERG_S3)
33- message (FATAL_ERROR "ICEBERG_AWSSDK_SOURCE=BUNDLED requires ICEBERG_S3=ON: "
34- "the bundled AWS SDK is provided by Arrow's S3 support." )
27+ set (ICEBERG_AWSSDK_BUNDLED TRUE )
28+ endif ()
29+
30+ set (ICEBERG_AWSSDK_COMPONENTS)
31+ if (NOT ICEBERG_AWSSDK_BUNDLED)
32+ if (ICEBERG_S3)
33+ list (APPEND
34+ ICEBERG_AWSSDK_COMPONENTS
35+ core
36+ config
37+ s3
38+ transfer
39+ identity-management
40+ sts)
41+ elseif (ICEBERG_SIGV4)
42+ list (APPEND ICEBERG_AWSSDK_COMPONENTS core)
3543 endif ()
36- message (STATUS "AWS SDK source for SigV4: ${ICEBERG_AWSSDK_SOURCE_RESOLVED} " )
3744endif ()
3845
46+ # ----------------------------------------------------------------------
47+ # AWS SDK for C++
48+
49+ function (resolve_aws_sdk_dependency )
50+ if (NOT ICEBERG_AWSSDK_COMPONENTS)
51+ return ()
52+ endif ()
53+ find_package (AWSSDK REQUIRED COMPONENTS ${ICEBERG_AWSSDK_COMPONENTS} )
54+ list (APPEND ICEBERG_SYSTEM_DEPENDENCIES AWSSDK)
55+ set (ICEBERG_SYSTEM_DEPENDENCIES
56+ ${ICEBERG_SYSTEM_DEPENDENCIES}
57+ PARENT_SCOPE )
58+ # Forwarded to find_dependency(AWSSDK ...) in iceberg-config.cmake.in so
59+ # downstream installed builds load the same AWS SDK targets.
60+ set (ICEBERG_FIND_EXTRA_ARGS_AWSSDK
61+ "COMPONENTS;${ICEBERG_AWSSDK_COMPONENTS} "
62+ PARENT_SCOPE )
63+ endfunction ()
64+
3965# ----------------------------------------------------------------------
4066# Versions and URLs for toolchain builds
4167#
@@ -126,12 +152,10 @@ function(resolve_arrow_dependency)
126152 set (ARROW_RUNTIME_SIMD_LEVEL "NONE" )
127153 set (ARROW_POSITION_INDEPENDENT_CODE ON )
128154 set (ARROW_DEPENDENCY_SOURCE "BUNDLED" )
129- if (ICEBERG_S3
130- AND ICEBERG_SIGV4
131- AND ICEBERG_AWSSDK_SOURCE_RESOLVED STREQUAL "SYSTEM" )
155+ set (ARROW_WITH_ZLIB ON )
156+ if (ICEBERG_S3 AND NOT ICEBERG_AWSSDK_BUNDLED)
132157 set (AWSSDK_SOURCE "SYSTEM" )
133158 endif ()
134- set (ARROW_WITH_ZLIB ON )
135159 set (ZLIB_SOURCE "SYSTEM" )
136160 set (ARROW_VERBOSE_THIRDPARTY_BUILD OFF )
137161 set (CMAKE_CXX_STANDARD 20)
@@ -641,6 +665,13 @@ resolve_nanoarrow_dependency()
641665resolve_croaring_dependency ()
642666resolve_nlohmann_json_dependency ()
643667
668+ if (ICEBERG_S3 OR ICEBERG_SIGV4)
669+ if (ICEBERG_SIGV4 AND NOT ICEBERG_BUILD_REST)
670+ message (FATAL_ERROR "ICEBERG_SIGV4 requires ICEBERG_BUILD_REST to be ON" )
671+ endif ()
672+ resolve_aws_sdk_dependency ()
673+ endif ()
674+
644675if (ICEBERG_BUILD_BUNDLE)
645676 resolve_arrow_dependency ()
646677 resolve_avro_dependency ()
@@ -654,30 +685,3 @@ endif()
654685if (ICEBERG_BUILD_SQL_CATALOG)
655686 resolve_sql_catalog_dependencies ()
656687endif ()
657-
658- # ----------------------------------------------------------------------
659- # AWS SDK for C++
660-
661- function (resolve_aws_sdk_dependency )
662- if (ICEBERG_AWSSDK_SOURCE_RESOLVED STREQUAL "BUNDLED" )
663- message (STATUS "SigV4 reuses Arrow's bundled AWS SDK (aws-cpp-sdk-core)" )
664- return ()
665- endif ()
666- find_package (AWSSDK REQUIRED COMPONENTS core )
667- list (APPEND ICEBERG_SYSTEM_DEPENDENCIES AWSSDK)
668- set (ICEBERG_SYSTEM_DEPENDENCIES
669- ${ICEBERG_SYSTEM_DEPENDENCIES}
670- PARENT_SCOPE )
671- # Forwarded to find_dependency(AWSSDK ...) in iceberg-config.cmake.in so
672- # downstream installed builds load aws-cpp-sdk-core via AWSSDK_FIND_COMPONENTS.
673- set (ICEBERG_FIND_EXTRA_ARGS_AWSSDK
674- "COMPONENTS;core"
675- PARENT_SCOPE )
676- endfunction ()
677-
678- if (ICEBERG_SIGV4)
679- if (NOT ICEBERG_BUILD_REST)
680- message (FATAL_ERROR "ICEBERG_SIGV4 requires ICEBERG_BUILD_REST to be ON" )
681- endif ()
682- resolve_aws_sdk_dependency ()
683- endif ()
0 commit comments