]> git.proxmox.com Git - ceph.git/blob - ceph/cmake/modules/FindParquet.cmake
import quincy 17.2.0
[ceph.git] / ceph / cmake / modules / FindParquet.cmake
1 # Licensed to the Apache Software Foundation (ASF) under one
2 # or more contributor license agreements. See the NOTICE file
3 # distributed with this work for additional information
4 # regarding copyright ownership. The ASF licenses this file
5 # to you under the Apache License, Version 2.0 (the
6 # "License"); you may not use this file except in compliance
7 # with the License. You may obtain a copy of the License at
8 #
9 # http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing,
12 # software distributed under the License is distributed on an
13 # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 # KIND, either express or implied. See the License for the
15 # specific language governing permissions and limitations
16 # under the License.
17
18 # - Find Parquet (parquet/api/reader.h, libparquet.a, libparquet.so)
19 #
20 # This module requires Arrow from which it uses
21 # arrow_find_package()
22 #
23 # This module defines
24 # PARQUET_FOUND, whether Parquet has been found
25 # PARQUET_IMPORT_LIB, path to libparquet's import library (Windows only)
26 # PARQUET_INCLUDE_DIR, directory containing headers
27 # PARQUET_LIBS, deprecated. Use PARQUET_LIB_DIR instead
28 # PARQUET_LIB_DIR, directory containing Parquet libraries
29 # PARQUET_SHARED_IMP_LIB, deprecated. Use PARQUET_IMPORT_LIB instead
30 # PARQUET_SHARED_LIB, path to libparquet's shared library
31 # PARQUET_SO_VERSION, shared object version of found Parquet such as "100"
32 # PARQUET_STATIC_LIB, path to libparquet.a
33
34 # cbodley copied this from the arrow submodule at v6.0.1
35 # cbodley added the import target Arrow::Parquet to match build_arrow()
36
37 if(DEFINED PARQUET_FOUND)
38 return()
39 endif()
40
41 set(find_package_arguments)
42 if(${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION)
43 list(APPEND find_package_arguments "${${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION}")
44 endif()
45 if(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED)
46 list(APPEND find_package_arguments REQUIRED)
47 endif()
48 if(${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY)
49 list(APPEND find_package_arguments QUIET)
50 endif()
51 find_package(Arrow ${find_package_arguments})
52
53 if(NOT "$ENV{PARQUET_HOME}" STREQUAL "")
54 file(TO_CMAKE_PATH "$ENV{PARQUET_HOME}" PARQUET_HOME)
55 endif()
56
57 if((NOT PARQUET_HOME) AND ARROW_HOME)
58 set(PARQUET_HOME ${ARROW_HOME})
59 endif()
60
61 if(ARROW_FOUND)
62 arrow_find_package(PARQUET
63 "${PARQUET_HOME}"
64 parquet
65 parquet/api/reader.h
66 Parquet
67 parquet)
68 if(PARQUET_HOME)
69 if(PARQUET_INCLUDE_DIR)
70 file(READ "${PARQUET_INCLUDE_DIR}/parquet/parquet_version.h"
71 PARQUET_VERSION_H_CONTENT)
72 arrow_extract_macro_value(PARQUET_VERSION_MAJOR "PARQUET_VERSION_MAJOR"
73 "${PARQUET_VERSION_H_CONTENT}")
74 arrow_extract_macro_value(PARQUET_VERSION_MINOR "PARQUET_VERSION_MINOR"
75 "${PARQUET_VERSION_H_CONTENT}")
76 arrow_extract_macro_value(PARQUET_VERSION_PATCH "PARQUET_VERSION_PATCH"
77 "${PARQUET_VERSION_H_CONTENT}")
78 if("${PARQUET_VERSION_MAJOR}" STREQUAL ""
79 OR "${PARQUET_VERSION_MINOR}" STREQUAL ""
80 OR "${PARQUET_VERSION_PATCH}" STREQUAL "")
81 set(PARQUET_VERSION "0.0.0")
82 else()
83 set(PARQUET_VERSION
84 "${PARQUET_VERSION_MAJOR}.${PARQUET_VERSION_MINOR}.${PARQUET_VERSION_PATCH}")
85 endif()
86
87 arrow_extract_macro_value(PARQUET_SO_VERSION_QUOTED "PARQUET_SO_VERSION"
88 "${PARQUET_VERSION_H_CONTENT}")
89 string(REGEX REPLACE "^\"(.+)\"$" "\\1" PARQUET_SO_VERSION
90 "${PARQUET_SO_VERSION_QUOTED}")
91 arrow_extract_macro_value(PARQUET_FULL_SO_VERSION_QUOTED "PARQUET_FULL_SO_VERSION"
92 "${PARQUET_VERSION_H_CONTENT}")
93 string(REGEX REPLACE "^\"(.+)\"$" "\\1" PARQUET_FULL_SO_VERSION
94 "${PARQUET_FULL_SO_VERSION_QUOTED}")
95 endif()
96 else()
97 if(PARQUET_USE_CMAKE_PACKAGE_CONFIG)
98 find_package(Parquet CONFIG)
99 elseif(PARQUET_USE_PKG_CONFIG)
100 pkg_get_variable(PARQUET_SO_VERSION parquet so_version)
101 pkg_get_variable(PARQUET_FULL_SO_VERSION parquet full_so_version)
102 endif()
103 endif()
104 set(PARQUET_ABI_VERSION "${PARQUET_SO_VERSION}")
105 endif()
106
107 mark_as_advanced(PARQUET_ABI_VERSION
108 PARQUET_IMPORT_LIB
109 PARQUET_INCLUDE_DIR
110 PARQUET_LIBS
111 PARQUET_LIB_DIR
112 PARQUET_SHARED_IMP_LIB
113 PARQUET_SHARED_LIB
114 PARQUET_SO_VERSION
115 PARQUET_STATIC_LIB
116 PARQUET_VERSION)
117
118 find_package_handle_standard_args(
119 Parquet
120 REQUIRED_VARS PARQUET_INCLUDE_DIR PARQUET_LIB_DIR PARQUET_SO_VERSION
121 VERSION_VAR PARQUET_VERSION)
122 set(PARQUET_FOUND ${Parquet_FOUND})
123
124 if(Parquet_FOUND AND NOT Parquet_FIND_QUIETLY)
125 message(STATUS "Parquet version: ${PARQUET_VERSION} (${PARQUET_FIND_APPROACH})")
126 message(STATUS "Found the Parquet shared library: ${PARQUET_SHARED_LIB}")
127 message(STATUS "Found the Parquet import library: ${PARQUET_IMPORT_LIB}")
128 message(STATUS "Found the Parquet static library: ${PARQUET_STATIC_LIB}")
129 endif()
130
131 if(Parquet_FOUND AND NOT TARGET Arrow::Parquet)
132 add_library(Arrow::Parquet SHARED IMPORTED)
133 set_target_properties(Arrow::Parquet PROPERTIES
134 INTERFACE_INCLUDE_DIRECTORIES "${PARQUET_INCLUDE_DIR}"
135 IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
136 IMPORTED_LOCATION "${PARQUET_SHARED_LIB}")
137 endif()