mirror of https://github.com/ceph/ceph
138 lines
5.4 KiB
CMake
138 lines
5.4 KiB
CMake
# 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 Parquet (parquet/api/reader.h, libparquet.a, libparquet.so)
|
|
#
|
|
# This module requires Arrow from which it uses
|
|
# arrow_find_package()
|
|
#
|
|
# This module defines
|
|
# PARQUET_FOUND, whether Parquet has been found
|
|
# PARQUET_IMPORT_LIB, path to libparquet's import library (Windows only)
|
|
# PARQUET_INCLUDE_DIR, directory containing headers
|
|
# PARQUET_LIBS, deprecated. Use PARQUET_LIB_DIR instead
|
|
# PARQUET_LIB_DIR, directory containing Parquet libraries
|
|
# PARQUET_SHARED_IMP_LIB, deprecated. Use PARQUET_IMPORT_LIB instead
|
|
# PARQUET_SHARED_LIB, path to libparquet's shared library
|
|
# PARQUET_SO_VERSION, shared object version of found Parquet such as "100"
|
|
# PARQUET_STATIC_LIB, path to libparquet.a
|
|
|
|
# cbodley copied this from the arrow submodule at v6.0.1
|
|
# cbodley added the import target Arrow::Parquet to match build_arrow()
|
|
|
|
if(DEFINED PARQUET_FOUND)
|
|
return()
|
|
endif()
|
|
|
|
set(find_package_arguments)
|
|
if(${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION)
|
|
list(APPEND find_package_arguments "${${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION}")
|
|
endif()
|
|
if(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED)
|
|
list(APPEND find_package_arguments REQUIRED)
|
|
endif()
|
|
if(${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY)
|
|
list(APPEND find_package_arguments QUIET)
|
|
endif()
|
|
find_package(Arrow ${find_package_arguments})
|
|
|
|
if(NOT "$ENV{PARQUET_HOME}" STREQUAL "")
|
|
file(TO_CMAKE_PATH "$ENV{PARQUET_HOME}" PARQUET_HOME)
|
|
endif()
|
|
|
|
if((NOT PARQUET_HOME) AND ARROW_HOME)
|
|
set(PARQUET_HOME ${ARROW_HOME})
|
|
endif()
|
|
|
|
if(ARROW_FOUND)
|
|
arrow_find_package(PARQUET
|
|
"${PARQUET_HOME}"
|
|
parquet
|
|
parquet/api/reader.h
|
|
Parquet
|
|
parquet)
|
|
if(PARQUET_HOME)
|
|
if(PARQUET_INCLUDE_DIR)
|
|
file(READ "${PARQUET_INCLUDE_DIR}/parquet/parquet_version.h"
|
|
PARQUET_VERSION_H_CONTENT)
|
|
arrow_extract_macro_value(PARQUET_VERSION_MAJOR "PARQUET_VERSION_MAJOR"
|
|
"${PARQUET_VERSION_H_CONTENT}")
|
|
arrow_extract_macro_value(PARQUET_VERSION_MINOR "PARQUET_VERSION_MINOR"
|
|
"${PARQUET_VERSION_H_CONTENT}")
|
|
arrow_extract_macro_value(PARQUET_VERSION_PATCH "PARQUET_VERSION_PATCH"
|
|
"${PARQUET_VERSION_H_CONTENT}")
|
|
if("${PARQUET_VERSION_MAJOR}" STREQUAL ""
|
|
OR "${PARQUET_VERSION_MINOR}" STREQUAL ""
|
|
OR "${PARQUET_VERSION_PATCH}" STREQUAL "")
|
|
set(PARQUET_VERSION "0.0.0")
|
|
else()
|
|
set(PARQUET_VERSION
|
|
"${PARQUET_VERSION_MAJOR}.${PARQUET_VERSION_MINOR}.${PARQUET_VERSION_PATCH}")
|
|
endif()
|
|
|
|
arrow_extract_macro_value(PARQUET_SO_VERSION_QUOTED "PARQUET_SO_VERSION"
|
|
"${PARQUET_VERSION_H_CONTENT}")
|
|
string(REGEX REPLACE "^\"(.+)\"$" "\\1" PARQUET_SO_VERSION
|
|
"${PARQUET_SO_VERSION_QUOTED}")
|
|
arrow_extract_macro_value(PARQUET_FULL_SO_VERSION_QUOTED "PARQUET_FULL_SO_VERSION"
|
|
"${PARQUET_VERSION_H_CONTENT}")
|
|
string(REGEX REPLACE "^\"(.+)\"$" "\\1" PARQUET_FULL_SO_VERSION
|
|
"${PARQUET_FULL_SO_VERSION_QUOTED}")
|
|
endif()
|
|
else()
|
|
if(PARQUET_USE_CMAKE_PACKAGE_CONFIG)
|
|
find_package(Parquet CONFIG)
|
|
elseif(PARQUET_USE_PKG_CONFIG)
|
|
pkg_get_variable(PARQUET_SO_VERSION parquet so_version)
|
|
pkg_get_variable(PARQUET_FULL_SO_VERSION parquet full_so_version)
|
|
endif()
|
|
endif()
|
|
set(PARQUET_ABI_VERSION "${PARQUET_SO_VERSION}")
|
|
endif()
|
|
|
|
mark_as_advanced(PARQUET_ABI_VERSION
|
|
PARQUET_IMPORT_LIB
|
|
PARQUET_INCLUDE_DIR
|
|
PARQUET_LIBS
|
|
PARQUET_LIB_DIR
|
|
PARQUET_SHARED_IMP_LIB
|
|
PARQUET_SHARED_LIB
|
|
PARQUET_SO_VERSION
|
|
PARQUET_STATIC_LIB
|
|
PARQUET_VERSION)
|
|
|
|
find_package_handle_standard_args(
|
|
Parquet
|
|
REQUIRED_VARS PARQUET_INCLUDE_DIR PARQUET_LIB_DIR PARQUET_SO_VERSION
|
|
VERSION_VAR PARQUET_VERSION)
|
|
set(PARQUET_FOUND ${Parquet_FOUND})
|
|
|
|
if(Parquet_FOUND AND NOT Parquet_FIND_QUIETLY)
|
|
message(STATUS "Parquet version: ${PARQUET_VERSION} (${PARQUET_FIND_APPROACH})")
|
|
message(STATUS "Found the Parquet shared library: ${PARQUET_SHARED_LIB}")
|
|
message(STATUS "Found the Parquet import library: ${PARQUET_IMPORT_LIB}")
|
|
message(STATUS "Found the Parquet static library: ${PARQUET_STATIC_LIB}")
|
|
endif()
|
|
|
|
if(Parquet_FOUND AND NOT TARGET Arrow::Parquet)
|
|
add_library(Arrow::Parquet SHARED IMPORTED)
|
|
set_target_properties(Arrow::Parquet PROPERTIES
|
|
INTERFACE_INCLUDE_DIRECTORIES "${PARQUET_INCLUDE_DIR}"
|
|
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
|
IMPORTED_LOCATION "${PARQUET_SHARED_LIB}")
|
|
endif()
|