raulcd commented on code in PR #13892:
URL: https://github.com/apache/arrow/pull/13892#discussion_r963799511


##########
cpp/cmake_modules/FindArrow.cmake:
##########
@@ -1,466 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# - Find Arrow (arrow/api.h, libarrow.a, libarrow.so)
-# This module defines
-#  ARROW_FOUND, whether Arrow has been found
-#  ARROW_FULL_SO_VERSION, full shared object version of found Arrow "100.0.0"
-#  ARROW_IMPORT_LIB, path to libarrow's import library (Windows only)
-#  ARROW_INCLUDE_DIR, directory containing headers
-#  ARROW_LIBS, deprecated. Use ARROW_LIB_DIR instead
-#  ARROW_LIB_DIR, directory containing Arrow libraries
-#  ARROW_SHARED_IMP_LIB, deprecated. Use ARROW_IMPORT_LIB instead
-#  ARROW_SHARED_LIB, path to libarrow's shared library
-#  ARROW_SO_VERSION, shared object version of found Arrow such as "100"
-#  ARROW_STATIC_LIB, path to libarrow.a
-#  ARROW_VERSION, version of found Arrow
-#  ARROW_VERSION_MAJOR, major version of found Arrow
-#  ARROW_VERSION_MINOR, minor version of found Arrow
-#  ARROW_VERSION_PATCH, patch version of found Arrow
-
-if(DEFINED ARROW_FOUND)
-  return()
-endif()
-
-find_package(PkgConfig)
-include(FindPackageHandleStandardArgs)
-
-if(WIN32 AND NOT MINGW)
-  # This is used to handle builds using e.g. clang in an MSVC setting.
-  set(MSVC_TOOLCHAIN TRUE)
-else()
-  set(MSVC_TOOLCHAIN FALSE)
-endif()
-
-set(ARROW_SEARCH_LIB_PATH_SUFFIXES)
-if(CMAKE_LIBRARY_ARCHITECTURE)
-  list(APPEND ARROW_SEARCH_LIB_PATH_SUFFIXES 
"lib/${CMAKE_LIBRARY_ARCHITECTURE}")
-endif()
-list(APPEND
-     ARROW_SEARCH_LIB_PATH_SUFFIXES
-     "lib64"
-     "lib32"
-     "lib"
-     "bin")
-set(ARROW_CONFIG_SUFFIXES
-    "_RELEASE"
-    "_RELWITHDEBINFO"
-    "_MINSIZEREL"
-    "_DEBUG"
-    "")
-if(CMAKE_BUILD_TYPE)
-  string(TOUPPER ${CMAKE_BUILD_TYPE} ARROW_CONFIG_SUFFIX_PREFERRED)
-  set(ARROW_CONFIG_SUFFIX_PREFERRED "_${ARROW_CONFIG_SUFFIX_PREFERRED}")
-  list(INSERT ARROW_CONFIG_SUFFIXES 0 "${ARROW_CONFIG_SUFFIX_PREFERRED}")
-endif()
-
-if(NOT DEFINED ARROW_MSVC_STATIC_LIB_SUFFIX)
-  if(MSVC_TOOLCHAIN)
-    set(ARROW_MSVC_STATIC_LIB_SUFFIX "_static")
-  else()
-    set(ARROW_MSVC_STATIC_LIB_SUFFIX "")
-  endif()
-endif()
-
-# Internal function.
-#
-# Set shared library name for ${base_name} to ${output_variable}.
-#
-# Example:
-#   arrow_build_shared_library_name(ARROW_SHARED_LIBRARY_NAME arrow)
-#   # -> ARROW_SHARED_LIBRARY_NAME=libarrow.so on Linux
-#   # -> ARROW_SHARED_LIBRARY_NAME=libarrow.dylib on macOS
-#   # -> ARROW_SHARED_LIBRARY_NAME=arrow.dll with MSVC on Windows
-#   # -> ARROW_SHARED_LIBRARY_NAME=libarrow.dll with MinGW on Windows
-function(arrow_build_shared_library_name output_variable base_name)
-  set(${output_variable}
-      
"${CMAKE_SHARED_LIBRARY_PREFIX}${base_name}${CMAKE_SHARED_LIBRARY_SUFFIX}"
-      PARENT_SCOPE)
-endfunction()
-
-# Internal function.
-#
-# Set import library name for ${base_name} to ${output_variable}.
-# This is useful only for MSVC build. Import library is used only
-# with MSVC build.
-#
-# Example:
-#   arrow_build_import_library_name(ARROW_IMPORT_LIBRARY_NAME arrow)
-#   # -> ARROW_IMPORT_LIBRARY_NAME=arrow on Linux (meaningless)
-#   # -> ARROW_IMPORT_LIBRARY_NAME=arrow on macOS (meaningless)
-#   # -> ARROW_IMPORT_LIBRARY_NAME=arrow.lib with MSVC on Windows
-#   # -> ARROW_IMPORT_LIBRARY_NAME=libarrow.dll.a with MinGW on Windows
-function(arrow_build_import_library_name output_variable base_name)
-  set(${output_variable}
-      
"${CMAKE_IMPORT_LIBRARY_PREFIX}${base_name}${CMAKE_IMPORT_LIBRARY_SUFFIX}"
-      PARENT_SCOPE)
-endfunction()
-
-# Internal function.
-#
-# Set static library name for ${base_name} to ${output_variable}.
-#
-# Example:
-#   arrow_build_static_library_name(ARROW_STATIC_LIBRARY_NAME arrow)
-#   # -> ARROW_STATIC_LIBRARY_NAME=libarrow.a on Linux
-#   # -> ARROW_STATIC_LIBRARY_NAME=libarrow.a on macOS
-#   # -> ARROW_STATIC_LIBRARY_NAME=arrow.lib with MSVC on Windows
-#   # -> ARROW_STATIC_LIBRARY_NAME=libarrow.dll.a with MinGW on Windows
-function(arrow_build_static_library_name output_variable base_name)
-  set(${output_variable}
-      
"${CMAKE_STATIC_LIBRARY_PREFIX}${base_name}${ARROW_MSVC_STATIC_LIB_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}"
-      PARENT_SCOPE)
-endfunction()
-
-# Internal function.
-#
-# Set macro value for ${macro_name} in ${header_content} to ${output_variable}.
-#
-# Example:
-#   arrow_extract_macro_value(version_major
-#                             "ARROW_VERSION_MAJOR"
-#                             "#define ARROW_VERSION_MAJOR 1.0.0")
-#   # -> version_major=1.0.0
-function(arrow_extract_macro_value output_variable macro_name header_content)
-  string(REGEX MATCH "#define +${macro_name} +[^\r\n]+" macro_definition
-               "${header_content}")
-  string(REGEX REPLACE "^#define +${macro_name} +(.+)$" "\\1" macro_value
-                       "${macro_definition}")
-  set(${output_variable}
-      "${macro_value}"
-      PARENT_SCOPE)
-endfunction()
-
-# Internal macro only for arrow_find_package.
-#
-# Find package in HOME.
-macro(arrow_find_package_home)
-  find_path(${prefix}_include_dir "${header_path}"
-            PATHS "${home}"
-            PATH_SUFFIXES "include"
-            NO_DEFAULT_PATH)
-  set(include_dir "${${prefix}_include_dir}")
-  set(${prefix}_INCLUDE_DIR
-      "${include_dir}"
-      PARENT_SCOPE)
-
-  if(MSVC_TOOLCHAIN)
-    set(CMAKE_SHARED_LIBRARY_SUFFIXES_ORIGINAL ${CMAKE_FIND_LIBRARY_SUFFIXES})
-    # .dll isn't found by find_library with MSVC because .dll isn't included in
-    # CMAKE_FIND_LIBRARY_SUFFIXES.
-    list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES "${CMAKE_SHARED_LIBRARY_SUFFIX}")
-  endif()
-  find_library(${prefix}_shared_lib
-               NAMES "${shared_lib_name}"
-               PATHS "${home}"
-               PATH_SUFFIXES ${ARROW_SEARCH_LIB_PATH_SUFFIXES}
-               NO_DEFAULT_PATH)
-  if(MSVC_TOOLCHAIN)
-    set(CMAKE_SHARED_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_ORIGINAL})
-  endif()
-  set(shared_lib "${${prefix}_shared_lib}")
-  set(${prefix}_SHARED_LIB
-      "${shared_lib}"
-      PARENT_SCOPE)
-  if(shared_lib)
-    add_library(${target_shared} SHARED IMPORTED)
-    set_target_properties(${target_shared} PROPERTIES IMPORTED_LOCATION 
"${shared_lib}")
-    if(include_dir)
-      set_target_properties(${target_shared} PROPERTIES 
INTERFACE_INCLUDE_DIRECTORIES
-                                                        "${include_dir}")
-    endif()
-    find_library(${prefix}_import_lib
-                 NAMES "${import_lib_name}"
-                 PATHS "${home}"
-                 PATH_SUFFIXES ${ARROW_SEARCH_LIB_PATH_SUFFIXES}
-                 NO_DEFAULT_PATH)
-    set(import_lib "${${prefix}_import_lib}")
-    set(${prefix}_IMPORT_LIB
-        "${import_lib}"
-        PARENT_SCOPE)
-    if(import_lib)
-      set_target_properties(${target_shared} PROPERTIES IMPORTED_IMPLIB 
"${import_lib}")
-    endif()
-  endif()
-
-  find_library(${prefix}_static_lib
-               NAMES "${static_lib_name}"
-               PATHS "${home}"
-               PATH_SUFFIXES ${ARROW_SEARCH_LIB_PATH_SUFFIXES}
-               NO_DEFAULT_PATH)
-  set(static_lib "${${prefix}_static_lib}")
-  set(${prefix}_STATIC_LIB
-      "${static_lib}"
-      PARENT_SCOPE)
-  if(static_lib)
-    add_library(${target_static} STATIC IMPORTED)
-    set_target_properties(${target_static} PROPERTIES IMPORTED_LOCATION 
"${static_lib}")
-    if(include_dir)
-      set_target_properties(${target_static} PROPERTIES 
INTERFACE_INCLUDE_DIRECTORIES
-                                                        "${include_dir}")
-    endif()
-  endif()
-endmacro()
-
-# Internal macro only for arrow_find_package.
-#
-# Find package by CMake package configuration.
-macro(arrow_find_package_cmake_package_configuration)
-  find_package(${cmake_package_name} CONFIG)
-  if(${cmake_package_name}_FOUND)
-    set(${prefix}_USE_CMAKE_PACKAGE_CONFIG
-        TRUE
-        PARENT_SCOPE)
-    if(TARGET ${target_shared})
-      foreach(suffix ${ARROW_CONFIG_SUFFIXES})
-        get_target_property(shared_lib ${target_shared} 
IMPORTED_LOCATION${suffix})
-        if(shared_lib)
-          # Remove shared library version:
-          #   libarrow.so.100.0.0 -> libarrow.so
-          # Because ARROW_HOME and pkg-config approaches don't add
-          # shared library version.
-          string(REGEX REPLACE "(${CMAKE_SHARED_LIBRARY_SUFFIX})[.0-9]+$" "\\1"
-                               shared_lib "${shared_lib}")
-          set(${prefix}_SHARED_LIB
-              "${shared_lib}"
-              PARENT_SCOPE)
-          break()
-        endif()
-      endforeach()
-    endif()
-    if(TARGET ${target_static})
-      foreach(suffix ${ARROW_CONFIG_SUFFIXES})
-        get_target_property(static_lib ${target_static} 
IMPORTED_LOCATION${suffix})
-        if(static_lib)
-          set(${prefix}_STATIC_LIB
-              "${static_lib}"
-              PARENT_SCOPE)
-          break()
-        endif()
-      endforeach()
-    endif()
-  endif()
-endmacro()
-
-# Internal macro only for arrow_find_package.
-#
-# Find package by pkg-config.
-macro(arrow_find_package_pkg_config)
-  pkg_check_modules(${prefix}_PC ${pkg_config_name})
-  if(${prefix}_PC_FOUND)
-    set(${prefix}_USE_PKG_CONFIG
-        TRUE
-        PARENT_SCOPE)
-
-    set(include_dir "${${prefix}_PC_INCLUDEDIR}")
-    set(lib_dir "${${prefix}_PC_LIBDIR}")
-    set(shared_lib_paths "${${prefix}_PC_LINK_LIBRARIES}")
-    # Use the first shared library path as the IMPORTED_LOCATION
-    # for ${target_shared}. This assumes that the first shared library
-    # path is the shared library path for this module.
-    list(GET shared_lib_paths 0 first_shared_lib_path)
-    # Use the rest shared library paths as the INTERFACE_LINK_LIBRARIES
-    # for ${target_shared}. This assumes that the rest shared library
-    # paths are dependency library paths for this module.
-    list(LENGTH shared_lib_paths n_shared_lib_paths)
-    if(n_shared_lib_paths LESS_EQUAL 1)
-      set(rest_shared_lib_paths)
-    else()
-      list(SUBLIST
-           shared_lib_paths
-           1
-           -1
-           rest_shared_lib_paths)
-    endif()
-
-    set(${prefix}_VERSION
-        "${${prefix}_PC_VERSION}"
-        PARENT_SCOPE)
-    set(${prefix}_INCLUDE_DIR
-        "${include_dir}"
-        PARENT_SCOPE)
-    set(${prefix}_SHARED_LIB
-        "${first_shared_lib_path}"
-        PARENT_SCOPE)
-
-    add_library(${target_shared} SHARED IMPORTED)
-    set_target_properties(${target_shared}
-                          PROPERTIES INTERFACE_INCLUDE_DIRECTORIES 
"${include_dir}"
-                                     INTERFACE_LINK_LIBRARIES 
"${rest_shared_lib_paths}"
-                                     IMPORTED_LOCATION 
"${first_shared_lib_path}")
-    get_target_property(shared_lib ${target_shared} IMPORTED_LOCATION)
-
-    find_library(${prefix}_static_lib
-                 NAMES "${static_lib_name}"
-                 PATHS "${lib_dir}"
-                 NO_DEFAULT_PATH)
-    set(static_lib "${${prefix}_static_lib}")
-    set(${prefix}_STATIC_LIB
-        "${static_lib}"
-        PARENT_SCOPE)
-    if(static_lib)
-      add_library(${target_static} STATIC IMPORTED)
-      set_target_properties(${target_static}
-                            PROPERTIES INTERFACE_INCLUDE_DIRECTORIES 
"${include_dir}"
-                                       IMPORTED_LOCATION "${static_lib}")
-    endif()
-  endif()
-endmacro()
-
-function(arrow_find_package
-         prefix
-         home
-         base_name
-         header_path
-         cmake_package_name
-         pkg_config_name)
-  arrow_build_shared_library_name(shared_lib_name ${base_name})
-  arrow_build_import_library_name(import_lib_name ${base_name})
-  arrow_build_static_library_name(static_lib_name ${base_name})
-
-  set(target_shared ${base_name}_shared)
-  set(target_static ${base_name}_static)
-
-  if(home)
-    arrow_find_package_home()
-    set(${prefix}_FIND_APPROACH
-        "HOME: ${home}"
-        PARENT_SCOPE)
-  else()
-    arrow_find_package_cmake_package_configuration()
-    if(${cmake_package_name}_FOUND)
-      set(${prefix}_FIND_APPROACH
-          "CMake package configuration: ${cmake_package_name}"
-          PARENT_SCOPE)
-    else()
-      arrow_find_package_pkg_config()
-      set(${prefix}_FIND_APPROACH
-          "pkg-config: ${pkg_config_name}"
-          PARENT_SCOPE)
-    endif()
-  endif()
-
-  if(NOT include_dir)
-    if(TARGET ${target_shared})
-      get_target_property(include_dir ${target_shared} 
INTERFACE_INCLUDE_DIRECTORIES)
-    elseif(TARGET ${target_static})
-      get_target_property(include_dir ${target_static} 
INTERFACE_INCLUDE_DIRECTORIES)
-    endif()
-  endif()
-  if(include_dir)
-    set(${prefix}_INCLUDE_DIR
-        "${include_dir}"
-        PARENT_SCOPE)
-  endif()
-
-  if(shared_lib)
-    get_filename_component(lib_dir "${shared_lib}" DIRECTORY)
-  elseif(static_lib)
-    get_filename_component(lib_dir "${static_lib}" DIRECTORY)
-  else()
-    set(lib_dir NOTFOUND)
-  endif()
-  set(${prefix}_LIB_DIR
-      "${lib_dir}"
-      PARENT_SCOPE)
-  # For backward compatibility
-  set(${prefix}_LIBS
-      "${lib_dir}"
-      PARENT_SCOPE)
-endfunction()
-
-if(NOT "$ENV{ARROW_HOME}" STREQUAL "")
-  file(TO_CMAKE_PATH "$ENV{ARROW_HOME}" ARROW_HOME)
-endif()
-arrow_find_package(ARROW
-                   "${ARROW_HOME}"
-                   arrow
-                   arrow/api.h
-                   Arrow
-                   arrow)
-
-if(ARROW_HOME)
-  if(ARROW_INCLUDE_DIR)
-    file(READ "${ARROW_INCLUDE_DIR}/arrow/util/config.h" 
ARROW_CONFIG_H_CONTENT)
-    arrow_extract_macro_value(ARROW_VERSION_MAJOR "ARROW_VERSION_MAJOR"
-                              "${ARROW_CONFIG_H_CONTENT}")
-    arrow_extract_macro_value(ARROW_VERSION_MINOR "ARROW_VERSION_MINOR"
-                              "${ARROW_CONFIG_H_CONTENT}")
-    arrow_extract_macro_value(ARROW_VERSION_PATCH "ARROW_VERSION_PATCH"
-                              "${ARROW_CONFIG_H_CONTENT}")
-    if("${ARROW_VERSION_MAJOR}" STREQUAL ""
-       OR "${ARROW_VERSION_MINOR}" STREQUAL ""
-       OR "${ARROW_VERSION_PATCH}" STREQUAL "")
-      set(ARROW_VERSION "0.0.0")
-    else()
-      set(ARROW_VERSION
-          
"${ARROW_VERSION_MAJOR}.${ARROW_VERSION_MINOR}.${ARROW_VERSION_PATCH}")
-    endif()
-
-    arrow_extract_macro_value(ARROW_SO_VERSION_QUOTED "ARROW_SO_VERSION"
-                              "${ARROW_CONFIG_H_CONTENT}")
-    string(REGEX REPLACE "^\"(.+)\"$" "\\1" ARROW_SO_VERSION 
"${ARROW_SO_VERSION_QUOTED}")
-    arrow_extract_macro_value(ARROW_FULL_SO_VERSION_QUOTED 
"ARROW_FULL_SO_VERSION"
-                              "${ARROW_CONFIG_H_CONTENT}")
-    string(REGEX REPLACE "^\"(.+)\"$" "\\1" ARROW_FULL_SO_VERSION
-                         "${ARROW_FULL_SO_VERSION_QUOTED}")
-  endif()
-else()
-  if(ARROW_USE_CMAKE_PACKAGE_CONFIG)
-    find_package(Arrow CONFIG)
-  elseif(ARROW_USE_PKG_CONFIG)
-    pkg_get_variable(ARROW_SO_VERSION arrow so_version)
-    pkg_get_variable(ARROW_FULL_SO_VERSION arrow full_so_version)
-  endif()
-endif()
-
-set(ARROW_ABI_VERSION ${ARROW_SO_VERSION})
-
-mark_as_advanced(ARROW_ABI_VERSION
-                 ARROW_CONFIG_SUFFIXES
-                 ARROW_FULL_SO_VERSION
-                 ARROW_IMPORT_LIB
-                 ARROW_INCLUDE_DIR
-                 ARROW_LIBS
-                 ARROW_LIB_DIR
-                 ARROW_SEARCH_LIB_PATH_SUFFIXES
-                 ARROW_SHARED_IMP_LIB
-                 ARROW_SHARED_LIB
-                 ARROW_SO_VERSION
-                 ARROW_STATIC_LIB
-                 ARROW_VERSION
-                 ARROW_VERSION_MAJOR
-                 ARROW_VERSION_MINOR
-                 ARROW_VERSION_PATCH)
-
-find_package_handle_standard_args(
-  Arrow
-  REQUIRED_VARS # The first required variable is shown
-                # in the found message. So this list is
-                # not sorted alphabetically.
-                ARROW_INCLUDE_DIR ARROW_LIB_DIR ARROW_FULL_SO_VERSION 
ARROW_SO_VERSION
-  VERSION_VAR ARROW_VERSION)
-set(ARROW_FOUND ${Arrow_FOUND})
-
-if(Arrow_FOUND AND NOT Arrow_FIND_QUIETLY)
-  message(STATUS "Arrow version: ${ARROW_VERSION} (${ARROW_FIND_APPROACH})")
-  message(STATUS "Arrow SO and ABI version: ${ARROW_SO_VERSION}")
-  message(STATUS "Arrow full SO version: ${ARROW_FULL_SO_VERSION}")
-  message(STATUS "Found the Arrow core shared library: ${ARROW_SHARED_LIB}")
-  message(STATUS "Found the Arrow core import library: ${ARROW_IMPORT_LIB}")
-  message(STATUS "Found the Arrow core static library: ${ARROW_STATIC_LIB}")

Review Comment:
   I've created https://issues.apache.org/jira/browse/ARROW-17632 to follow 
this up, feel free to update the ticket if I missed anything



-- 
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