kou commented on PR #43353:
URL: https://github.com/apache/arrow/pull/43353#issuecomment-2249753553
For example:
```diff
diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake
b/cpp/cmake_modules/ThirdpartyToolchain.cmake
index 5b89a831ff..aad408f04c 100644
--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
@@ -259,7 +259,7 @@ macro(resolve_dependency DEPENDENCY_NAME)
IS_RUNTIME_DEPENDENCY
REQUIRED_VERSION
USE_CONFIG)
- set(multi_value_args COMPONENTS PC_PACKAGE_NAMES)
+ set(multi_value_args COMPONENTS PC_PACKAGE_NAMES
SYSTEM_CMAKE_TARGET_CANDIDATES)
cmake_parse_arguments(ARG
"${options}"
"${one_value_args}"
@@ -339,25 +339,41 @@ macro(resolve_dependency DEPENDENCY_NAME)
string(TOUPPER ${ARG_ARROW_PC_PACKAGE_NAME_SNAKE}
ARG_ARROW_PC_PACKAGE_NAME_UPPER_SNAKE)
if(ARROW_BUILD_STATIC)
- find_package(PkgConfig QUIET)
- foreach(ARG_PC_PACKAGE_NAME ${ARG_PC_PACKAGE_NAMES})
- pkg_check_modules(${ARG_PC_PACKAGE_NAME}_PC
- ${ARG_PC_PACKAGE_NAME}
- NO_CMAKE_PATH
- NO_CMAKE_ENVIRONMENT_PATH
- QUIET)
- set(RESOLVE_DEPENDENCY_PC_PACKAGE
- "pkg-config package for ${ARG_PC_PACKAGE_NAME} ")
- string(APPEND RESOLVE_DEPENDENCY_PC_PACKAGE
- "that is used by ${ARG_ARROW_PC_PACKAGE_NAME} for static
link")
- if(${${ARG_PC_PACKAGE_NAME}_PC_FOUND})
- message(STATUS "Using ${RESOLVE_DEPENDENCY_PC_PACKAGE}")
- string(APPEND
${ARG_ARROW_PC_PACKAGE_NAME_UPPER_SNAKE}_PC_REQUIRES_PRIVATE
- " ${ARG_PC_PACKAGE_NAME}")
- else()
- message(STATUS "${RESOLVE_DEPENDENCY_PC_PACKAGE} isn't found")
+ set(TRY_PC TRUE)
+ foreach(ARG_SYSTEM_CMAKE_TARGET_CANDIDATE
${ARG_SYSTEM_CMAKE_TARGET_CANDIDATES})
+ if(NOT TARGET ${ARG_SYSTEM_CMAKE_TARGET_CANDIDATE})
+ continue()
endif()
+ get_target_property(TARGET_TYPE
${ARG_SYSTEM_CMAKE_TARGET_CANDIDATE} TYPE)
+ if(TARGET_TYPE STREQUAL "INTERFACE_LIBRARY")
+ continue()
+ endif()
+ string(APPEND ARROW_PC_LIBS_PRIVATE
+ " $<TARGET_FILE:${ARG_SYSTEM_CMAKE_TARGET_CANDIDATE}>")
+ set(TRY_PC FALSE)
+ braek()
endforeach()
+ if(TRY_PC)
+ find_package(PkgConfig QUIET)
+ foreach(ARG_PC_PACKAGE_NAME ${ARG_PC_PACKAGE_NAMES})
+ pkg_check_modules(${ARG_PC_PACKAGE_NAME}_PC
+ ${ARG_PC_PACKAGE_NAME}
+ NO_CMAKE_PATH
+ NO_CMAKE_ENVIRONMENT_PATH
+ QUIET)
+ set(RESOLVE_DEPENDENCY_PC_PACKAGE
+ "pkg-config package for ${ARG_PC_PACKAGE_NAME} ")
+ string(APPEND RESOLVE_DEPENDENCY_PC_PACKAGE
+ "that is used by ${ARG_ARROW_PC_PACKAGE_NAME} for static
link")
+ if(${${ARG_PC_PACKAGE_NAME}_PC_FOUND})
+ message(STATUS "Using ${RESOLVE_DEPENDENCY_PC_PACKAGE}")
+ string(APPEND
${ARG_ARROW_PC_PACKAGE_NAME_UPPER_SNAKE}_PC_REQUIRES_PRIVATE
+ " ${ARG_PC_PACKAGE_NAME}")
+ else()
+ message(STATUS "${RESOLVE_DEPENDENCY_PC_PACKAGE} isn't found")
+ endif()
+ endforeach()
+ endif()
endif()
endif()
endmacro()
@@ -1409,15 +1425,10 @@ if(ARROW_WITH_SNAPPY)
HAVE_ALT
TRUE
PC_PACKAGE_NAMES
- snappy)
- if(${Snappy_SOURCE} STREQUAL "SYSTEM"
- AND NOT snappy_PC_FOUND
- AND ARROW_BUILD_STATIC)
- get_target_property(SNAPPY_TYPE ${Snappy_TARGET} TYPE)
- if(NOT SNAPPY_TYPE STREQUAL "INTERFACE_LIBRARY")
- string(APPEND ARROW_PC_LIBS_PRIVATE "
$<TARGET_FILE:${Snappy_TARGET}>")
- endif()
- endif()
+ snappy
+ SYSTEM_CMAKE_TARGET_CANDIDATES
+ Snappy::snappy-static
+ Snappy::Snappy)
endif()
# ----------------------------------------------------------------------
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]