File FindINDI.cmake of Package kstars4

# - Try to find INDI
# Once done this will define
#
#  INDI_FOUND - system has INDI
#  INDI_INCLUDE_DIR - the INDI include directory
#  For Android
#  INDI_CLIENT_ANDROID_LIBRARIES - Link to these for INDI Android client
#  For other platforms
#  INDI_LIBRARIES - Link to these for XML and INDI Common support (INDI < 1.4 only)
#  INDI_CLIENT_LIBRARIES - Link to these to build INDI clients
#  INDI_CLIENT_QT_LIBRARIES - Link to these to build INDI clients with Qt5 backend
#  INDI_CLIENT_ANDROID_LIBRARIES - Link to these to build INDI clients with Qt5 backend on Android
# Copyright (c) 2012-2017, Jasem Mutlaq <mutlaqja@ikarustech.com>
# Copyright (c) 2012, Pino Toscano <pino@kde.org>
# Based on FindLibfacile by Carsten Niehaus, <cniehaus@gmx.de>
#
# Redistribution AND use is allowed according to the terms of the BSD license.

macro(_INDI_check_version)
    file(READ "${INDI_INCLUDE_DIR}/indiapi.h" _INDI_version_header)

    string(REGEX MATCH "#define INDI_VERSION_MAJOR[ \t]+([0-9]+)" _INDI_version_major_match "${_INDI_version_header}")
    set(INDI_VERSION_MAJOR "${CMAKE_MATCH_1}")
    string(REGEX MATCH "#define INDI_VERSION_MINOR[ \t]+([0-9]+)" _INDI_version_minor_match "${_INDI_version_header}")
    set(INDI_VERSION_MINOR "${CMAKE_MATCH_1}")
    string(REGEX MATCH "#define INDI_VERSION_RELEASE[ \t]+([0-9]+)" _INDI_version_release_match "${_INDI_version_header}")
    set(INDI_VERSION_RELEASE "${CMAKE_MATCH_1}")

    set(INDI_VERSION ${INDI_VERSION_MAJOR}.${INDI_VERSION_MINOR}.${INDI_VERSION_RELEASE})
    if(${INDI_VERSION} VERSION_LESS ${INDI_FIND_VERSION})
        set(INDI_VERSION_OK FALSE)
    else(${INDI_VERSION} VERSION_LESS ${INDI_FIND_VERSION})
        set(INDI_VERSION_OK TRUE)
    endif(${INDI_VERSION} VERSION_LESS ${INDI_FIND_VERSION})

    if(NOT INDI_VERSION_OK)
        message(STATUS "INDI version ${INDI_VERSION} found in ${INDI_INCLUDE_DIR}, "
                "but at least version ${INDI_FIND_VERSION} is required")
    else(NOT INDI_VERSION_OK)
        mark_as_advanced(INDI_VERSION_MAJOR INDI_VERSION_MINOR INDI_VERSION_RELEASE)
    endif(NOT INDI_VERSION_OK)
endmacro(_INDI_check_version)

if(NOT INDI_FOUND)
    if (NOT WIN32 AND NOT ANDROID)
        find_package(PkgConfig)
        if (PKG_CONFIG_FOUND)
            pkg_check_modules(PC_INDI libindi)
        endif (PKG_CONFIG_FOUND)
    endif (NOT WIN32 AND NOT ANDROID)

    find_path(INDI_INCLUDE_DIR indidevapi.h
        PATH_SUFFIXES libindi
        ${PC_INDI_INCLUDE_DIRS}
        ${_obIncDir}
        ${GNUWIN32_DIR}/include
    )

    if (INDI_INCLUDE_DIR)
        _INDI_check_version()

        if(ANDROID)
            find_library(INDI_CLIENT_ANDROID_LIBRARIES NAMES indiclientandroid
                         PATHS
                         ${BUILD_KSTARSLITE_DIR}/android_libs/${ANDROID_ARCHITECTURE}/
                        )
        else(ANDROID)

            if (INDI_VERSION VERSION_LESS "1.4")
                find_library(INDI_LIBRARIES NAMES indi
                             PATHS
                             ${PC_INDI_LIBRARY_DIRS}
                             ${_obLinkDir}
                             ${GNUWIN32_DIR}/lib
                            )
            endif(INDI_VERSION VERSION_LESS "1.4")

            find_library(INDI_CLIENT_LIBRARIES NAMES indiclient
                         PATHS
                         ${PC_INDI_LIBRARY_DIRS}
                         ${_obLinkDir}
                         ${GNUWIN32_DIR}/lib
                        )

            find_library(INDI_CLIENT_QT_LIBRARIES NAMES indiclientqt
                         PATHS
                         ${PC_INDI_LIBRARY_DIRS}
                         ${_obLinkDir}
                         ${GNUWIN32_DIR}/lib
                        )
        endif(ANDROID)
    endif(INDI_INCLUDE_DIR)

    if(ANDROID)
        if(INDI_INCLUDE_DIR AND INDI_CLIENT_ANDROID_LIBRARIES)
            set(INDI_FOUND TRUE)
        else()
            set(INDI_FOUND FALSE)
        endif()
    else(ANDROID)
        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)
            # If INDI is found we need to make sure on WIN32 we have INDI Client Qt backend otherwise we can't use INDI
            if (WIN32)
                if (INDI_CLIENT_QT_LIBRARIES)
                    set(INDI_FOUND TRUE)
                else(INDI_CLIENT_QT_LIBRARIES)
                    set(INDI_FOUND FALSE)
                endif(INDI_CLIENT_QT_LIBRARIES)
            else (WIN32)
                set(INDI_FOUND TRUE)
            endif(WIN32)
        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)
            set(INDI_FOUND FALSE)
        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)
    endif(ANDROID)

    if (INDI_FOUND)
        if (NOT INDI_FIND_QUIETLY)
            if(ANDROID)
                message(STATUS "Found INDI Android Client: ${INDI_CLIENT_ANDROID_LIBRARIES}")
            else(ANDROID)
            message(STATUS "Found INDI: ${INDI_LIBRARIES}, ${INDI_INCLUDE_DIR}")

            if (INDI_CLIENT_LIBRARIES)
                message(STATUS "Found INDI Client Library: ${INDI_CLIENT_LIBRARIES}")
            endif (INDI_CLIENT_LIBRARIES)
            if (INDI_CLIENT_QT_LIBRARIES)
                message(STATUS "Found INDI Qt5 Client Library: ${INDI_CLIENT_QT_LIBRARIES}")
            endif (INDI_CLIENT_QT_LIBRARIES)
        endif(ANDROID)
        endif (NOT INDI_FIND_QUIETLY)
    else (INDI_FOUND)
        if (INDI_FIND_REQUIRED)
        message(FATAL_ERROR "INDI not found. Please install INDI and try again.")
        endif (INDI_FIND_REQUIRED)
    endif (INDI_FOUND)

    if(ANDROID)
            mark_as_advanced(INDI_INCLUDE_DIR INDI_CLIENT_ANDROID_LIBRARIES)
    else(ANDROID)
            if (INDI_VERSION VERSION_LESS "1.4")
                mark_as_advanced(INDI_INCLUDE_DIR INDI_LIBRARIES INDI_CLIENT_LIBRARIES INDI_CLIENT_QT_LIBRARIES)
            else(INDI_VERSION VERSION_LESS "1.4")
                mark_as_advanced(INDI_INCLUDE_DIR INDI_CLIENT_LIBRARIES INDI_CLIENT_QT_LIBRARIES)
            endif(INDI_VERSION VERSION_LESS "1.4")
    endif(ANDROID)
endif(NOT INDI_FOUND)

if (INDI_INCLUDE_DIR)
    # in cache already
    _INDI_check_version()
    if(ANDROID)
        if(INDI_CLIENT_ANDROID_LIBRARIES)
            set(INDI_FOUND ${INDI_VERSION_OK})
            message(STATUS "Found INDI: ${INDI_CLIENT_ANDROID_LIBRARIES}")
        endif(INDI_CLIENT_ANDROID_LIBRARIES)
    else(ANDROID)
        if (INDI_VERSION VERSION_LESS "1.4" AND INDI_LIBRARIES AND (INDI_CLIENT_LIBRARIES OR INDI_CLIENT_QT_LIBRARIES))
            set(INDI_FOUND ${INDI_VERSION_OK})
            message(STATUS "Found INDI: ${INDI_LIBRARIES}, ${INDI_CLIENT_LIBRARIES}, ${INDI_INCLUDE_DIR}")
        elseif (INDI_CLIENT_LIBRARIES OR INDI_CLIENT_QT_LIBRARIES)
            set(INDI_FOUND ${INDI_VERSION_OK})
            message(STATUS "Found INDI: ${INDI_CLIENT_LIBRARIES}, ${INDI_INCLUDE_DIR}")
        endif(INDI_VERSION VERSION_LESS "1.4" AND INDI_LIBRARIES AND (INDI_CLIENT_LIBRARIES OR INDI_CLIENT_QT_LIBRARIES))
    endif(ANDROID)
endif(INDI_INCLUDE_DIR)
openSUSE Build Service is sponsored by