Warning, /education/kstars/cmake/modules/FindINDI.cmake is written in an unsupported language. File is not indexed.

0001 # - Try to find INDI
0002 # Once done this will define
0003 #
0004 #  INDI_FOUND - system has INDI
0005 #  INDI_INCLUDE_DIR - the INDI include directory
0006 #  For Android
0007 #  INDI_CLIENT_ANDROID_LIBRARIES - Link to these for INDI Android client
0008 #  For other platforms
0009 #  INDI_LIBRARIES - Link to these for XML and INDI Common support (INDI < 1.4 only)
0010 #  INDI_CLIENT_LIBRARIES - Link to these to build INDI clients
0011 #  INDI_CLIENT_QT_LIBRARIES - Link to these to build INDI clients with Qt5 backend
0012 #  INDI_CLIENT_ANDROID_LIBRARIES - Link to these to build INDI clients with Qt5 backend on Android
0013 # SPDX-FileCopyrightText: 2012-2017 Jasem Mutlaq <mutlaqja@ikarustech.com>
0014 # SPDX-FileCopyrightText: 2012 Pino Toscano <pino@kde.org>
0015 #
0016 # Based on FindLibfacile:
0017 # SPDX-FileCopyrightText: Carsten Niehaus, <cniehaus@gmx.de>
0018 #
0019 # SPDX-License-Identifier: BSD-3-Clause
0020 
0021 macro(_INDI_check_version)
0022     file(READ "${INDI_INCLUDE_DIR}/indiapi.h" _INDI_version_header)
0023 
0024     string(REGEX MATCH "#define INDI_VERSION_MAJOR[ \t]+([0-9]+)" _INDI_version_major_match "${_INDI_version_header}")
0025     set(INDI_VERSION_MAJOR "${CMAKE_MATCH_1}")
0026     string(REGEX MATCH "#define INDI_VERSION_MINOR[ \t]+([0-9]+)" _INDI_version_minor_match "${_INDI_version_header}")
0027     set(INDI_VERSION_MINOR "${CMAKE_MATCH_1}")
0028     string(REGEX MATCH "#define INDI_VERSION_RELEASE[ \t]+([0-9]+)" _INDI_version_release_match "${_INDI_version_header}")
0029     set(INDI_VERSION_RELEASE "${CMAKE_MATCH_1}")
0030 
0031     set(INDI_VERSION ${INDI_VERSION_MAJOR}.${INDI_VERSION_MINOR}.${INDI_VERSION_RELEASE})
0032     if(${INDI_VERSION} VERSION_LESS ${INDI_FIND_VERSION})
0033         set(INDI_VERSION_OK FALSE)
0034     else(${INDI_VERSION} VERSION_LESS ${INDI_FIND_VERSION})
0035         set(INDI_VERSION_OK TRUE)
0036     endif(${INDI_VERSION} VERSION_LESS ${INDI_FIND_VERSION})
0037 
0038     if(NOT INDI_VERSION_OK)
0039         message(STATUS "INDI version ${INDI_VERSION} found in ${INDI_INCLUDE_DIR}, "
0040                 "but at least version ${INDI_FIND_VERSION} is required")
0041     else(NOT INDI_VERSION_OK)
0042         mark_as_advanced(INDI_VERSION_MAJOR INDI_VERSION_MINOR INDI_VERSION_RELEASE)
0043     endif(NOT INDI_VERSION_OK)
0044 endmacro(_INDI_check_version)
0045 
0046 if(NOT INDI_FOUND)
0047     if (NOT WIN32 AND NOT ANDROID)
0048         find_package(PkgConfig)
0049         if (PKG_CONFIG_FOUND)
0050             pkg_check_modules(PC_INDI libindi)
0051         endif (PKG_CONFIG_FOUND)
0052     endif (NOT WIN32 AND NOT ANDROID)
0053 
0054     find_path(INDI_INCLUDE_DIR indidevapi.h
0055         PATH_SUFFIXES libindi
0056         PATHS ${PC_INDI_INCLUDE_DIRS}
0057         ${_obIncDir}
0058         ${GNUWIN32_DIR}/include
0059     )
0060 
0061     if (INDI_INCLUDE_DIR)
0062         _INDI_check_version()
0063 
0064         if(ANDROID)
0065             find_library(INDI_CLIENT_ANDROID_LIBRARIES NAMES indiclientandroid
0066                          PATHS
0067                          ${BUILD_KSTARSLITE_DIR}/android_libs/${ANDROID_ARCHITECTURE}/
0068                         )
0069         else(ANDROID)
0070 
0071             if (INDI_VERSION VERSION_LESS "1.4")
0072                 find_library(INDI_LIBRARIES NAMES indi
0073                              PATHS
0074                              ${PC_INDI_LIBRARY_DIRS}
0075                              ${_obLinkDir}
0076                              ${GNUWIN32_DIR}/lib
0077                             )
0078             endif(INDI_VERSION VERSION_LESS "1.4")
0079 
0080             find_library(INDI_CLIENT_LIBRARIES NAMES indiclient
0081                          PATHS
0082                          ${PC_INDI_LIBRARY_DIRS}
0083                          ${_obLinkDir}
0084                          ${GNUWIN32_DIR}/lib
0085                         )
0086 
0087             find_library(INDI_CLIENT_QT_LIBRARIES NAMES indiclientqt
0088                          PATHS
0089                          ${PC_INDI_LIBRARY_DIRS}
0090                          ${_obLinkDir}
0091                          ${GNUWIN32_DIR}/lib
0092                         )
0093         endif(ANDROID)
0094     endif(INDI_INCLUDE_DIR)
0095 
0096     if(ANDROID)
0097         if(INDI_INCLUDE_DIR AND INDI_CLIENT_ANDROID_LIBRARIES)
0098             set(INDI_FOUND TRUE)
0099         else()
0100             set(INDI_FOUND FALSE)
0101         endif()
0102     else(ANDROID)
0103         if (INDI_INCLUDE_DIR AND (INDI_VERSION VERSION_GREATER "1.4" OR INDI_LIBRARIES) AND (INDI_CLIENT_LIBRARIES OR INDI_CLIENT_QT_LIBRARIES) AND INDI_VERSION_OK)
0104             # If INDI is found we need to make sure on WIN32 we have INDI Client Qt backend otherwise we can't use INDI
0105             if (WIN32)
0106                 if (INDI_CLIENT_QT_LIBRARIES)
0107                     set(INDI_FOUND TRUE)
0108                 else(INDI_CLIENT_QT_LIBRARIES)
0109                     set(INDI_FOUND FALSE)
0110                 endif(INDI_CLIENT_QT_LIBRARIES)
0111             else (WIN32)
0112                 set(INDI_FOUND TRUE)
0113             endif(WIN32)
0114         else(INDI_INCLUDE_DIR AND (INDI_VERSION VERSION_GREATER "1.4" OR INDI_LIBRARIES) AND (INDI_CLIENT_LIBRARIES OR INDI_CLIENT_QT_LIBRARIES) AND INDI_VERSION_OK)
0115             set(INDI_FOUND FALSE)
0116         endif(INDI_INCLUDE_DIR AND (INDI_VERSION VERSION_GREATER "1.4" OR INDI_LIBRARIES) AND (INDI_CLIENT_LIBRARIES OR INDI_CLIENT_QT_LIBRARIES) AND INDI_VERSION_OK)
0117     endif(ANDROID)
0118 
0119     if (INDI_FOUND)
0120         if (NOT INDI_FIND_QUIETLY)
0121             if(ANDROID)
0122                 message(STATUS "Found INDI Android Client: ${INDI_CLIENT_ANDROID_LIBRARIES}")
0123             else(ANDROID)
0124             message(STATUS "Found INDI: ${INDI_LIBRARIES}, ${INDI_INCLUDE_DIR}")
0125 
0126             if (INDI_CLIENT_LIBRARIES)
0127                 message(STATUS "Found INDI Client Library: ${INDI_CLIENT_LIBRARIES}")
0128             endif (INDI_CLIENT_LIBRARIES)
0129             if (INDI_CLIENT_QT_LIBRARIES)
0130                 message(STATUS "Found INDI Qt5 Client Library: ${INDI_CLIENT_QT_LIBRARIES}")
0131             endif (INDI_CLIENT_QT_LIBRARIES)
0132         endif(ANDROID)
0133         endif (NOT INDI_FIND_QUIETLY)
0134     else (INDI_FOUND)
0135         if (INDI_FIND_REQUIRED)
0136         message(FATAL_ERROR "INDI not found. Please install INDI and try again.")
0137         endif (INDI_FIND_REQUIRED)
0138     endif (INDI_FOUND)
0139 
0140     if(ANDROID)
0141             mark_as_advanced(INDI_INCLUDE_DIR INDI_CLIENT_ANDROID_LIBRARIES)
0142     else(ANDROID)
0143             if (INDI_VERSION VERSION_LESS "1.4")
0144                 mark_as_advanced(INDI_INCLUDE_DIR INDI_LIBRARIES INDI_CLIENT_LIBRARIES INDI_CLIENT_QT_LIBRARIES)
0145             else(INDI_VERSION VERSION_LESS "1.4")
0146                 mark_as_advanced(INDI_INCLUDE_DIR INDI_CLIENT_LIBRARIES INDI_CLIENT_QT_LIBRARIES)
0147             endif(INDI_VERSION VERSION_LESS "1.4")
0148     endif(ANDROID)
0149 endif(NOT INDI_FOUND)
0150 
0151 if (INDI_INCLUDE_DIR)
0152     # in cache already
0153     _INDI_check_version()
0154     if(ANDROID)
0155         if(INDI_CLIENT_ANDROID_LIBRARIES)
0156             set(INDI_FOUND ${INDI_VERSION_OK})
0157             message(STATUS "Found INDI: ${INDI_CLIENT_ANDROID_LIBRARIES}")
0158         endif(INDI_CLIENT_ANDROID_LIBRARIES)
0159     else(ANDROID)
0160         if (INDI_VERSION VERSION_LESS "1.4" AND INDI_LIBRARIES AND (INDI_CLIENT_LIBRARIES OR INDI_CLIENT_QT_LIBRARIES))
0161             set(INDI_FOUND ${INDI_VERSION_OK})
0162             message(STATUS "Found INDI: ${INDI_LIBRARIES}, ${INDI_CLIENT_LIBRARIES}, ${INDI_INCLUDE_DIR}")
0163         elseif (INDI_CLIENT_LIBRARIES OR INDI_CLIENT_QT_LIBRARIES)
0164             set(INDI_FOUND ${INDI_VERSION_OK})
0165             message(STATUS "Found INDI: ${INDI_CLIENT_LIBRARIES}, ${INDI_INCLUDE_DIR}")
0166         endif(INDI_VERSION VERSION_LESS "1.4" AND INDI_LIBRARIES AND (INDI_CLIENT_LIBRARIES OR INDI_CLIENT_QT_LIBRARIES))
0167     endif(ANDROID)
0168 endif(INDI_INCLUDE_DIR)