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]

Reply via email to