]>
Commit | Line | Data |
---|---|---|
1d09f67e TL |
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() |