@@ -97,22 +97,6 @@ if(ARROW_USE_GLOG)
9797 endif ()
9898endif ()
9999
100- if (ARROW_S3)
101- if (AWSSDK_SOURCE STREQUAL "SYSTEM" )
102- list (APPEND
103- ARROW_STATIC_INSTALL_INTERFACE_LIBS
104- aws-cpp-sdk-identity-management
105- aws-cpp-sdk-sts
106- aws-cpp-sdk-cognito-identity
107- aws-cpp-sdk-s3
108- aws-cpp-sdk-core)
109- elseif (AWSSDK_SOURCE STREQUAL "BUNDLED" )
110- if (UNIX )
111- list (APPEND ARROW_STATIC_INSTALL_INTERFACE_LIBS CURL::libcurl)
112- endif ()
113- endif ()
114- endif ()
115-
116100if (ARROW_WITH_OPENTELEMETRY)
117101 if (opentelemetry-cpp_SOURCE STREQUAL "SYSTEM" )
118102 list (APPEND ARROW_STATIC_INSTALL_INTERFACE_LIBS ${ARROW_OPENTELEMETRY_LIBS} )
@@ -983,6 +967,12 @@ if(ARROW_WITH_OPENTELEMETRY)
983967 endforeach ()
984968endif ()
985969
970+ if (CXX_LINKER_SUPPORTS_VERSION_SCRIPT)
971+ set (ARROW_VERSION_SCRIPT_FLAGS
972+ "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR } /symbols.map" )
973+ set (ARROW_SHARED_LINK_FLAGS ${ARROW_VERSION_SCRIPT_FLAGS} )
974+ endif ()
975+
986976if (ARROW_FILESYSTEM)
987977 set (ARROW_FILESYSTEM_SRCS
988978 filesystem/filesystem.cc
@@ -1018,11 +1008,6 @@ if(ARROW_FILESYSTEM)
10181008 if (ARROW_HDFS)
10191009 list (APPEND ARROW_FILESYSTEM_SRCS filesystem/hdfs.cc)
10201010 endif ()
1021- if (ARROW_S3)
1022- list (APPEND ARROW_FILESYSTEM_SRCS filesystem/s3fs.cc)
1023- set_source_files_properties (filesystem/s3fs.cc PROPERTIES SKIP_UNITY_BUILD_INCLUSION
1024- ON )
1025- endif ()
10261011
10271012 arrow_add_object_library (ARROW_FILESYSTEM ${ARROW_FILESYSTEM_SRCS} )
10281013 if (ARROW_AZURE)
@@ -1042,21 +1027,61 @@ if(ARROW_FILESYSTEM)
10421027 endforeach ()
10431028 endif ()
10441029 if (ARROW_S3)
1045- foreach (ARROW_FILESYSTEM_TARGET ${ARROW_FILESYSTEM_TARGETS} )
1046- target_link_libraries (${ARROW_FILESYSTEM_TARGET} PRIVATE ${AWSSDK_LINK_LIBRARIES} )
1047- endforeach ()
1048-
1049- if (ARROW_S3_MODULE)
1050- if (NOT ARROW_BUILD_SHARED)
1051- message (FATAL_ERROR "ARROW_S3_MODULE without shared libarrow (-DARROW_BUILD_SHARED=ON) is not supported"
1052- )
1030+ # If libarrow_s3.a is only built, "pkg-config --cflags --libs
1031+ # arrow-s3" outputs build flags for static linking not shared
1032+ # linking. ARROW_S3_PC_* except ARROW_S3_PC_*_PRIVATE are for the
1033+ # static linking case.
1034+ if (NOT ARROW_BUILD_SHARED AND ARROW_BUILD_STATIC)
1035+ string (APPEND ARROW_S3_PC_CFLAGS "${ARROW_S3_PC_CFLAGS_PRIVATE} " )
1036+ set (ARROW_S3_PC_CFLAGS_PRIVATE "" )
1037+ set (ARROW_S3_PC_LIBS "${ARROW_S3_PC_LIBS_PRIVATE} " )
1038+ set (ARROW_S3_PC_LIBS_PRIVATE "" )
1039+ set (ARROW_S3_PC_REQUIRES "${ARROW_S3_PC_REQUIRES_PRIVATE} " )
1040+ set (ARROW_S3_PC_REQUIRES_PRIVATE "" )
1041+ else ()
1042+ set (ARROW_S3_PC_LIBS "" )
1043+ set (ARROW_S3_PC_REQUIRES "" )
1044+ endif ()
1045+ list (APPEND ARROW_S3_LIB_SRCS filesystem/s3fs_module.cc filesystem/s3fs.cc)
1046+ set (ARROW_S3_STATIC_INSTALL_INTERFACE_LIBS Arrow::arrow_static)
1047+ if (AWSSDK_SOURCE STREQUAL "SYSTEM" )
1048+ list (APPEND ARROW_S3_STATIC_INSTALL_INTERFACE_LIBS ${AWSSDK_LINK_LIBRARIES} )
1049+ elseif (AWSSDK_SOURCE STREQUAL "BUNDLED" )
1050+ if (UNIX )
1051+ list (APPEND ARROW_S3_STATIC_INSTALL_INTERFACE_LIBS CURL::libcurl)
10531052 endif ()
1054-
1055- add_library (arrow_s3fs MODULE filesystem/s3fs_module.cc filesystem/s3fs.cc )
1056- target_link_libraries (arrow_s3fs PRIVATE ${AWSSDK_LINK_LIBRARIES} arrow_shared )
1057- set_source_files_properties (filesystem/s3fs.cc filesystem/s3fs_module.cc
1058- PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON )
10591053 endif ()
1054+ add_arrow_lib (arrow_s3
1055+ CMAKE_PACKAGE_NAME
1056+ ArrowS3
1057+ PKG_CONFIG_NAME
1058+ arrow-s3
1059+ SOURCES
1060+ ${ARROW_S3_LIB_SRCS}
1061+ SHARED_LINK_LIBS
1062+ arrow_shared
1063+ SHARED_PRIVATE_LINK_LIBS
1064+ ${AWSSDK_LINK_LIBRARIES}
1065+ SHARED_INSTALL_INTERFACE_LIBS
1066+ Arrow::arrow_shared
1067+ STATIC_LINK_LIBS
1068+ arrow_static
1069+ ${AWSSDK_LINK_LIBRARIES}
1070+ STATIC_INSTALL_INTERFACE_LIBS
1071+ ${ARROW_S3_STATIC_INSTALL_INTERFACE_LIBS}
1072+ SHARED_LINK_FLAGS
1073+ ${ARROW_VERSION_SCRIPT_FLAGS}
1074+ OUTPUTS
1075+ ARROW_S3_LIBRARIES )
1076+ foreach (LIB_TARGET ${ARROW_S3_LIBRARIES} )
1077+ target_compile_definitions (${LIB_TARGET} PRIVATE ARROW_S3_EXPORTING )
1078+ endforeach ()
1079+ if (ARROW_BUILD_STATIC AND WIN32 )
1080+ target_compile_definitions (arrow_s3_static PUBLIC ARROW_S3_STATIC )
1081+ endif ()
1082+
1083+ set_source_files_properties (filesystem/s3fs.cc filesystem/s3fs_module.cc
1084+ PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON )
10601085 endif ()
10611086
10621087 list (APPEND ARROW_TESTING_SHARED_LINK_LIBS ${ARROW_GTEST_GMOCK} )
@@ -1122,12 +1147,6 @@ else()
11221147 set (ARROW_ORC_TARGET_STATIC)
11231148endif ()
11241149
1125- if (CXX_LINKER_SUPPORTS_VERSION_SCRIPT)
1126- set (ARROW_VERSION_SCRIPT_FLAGS
1127- "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR } /symbols.map" )
1128- set (ARROW_SHARED_LINK_FLAGS ${ARROW_VERSION_SCRIPT_FLAGS} )
1129- endif ()
1130-
11311150if (ARROW_BUILD_STATIC AND ARROW_BUNDLED_STATIC_LIBS)
11321151 set (ARROW_BUILD_BUNDLED_DEPENDENCIES TRUE )
11331152else ()
0 commit comments