@@ -308,6 +308,16 @@ else()
308308 endif ()
309309endif ()
310310
311+ if (DEFINED ENV{PAIMON_OSS_SDK_V2_URL})
312+ set (OSS_SDK_V2_SOURCE_URL "$ENV{PAIMON_OSS_SDK_V2_URL} " )
313+ elseif (EXISTS "${THIRDPARTY_DIR} /${PAIMON_OSS_SDK_V2_PKG_NAME} " )
314+ set_urls (OSS_SDK_V2_SOURCE_URL "${THIRDPARTY_DIR} /${PAIMON_OSS_SDK_V2_PKG_NAME} " )
315+ else ()
316+ set_urls (OSS_SDK_V2_SOURCE_URL
317+ "${THIRDPARTY_MIRROR_URL} https://github.com/aliyun/alibabacloud-oss-cpp-sdk-v2/archive/refs/tags/${PAIMON_OSS_SDK_V2_BUILD_VERSION} .tar.gz"
318+ )
319+ endif ()
320+
311321if (DEFINED ENV{PAIMON_LUMINA_URL})
312322 set (LUMINA_SOURCE_URL "$ENV{PAIMON_LUMINA_URL} " )
313323elseif (EXISTS "${THIRDPARTY_DIR} /${PAIMON_LUMINA_PKG_NAME} " )
@@ -492,6 +502,25 @@ function(paimon_enforce_patched_dependency_policy)
492502 PARENT_SCOPE )
493503 endif ()
494504 endif ()
505+
506+ if (PAIMON_ENABLE_OSS)
507+ paimon_set_dependency_source_default (
508+ OSS_SDK_V2 BUNDLED "OSS SDK v2 is only supported as a bundled dependency" )
509+ paimon_get_dependency_source (OSS_SDK_V2 _oss_sdk_v2_source )
510+ if (_oss_sdk_v2_source STREQUAL "SYSTEM" )
511+ message (FATAL_ERROR "OSS_SDK_V2_SOURCE=SYSTEM is not supported. "
512+ "Use OSS_SDK_V2_SOURCE=BUNDLED." )
513+ elseif (_oss_sdk_v2_source STREQUAL "AUTO" )
514+ message (STATUS "Forcing OSS_SDK_V2_SOURCE to BUNDLED because paimon-cpp "
515+ "only supports the bundled OSS SDK v2" )
516+ set (OSS_SDK_V2_SOURCE
517+ "BUNDLED"
518+ CACHE STRING "Dependency source for OSS SDK v2" FORCE )
519+ set (OSS_SDK_V2_SOURCE
520+ "BUNDLED"
521+ PARENT_SCOPE )
522+ endif ()
523+ endif ()
495524endfunction ()
496525
497526function (paimon_apply_dependency_source_defaults )
@@ -597,6 +626,8 @@ function(paimon_get_dependency_compat_target DEPENDENCY_NAME OUT_VAR)
597626 set (_target tbb)
598627 elseif ("${DEPENDENCY_NAME} " STREQUAL "Avro" )
599628 set (_target avro)
629+ elseif ("${DEPENDENCY_NAME} " STREQUAL "OSS_SDK_V2" )
630+ set (_target alibabacloud_oss_v2::oss)
600631 else ()
601632 set (_target "${DEPENDENCY_NAME} " )
602633 endif ()
@@ -671,6 +702,8 @@ macro(paimon_build_dependency DEPENDENCY_NAME)
671702 build_glog ()
672703 elseif ("${DEPENDENCY_NAME} " STREQUAL "Avro" )
673704 build_avro ()
705+ elseif ("${DEPENDENCY_NAME} " STREQUAL "OSS_SDK_V2" )
706+ build_oss_sdk_v2 ()
674707 elseif ("${DEPENDENCY_NAME} " STREQUAL "GTest" )
675708 build_gtest ()
676709 elseif ("${DEPENDENCY_NAME} " STREQUAL "benchmark" )
@@ -1359,6 +1392,89 @@ macro(build_jindosdk_nextarch)
13591392 add_dependencies (jindosdk::nextarch jindosdk-nextarch_ep )
13601393endmacro ()
13611394
1395+ macro (build_oss_sdk_v2 )
1396+ message (STATUS "Building Alibaba Cloud OSS C++ SDK v2 from source" )
1397+ find_package (CURL REQUIRED )
1398+ find_package (Threads REQUIRED )
1399+
1400+ set (OSS_SDK_V2_PREFIX "${CMAKE_CURRENT_BINARY_DIR } /oss_sdk_v2_ep-install" )
1401+ set (OSS_SDK_V2_INCLUDE_DIR "${OSS_SDK_V2_PREFIX} /include" )
1402+ set (OSS_SDK_V2_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR} " )
1403+ set (OSS_SDK_V2_LIB_DIR "${OSS_SDK_V2_PREFIX} /${OSS_SDK_V2_INSTALL_LIBDIR} " )
1404+ set (OSS_SDK_V2_STATIC_LIB
1405+ "${OSS_SDK_V2_LIB_DIR} /${CMAKE_STATIC_LIBRARY_PREFIX } alibabacloud-oss-cpp-sdk-v2${CMAKE_STATIC_LIBRARY_SUFFIX } "
1406+ )
1407+
1408+ set (OSS_SDK_V2_CMAKE_ARGS
1409+ ${EP_COMMON_CMAKE_ARGS}
1410+ "-DCMAKE_INSTALL_PREFIX=${OSS_SDK_V2_PREFIX} "
1411+ "-DCMAKE_INSTALL_LIBDIR=${OSS_SDK_V2_INSTALL_LIBDIR} "
1412+ -DCMAKE_PARENT_CXX_STANDARD=17
1413+ -DBUILD_SHARED_LIBS=OFF
1414+ -DBUILD_TESTS=OFF
1415+ -DBUILD_SAMPLES=OFF
1416+ -DENABLE_RTTI=OFF
1417+ -DUSE_CURL_TRANSPORT=ON
1418+ -DUSE_SYSTEM_CURL=ON
1419+ -DUSE_SYSTEM_OPENSSL=OFF
1420+ -DUSE_SYSTEM_MBEDTLS=OFF
1421+ -DUSE_SYSTEM_TINYXML2=OFF
1422+ -DUSE_STD_EXPECTED=OFF
1423+ -DENABLE_ENCRYPTION=OFF )
1424+ set (OSS_SDK_V2_CURL_INCLUDE_DIR "${CURL_INCLUDE_DIR} " )
1425+ if (NOT OSS_SDK_V2_CURL_INCLUDE_DIR AND CURL_INCLUDE_DIRS)
1426+ list (GET CURL_INCLUDE_DIRS 0 OSS_SDK_V2_CURL_INCLUDE_DIR)
1427+ endif ()
1428+ set (OSS_SDK_V2_CURL_LIBRARY "${CURL_LIBRARY_RELEASE} " )
1429+ if (NOT OSS_SDK_V2_CURL_LIBRARY)
1430+ set (OSS_SDK_V2_CURL_LIBRARY "${CURL_LIBRARY} " )
1431+ endif ()
1432+ if (TARGET CURL::libcurl)
1433+ if (NOT OSS_SDK_V2_CURL_INCLUDE_DIR)
1434+ get_target_property (OSS_SDK_V2_CURL_INCLUDE_DIR CURL::libcurl
1435+ INTERFACE_INCLUDE_DIRECTORIES )
1436+ endif ()
1437+ if (NOT OSS_SDK_V2_CURL_LIBRARY)
1438+ foreach (CURL_CONFIG RELEASE RELWITHDEBINFO DEBUG NOCONFIG)
1439+ get_target_property (OSS_SDK_V2_CURL_LIBRARY CURL::libcurl
1440+ "IMPORTED_LOCATION_${CURL_CONFIG} " )
1441+ if (OSS_SDK_V2_CURL_LIBRARY)
1442+ break ()
1443+ endif ()
1444+ endforeach ()
1445+ endif ()
1446+ if (NOT OSS_SDK_V2_CURL_LIBRARY)
1447+ get_target_property (OSS_SDK_V2_CURL_LIBRARY CURL::libcurl IMPORTED_LOCATION )
1448+ endif ()
1449+ endif ()
1450+ if (OSS_SDK_V2_CURL_INCLUDE_DIR AND OSS_SDK_V2_CURL_LIBRARY)
1451+ list (APPEND
1452+ OSS_SDK_V2_CMAKE_ARGS
1453+ "-DCURL_INCLUDE_DIR=${OSS_SDK_V2_CURL_INCLUDE_DIR} "
1454+ "-DCURL_LIBRARY=${OSS_SDK_V2_CURL_LIBRARY} "
1455+ "-DCURL_LIBRARY_RELEASE=${OSS_SDK_V2_CURL_LIBRARY} " )
1456+ endif ()
1457+
1458+ externalproject_add (oss_sdk_v2_ep
1459+ ${EP_COMMON_OPTIONS}
1460+ URL ${OSS_SDK_V2_SOURCE_URL}
1461+ URL_HASH "SHA256=${PAIMON_OSS_SDK_V2_BUILD_SHA256_CHECKSUM} "
1462+ CMAKE_ARGS ${OSS_SDK_V2_CMAKE_ARGS} ${THIRDPARTY_LOG_OPTIONS}
1463+ BUILD_BYPRODUCTS "${OSS_SDK_V2_STATIC_LIB} " )
1464+
1465+ file (MAKE_DIRECTORY "${OSS_SDK_V2_INCLUDE_DIR} " )
1466+ file (MAKE_DIRECTORY "${OSS_SDK_V2_LIB_DIR} " )
1467+
1468+ add_library (alibabacloud_oss_v2::oss STATIC IMPORTED )
1469+ set_target_properties (alibabacloud_oss_v2::oss
1470+ PROPERTIES IMPORTED_LOCATION "${OSS_SDK_V2_STATIC_LIB} "
1471+ INTERFACE_INCLUDE_DIRECTORIES
1472+ "${OSS_SDK_V2_INCLUDE_DIR} " )
1473+ target_link_libraries (alibabacloud_oss_v2::oss INTERFACE CURL::libcurl
1474+ Threads::Threads )
1475+ add_dependencies (alibabacloud_oss_v2::oss oss_sdk_v2_ep )
1476+ endmacro ()
1477+
13621478macro (build_protobuf )
13631479 message (STATUS "Building protobuf from source" )
13641480 set (PROTOBUF_PREFIX "${CMAKE_CURRENT_BINARY_DIR } /protobuf_ep-install" )
@@ -1967,6 +2083,9 @@ if(PAIMON_ENABLE_JINDO)
19672083 build_jindosdk_c ()
19682084 build_jindosdk_nextarch ()
19692085endif ()
2086+ if (PAIMON_ENABLE_OSS)
2087+ resolve_dependency (OSS_SDK_V2 )
2088+ endif ()
19702089if (PAIMON_ENABLE_S3)
19712090 include (BuildAwsAuth )
19722091 build_aws_auth ()
0 commit comments