| # 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. |
| |
| set(_PAIMON_ARROW_ROOTS ${Arrow_ROOT} ${ARROW_ROOT} ${PAIMON_PACKAGE_PREFIX}) |
| list(REMOVE_ITEM _PAIMON_ARROW_ROOTS "") |
| if(_PAIMON_ARROW_ROOTS) |
| set(_PAIMON_ARROW_FIND_ARGS HINTS ${_PAIMON_ARROW_ROOTS} NO_DEFAULT_PATH) |
| endif() |
| |
| find_package(Arrow CONFIG QUIET ${_PAIMON_ARROW_FIND_ARGS}) |
| find_package(Parquet CONFIG QUIET ${_PAIMON_ARROW_FIND_ARGS}) |
| find_package(ArrowDataset CONFIG QUIET ${_PAIMON_ARROW_FIND_ARGS}) |
| find_package(ArrowAcero CONFIG QUIET ${_PAIMON_ARROW_FIND_ARGS}) |
| |
| function(_paimon_select_first_target OUT_VAR) |
| foreach(_target IN LISTS ARGN) |
| if(TARGET ${_target}) |
| set(${OUT_VAR} |
| ${_target} |
| PARENT_SCOPE) |
| return() |
| endif() |
| endforeach() |
| endfunction() |
| |
| if(PAIMON_DEPENDENCY_USE_SHARED) |
| _paimon_select_first_target(_PAIMON_ARROW_TARGET Arrow::arrow_shared Arrow::arrow) |
| _paimon_select_first_target(_PAIMON_PARQUET_TARGET Parquet::parquet_shared |
| Parquet::parquet) |
| _paimon_select_first_target(_PAIMON_ARROW_DATASET_TARGET |
| ArrowDataset::arrow_dataset_shared |
| Arrow::arrow_dataset_shared ArrowDataset::arrow_dataset) |
| _paimon_select_first_target(_PAIMON_ARROW_ACERO_TARGET ArrowAcero::arrow_acero_shared |
| Arrow::arrow_acero_shared ArrowAcero::arrow_acero) |
| else() |
| _paimon_select_first_target(_PAIMON_ARROW_TARGET Arrow::arrow_static Arrow::arrow) |
| _paimon_select_first_target(_PAIMON_PARQUET_TARGET Parquet::parquet_static |
| Parquet::parquet) |
| _paimon_select_first_target(_PAIMON_ARROW_DATASET_TARGET |
| ArrowDataset::arrow_dataset_static |
| Arrow::arrow_dataset_static ArrowDataset::arrow_dataset) |
| _paimon_select_first_target(_PAIMON_ARROW_ACERO_TARGET ArrowAcero::arrow_acero_static |
| Arrow::arrow_acero_static ArrowAcero::arrow_acero) |
| endif() |
| |
| include(FindPackageHandleStandardArgs) |
| find_package_handle_standard_args( |
| ArrowAlt REQUIRED_VARS _PAIMON_ARROW_TARGET _PAIMON_PARQUET_TARGET |
| _PAIMON_ARROW_DATASET_TARGET _PAIMON_ARROW_ACERO_TARGET) |
| |
| if(ArrowAlt_FOUND) |
| get_target_property(ARROW_INCLUDE_DIR ${_PAIMON_ARROW_TARGET} |
| INTERFACE_INCLUDE_DIRECTORIES) |
| |
| if(NOT TARGET arrow) |
| add_library(arrow INTERFACE IMPORTED) |
| if(ARROW_INCLUDE_DIR) |
| set_target_properties(arrow PROPERTIES INTERFACE_INCLUDE_DIRECTORIES |
| "${ARROW_INCLUDE_DIR}") |
| endif() |
| target_link_libraries(arrow INTERFACE ${_PAIMON_ARROW_TARGET}) |
| endif() |
| |
| if(NOT TARGET arrow_acero) |
| add_library(arrow_acero INTERFACE IMPORTED) |
| target_link_libraries(arrow_acero INTERFACE ${_PAIMON_ARROW_ACERO_TARGET} arrow) |
| endif() |
| |
| if(NOT TARGET arrow_dataset) |
| add_library(arrow_dataset INTERFACE IMPORTED) |
| target_link_libraries(arrow_dataset INTERFACE ${_PAIMON_ARROW_DATASET_TARGET} |
| arrow_acero) |
| endif() |
| |
| if(NOT TARGET parquet) |
| add_library(parquet INTERFACE IMPORTED) |
| target_link_libraries(parquet INTERFACE ${_PAIMON_PARQUET_TARGET} arrow_dataset) |
| endif() |
| endif() |
| |
| unset(_PAIMON_ARROW_ACERO_TARGET) |
| unset(_PAIMON_ARROW_DATASET_TARGET) |
| unset(_PAIMON_ARROW_FIND_ARGS) |
| unset(_PAIMON_ARROW_ROOTS) |
| unset(_PAIMON_ARROW_TARGET) |
| unset(_PAIMON_PARQUET_TARGET) |