diff options
author | James McKenzie <root@ka-ata-killa.panaceas.james.local> | 2022-11-27 08:06:02 +0000 |
---|---|---|
committer | James McKenzie <root@ka-ata-killa.panaceas.james.local> | 2022-11-27 08:06:02 +0000 |
commit | 2ba3c5bbf6f8c182c92bfaaf120a8b07937f53f7 (patch) | |
tree | 248c3eb1dadff3a7a4d660e9b9ea5a930f3b4e31 /cmake_modules | |
download | indi_mount_driver-2ba3c5bbf6f8c182c92bfaaf120a8b07937f53f7.tar.gz indi_mount_driver-2ba3c5bbf6f8c182c92bfaaf120a8b07937f53f7.tar.bz2 indi_mount_driver-2ba3c5bbf6f8c182c92bfaaf120a8b07937f53f7.zip |
first
Diffstat (limited to 'cmake_modules')
57 files changed, 4531 insertions, 0 deletions
diff --git a/cmake_modules/CMakeCommon.cmake b/cmake_modules/CMakeCommon.cmake new file mode 100644 index 0000000..b7be23d --- /dev/null +++ b/cmake_modules/CMakeCommon.cmake @@ -0,0 +1,128 @@ + +include(CheckCCompilerFlag) + +#IF (NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC") + #SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99") + #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") +#ENDIF () + +# C++14 Support +if (NOT ANDROID) +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +endif(NOT ANDROID) + +# Position Independent Code +set(CMAKE_POSITION_INDEPENDENT_CODE ON) + +# Ccache support +IF (ANDROID OR UNIX OR APPLE) + FIND_PROGRAM(CCACHE_FOUND ccache) + SET(CCACHE_SUPPORT OFF CACHE BOOL "Enable ccache support") + IF ((CCACHE_FOUND OR ANDROID) AND CCACHE_SUPPORT MATCHES ON) + SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) + SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) + ENDIF () +ENDIF () + +# Add security (hardening flags) +IF (UNIX OR APPLE OR ANDROID) + # Older compilers are predefining _FORTIFY_SOURCE, so defining it causes a + # warning, which is then considered an error. Second issue is that for + # these compilers, _FORTIFY_SOURCE must be used while optimizing, else + # causes a warning, which also results in an error. And finally, CMake is + # not using optimization when testing for libraries, hence breaking the build. + CHECK_C_COMPILER_FLAG("-Werror -D_FORTIFY_SOURCE=2" COMPATIBLE_FORTIFY_SOURCE) + IF (${COMPATIBLE_FORTIFY_SOURCE}) + SET(SEC_COMP_FLAGS "-D_FORTIFY_SOURCE=2") + ENDIF () + SET(SEC_COMP_FLAGS "${SEC_COMP_FLAGS} -fstack-protector-all -fPIE") + # Make sure to add optimization flag. Some systems require this for _FORTIFY_SOURCE. + IF (NOT CMAKE_BUILD_TYPE MATCHES "MinSizeRel" AND NOT CMAKE_BUILD_TYPE MATCHES "Release" AND NOT CMAKE_BUILD_TYPE MATCHES "Debug") + SET(SEC_COMP_FLAGS "${SEC_COMP_FLAGS} -O1") + ENDIF () + IF (NOT ANDROID AND NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" AND NOT APPLE AND NOT CYGWIN) + SET(SEC_COMP_FLAGS "${SEC_COMP_FLAGS} -Wa,--noexecstack") + ENDIF () + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${SEC_COMP_FLAGS}") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SEC_COMP_FLAGS}") + SET(SEC_LINK_FLAGS "") + IF (NOT APPLE AND NOT CYGWIN) + SET(SEC_LINK_FLAGS "${SEC_LINK_FLAGS} -Wl,-z,nodump -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now") + ENDIF () + IF (NOT ANDROID AND NOT APPLE) + SET(SEC_LINK_FLAGS "${SEC_LINK_FLAGS} -pie") + ENDIF () + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${SEC_LINK_FLAGS}") + SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${SEC_LINK_FLAGS}") +ENDIF () + +# Warning, debug and linker flags +SET(FIX_WARNINGS OFF CACHE BOOL "Enable strict compilation mode to turn compiler warnings to errors") +IF (UNIX OR APPLE) + SET(COMP_FLAGS "") + SET(LINKER_FLAGS "") + # Verbose warnings and turns all to errors + SET(COMP_FLAGS "${COMP_FLAGS} -Wall -Wextra") + IF (FIX_WARNINGS) + SET(COMP_FLAGS "${COMP_FLAGS} -Werror") + ENDIF () + # Omit problematic warnings + IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") + SET(COMP_FLAGS "${COMP_FLAGS} -Wno-unused-but-set-variable") + ENDIF () + IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.9.9) + SET(COMP_FLAGS "${COMP_FLAGS} -Wno-format-truncation") + ENDIF () + IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang") + SET(COMP_FLAGS "${COMP_FLAGS} -Wno-nonnull -Wno-deprecated-declarations") + ENDIF () + + # Minimal debug info with Clang + IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + SET(COMP_FLAGS "${COMP_FLAGS} -gline-tables-only") + ELSE () + SET(COMP_FLAGS "${COMP_FLAGS} -g") + ENDIF () + + # Note: The following flags are problematic on older systems with gcc 4.8 + IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9.9)) + IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang") + SET(COMP_FLAGS "${COMP_FLAGS} -Wno-unused-command-line-argument") + ENDIF () + FIND_PROGRAM(LDGOLD_FOUND ld.gold) + SET(LDGOLD_SUPPORT OFF CACHE BOOL "Enable ld.gold support") + # Optional ld.gold is 2x faster than normal ld + IF (LDGOLD_FOUND AND LDGOLD_SUPPORT MATCHES ON AND NOT APPLE AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES arm) + SET(LINKER_FLAGS "${LINKER_FLAGS} -fuse-ld=gold") + # Use Identical Code Folding + SET(COMP_FLAGS "${COMP_FLAGS} -ffunction-sections") + SET(LINKER_FLAGS "${LINKER_FLAGS} -Wl,--icf=safe") + # Compress the debug sections + # Note: Before valgrind 3.12.0, patch should be applied for valgrind (https://bugs.kde.org/show_bug.cgi?id=303877) + IF (NOT APPLE AND NOT ANDROID AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES arm AND NOT CMAKE_CXX_CLANG_TIDY) + SET(COMP_FLAGS "${COMP_FLAGS} -Wa,--compress-debug-sections") + SET(LINKER_FLAGS "${LINKER_FLAGS} -Wl,--compress-debug-sections=zlib") + ENDIF () + ENDIF () + ENDIF () + + # Apply the flags + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMP_FLAGS}") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMP_FLAGS}") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINKER_FLAGS}") + SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINKER_FLAGS}") +ENDIF () + +# Sanitizer support +SET(CLANG_SANITIZERS OFF CACHE BOOL "Clang's sanitizer support") +IF (CLANG_SANITIZERS AND + ((UNIX AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") OR (APPLE AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang"))) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address,undefined -fno-omit-frame-pointer") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address,undefined -fno-omit-frame-pointer") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address,undefined -fno-omit-frame-pointer") + SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fsanitize=address,undefined -fno-omit-frame-pointer") +ENDIF () + +# Unity Build support +include(UnityBuild) diff --git a/cmake_modules/CMakeParseArguments.cmake b/cmake_modules/CMakeParseArguments.cmake new file mode 100644 index 0000000..fc64ab9 --- /dev/null +++ b/cmake_modules/CMakeParseArguments.cmake @@ -0,0 +1,21 @@ +#.rst: +# CMakeParseArguments +# ------------------- +# +# This module once implemented the :command:`cmake_parse_arguments` command +# that is now implemented natively by CMake. It is now an empty placeholder +# for compatibility with projects that include it to get the command from +# CMake 3.4 and lower. + +#============================================================================= +# Copyright 2010 Alexander Neundorf <neundorf@kde.org> +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) diff --git a/cmake_modules/FindAHPXC.cmake b/cmake_modules/FindAHPXC.cmake new file mode 100644 index 0000000..5da5692 --- /dev/null +++ b/cmake_modules/FindAHPXC.cmake @@ -0,0 +1,50 @@ +# - Try to find AHPXC Universal Library +# Once done this will define +# +# AHPXC_FOUND - system has AHPXC +# AHPXC_INCLUDE_DIR - the AHPXC include directory +# AHPXC_LIBRARIES - Link these to use AHPXC + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (AHPXC_INCLUDE_DIR AND AHPXC_LIBRARIES) + + # in cache already + set(AHPXC_FOUND TRUE) + message(STATUS "Found libahp_xc: ${AHPXC_LIBRARIES}") + +else (AHPXC_INCLUDE_DIR AND AHPXC_LIBRARIES) + + find_path(AHPXC_INCLUDE_DIR ahp_xc.h + PATH_SUFFIXES ahp + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(AHPXC_LIBRARIES NAMES ahp_xc + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if(AHPXC_INCLUDE_DIR AND AHPXC_LIBRARIES) + set(AHPXC_FOUND TRUE) + else (AHPXC_INCLUDE_DIR AND AHPXC_LIBRARIES) + set(AHPXC_FOUND FALSE) + endif(AHPXC_INCLUDE_DIR AND AHPXC_LIBRARIES) + + + if (AHPXC_FOUND) + if (NOT AHPXC_FIND_QUIETLY) + message(STATUS "Found AHP XC: ${AHPXC_LIBRARIES}") + endif (NOT AHPXC_FIND_QUIETLY) + else (AHPXC_FOUND) + if (AHPXC_FIND_REQUIRED) + message(FATAL_ERROR "AHP XC not found. Please install libahp_xc http://www.indilib.org") + endif (AHPXC_FIND_REQUIRED) + endif (AHPXC_FOUND) + + mark_as_advanced(AHPXC_INCLUDE_DIR AHPXC_LIBRARIES) + +endif (AHPXC_INCLUDE_DIR AND AHPXC_LIBRARIES) diff --git a/cmake_modules/FindAIOUSB.cmake b/cmake_modules/FindAIOUSB.cmake new file mode 100644 index 0000000..4bc4469 --- /dev/null +++ b/cmake_modules/FindAIOUSB.cmake @@ -0,0 +1,61 @@ +# - Try to find libaiousb +# Once done this will define +# +# AIOUSB_FOUND - system has AIOUSB +# AIOUSB_INCLUDE_DIR - the AIOUSB include directory +# AIOUSB_LIBRARIES - Link these to use AIOUSB (C) +# AIOUSB_CPP_LIBRARIES - Link these to use AIOUSB (C++) + +# Copyright (c) 2006, Jasem Mutlaq <mutlaqja@ikarustech.com> +# Based on FindLibfacile by Carsten Niehaus, <cniehaus@gmx.de> +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (AIOUSB_INCLUDE_DIR AND AIOUSB_LIBRARIES AND AIOUSB_CPP_LIBRARIES) + + # in cache already + set(AIOUSB_FOUND TRUE) + message(STATUS "Found libaiusb: ${AIOUSB_LIBRARIES}") + message(STATUS "Found libaiusbcpp: ${AIOUSB_CPP_LIBRARIES}") + +else (AIOUSB_INCLUDE_DIR AND AIOUSB_LIBRARIES AND AIOUSB_CPP_LIBRARIES) + + find_path(AIOUSB_INCLUDE_DIR aiousb.h + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(AIOUSB_LIBRARIES NAMES aiousb + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + find_library(AIOUSB_CPP_LIBRARIES NAMES aiousbcpp + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if(AIOUSB_INCLUDE_DIR AND AIOUSB_LIBRARIES AND AIOUSB_CPP_LIBRARIES) + set(AIOUSB_FOUND TRUE) + else (AIOUSB_INCLUDE_DIR AND AIOUSB_LIBRARIES AND AIOUSB_CPP_LIBRARIES) + set(AIOUSB_FOUND FALSE) + endif(AIOUSB_INCLUDE_DIR AND AIOUSB_LIBRARIES AND AIOUSB_CPP_LIBRARIES) + + if (AIOUSB_FOUND) + if (NOT AIOUSB_FIND_QUIETLY) + message(STATUS "Found libaiousb: ${AIOUSB_LIBRARIES}") + message(STATUS "Found libaiusbcpp: ${AIOUSB_CPP_LIBRARIES}") + endif (NOT AIOUSB_FIND_QUIETLY) + else (AIOUSB_FOUND) + if (AIOUSB_FIND_REQUIRED) + message(FATAL_ERROR "libaiousb not found. Please install libaiousb. https://www.accesio.com") + endif (AIOUSB_FIND_REQUIRED) + endif (AIOUSB_FOUND) + + mark_as_advanced(AIOUSB_INCLUDE_DIR AIOUSB_LIBRARIES AIOUSB_CPP_LIBRARIES) + +endif (AIOUSB_INCLUDE_DIR AND AIOUSB_LIBRARIES AND AIOUSB_CPP_LIBRARIES) + diff --git a/cmake_modules/FindALTAIRCAM.cmake b/cmake_modules/FindALTAIRCAM.cmake new file mode 100644 index 0000000..bffa78e --- /dev/null +++ b/cmake_modules/FindALTAIRCAM.cmake @@ -0,0 +1,49 @@ +# - Try to find Altair Camera Library +# Once done this will define +# +# ALTAIRCAM_FOUND - system has Altair +# ALTAIRCAM_INCLUDE_DIR - the Altair include directory +# ALTAIRCAM_LIBRARIES - Link these to use Altair + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (ALTAIRCAM_INCLUDE_DIR AND ALTAIRCAM_LIBRARIES) + + # in cache already + set(ALTAIRCAM_FOUND TRUE) + message(STATUS "Found libaltaircam: ${ALTAIRCAM_LIBRARIES}") + +else (ALTAIRCAM_INCLUDE_DIR AND ALTAIRCAM_LIBRARIES) + + find_path(ALTAIRCAM_INCLUDE_DIR altaircam.h + PATH_SUFFIXES libaltaircam + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(ALTAIRCAM_LIBRARIES NAMES altaircam + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if(ALTAIRCAM_INCLUDE_DIR AND ALTAIRCAM_LIBRARIES) + set(ALTAIRCAM_FOUND TRUE) + else (ALTAIRCAM_INCLUDE_DIR AND ALTAIRCAM_LIBRARIES) + set(ALTAIRCAM_FOUND FALSE) + endif(ALTAIRCAM_INCLUDE_DIR AND ALTAIRCAM_LIBRARIES) + + if (ALTAIRCAM_FOUND) + if (NOT ALTAIRCAM_FIND_QUIETLY) + message(STATUS "Found Altaircam: ${ALTAIRCAM_LIBRARIES}") + endif (NOT ALTAIRCAM_FIND_QUIETLY) + else (ALTAIRCAM_FOUND) + if (ALTAIRCAM_FIND_REQUIRED) + message(FATAL_ERROR "Altaircam not found. Please install Altaircam Library http://www.indilib.org") + endif (ALTAIRCAM_FIND_REQUIRED) + endif (ALTAIRCAM_FOUND) + + mark_as_advanced(ALTAIRCAM_INCLUDE_DIR ALTAIRCAM_LIBRARIES) + +endif (ALTAIRCAM_INCLUDE_DIR AND ALTAIRCAM_LIBRARIES) diff --git a/cmake_modules/FindALUT.cmake b/cmake_modules/FindALUT.cmake new file mode 100644 index 0000000..44aa2b0 --- /dev/null +++ b/cmake_modules/FindALUT.cmake @@ -0,0 +1,77 @@ +# - Locate ALUT +# This module defines +# ALUT_LIBRARY +# ALUT_FOUND, if false, do not try to link to OpenAL +# ALUT_INCLUDE_DIR, where to find the headers +# +# $OPENALDIR is an environment variable that would +# correspond to the ./configure --prefix=$OPENALDIR +# used in building OpenAL. +# +# Created by Bryan Donlan, based on the FindOpenAL.cmake module by Eric Wang. + +FIND_PATH(ALUT_INCLUDE_DIR alut.h + $ENV{OPENALDIR}/include + ~/Library/Frameworks/OpenAL.framework/Headers + /Library/Frameworks/OpenAL.framework/Headers + /System/Library/Frameworks/OpenAL.framework/Headers # Tiger + /usr/local/include/AL + /usr/local/include/OpenAL + /usr/local/include + /usr/include/AL + /usr/include/OpenAL + /usr/include + /sw/include/AL # Fink + /sw/include/OpenAL + /sw/include + /opt/local/include/AL # DarwinPorts + /opt/local/include/OpenAL + /opt/local/include + /opt/csw/include/AL # Blastwave + /opt/csw/include/OpenAL + /opt/csw/include + /opt/include/AL + /opt/include/OpenAL + /opt/include + ) +# I'm not sure if I should do a special casing for Apple. It is +# unlikely that other Unix systems will find the framework path. +# But if they do ([Next|Open|GNU]Step?), +# do they want the -framework option also? +IF(${ALUT_INCLUDE_DIR} MATCHES ".framework") + STRING(REGEX REPLACE "(.*)/.*\\.framework/.*" "\\1" ALUT_FRAMEWORK_PATH_TMP ${ALUT_INCLUDE_DIR}) + IF("${ALUT_FRAMEWORK_PATH_TMP}" STREQUAL "/Library/Frameworks" + OR "${ALUT_FRAMEWORK_PATH_TMP}" STREQUAL "/System/Library/Frameworks" + ) + # String is in default search path, don't need to use -F + SET (ALUT_LIBRARY "-framework OpenAL" CACHE STRING "OpenAL framework for OSX") + ELSE("${ALUT_FRAMEWORK_PATH_TMP}" STREQUAL "/Library/Frameworks" + OR "${ALUT_FRAMEWORK_PATH_TMP}" STREQUAL "/System/Library/Frameworks" + ) + # String is not /Library/Frameworks, need to use -F + SET(ALUT_LIBRARY "-F${ALUT_FRAMEWORK_PATH_TMP} -framework OpenAL" CACHE STRING "OpenAL framework for OSX") + ENDIF("${ALUT_FRAMEWORK_PATH_TMP}" STREQUAL "/Library/Frameworks" + OR "${ALUT_FRAMEWORK_PATH_TMP}" STREQUAL "/System/Library/Frameworks" + ) + # Clear the temp variable so nobody can see it + SET(ALUT_FRAMEWORK_PATH_TMP "" CACHE INTERNAL "") + +ELSE(${ALUT_INCLUDE_DIR} MATCHES ".framework") + FIND_LIBRARY(ALUT_LIBRARY + NAMES alut + PATHS + $ENV{OPENALDIR}/lib + $ENV{OPENALDIR}/libs + /usr/local/lib + /usr/lib + /sw/lib + /opt/local/lib + /opt/csw/lib + /opt/lib + ) +ENDIF(${ALUT_INCLUDE_DIR} MATCHES ".framework") + +SET(ALUT_FOUND "NO") +IF(ALUT_LIBRARY) + SET(ALUT_FOUND "YES") +ENDIF(ALUT_LIBRARY) diff --git a/cmake_modules/FindAPOGEE.cmake b/cmake_modules/FindAPOGEE.cmake new file mode 100644 index 0000000..081fb7e --- /dev/null +++ b/cmake_modules/FindAPOGEE.cmake @@ -0,0 +1,53 @@ +# - Try to find Apogee Instruments Library +# Once done this will define +# +# APOGEE_FOUND - system has APOGEE +# APOGEE_INCLUDE_DIR - the APOGEE include directory +# APOGEE_LIBRARY - Link these to use APOGEE + +# Copyright (c) 2008, Jasem Mutlaq <mutlaqja@ikarustech.com> +# Based on FindLibfacile by Carsten Niehaus, <cniehaus@gmx.de> +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (APOGEE_INCLUDE_DIR AND APOGEE_LIBRARY) + + # in cache already + set(APOGEE_FOUND TRUE) + message(STATUS "Found libapogee: ${APOGEE_LIBRARY}") + +else (APOGEE_INCLUDE_DIR AND APOGEE_LIBRARY) + + find_path(APOGEE_INCLUDE_DIR ApogeeCam.h + PATH_SUFFIXES libapogee + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + # Find Apogee Library + find_library(APOGEE_LIBRARY NAMES apogee + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if(APOGEE_INCLUDE_DIR AND APOGEE_LIBRARY) + set(APOGEE_FOUND TRUE) + else (APOGEE_INCLUDE_DIR AND APOGEE_LIBRARY) + set(APOGEE_FOUND FALSE) + endif(APOGEE_INCLUDE_DIR AND APOGEE_LIBRARY) + + if (APOGEE_FOUND) + if (NOT APOGEE_FIND_QUIETLY) + message(STATUS "Found APOGEE: ${APOGEE_LIBRARY}") + endif (NOT APOGEE_FIND_QUIETLY) + else (APOGEE_FOUND) + if (APOGEE_FIND_REQUIRED) + message(FATAL_ERROR "libapogee not found. Cannot compile Apogee CCD Driver. Please install libapogee and try again. http://www.indilib.org") + endif (APOGEE_FIND_REQUIRED) + endif (APOGEE_FOUND) + + mark_as_advanced(APOGEE_INCLUDE_DIR APOGEE_LIBRARY) + +endif (APOGEE_INCLUDE_DIR AND APOGEE_LIBRARY) diff --git a/cmake_modules/FindARAVIS.cmake b/cmake_modules/FindARAVIS.cmake new file mode 100644 index 0000000..5bd2d3c --- /dev/null +++ b/cmake_modules/FindARAVIS.cmake @@ -0,0 +1,43 @@ +# - Find the native sqlite3 includes and library +# +# This module defines +# ARV_INCLUDE_DIR, where to find libgphoto2 header files +# ARV_LIBRARIES, the libraries to link against to use libgphoto2 +# ARV_FOUND, If false, do not try to use libgphoto2. +# ARV_VERSION_STRING, e.g. 2.4.14 +# ARV_VERSION_MAJOR, e.g. 2 +# ARV_VERSION_MINOR, e.g. 4 +# ARV_VERSION_PATCH, e.g. 14 +# +# also defined, but not for general use are +# ARV_LIBRARY, where to find the sqlite3 library. + + +#============================================================================= +# Copyright 2010 henrik andersson +#============================================================================= + +SET(ARV_FIND_REQUIRED ${Arv_FIND_REQUIRED}) + +find_path(ARV_INCLUDE_DIR aravis-0.8/arv.h) +mark_as_advanced(ARV_INCLUDE_DIR) + +set(ARV_NAMES ${ARV_NAMES} aravis-0.8) +find_library(ARV_LIBRARY NAMES ${ARV_NAMES} ) +mark_as_advanced(ARV_LIBRARY) + +set(ARV_VERSION_MAJOR "0") +set(ARV_VERSION_MINOR "8") +set(ARV_VERSION_STRING "${ARV_VERSION_MAJOR}.${ARV_VERSION_MINOR}") + +# handle the QUIETLY and REQUIRED arguments and set ARV_FOUND to TRUE if +# all listed variables are TRUE +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(ARV DEFAULT_MSG ARV_LIBRARY ARV_INCLUDE_DIR) + +IF(ARV_FOUND) + #SET(Arv_LIBRARIES ${ARV_LIBRARY}) + SET(Arv_LIBRARIES "aravis-0.8") + SET(Arv_INCLUDE_DIRS "${ARV_INCLUDE_DIR}/aravis-0.8") + MESSAGE (STATUS "Found aravis: ${Arv_LIBRARIES} ${Arv_INCLUDE_DIRS}") +ENDIF(ARV_FOUND) diff --git a/cmake_modules/FindASI.cmake b/cmake_modules/FindASI.cmake new file mode 100644 index 0000000..0df4577 --- /dev/null +++ b/cmake_modules/FindASI.cmake @@ -0,0 +1,74 @@ +# - Try to find ASI Library +# Once done this will define +# +# ASI_FOUND - system has ASI +# ASI_INCLUDE_DIR - the ASI include directory +# ASI_LIBRARIES - Link these to use ASI + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (ASI_INCLUDE_DIR AND ASI_LIBRARIES) + + # in cache already + set(ASI_FOUND TRUE) + message(STATUS "Found libasi: ${ASI_LIBRARIES}") + +else (ASI_INCLUDE_DIR AND ASI_LIBRARIES) + + find_path(ASI_INCLUDE_DIR ASICamera2.h + PATH_SUFFIXES libasi + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(ASICAM_LIBRARIES NAMES ASICamera2 + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + find_library(ASIEFW_LIBRARIES NAMES EFWFilter + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + find_library(ASIST4_LIBRARIES NAMES USB2ST4Conv + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + find_library(ASIEAF_LIBRARIES NAMES EAFFocuser + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + + if (ASICAM_LIBRARIES AND ASIEFW_LIBRARIES AND ASIST4_LIBRARIES AND ASIEAF_LIBRARIES) + set(ASI_LIBRARIES ${ASICAM_LIBRARIES} ${ASIEFW_LIBRARIES} ${ASIST4_LIBRARIES} ${ASIEAF_LIBRARIES}) + endif (ASICAM_LIBRARIES AND ASIEFW_LIBRARIES AND ASIST4_LIBRARIES AND ASIEAF_LIBRARIES) + + + if(ASI_INCLUDE_DIR AND ASI_LIBRARIES) + set(ASI_FOUND TRUE) + else (ASI_INCLUDE_DIR AND ASI_LIBRARIES) + set(ASI_FOUND FALSE) + endif(ASI_INCLUDE_DIR AND ASI_LIBRARIES) + + + if (ASI_FOUND) + if (NOT ASI_FIND_QUIETLY) + message(STATUS "Found ASI: ${ASI_LIBRARIES}") + endif (NOT ASI_FIND_QUIETLY) + else (ASI_FOUND) + if (ASI_FIND_REQUIRED) + message(FATAL_ERROR "ASI not found. Please install libasi http://www.indilib.org") + endif (ASI_FIND_REQUIRED) + endif (ASI_FOUND) + + mark_as_advanced(ASI_INCLUDE_DIR ASI_LIBRARIES) + +endif (ASI_INCLUDE_DIR AND ASI_LIBRARIES) diff --git a/cmake_modules/FindATIK.cmake b/cmake_modules/FindATIK.cmake new file mode 100644 index 0000000..d52f86e --- /dev/null +++ b/cmake_modules/FindATIK.cmake @@ -0,0 +1,49 @@ +# - Try to find Atik Camera Library +# Once done this will define +# +# ATIK_FOUND - system has ATIK +# ATIK_INCLUDE_DIR - the ATIK include directory +# ATIK_LIBRARIES - Link these to use ATIK + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (ATIK_INCLUDE_DIR AND ATIK_LIBRARIES) + + # in cache already + set(ATIK_FOUND TRUE) + message(STATUS "Found libatik: ${ATIK_LIBRARIES}") + +else (ATIK_INCLUDE_DIR AND ATIK_LIBRARIES) + + find_path(ATIK_INCLUDE_DIR AtikCameras.h + PATH_SUFFIXES libatik + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(ATIK_LIBRARIES NAMES atikcameras + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if(ATIK_INCLUDE_DIR AND ATIK_LIBRARIES) + set(ATIK_FOUND TRUE) + else (ATIK_INCLUDE_DIR AND ATIK_LIBRARIES) + set(ATIK_FOUND FALSE) + endif(ATIK_INCLUDE_DIR AND ATIK_LIBRARIES) + + if (ATIK_FOUND) + if (NOT ATIK_FIND_QUIETLY) + message(STATUS "Found Atik Library: ${ATIK_LIBRARIES}") + endif (NOT ATIK_FIND_QUIETLY) + else (ATIK_FOUND) + if (ATIK_FIND_REQUIRED) + message(FATAL_ERROR "Atik Library not found. Please install Atik Library http://www.indilib.org") + endif (ATIK_FIND_REQUIRED) + endif (ATIK_FOUND) + + mark_as_advanced(ATIK_INCLUDE_DIR ATIK_LIBRARIES) + +endif (ATIK_INCLUDE_DIR AND ATIK_LIBRARIES) diff --git a/cmake_modules/FindCFITSIO.cmake b/cmake_modules/FindCFITSIO.cmake new file mode 100644 index 0000000..c994522 --- /dev/null +++ b/cmake_modules/FindCFITSIO.cmake @@ -0,0 +1,65 @@ +# - Try to find CFITSIO +# Once done this will define +# +# CFITSIO_FOUND - system has CFITSIO +# CFITSIO_INCLUDE_DIR - the CFITSIO include directory +# CFITSIO_LIBRARIES - Link these to use CFITSIO +# CFITSIO_VERSION_STRING - Human readable version number of cfitsio +# CFITSIO_VERSION_MAJOR - Major version number of cfitsio +# CFITSIO_VERSION_MINOR - Minor version number of cfitsio + +# Copyright (c) 2006, Jasem Mutlaq <mutlaqja@ikarustech.com> +# Based on FindLibfacile by Carsten Niehaus, <cniehaus@gmx.de> +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (CFITSIO_INCLUDE_DIR AND CFITSIO_LIBRARIES) + + # in cache already + set(CFITSIO_FOUND TRUE) + message(STATUS "Found CFITSIO: ${CFITSIO_LIBRARIES}") + + +else (CFITSIO_INCLUDE_DIR AND CFITSIO_LIBRARIES) + + # JM: Packages from different distributions have different suffixes + find_path(CFITSIO_INCLUDE_DIR fitsio.h + PATH_SUFFIXES libcfitsio3 libcfitsio0 cfitsio + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(CFITSIO_LIBRARIES NAMES cfitsio + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if(CFITSIO_INCLUDE_DIR AND CFITSIO_LIBRARIES) + set(CFITSIO_FOUND TRUE) + else (CFITSIO_INCLUDE_DIR AND CFITSIO_LIBRARIES) + set(CFITSIO_FOUND FALSE) + endif(CFITSIO_INCLUDE_DIR AND CFITSIO_LIBRARIES) + + + if (CFITSIO_FOUND) + + # Find the version of the cfitsio header + file(STRINGS ${CFITSIO_INCLUDE_DIR}/fitsio.h CFITSIO_VERSION_STRING LIMIT_COUNT 1 REGEX "CFITSIO_VERSION") + STRING(REGEX REPLACE "[^0-9.]" "" CFITSIO_VERSION_STRING ${CFITSIO_VERSION_STRING}) + STRING(REGEX REPLACE "^([0-9]+)[.]([0-9]+)" "\\1" CFITSIO_VERSION_MAJOR ${CFITSIO_VERSION_STRING}) + STRING(REGEX REPLACE "^([0-9]+)[.]([0-9]+)" "\\2" CFITSIO_VERSION_MINOR ${CFITSIO_VERSION_STRING}) + + if (NOT CFITSIO_FIND_QUIETLY) + message(STATUS "Found CFITSIO ${CFITSIO_VERSION_STRING}: ${CFITSIO_LIBRARIES}") + endif (NOT CFITSIO_FIND_QUIETLY) + else (CFITSIO_FOUND) + if (CFITSIO_FIND_REQUIRED) + message(STATUS "CFITSIO not found.") + endif (CFITSIO_FIND_REQUIRED) + endif (CFITSIO_FOUND) + + mark_as_advanced(CFITSIO_INCLUDE_DIR CFITSIO_LIBRARIES) + +endif (CFITSIO_INCLUDE_DIR AND CFITSIO_LIBRARIES) diff --git a/cmake_modules/FindD2XX.cmake b/cmake_modules/FindD2XX.cmake new file mode 100644 index 0000000..0dc9f80 --- /dev/null +++ b/cmake_modules/FindD2XX.cmake @@ -0,0 +1,56 @@ +# - Try to find D2XX +# Once done this will define +# +# D2XX_FOUND - system has FTDI +# D2XX_INCLUDE_DIR - the FTDI include directory +# D2XX_LIBRARIES - Link these to use FTDI +# +# N.B. You must include the file as following: +# +#include <ftd2xx.h> +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (D2XX_INCLUDE_DIR AND D2XX_LIBRARIES) + + # in cache already + set(D2XX_FOUND TRUE) + message(STATUS "Found libfd2xx: ${D2XX_LIBRARIES}") + +else (D2XX_INCLUDE_DIR AND D2XX_LIBRARIES) + + find_path(D2XX_INCLUDE_DIR ftd2xx.h + #PATH_SUFFIXES libD2XX + ${_obIncDir} + ${GNUWIN32_DIR}/include + /usr/local/include + ) + + find_library(D2XX_LIBRARIES NAMES ftd2xx + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + /usr/local/lib + ) + + if(D2XX_INCLUDE_DIR AND D2XX_LIBRARIES) + set(D2XX_FOUND TRUE) + else (D2XX_INCLUDE_DIR AND D2XX_LIBRARIES) + set(D2XX_FOUND FALSE) + endif(D2XX_INCLUDE_DIR AND D2XX_LIBRARIES) + + + if (D2XX_FOUND) + if (NOT D2XX_FIND_QUIETLY) + message(STATUS "Found D2XX: ${D2XX_LIBRARIES}") + endif (NOT D2XX_FIND_QUIETLY) + else (D2XX_FOUND) + if (D2XX_FIND_REQUIRED) + message(FATAL_ERROR "D2XX not found. Please install libd2xx") + endif (D2XX_FIND_REQUIRED) + endif (D2XX_FOUND) + + mark_as_advanced(D2XX_INCLUDE_DIR D2XX_LIBRARIES) + +endif (D2XX_INCLUDE_DIR AND D2XX_LIBRARIES) diff --git a/cmake_modules/FindDC1394.cmake b/cmake_modules/FindDC1394.cmake new file mode 100644 index 0000000..87d9609 --- /dev/null +++ b/cmake_modules/FindDC1394.cmake @@ -0,0 +1,50 @@ +# - Try to find dc1394 library (version 2) and include files +# Once done this will define +# +# DC1394_FOUND - system has DC1394 +# DC1394_INCLUDE_DIR - the DC1394 include directory +# DC1394_LIBRARIES - Link these to use DC1394 + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (DC1394_INCLUDE_DIR AND DC1394_LIBRARIES) + + # in cache already + set(DC1394_FOUND TRUE) + message(STATUS "Found libdc1394: ${DC1394_LIBRARIES}") + +else (DC1394_INCLUDE_DIR AND DC1394_LIBRARIES) + + find_path(DC1394_INCLUDE_DIR control.h + PATH_SUFFIXES dc1394 + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(DC1394_LIBRARIES NAMES dc1394 + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if(DC1394_INCLUDE_DIR AND DC1394_LIBRARIES) + set(DC1394_FOUND TRUE) + else (DC1394_INCLUDE_DIR AND DC1394_LIBRARIES) + set(DC1394_FOUND FALSE) + endif(DC1394_INCLUDE_DIR AND DC1394_LIBRARIES) + + + if (DC1394_FOUND) + if (NOT DC1394_FIND_QUIETLY) + message(STATUS "Found DC1394: ${DC1394_LIBRARIES}") + endif (NOT DC1394_FIND_QUIETLY) + else (DC1394_FOUND) + if (DC1394_FIND_REQUIRED) + message(FATAL_ERROR "DC1394 not found. Please install libdc1394 development package.") + endif (DC1394_FIND_REQUIRED) + endif (DC1394_FOUND) + + mark_as_advanced(DC1394_INCLUDE_DIR DC1394_LIBRARIES) + +endif (DC1394_INCLUDE_DIR AND DC1394_LIBRARIES) diff --git a/cmake_modules/FindFFTW3.cmake b/cmake_modules/FindFFTW3.cmake new file mode 100644 index 0000000..289accc --- /dev/null +++ b/cmake_modules/FindFFTW3.cmake @@ -0,0 +1,52 @@ +# - Try to find FFTW3 +# Once done this will define +# +# FFTW3_FOUND - system has FFTW3 +# FFTW3_INCLUDE_DIR - the FFTW3 include directory +# FFTW3_LIBRARIES - Link these to use FFTW3 +# FFTW3_VERSION_STRING - Human readable version number of fftw3 +# FFTW3_VERSION_MAJOR - Major version number of fftw3 +# FFTW3_VERSION_MINOR - Minor version number of fftw3 + +# Copyright (c) 2017, Ilia Platone, <info@iliaplatone.com> +# Based on FindLibfacile by Carsten Niehaus, <cniehaus@gmx.de> +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (FFTW3_LIBRARIES) + + # in cache already + set(FFTW3_FOUND TRUE) + message(STATUS "Found FFTW3: ${FFTW3_LIBRARIES}") + + +else (FFTW3_LIBRARIES) + + find_library(FFTW3_LIBRARIES NAMES fftw3 + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + /usr/local/lib + ) + + if(FFTW3_LIBRARIES) + set(FFTW3_FOUND TRUE) + else (FFTW3_LIBRARIES) + set(FFTW3_FOUND FALSE) + endif(FFTW3_LIBRARIES) + + + if (FFTW3_FOUND) + if (NOT FFTW3_FIND_QUIETLY) + message(STATUS "Found FFTW3: ${FFTW3_LIBRARIES}") + endif (NOT FFTW3_FIND_QUIETLY) + else (FFTW3_FOUND) + if (FFTW3_FIND_REQUIRED) + message(FATAL_ERROR "FFTW3 not found. Please install libfftw3-dev") + endif (FFTW3_FIND_REQUIRED) + endif (FFTW3_FOUND) + + mark_as_advanced(FFTW3_LIBRARIES) + +endif (FFTW3_LIBRARIES) diff --git a/cmake_modules/FindFFmpeg.cmake b/cmake_modules/FindFFmpeg.cmake new file mode 100644 index 0000000..6d4b72f --- /dev/null +++ b/cmake_modules/FindFFmpeg.cmake @@ -0,0 +1,213 @@ +# - Try to find ffmpeg libraries (libavcodec, libavdevice, libavformat, libavutil, and libswscale) +# Once done this will define +# +# FFMPEG_FOUND - system has ffmpeg or libav +# FFMPEG_INCLUDE_DIR - the ffmpeg include directory +# FFMPEG_LIBRARIES - Link these to use ffmpeg +# FFMPEG_LIBAVCODEC +# FFMPEG_LIBAVDEVICE +# FFMPEG_LIBAVFORMAT +# FFMPEG_LIBAVUTIL +# FFMPEG_LIBSWSCALE +# +# Copyright (c) 2008 Andreas Schneider <mail@cynapses.org> +# Modified for other libraries by Lasse Kärkkäinen <tronic> +# Modified for Hedgewars by Stepik777 +# Modified for INDILIB by rlancaste +# +# Redistribution and use is allowed according to the terms of the New +# BSD license. +# + +macro(_FFMPEG_PACKAGE_check_version) + if(EXISTS "${PACKAGE_INCLUDE_DIR}/version.h") + file(READ "${PACKAGE_INCLUDE_DIR}/version.h" _FFMPEG_PACKAGE_version_header) + + string(REGEX MATCH "#define ${PACKAGE_NAME}_VERSION_MAJOR[ \t]+([0-9]+)" _VERSION_MAJOR_match "${_FFMPEG_PACKAGE_version_header}") + set(FFMPEG_PACKAGE_VERSION_MAJOR "${CMAKE_MATCH_1}") + string(REGEX MATCH "#define ${PACKAGE_NAME}_VERSION_MINOR[ \t]+([0-9]+)" _VERSION_MINOR_match "${_FFMPEG_PACKAGE_version_header}") + set(FFMPEG_PACKAGE_VERSION_MINOR "${CMAKE_MATCH_1}") + string(REGEX MATCH "#define ${PACKAGE_NAME}_VERSION_MICRO[ \t]+([0-9]+)" _VERSION_MICRO_match "${_FFMPEG_PACKAGE_version_header}") + set(FFMPEG_PACKAGE_VERSION_MICRO "${CMAKE_MATCH_1}") + + set(FFMPEG_PACKAGE_VERSION ${FFMPEG_PACKAGE_VERSION_MAJOR}.${FFMPEG_PACKAGE_VERSION_MINOR}.${FFMPEG_PACKAGE_VERSION_MICRO}) + if(${FFMPEG_PACKAGE_VERSION} VERSION_LESS ${FFMPEG_PACKAGE_FIND_VERSION}) + set(FFMPEG_PACKAGE_VERSION_OK FALSE) + else(${FFMPEG_PACKAGE_VERSION} VERSION_LESS ${FFMPEG_PACKAGE_FIND_VERSION}) + set(FFMPEG_PACKAGE_VERSION_OK TRUE) + endif(${FFMPEG_PACKAGE_VERSION} VERSION_LESS ${FFMPEG_PACKAGE_FIND_VERSION}) + + if(NOT FFMPEG_PACKAGE_VERSION_OK) + message(STATUS "${PACKAGE_NAME} version ${FFMPEG_PACKAGE_VERSION} found in ${PACKAGE_INCLUDE_DIR}, " + "but at least version ${FFMPEG_PACKAGE_FIND_VERSION} is required") + else(NOT FFMPEG_PACKAGE_VERSION_OK) + mark_as_advanced(FFMPEG_PACKAGE_VERSION_MAJOR FFMPEG_PACKAGE_VERSION_MINOR FFMPEG_PACKAGE_VERSION_MICRO) + endif(NOT FFMPEG_PACKAGE_VERSION_OK) + else(EXISTS "${PACKAGE_INCLUDE_DIR}/version.h") + set(FFMPEG_PACKAGE_VERSION_OK FALSE) + message(STATUS "${PACKAGE_NAME}'s version.h file was not found in the include directory: ${PACKAGE_INCLUDE_DIR}, please install this program.") + endif(EXISTS "${PACKAGE_INCLUDE_DIR}/version.h") +endmacro(_FFMPEG_PACKAGE_check_version) + +# required ffmpeg library versions, Requiring at least FFMPEG 3.2.11, Hypatia +set(_avcodec_ver ">=57.64.101") +set(_avdevice_ver ">=57.1.100") +set(_avformat_ver ">=57.56.100") +set(_avutil_ver ">=55.34.100") +set(_swscale_ver ">=4.2.100") + +if (FFMPEG_LIBRARIES AND FFMPEG_INCLUDE_DIR) + + # in cache already + set(FFMPEG_FOUND TRUE) + +else (FFMPEG_LIBRARIES AND FFMPEG_INCLUDE_DIR) +# use pkg-config to get the directories and then use these values +# in the FIND_PATH() and FIND_LIBRARY() calls + +find_path(FFMPEG_INCLUDE_DIR +NAMES libavcodec/avcodec.h +PATHS ${FFMPEG_INCLUDE_DIRS} ${CMAKE_INSTALL_PREFIX}/include /usr/include /usr/local/include /opt/local/include /sw/include +PATH_SUFFIXES ffmpeg libav +) + +find_package(PkgConfig) +if (PKG_CONFIG_FOUND) + + pkg_check_modules(AVCODEC libavcodec${_avcodec_ver}) + pkg_check_modules(AVDEVICE libavdevice${_avdevice_ver}) + pkg_check_modules(AVFORMAT libavformat${_avformat_ver}) + pkg_check_modules(AVUTIL libavutil${_avutil_ver}) + pkg_check_modules(SWSCALE libswscale${_swscale_ver}) + +endif (PKG_CONFIG_FOUND) + +if (NOT PKG_CONFIG_FOUND OR + NOT FFMPEG_LIBAVCODEC OR + NOT FFMPEG_LIBAVDEVICE OR + NOT FFMPEG_LIBAVFORMAT OR + NOT FFMPEG_LIBAVUTIL OR + NOT FFMPEG_LIBSWSCALE) + +# LIBAVCODEC + set(PACKAGE_NAME "LIBAVCODEC") + set(PACKAGE_INCLUDE_DIR "${FFMPEG_INCLUDE_DIR}/libavcodec") + set(FFMPEG_PACKAGE_FIND_VERSION _avcodec_ver) + + _FFMPEG_PACKAGE_check_version() + + if(FFMPEG_PACKAGE_VERSION_OK) + set(AVCODEC_VERSION FFMPEG_PACKAGE_VERSION) + endif(FFMPEG_PACKAGE_VERSION_OK) + +# LIBAVDEVICE + set(PACKAGE_NAME "LIBAVDEVICE") + set(PACKAGE_INCLUDE_DIR "${FFMPEG_INCLUDE_DIR}/libavdevice") + set(FFMPEG_PACKAGE_FIND_VERSION _avdevice_ver) + + _FFMPEG_PACKAGE_check_version() + + if(FFMPEG_PACKAGE_VERSION_OK) + set(AVDEVICE_VERSION FFMPEG_PACKAGE_VERSION) + endif(FFMPEG_PACKAGE_VERSION_OK) + +# LIBAVFORMAT + set(PACKAGE_NAME "LIBAVFORMAT") + set(PACKAGE_INCLUDE_DIR "${FFMPEG_INCLUDE_DIR}/libavformat") + set(FFMPEG_PACKAGE_FIND_VERSION _avformat_ver) + + _FFMPEG_PACKAGE_check_version() + + if(FFMPEG_PACKAGE_VERSION_OK) + set(AVFORMAT_VERSION FFMPEG_PACKAGE_VERSION) + endif(FFMPEG_PACKAGE_VERSION_OK) + +# LIBAVUTIL + set(PACKAGE_NAME "LIBAVUTIL") + set(PACKAGE_INCLUDE_DIR "${FFMPEG_INCLUDE_DIR}/libavutil") + set(FFMPEG_PACKAGE_FIND_VERSION _avutil_ver) + + _FFMPEG_PACKAGE_check_version() + + if(FFMPEG_PACKAGE_VERSION_OK) + set(AVUTIL_VERSION FFMPEG_PACKAGE_VERSION) + endif(FFMPEG_PACKAGE_VERSION_OK) + +# LIBSWSCALE + set(PACKAGE_NAME "LIBSWSCALE") + set(PACKAGE_INCLUDE_DIR "${FFMPEG_INCLUDE_DIR}/libswscale") + set(FFMPEG_PACKAGE_FIND_VERSION _swscale_ver) + + _FFMPEG_PACKAGE_check_version() + + if(FFMPEG_PACKAGE_VERSION_OK) + set(SWSCALE_VERSION FFMPEG_PACKAGE_VERSION) + endif(FFMPEG_PACKAGE_VERSION_OK) + +endif () + +find_library(FFMPEG_LIBAVCODEC +NAMES avcodec libavcodec +PATHS ${AVCODEC_LIBRARY_DIRS} ${CMAKE_INSTALL_PREFIX}/lib /usr/lib /usr/local/lib /opt/local/lib /sw/lib +) + +find_library(FFMPEG_LIBAVDEVICE +NAMES avdevice libavdevice +PATHS ${AVDEVICE_LIBRARY_DIRS} ${CMAKE_INSTALL_PREFIX}/lib /usr/lib /usr/local/lib /opt/local/lib /sw/lib +) + +find_library(FFMPEG_LIBAVFORMAT +NAMES avformat libavformat +PATHS ${AVFORMAT_LIBRARY_DIRS} ${CMAKE_INSTALL_PREFIX}/lib /usr/lib /usr/local/lib /opt/local/lib /sw/lib +) + +find_library(FFMPEG_LIBAVUTIL +NAMES avutil libavutil +PATHS ${AVUTIL_LIBRARY_DIRS} ${CMAKE_INSTALL_PREFIX}/lib /usr/lib /usr/local/lib /opt/local/lib /sw/lib +) + +find_library(FFMPEG_LIBSWSCALE +NAMES swscale libswscale +PATHS ${SWSCALE_LIBRARY_DIRS} ${CMAKE_INSTALL_PREFIX}/lib /usr/lib /usr/local/lib /opt/local/lib /sw/lib +) + +#Only set FFMPEG to found if all the libraries are found in the right versions. +if(AVCODEC_VERSION AND + AVDEVICE_VERSION AND + AVFORMAT_VERSION AND + AVUTIL_VERSION AND + SWSCALE_VERSION AND + FFMPEG_LIBAVCODEC AND + FFMPEG_LIBAVDEVICE AND + FFMPEG_LIBAVFORMAT AND + FFMPEG_LIBAVUTIL AND + FFMPEG_LIBSWSCALE) +set(FFMPEG_FOUND TRUE) +endif() + +if (FFMPEG_FOUND) + + set(FFMPEG_LIBRARIES + ${FFMPEG_LIBAVCODEC} + ${FFMPEG_LIBAVDEVICE} + ${FFMPEG_LIBAVFORMAT} + ${FFMPEG_LIBAVUTIL} + ${FFMPEG_LIBSWSCALE} + ) + +endif (FFMPEG_FOUND) + +if (FFMPEG_FOUND) + if (NOT FFMPEG_FIND_QUIETLY) + message(STATUS "Found FFMPEG: ${FFMPEG_LIBRARIES}, ${FFMPEG_INCLUDE_DIR}") + endif (NOT FFMPEG_FIND_QUIETLY) + else (FFMPEG_FOUND) + message(STATUS "Could not find up to date FFMPEG for INDI Webcam. Up to date versions of these packages are required: libavcodec, libavdevice, libavformat, libavutil, and libswscale") + if (FFMPEG_FIND_REQUIRED) + message(FATAL_ERROR "Error: FFMPEG is required by this package!") + endif (FFMPEG_FIND_REQUIRED) +endif (FFMPEG_FOUND) + +endif (FFMPEG_LIBRARIES AND FFMPEG_INCLUDE_DIR) + + diff --git a/cmake_modules/FindFISHCAMP.cmake b/cmake_modules/FindFISHCAMP.cmake new file mode 100644 index 0000000..e023596 --- /dev/null +++ b/cmake_modules/FindFISHCAMP.cmake @@ -0,0 +1,54 @@ +# - Try to find FISHCAMP CCD +# Once done this will define +# +# FISHCAMP_FOUND - system has FISHCAMP +# FISHCAMP_LIBRARIES - Link these to use FISHCAMP +# FISHCAMP_INCLUDE_DIR - Fishcamp include directory + +# Copyright (c) 2006, Jasem Mutlaq <mutlaqja@ikarustech.com> +# Based on FindLibfacile by Carsten Niehaus, <cniehaus@gmx.de> +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (FISHCAMP_LIBRARIES AND FISHCAMP_INCLUDE_DIR) + + # in cache already + set(FISHCAMP_FOUND TRUE) + message(STATUS "Found FISHCAMP: ${FISHCAMP_LIBRARIES}") + +else (FISHCAMP_LIBRARIES AND FISHCAMP_INCLUDE_DIR) + + find_library(FISHCAMP_LIBRARIES NAMES fishcamp + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + find_path(FISHCAMP_INCLUDE_DIR fishcamp.h + PATH_SUFFIXES libfishcamp + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + set(CMAKE_REQUIRED_LIBRARIES ${FISHCAMP_LIBRARIES}) + + if(FISHCAMP_LIBRARIES AND FISHCAMP_INCLUDE_DIR) + set(FISHCAMP_FOUND TRUE) + else (FISHCAMP_LIBRARIES AND FISHCAMP_INCLUDE_DIR) + set(FISHCAMP_FOUND FALSE) + endif(FISHCAMP_LIBRARIES AND FISHCAMP_INCLUDE_DIR) + + if (FISHCAMP_FOUND) + if (NOT FISHCAMP_FIND_QUIETLY) + message(STATUS "Found FISHCAMP: ${FISHCAMP_LIBRARIES}") + endif (NOT FISHCAMP_FIND_QUIETLY) + else (FISHCAMP_FOUND) + if (FISHCAMP_FIND_REQUIRED) + message(FATAL_ERROR "FISHCAMP not found. Please install FISHCAMP library. http://www.indilib.org") + endif (FISHCAMP_FIND_REQUIRED) + endif (FISHCAMP_FOUND) + + mark_as_advanced(FISHCAMP_LIBRARIES FISHCAMP_INCLUDE_DIR) + +endif (FISHCAMP_LIBRARIES AND FISHCAMP_INCLUDE_DIR) diff --git a/cmake_modules/FindFLI.cmake b/cmake_modules/FindFLI.cmake new file mode 100644 index 0000000..3881cf7 --- /dev/null +++ b/cmake_modules/FindFLI.cmake @@ -0,0 +1,53 @@ +# - Try to find Finger Lakes Instruments Library +# Once done this will define +# +# FLI_FOUND - system has FLI +# FLI_INCLUDE_DIR - the FLI include directory +# FLI_LIBRARIES - Link these to use FLI + +# Copyright (c) 2008, Jasem Mutlaq <mutlaqja@ikarustech.com> +# Based on FindLibfacile by Carsten Niehaus, <cniehaus@gmx.de> +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (FLI_INCLUDE_DIR AND FLI_LIBRARIES) + + # in cache already + set(FLI_FOUND TRUE) + message(STATUS "Found libfli: ${FLI_LIBRARIES}") + +else (FLI_INCLUDE_DIR AND FLI_LIBRARIES) + + find_path(FLI_INCLUDE_DIR libfli.h + PATH_SUFFIXES fli + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(FLI_LIBRARIES NAMES fli + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if(FLI_INCLUDE_DIR AND FLI_LIBRARIES) + set(FLI_FOUND TRUE) + else (FLI_INCLUDE_DIR AND FLI_LIBRARIES) + set(FLI_FOUND FALSE) + endif(FLI_INCLUDE_DIR AND FLI_LIBRARIES) + + + if (FLI_FOUND) + if (NOT FLI_FIND_QUIETLY) + message(STATUS "Found FLI: ${FLI_LIBRARIES}") + endif (NOT FLI_FIND_QUIETLY) + else (FLI_FOUND) + if (FLI_FIND_REQUIRED) + message(FATAL_ERROR "FLI not found. Please install libfli-dev. http://www.indilib.org") + endif (FLI_FIND_REQUIRED) + endif (FLI_FOUND) + + mark_as_advanced(FLI_INCLUDE_DIR FLI_LIBRARIES) + +endif (FLI_INCLUDE_DIR AND FLI_LIBRARIES) diff --git a/cmake_modules/FindFTDI.cmake b/cmake_modules/FindFTDI.cmake new file mode 100644 index 0000000..35989ce --- /dev/null +++ b/cmake_modules/FindFTDI.cmake @@ -0,0 +1,54 @@ +# - Try to find FTDI +# This finds libFTDI that is compatible with old libusb v 0.1 +# For newer libusb > 1.0, use FindFTDI1.cmake +# Once done this will define +# +# FTDI_FOUND - system has FTDI +# FTDI_INCLUDE_DIR - the FTDI include directory +# FTDI_LIBRARIES - Link these to use FTDI + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (FTDI_INCLUDE_DIR AND FTDI_LIBRARIES) + + # in cache already + set(FTDI_FOUND TRUE) + message(STATUS "Found libftdi: ${FTDI_LIBRARIES}") + +else (FTDI_INCLUDE_DIR AND FTDI_LIBRARIES) + + find_path(FTDI_INCLUDE_DIR ftdi.h + PATH_SUFFIXES libftdi1 + ${_obIncDir} + ${GNUWIN32_DIR}/include + /usr/local/include + ) + + find_library(FTDI_LIBRARIES NAMES ftdi ftdi1 + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + /usr/local/lib + ) + + if(FTDI_INCLUDE_DIR AND FTDI_LIBRARIES) + set(FTDI_FOUND TRUE) + else (FTDI_INCLUDE_DIR AND FTDI_LIBRARIES) + set(FTDI_FOUND FALSE) + endif(FTDI_INCLUDE_DIR AND FTDI_LIBRARIES) + + + if (FTDI_FOUND) + if (NOT FTDI_FIND_QUIETLY) + message(STATUS "Found FTDI: ${FTDI_LIBRARIES}") + endif (NOT FTDI_FIND_QUIETLY) + else (FTDI_FOUND) + if (FTDI_FIND_REQUIRED) + message(FATAL_ERROR "FTDI not found. Please install libftdi-dev") + endif (FTDI_FIND_REQUIRED) + endif (FTDI_FOUND) + + mark_as_advanced(FTDI_INCLUDE_DIR FTDI_LIBRARIES) + +endif (FTDI_INCLUDE_DIR AND FTDI_LIBRARIES) diff --git a/cmake_modules/FindFTDI1.cmake b/cmake_modules/FindFTDI1.cmake new file mode 100644 index 0000000..2199159 --- /dev/null +++ b/cmake_modules/FindFTDI1.cmake @@ -0,0 +1,56 @@ +# - Try to find FTDI1 +# Once done this will define +# +# FTDI1_FOUND - system has FTDI +# FTDI1_INCLUDE_DIR - the FTDI include directory +# FTDI1_LIBRARIES - Link these to use FTDI +# +# N.B. You must include the file as following: +# +#include <libftdi1/ftdi.h> +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (FTDI1_INCLUDE_DIR AND FTDI1_LIBRARIES) + + # in cache already + set(FTDI1_FOUND TRUE) + message(STATUS "Found libftdi1: ${FTDI1_LIBRARIES}") + +else (FTDI1_INCLUDE_DIR AND FTDI1_LIBRARIES) + + find_path(FTDI1_INCLUDE_DIR ftdi.h + PATH_SUFFIXES libftdi1 + ${_obIncDir} + ${GNUWIN32_DIR}/include + /usr/local/include + ) + + find_library(FTDI1_LIBRARIES NAMES ftdi1 + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + /usr/local/lib + ) + + if(FTDI1_INCLUDE_DIR AND FTDI1_LIBRARIES) + set(FTDI1_FOUND TRUE) + else (FTDI1_INCLUDE_DIR AND FTDI1_LIBRARIES) + set(FTDI1_FOUND FALSE) + endif(FTDI1_INCLUDE_DIR AND FTDI1_LIBRARIES) + + + if (FTDI1_FOUND) + if (NOT FTDI1_FIND_QUIETLY) + message(STATUS "Found FTDI1: ${FTDI1_LIBRARIES}") + endif (NOT FTDI1_FIND_QUIETLY) + else (FTDI1_FOUND) + if (FTDI1_FIND_REQUIRED) + message(FATAL_ERROR "FTDI not found. Please install libftdi1-dev") + endif (FTDI1_FIND_REQUIRED) + endif (FTDI1_FOUND) + + mark_as_advanced(FTDI1_INCLUDE_DIR FTDI1_LIBRARIES) + +endif (FTDI1_INCLUDE_DIR AND FTDI1_LIBRARIES) diff --git a/cmake_modules/FindGLIB2.cmake b/cmake_modules/FindGLIB2.cmake new file mode 100644 index 0000000..976be36 --- /dev/null +++ b/cmake_modules/FindGLIB2.cmake @@ -0,0 +1,218 @@ +# - Try to find GLib2 +# Once done this will define +# +# GLIB2_FOUND - system has GLib2 +# GLIB2_INCLUDE_DIRS - the GLib2 include directory +# GLIB2_LIBRARIES - Link these to use GLib2 +# +# HAVE_GLIB_GREGEX_H glib has gregex.h header and +# supports g_regex_match_simple +# +# Copyright (c) 2006 Andreas Schneider <mail@cynapses.org> +# Copyright (c) 2006 Philippe Bernery <philippe.bernery@gmail.com> +# Copyright (c) 2007 Daniel Gollub <dgollub@suse.de> +# Copyright (c) 2007 Alban Browaeys <prahal@yahoo.com> +# Copyright (c) 2008 Michael Bell <michael.bell@web.de> +# Copyright (c) 2008 Bjoern Ricks <bjoern.ricks@googlemail.com> +# +# Redistribution and use is allowed according to the terms of the New +# BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. +# + + +IF (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS ) + # in cache already + SET(GLIB2_FOUND TRUE) +ELSE (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS ) + + INCLUDE(FindPkgConfig) + + ## Glib + IF ( GLIB2_FIND_REQUIRED ) + SET( _pkgconfig_REQUIRED "REQUIRED" ) + ELSE ( GLIB2_FIND_REQUIRED ) + SET( _pkgconfig_REQUIRED "" ) + ENDIF ( GLIB2_FIND_REQUIRED ) + + IF ( GLIB2_MIN_VERSION ) + PKG_SEARCH_MODULE( GLIB2 ${_pkgconfig_REQUIRED} glib-2.0>=${GLIB2_MIN_VERSION} ) + ELSE ( GLIB2_MIN_VERSION ) + PKG_SEARCH_MODULE( GLIB2 ${_pkgconfig_REQUIRED} glib-2.0 ) + ENDIF ( GLIB2_MIN_VERSION ) + IF ( PKG_CONFIG_FOUND ) + IF ( GLIB2_FOUND ) + SET ( GLIB2_CORE_FOUND TRUE ) + ELSE ( GLIB2_FOUND ) + SET ( GLIB2_CORE_FOUND FALSE ) + ENDIF ( GLIB2_FOUND ) + ENDIF ( PKG_CONFIG_FOUND ) + + # Look for glib2 include dir and libraries w/o pkgconfig + IF ( NOT GLIB2_FOUND AND NOT PKG_CONFIG_FOUND ) + FIND_PATH( + _glibconfig_include_DIR + NAMES + glibconfig.h + PATHS + /opt/gnome/lib64 + /opt/gnome/lib + /opt/lib/ + /opt/local/lib + /sw/lib/ + /usr/lib64 + /usr/lib + /usr/local/include + ${CMAKE_LIBRARY_PATH} + PATH_SUFFIXES + glib-2.0/include + ) + + FIND_PATH( + _glib2_include_DIR + NAMES + glib.h + PATHS + /opt/gnome/include + /opt/local/include + /sw/include + /usr/include + /usr/local/include + PATH_SUFFIXES + glib-2.0 + ) + + #MESSAGE(STATUS "Glib headers: ${_glib2_include_DIR}") + + FIND_LIBRARY( + _glib2_link_DIR + NAMES + glib-2.0 + glib + PATHS + /opt/gnome/lib + /opt/local/lib + /sw/lib + /usr/lib + /usr/local/lib + ) + IF ( _glib2_include_DIR AND _glib2_link_DIR ) + SET ( _glib2_FOUND TRUE ) + ENDIF ( _glib2_include_DIR AND _glib2_link_DIR ) + + + IF ( _glib2_FOUND ) + SET ( GLIB2_INCLUDE_DIRS ${_glib2_include_DIR} ${_glibconfig_include_DIR} ) + SET ( GLIB2_LIBRARIES ${_glib2_link_DIR} ) + SET ( GLIB2_CORE_FOUND TRUE ) + ELSE ( _glib2_FOUND ) + SET ( GLIB2_CORE_FOUND FALSE ) + ENDIF ( _glib2_FOUND ) + + # Handle dependencies + # libintl + IF ( NOT LIBINTL_FOUND ) + FIND_PATH(LIBINTL_INCLUDE_DIR + NAMES + libintl.h + PATHS + /opt/gnome/include + /opt/local/include + /sw/include + /usr/include + /usr/local/include + ) + + FIND_LIBRARY(LIBINTL_LIBRARY + NAMES + intl + PATHS + /opt/gnome/lib + /opt/local/lib + /sw/lib + /usr/local/lib + /usr/lib + ) + + IF (LIBINTL_LIBRARY AND LIBINTL_INCLUDE_DIR) + SET (LIBINTL_FOUND TRUE) + ENDIF (LIBINTL_LIBRARY AND LIBINTL_INCLUDE_DIR) + ENDIF ( NOT LIBINTL_FOUND ) + + # libiconv + IF ( NOT LIBICONV_FOUND ) + FIND_PATH(LIBICONV_INCLUDE_DIR + NAMES + iconv.h + PATHS + /opt/gnome/include + /opt/local/include + /opt/local/include + /sw/include + /sw/include + /usr/local/include + /usr/include + PATH_SUFFIXES + glib-2.0 + ) + + FIND_LIBRARY(LIBICONV_LIBRARY + NAMES + iconv + PATHS + /opt/gnome/lib + /opt/local/lib + /sw/lib + /usr/lib + /usr/local/lib + ) + + IF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR) + SET (LIBICONV_FOUND TRUE) + ENDIF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR) + ENDIF ( NOT LIBICONV_FOUND ) + + IF (LIBINTL_FOUND) + SET (GLIB2_LIBRARIES ${GLIB2_LIBRARIES} ${LIBINTL_LIBRARY}) + SET (GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS} ${LIBINTL_INCLUDE_DIR}) + ENDIF (LIBINTL_FOUND) + + IF (LIBICONV_FOUND) + SET (GLIB2_LIBRARIES ${GLIB2_LIBRARIES} ${LIBICONV_LIBRARY}) + SET (GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS} ${LIBICONV_INCLUDE_DIR}) + ENDIF (LIBICONV_FOUND) + + ENDIF ( NOT GLIB2_FOUND AND NOT PKG_CONFIG_FOUND ) + ## + + IF (GLIB2_CORE_FOUND AND GLIB2_INCLUDE_DIRS AND GLIB2_LIBRARIES) + SET (GLIB2_FOUND TRUE) + ENDIF (GLIB2_CORE_FOUND AND GLIB2_INCLUDE_DIRS AND GLIB2_LIBRARIES) + + IF (GLIB2_FOUND) + IF (NOT GLIB2_FIND_QUIETLY) + MESSAGE (STATUS "Found GLib2: ${GLIB2_LIBRARIES} ${GLIB2_INCLUDE_DIRS}") + ENDIF (NOT GLIB2_FIND_QUIETLY) + ELSE (GLIB2_FOUND) + IF (GLIB2_FIND_REQUIRED) + MESSAGE (SEND_ERROR "Could not find GLib2") + ENDIF (GLIB2_FIND_REQUIRED) + ENDIF (GLIB2_FOUND) + + # show the GLIB2_INCLUDE_DIRS and GLIB2_LIBRARIES variables only in the advanced view + MARK_AS_ADVANCED(GLIB2_INCLUDE_DIRS GLIB2_LIBRARIES) + MARK_AS_ADVANCED(LIBICONV_INCLUDE_DIR LIBICONV_LIBRARY) + MARK_AS_ADVANCED(LIBINTL_INCLUDE_DIR LIBINTL_LIBRARY) + +ENDIF (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS) + +IF ( GLIB2_FOUND ) + # Check if system has a newer version of glib + # which supports g_regex_match_simple + INCLUDE( CheckIncludeFiles ) + SET( CMAKE_REQUIRED_INCLUDES ${GLIB2_INCLUDE_DIRS} ) + CHECK_INCLUDE_FILES ( glib/gregex.h HAVE_GLIB_GREGEX_H ) + # Reset CMAKE_REQUIRED_INCLUDES + SET( CMAKE_REQUIRED_INCLUDES "" ) +ENDIF( GLIB2_FOUND ) + diff --git a/cmake_modules/FindGMock.cmake b/cmake_modules/FindGMock.cmake new file mode 100644 index 0000000..3187d72 --- /dev/null +++ b/cmake_modules/FindGMock.cmake @@ -0,0 +1,184 @@ +#.rst: +# FindGMock +# --------- +# +# Locate the Google C++ Mocking Framework. +# +# Defines the following variables: +# +# :: +# +# GMOCK_FOUND - Found the Google Mocking framework +# GMOCK_INCLUDE_DIRS - Include directories +# +# +# +# Also defines the library variables below as normal variables. These +# contain debug/optimized keywords when a debugging library is found. +# +# :: +# +# GMOCK_LIBRARIES - libgmock +# +# +# +# Accepts the following variables as input: +# +# :: +# +# GMOCK_ROOT - (as a CMake or environment variable) +# The root directory of the gmock install prefix +# +# +# +# :: +# +# GMOCK_MSVC_SEARCH - If compiling with MSVC, this variable can be set to +# "MD" or "MT" to enable searching a GMock build tree +# (defaults: "MD") +# +# +# +# Example Usage: +# +# :: +# +# find_package(GMock REQUIRED) +# include_directories(${GMOCK_INCLUDE_DIRS}) +# +# +# +# :: +# +# add_executable(foo foo.cc) +# target_link_libraries(foo ${GMOCK_LIBRARIES}) +# +# +# +# :: +# +# add_test(AllMocksInFoo foo) +# +# +# +# +# +# If you would like each Google test to show up in CMock as a test you +# may use the following macro. NOTE: It will slow down your tests by +# running an executable for each test and test fixture. You will also +# have to rerun CMake after adding or removing tests or test fixtures. +# +# GMOCK_ADD_MOCKS(executable extra_args ARGN) +# +# :: +# +# executable = The path to the test executable +# extra_args = Pass a list of extra arguments to be passed to +# executable enclosed in quotes (or "" for none) +# ARGN = A list of source files to search for tests & test +# fixtures. +# +# +# +# :: +# +# Example: +# set(FooMockArgs --foo 1 --bar 2) +# add_executable(FooMock FooUnitMock.cc) +# GMOCK_ADD_MOCKS(FooMock "${FooMockArgs}" FooUnitMock.cc) + +#============================================================================= +# Copyright 2009 Kitware, Inc. +# Copyright 2009 Philip Lowman <philip@yhbt.com> +# Copyright 2009 Daniel Blezek <blezek@gmail.com> +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) +# +# Thanks to Daniel Blezek <blezek@gmail.com> for the GMOCK_ADD_MOCKS code + +function(GMOCK_ADD_MOCKS executable extra_args) + if(NOT ARGN) + message(FATAL_ERROR "Missing ARGN: Read the documentation for GMOCK_ADD_MOCKS") + endif() + foreach(source ${ARGN}) + file(READ "${source}" contents) + string(REGEX MATCHALL "MOCK_?F?\\(([A-Za-z_0-9 ,]+)\\)" found_tests ${contents}) + foreach(hit ${found_tests}) + string(REGEX REPLACE ".*\\( *([A-Za-z_0-9]+), *([A-Za-z_0-9]+) *\\).*" "\\1.\\2" test_name ${hit}) + add_test(${test_name} ${executable} --gmock_filter=${test_name} ${extra_args}) + endforeach() + endforeach() +endfunction() + +function(_gmock_append_debugs _endvar _library) + if(${_library} AND ${_library}_DEBUG) + set(_output optimized ${${_library}} debug ${${_library}_DEBUG}) + else() + set(_output ${${_library}}) + endif() + set(${_endvar} ${_output} PARENT_SCOPE) +endfunction() + +function(_gmock_find_library _name) + find_library(${_name} + NAMES ${ARGN} + HINTS + ENV GMOCK_ROOT + ${GMOCK_ROOT} + PATH_SUFFIXES ${_gmock_libpath_suffixes} + ) + mark_as_advanced(${_name}) +endfunction() + +# + +if(NOT DEFINED GMOCK_MSVC_SEARCH) + set(GMOCK_MSVC_SEARCH MD) +endif() + +set(_gmock_libpath_suffixes lib) +if(MSVC) + if(GMOCK_MSVC_SEARCH STREQUAL "MD") + list(APPEND _gmock_libpath_suffixes + msvc/gmock-md/Debug + msvc/gmock-md/Release) + elseif(GMOCK_MSVC_SEARCH STREQUAL "MT") + list(APPEND _gmock_libpath_suffixes + msvc/gmock/Debug + msvc/gmock/Release) + endif() +endif() + + +find_path(GMOCK_INCLUDE_DIR gmock/gmock.h + HINTS + $ENV{GMOCK_ROOT}/include + ${GMOCK_ROOT}/include +) +mark_as_advanced(GMOCK_INCLUDE_DIR) + +if(MSVC AND GMOCK_MSVC_SEARCH STREQUAL "MD") + # The provided /MD project files for Google Mock add -md suffixes to the + # library names. + _gmock_find_library(GMOCK_LIBRARY gmock-md gmock) + _gmock_find_library(GMOCK_LIBRARY_DEBUG gmock-mdd gmockd) +else() + _gmock_find_library(GMOCK_LIBRARY gmock) + _gmock_find_library(GMOCK_LIBRARY_DEBUG gmockd) +endif() + +FIND_PACKAGE_HANDLE_STANDARD_ARGS(GMock DEFAULT_MSG GMOCK_LIBRARY GMOCK_INCLUDE_DIR) + +if(GMOCK_FOUND) + set(GMOCK_INCLUDE_DIRS ${GMOCK_INCLUDE_DIR}) + _gmock_append_debugs(GMOCK_LIBRARIES GMOCK_LIBRARY) +endif() + diff --git a/cmake_modules/FindGPHOTO2.cmake b/cmake_modules/FindGPHOTO2.cmake new file mode 100644 index 0000000..e5ffe29 --- /dev/null +++ b/cmake_modules/FindGPHOTO2.cmake @@ -0,0 +1,66 @@ +# - Find the native sqlite3 includes and library +# +# This module defines +# GPHOTO2_INCLUDE_DIR, where to find libgphoto2 header files +# GPHOTO2_LIBRARIES, the libraries to link against to use libgphoto2 +# GPHOTO2_FOUND, If false, do not try to use libgphoto2. +# GPHOTO2_VERSION_STRING, e.g. 2.4.14 +# GPHOTO2_VERSION_MAJOR, e.g. 2 +# GPHOTO2_VERSION_MINOR, e.g. 4 +# GPHOTO2_VERSION_PATCH, e.g. 14 +# +# also defined, but not for general use are +# GPHOTO2_LIBRARY, where to find the sqlite3 library. + + +#============================================================================= +# Copyright 2010 henrik andersson +#============================================================================= + +SET(GPHOTO2_FIND_REQUIRED ${Gphoto2_FIND_REQUIRED}) + +find_path(GPHOTO2_INCLUDE_DIR gphoto2/gphoto2.h) +mark_as_advanced(GPHOTO2_INCLUDE_DIR) + +set(GPHOTO2_NAMES ${GPHOTO2_NAMES} gphoto2 libgphoto2) +set(GPHOTO2_PORT_NAMES ${GPHOTO2_PORT_NAMES} gphoto2_port libgphoto2_port) +find_library(GPHOTO2_LIBRARY NAMES ${GPHOTO2_NAMES} ) +find_library(GPHOTO2_PORT_LIBRARY NAMES ${GPHOTO2_PORT_NAMES} ) +mark_as_advanced(GPHOTO2_LIBRARY) +mark_as_advanced(GPHOTO2_PORT_LIBRARY) + +# Detect libgphoto2 version +FIND_PROGRAM(GPHOTO2CONFIG_EXECUTABLE NAMES gphoto2-config) +IF(GPHOTO2CONFIG_EXECUTABLE) + EXEC_PROGRAM(${GPHOTO2CONFIG_EXECUTABLE} ARGS --version RETURN_VALUE _return_VALUE OUTPUT_VARIABLE GPHOTO2_VERSION) + string(REGEX REPLACE "^.*libgphoto2 ([0-9]+).*$" "\\1" GPHOTO2_VERSION_MAJOR "${GPHOTO2_VERSION}") + string(REGEX REPLACE "^.*libgphoto2 [0-9]+\\.([0-9]+).*$" "\\1" GPHOTO2_VERSION_MINOR "${GPHOTO2_VERSION}") + string(REGEX REPLACE "^.*libgphoto2 [0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" GPHOTO2_VERSION_PATCH "${GPHOTO2_VERSION}") + + set(GPHOTO2_VERSION_STRING "${GPHOTO2_VERSION_MAJOR}.${GPHOTO2_VERSION_MINOR}.${GPHOTO2_VERSION_PATCH}") +ENDIF(GPHOTO2CONFIG_EXECUTABLE) + +# handle the QUIETLY and REQUIRED arguments and set GPHOTO2_FOUND to TRUE if +# all listed variables are TRUE +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(GPHOTO2 DEFAULT_MSG GPHOTO2_LIBRARY GPHOTO2_INCLUDE_DIR) + +IF(GPHOTO2_FOUND) + SET(Gphoto2_LIBRARIES ${GPHOTO2_LIBRARY} ${GPHOTO2_PORT_LIBRARY}) + SET(Gphoto2_INCLUDE_DIRS ${GPHOTO2_INCLUDE_DIR}) + + # libgphoto2 dynamically loads and unloads usb library + # without calling any cleanup functions (since they are absent from libusb-0.1). + # This leaves usb event handling threads running with invalid callback and return addresses, + # which causes a crash after any usb event is generated, at least in Mac OS X. + # libusb1 backend does correctly call exit function, but ATM it crashes anyway. + # Workaround is to link against libusb so that it wouldn't get unloaded. + IF(APPLE) + find_library(USB_LIBRARY NAMES usb-1.0 libusb-1.0) + mark_as_advanced(USB_LIBRARY) + IF(USB_LIBRARY) + SET(Gphoto2_LIBRARIES ${Gphoto2_LIBRARIES} ${USB_LIBRARY}) + ENDIF(USB_LIBRARY) + ENDIF(APPLE) + +ENDIF(GPHOTO2_FOUND) diff --git a/cmake_modules/FindGPSD.cmake b/cmake_modules/FindGPSD.cmake new file mode 100644 index 0000000..d5dc416 --- /dev/null +++ b/cmake_modules/FindGPSD.cmake @@ -0,0 +1,19 @@ +# - Find GPSD +# Find the native GPSD includes and library + +FIND_PATH(GPSD_INCLUDE_DIR libgpsmm.h gps.h) + +SET(GPSD_NAMES ${GPSD_NAMES} gps) +FIND_LIBRARY(GPSD_LIBRARY NAMES ${GPSD_NAMES} ) + +# handle the QUIETLY and REQUIRED arguments and set JPEG_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(GPSD DEFAULT_MSG GPSD_LIBRARY GPSD_INCLUDE_DIR) + +IF(GPSD_FOUND) + SET(GPSD_LIBRARIES ${GPSD_LIBRARY}) + message(STATUS "Found libgps: ${GPSD_LIBRARIES}") +ENDIF(GPSD_FOUND) + + diff --git a/cmake_modules/FindGSL.cmake b/cmake_modules/FindGSL.cmake new file mode 100644 index 0000000..ef125c0 --- /dev/null +++ b/cmake_modules/FindGSL.cmake @@ -0,0 +1,238 @@ +#.rst: +# FindGSL +# -------- +# +# Find the native GSL includes and libraries. +# +# The GNU Scientific Library (GSL) is a numerical library for C and C++ +# programmers. It is free software under the GNU General Public +# License. +# +# Imported Targets +# ^^^^^^^^^^^^^^^^ +# +# If GSL is found, this module defines the following :prop_tgt:`IMPORTED` +# targets:: +# +# GSL::gsl - The main GSL library. +# GSL::gslcblas - The CBLAS support library used by GSL. +# +# Result Variables +# ^^^^^^^^^^^^^^^^ +# +# This module will set the following variables in your project:: +# +# GSL_FOUND - True if GSL found on the local system +# GSL_INCLUDE_DIRS - Location of GSL header files. +# GSL_LIBRARIES - The GSL libraries. +# GSL_VERSION - The version of the discovered GSL install. +# +# Hints +# ^^^^^ +# +# Set ``GSL_ROOT_DIR`` to a directory that contains a GSL installation. +# +# This script expects to find libraries at ``$GSL_ROOT_DIR/lib`` and the GSL +# headers at ``$GSL_ROOT_DIR/include/gsl``. The library directory may +# optionally provide Release and Debug folders. For Unix-like systems, this +# script will use ``$GSL_ROOT_DIR/bin/gsl-config`` (if found) to aid in the +# discovery GSL. +# +# Cache Variables +# ^^^^^^^^^^^^^^^ +# +# This module may set the following variables depending on platform and type +# of GSL installation discovered. These variables may optionally be set to +# help this module find the correct files:: +# +# GSL_CLBAS_LIBRARY - Location of the GSL CBLAS library. +# GSL_CBLAS_LIBRARY_DEBUG - Location of the debug GSL CBLAS library (if any). +# GSL_CONFIG_EXECUTABLE - Location of the ``gsl-config`` script (if any). +# GSL_LIBRARY - Location of the GSL library. +# GSL_LIBRARY_DEBUG - Location of the debug GSL library (if any). +# + +#============================================================================= +# Copyright 2014 Kelly Thompson <kgt@lanl.gov> +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) + +# Include these modules to handle the QUIETLY and REQUIRED arguments. +include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) + +#============================================================================= +# If the user has provided ``GSL_ROOT_DIR``, use it! Choose items found +# at this location over system locations. +if( EXISTS "$ENV{GSL_ROOT_DIR}" ) + file( TO_CMAKE_PATH "$ENV{GSL_ROOT_DIR}" GSL_ROOT_DIR ) + set( GSL_ROOT_DIR "${GSL_ROOT_DIR}" CACHE PATH "Prefix for GSL installation." ) +endif() +if( NOT EXISTS "${GSL_ROOT_DIR}" ) + set( GSL_USE_PKGCONFIG ON ) +endif() + +#============================================================================= +# As a first try, use the PkgConfig module. This will work on many +# *NIX systems. See :module:`findpkgconfig` +# This will return ``GSL_INCLUDEDIR`` and ``GSL_LIBDIR`` used below. +if( GSL_USE_PKGCONFIG ) + find_package(PkgConfig) + pkg_check_modules( GSL QUIET gsl ) + + if( EXISTS "${GSL_INCLUDEDIR}" ) + get_filename_component( GSL_ROOT_DIR "${GSL_INCLUDEDIR}" DIRECTORY CACHE) + endif() +endif() + +#============================================================================= +# Set GSL_INCLUDE_DIRS and GSL_LIBRARIES. If we skipped the PkgConfig step, try +# to find the libraries at $GSL_ROOT_DIR (if provided) or in standard system +# locations. These find_library and find_path calls will prefer custom +# locations over standard locations (HINTS). If the requested file is not found +# at the HINTS location, standard system locations will be still be searched +# (/usr/lib64 (Redhat), lib/i386-linux-gnu (Debian)). + +find_path( GSL_INCLUDE_DIR + NAMES gsl/gsl_sf.h + HINTS ${GSL_ROOT_DIR}/include ${GSL_INCLUDEDIR} +) +find_library( GSL_LIBRARY + NAMES gsl + HINTS ${GSL_ROOT_DIR}/lib ${GSL_LIBDIR} + PATH_SUFFIXES Release Debug +) +find_library( GSL_CBLAS_LIBRARY + NAMES gslcblas cblas + HINTS ${GSL_ROOT_DIR}/lib ${GSL_LIBDIR} + PATH_SUFFIXES Release Debug +) +# Do we also have debug versions? +find_library( GSL_LIBRARY_DEBUG + NAMES gsl + HINTS ${GSL_ROOT_DIR}/lib ${GSL_LIBDIR} + PATH_SUFFIXES Debug +) +find_library( GSL_CBLAS_LIBRARY_DEBUG + NAMES gslcblas cblas + HINTS ${GSL_ROOT_DIR}/lib ${GSL_LIBDIR} + PATH_SUFFIXES Debug +) +set( GSL_INCLUDE_DIRS ${GSL_INCLUDE_DIR} ) +set( GSL_LIBRARIES ${GSL_LIBRARY} ${GSL_CBLAS_LIBRARY} ) + +# If we didn't use PkgConfig, try to find the version via gsl-config or by +# reading gsl_version.h. +if( NOT GSL_VERSION ) + # 1. If gsl-config exists, query for the version. + find_program( GSL_CONFIG_EXECUTABLE + NAMES gsl-config + HINTS "${GSL_ROOT_DIR}/bin" + ) + if( EXISTS "${GSL_CONFIG_EXECUTABLE}" ) + execute_process( + COMMAND "${GSL_CONFIG_EXECUTABLE}" --version + OUTPUT_VARIABLE GSL_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE ) + endif() + + # 2. If gsl-config is not available, try looking in gsl/gsl_version.h + if( NOT GSL_VERSION AND EXISTS "${GSL_INCLUDE_DIRS}/gsl/gsl_version.h" ) + file( STRINGS "${GSL_INCLUDE_DIRS}/gsl/gsl_version.h" gsl_version_h_contents REGEX "define GSL_VERSION" ) + string( REGEX REPLACE ".*([0-9].[0-9][0-9]).*" "\\1" GSL_VERSION ${gsl_version_h_contents} ) + endif() + + # might also try scraping the directory name for a regex match "gsl-X.X" +endif() + +#============================================================================= +# handle the QUIETLY and REQUIRED arguments and set GSL_FOUND to TRUE if all +# listed variables are TRUE +find_package_handle_standard_args( GSL + FOUND_VAR + GSL_FOUND + REQUIRED_VARS + GSL_INCLUDE_DIR + GSL_LIBRARY + GSL_CBLAS_LIBRARY + VERSION_VAR + GSL_VERSION + ) + +mark_as_advanced( GSL_ROOT_DIR GSL_VERSION GSL_LIBRARY GSL_INCLUDE_DIR + GSL_CBLAS_LIBRARY GSL_LIBRARY_DEBUG GSL_CBLAS_LIBRARY_DEBUG + GSL_USE_PKGCONFIG GSL_CONFIG ) + +#============================================================================= +# Register imported libraries: +# 1. If we can find a Windows .dll file (or if we can find both Debug and +# Release libraries), we will set appropriate target properties for these. +# 2. However, for most systems, we will only register the import location and +# include directory. + +# Look for dlls, or Release and Debug libraries. +if(WIN32) + string( REPLACE ".lib" ".dll" GSL_LIBRARY_DLL "${GSL_LIBRARY}" ) + string( REPLACE ".lib" ".dll" GSL_CBLAS_LIBRARY_DLL "${GSL_CBLAS_LIBRARY}" ) + string( REPLACE ".lib" ".dll" GSL_LIBRARY_DEBUG_DLL "${GSL_LIBRARY_DEBUG}" ) + string( REPLACE ".lib" ".dll" GSL_CBLAS_LIBRARY_DEBUG_DLL "${GSL_CBLAS_LIBRARY_DEBUG}" ) +endif() + +if( GSL_FOUND AND NOT TARGET GSL::gsl ) + if( EXISTS "${GSL_LIBRARY_DLL}" AND EXISTS "${GSL_CBLAS_LIBRARY_DLL}") + + # Windows systems with dll libraries. + add_library( GSL::gsl SHARED IMPORTED ) + add_library( GSL::gslcblas SHARED IMPORTED ) + + # Windows with dlls, but only Release libraries. + set_target_properties( GSL::gslcblas PROPERTIES + IMPORTED_LOCATION_RELEASE "${GSL_CBLAS_LIBRARY_DLL}" + IMPORTED_IMPLIB "${GSL_CBLAS_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${GSL_INCLUDE_DIRS}" + IMPORTED_CONFIGURATIONS Release + IMPORTED_LINK_INTERFACE_LANGUAGES "C" ) + set_target_properties( GSL::gsl PROPERTIES + IMPORTED_LOCATION_RELEASE "${GSL_LIBRARY_DLL}" + IMPORTED_IMPLIB "${GSL_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${GSL_INCLUDE_DIRS}" + IMPORTED_CONFIGURATIONS Release + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + INTERFACE_LINK_LIBRARIES GSL::gslcblas ) + + # If we have both Debug and Release libraries + if( EXISTS "${GSL_LIBRARY_DEBUG_DLL}" AND EXISTS "${GSL_CBLAS_LIBRARY_DEBUG_DLL}") + set_property( TARGET GSL::gslcblas APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug ) + set_target_properties( GSL::gslcblas PROPERTIES + IMPORTED_LOCATION_DEBUG "${GSL_CBLAS_LIBRARY_DEBUG_DLL}" + IMPORTED_IMPLIB_DEBUG "${GSL_CBLAS_LIBRARY_DEBUG}" ) + set_property( TARGET GSL::gsl APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug ) + set_target_properties( GSL::gsl PROPERTIES + IMPORTED_LOCATION_DEBUG "${GSL_LIBRARY_DEBUG_DLL}" + IMPORTED_IMPLIB_DEBUG "${GSL_LIBRARY_DEBUG}" ) + endif() + + else() + + # For all other environments (ones without dll libraries), create + # the imported library targets. + add_library( GSL::gsl UNKNOWN IMPORTED ) + add_library( GSL::gslcblas UNKNOWN IMPORTED ) + set_target_properties( GSL::gslcblas PROPERTIES + IMPORTED_LOCATION "${GSL_CBLAS_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${GSL_INCLUDE_DIRS}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" ) + set_target_properties( GSL::gsl PROPERTIES + IMPORTED_LOCATION "${GSL_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${GSL_INCLUDE_DIRS}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + INTERFACE_LINK_LIBRARIES GSL::gslcblas ) + endif() +endif() diff --git a/cmake_modules/FindINDI.cmake b/cmake_modules/FindINDI.cmake new file mode 100644 index 0000000..b18991f --- /dev/null +++ b/cmake_modules/FindINDI.cmake @@ -0,0 +1,320 @@ +# Licensed 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. +# +# This module can find INDI Library +# +# Requirements: +# - CMake >= 2.8.3 (for new version of find_package_handle_standard_args) +# +# The following variables will be defined for your use: +# - INDI_FOUND : were all of your specified components found (include dependencies)? +# - INDI_WEBSOCKET : was INDI compiled with websocket support? +# - INDI_INCLUDE_DIR : INDI include directory +# - INDI_DATA_DIR : INDI include directory +# - INDI_LIBRARIES : INDI libraries +# - INDI_DRIVER_LIBRARIES : Same as above maintained for backward compatibility +# - INDI_VERSION : complete version of INDI (x.y.z) +# - INDI_MAJOR_VERSION : major version of INDI +# - INDI_MINOR_VERSION : minor version of INDI +# - INDI_RELEASE_VERSION : release version of INDI +# - INDI_<COMPONENT>_FOUND : were <COMPONENT> found? (FALSE for non specified component if it is not a dependency) +# +# For windows or non standard installation, define INDI_ROOT variable to point to the root installation of INDI. Two ways: +# - run cmake with -DINDI_ROOT=<PATH> +# - define an environment variable with the same name before running cmake +# With cmake-gui, before pressing "Configure": +# 1) Press "Add Entry" button +# 2) Add a new entry defined as: +# - Name: INDI_ROOT +# - Type: choose PATH in the selection list +# - Press "..." button and select the root installation of INDI +# +# Example Usage: +# +# 1. Copy this file in the root of your project source directory +# 2. Then, tell CMake to search this non-standard module in your project directory by adding to your CMakeLists.txt: +# set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}) +# 3. Finally call find_package() once, here are some examples to pick from +# +# Require INDI 1.4 or later +# find_package(INDI 1.4 REQUIRED) +# +# if(INDI_FOUND) +# include_directories(${INDI_INCLUDE_DIR}) +# add_executable(myapp myapp.cpp) +# target_link_libraries(myapp ${INDI_LIBRARIES}) +# endif(INDI_FOUND) +# +# +# Using Components: +# +# You can search for specific components. Currently, the following components are available +# * driver: to build INDI hardware drivers. +# * align: to build drivers that use INDI Alignment Subsystem. +# * client: to build pure C++ INDI clients. +# * clientqt5: to build Qt5-based INDI clients. +# * lx200: To build LX200-based 3rd party drivers (you must link with driver above as well). +# +# By default, if you do not specify any components, driver and align components are searched. +# +# Example: +# +# To use INDI Qt5 Client library only in your application: +# +# find_package(INDI COMPONENTS clientqt5 REQUIRED) +# +# if(INDI_FOUND) +# include_directories(${INDI_INCLUDE_DIR}) +# add_executable(myapp myapp.cpp) +# target_link_libraries(myapp ${INDI_LIBRARIES}) +# endif(INDI_FOUND) +# +# To use INDI driver + lx200 component in your application: +# +# find_package(INDI COMPONENTS driver lx200 REQUIRED) +# +# if(INDI_FOUND) +# include_directories(${INDI_INCLUDE_DIR}) +# add_executable(myapp myapp.cpp) +# target_link_libraries(myapp ${INDI_LIBRARIES}) +# endif(INDI_FOUND) +# +# Notice we still use ${INDI_LIBRARIES} which now should contain both driver & lx200 libraries. +#============================================================================================== +# Copyright (c) 2011-2013, julp +# Copyright (c) 2017-2019 Jasem Mutlaq +# +# Distributed under the OSI-approved BSD License +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTINDILAR PURPOSE. +#============================================================================= + +find_package(PkgConfig QUIET) + +########## Private ########## +if(NOT DEFINED INDI_PUBLIC_VAR_NS) + set(INDI_PUBLIC_VAR_NS "INDI") # Prefix for all INDI relative public variables +endif(NOT DEFINED INDI_PUBLIC_VAR_NS) +if(NOT DEFINED INDI_PRIVATE_VAR_NS) + set(INDI_PRIVATE_VAR_NS "_${INDI_PUBLIC_VAR_NS}") # Prefix for all INDI relative internal variables +endif(NOT DEFINED INDI_PRIVATE_VAR_NS) +if(NOT DEFINED PC_INDI_PRIVATE_VAR_NS) + set(PC_INDI_PRIVATE_VAR_NS "_PC${INDI_PRIVATE_VAR_NS}") # Prefix for all pkg-config relative internal variables +endif(NOT DEFINED PC_INDI_PRIVATE_VAR_NS) + +function(indidebug _VARNAME) + if(${INDI_PUBLIC_VAR_NS}_DEBUG) + if(DEFINED ${INDI_PUBLIC_VAR_NS}_${_VARNAME}) + message("${INDI_PUBLIC_VAR_NS}_${_VARNAME} = ${${INDI_PUBLIC_VAR_NS}_${_VARNAME}}") + else(DEFINED ${INDI_PUBLIC_VAR_NS}_${_VARNAME}) + message("${INDI_PUBLIC_VAR_NS}_${_VARNAME} = <UNDEFINED>") + endif(DEFINED ${INDI_PUBLIC_VAR_NS}_${_VARNAME}) + endif(${INDI_PUBLIC_VAR_NS}_DEBUG) +endfunction(indidebug) + +set(${INDI_PRIVATE_VAR_NS}_ROOT "") +if(DEFINED ENV{INDI_ROOT}) + set(${INDI_PRIVATE_VAR_NS}_ROOT "$ENV{INDI_ROOT}") +endif(DEFINED ENV{INDI_ROOT}) +if (DEFINED INDI_ROOT) + set(${INDI_PRIVATE_VAR_NS}_ROOT "${INDI_ROOT}") +endif(DEFINED INDI_ROOT) + +set(${INDI_PRIVATE_VAR_NS}_BIN_SUFFIXES ) +set(${INDI_PRIVATE_VAR_NS}_LIB_SUFFIXES ) +if(CMAKE_SIZEOF_VOID_P EQUAL 8) + list(APPEND ${INDI_PRIVATE_VAR_NS}_BIN_SUFFIXES "bin64") + list(APPEND ${INDI_PRIVATE_VAR_NS}_LIB_SUFFIXES "lib64") +endif(CMAKE_SIZEOF_VOID_P EQUAL 8) +list(APPEND ${INDI_PRIVATE_VAR_NS}_BIN_SUFFIXES "bin") +list(APPEND ${INDI_PRIVATE_VAR_NS}_LIB_SUFFIXES "lib") + +set(${INDI_PRIVATE_VAR_NS}_COMPONENTS ) +# <INDI component name> <library name 1> ... <library name N> +macro(INDI_declare_component _NAME) + list(APPEND ${INDI_PRIVATE_VAR_NS}_COMPONENTS ${_NAME}) + set("${INDI_PRIVATE_VAR_NS}_COMPONENTS_${_NAME}" ${ARGN}) +endmacro(INDI_declare_component) + +INDI_declare_component(driver indidriver) +INDI_declare_component(align indiAlignmentDriver) +INDI_declare_component(client indiclient) +INDI_declare_component(clientqt5 indiclientqt5) +INDI_declare_component(lx200 indilx200) + +########## Public ########## +set(${INDI_PUBLIC_VAR_NS}_FOUND TRUE) +set(${INDI_PUBLIC_VAR_NS}_LIBRARIES ) +set(${INDI_PUBLIC_VAR_NS}_INCLUDE_DIR ) +foreach(${INDI_PRIVATE_VAR_NS}_COMPONENT ${${INDI_PRIVATE_VAR_NS}_COMPONENTS}) + string(TOUPPER "${${INDI_PRIVATE_VAR_NS}_COMPONENT}" ${INDI_PRIVATE_VAR_NS}_UPPER_COMPONENT) + set("${INDI_PUBLIC_VAR_NS}_${${INDI_PRIVATE_VAR_NS}_UPPER_COMPONENT}_FOUND" FALSE) # may be done in the INDI_declare_component macro +endforeach(${INDI_PRIVATE_VAR_NS}_COMPONENT) + +# Check components +if(NOT ${INDI_PUBLIC_VAR_NS}_FIND_COMPONENTS) # driver and posix client by default + set(${INDI_PUBLIC_VAR_NS}_FIND_COMPONENTS driver align) +else(NOT ${INDI_PUBLIC_VAR_NS}_FIND_COMPONENTS) + #list(APPEND ${INDI_PUBLIC_VAR_NS}_FIND_COMPONENTS uc) + list(REMOVE_DUPLICATES ${INDI_PUBLIC_VAR_NS}_FIND_COMPONENTS) + foreach(${INDI_PRIVATE_VAR_NS}_COMPONENT ${${INDI_PUBLIC_VAR_NS}_FIND_COMPONENTS}) + if(NOT DEFINED ${INDI_PRIVATE_VAR_NS}_COMPONENTS_${${INDI_PRIVATE_VAR_NS}_COMPONENT}) + message(FATAL_ERROR "Unknown INDI component: ${${INDI_PRIVATE_VAR_NS}_COMPONENT}") + endif(NOT DEFINED ${INDI_PRIVATE_VAR_NS}_COMPONENTS_${${INDI_PRIVATE_VAR_NS}_COMPONENT}) + endforeach(${INDI_PRIVATE_VAR_NS}_COMPONENT) +endif(NOT ${INDI_PUBLIC_VAR_NS}_FIND_COMPONENTS) + +# Includes +find_path( + ${INDI_PUBLIC_VAR_NS}_INCLUDE_DIR + indidevapi.h + PATH_SUFFIXES libindi include/libindi + ${PC_INDI_INCLUDE_DIR} + ${_obIncDir} + ${GNUWIN32_DIR}/include + HINTS ${${INDI_PRIVATE_VAR_NS}_ROOT} + DOC "Include directory for INDI" +) + +find_path( + WEBSOCKET_HEADER + indiwsserver.h + PATH_SUFFIXES libindi + ${PC_INDI_INCLUDE_DIR} + ${_obIncDir} + ${GNUWIN32_DIR}/include +) + +if (WEBSOCKET_HEADER) + SET(INDI_WEBSOCKET TRUE) +else() + SET(INDI_WEBSOCKET FALSE) +endif() + +find_path(${INDI_PUBLIC_VAR_NS}_DATA_DIR + drivers.xml + PATH_SUFFIXES share/indi + DOC "Data directory for INDI" + ) + +if(${INDI_PUBLIC_VAR_NS}_INCLUDE_DIR) + if(EXISTS "${${INDI_PUBLIC_VAR_NS}_INCLUDE_DIR}/indiversion.h") # INDI >= 1.4 + file(READ "${${INDI_PUBLIC_VAR_NS}_INCLUDE_DIR}/indiversion.h" ${INDI_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS) + else() + message(FATAL_ERROR "INDI version header not found") + endif() + + if(${INDI_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS MATCHES ".*INDI_VERSION ([0-9]+).([0-9]+).([0-9]+)") + set(${INDI_PUBLIC_VAR_NS}_MAJOR_VERSION "${CMAKE_MATCH_1}") + set(${INDI_PUBLIC_VAR_NS}_MINOR_VERSION "${CMAKE_MATCH_2}") + set(${INDI_PUBLIC_VAR_NS}_RELEASE_VERSION "${CMAKE_MATCH_3}") + else() + message(FATAL_ERROR "failed to detect INDI version") + endif() + set(${INDI_PUBLIC_VAR_NS}_VERSION "${${INDI_PUBLIC_VAR_NS}_MAJOR_VERSION}.${${INDI_PUBLIC_VAR_NS}_MINOR_VERSION}.${${INDI_PUBLIC_VAR_NS}_RELEASE_VERSION}") + + # Check libraries + foreach(${INDI_PRIVATE_VAR_NS}_COMPONENT ${${INDI_PUBLIC_VAR_NS}_FIND_COMPONENTS}) + set(${INDI_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES ) + set(${INDI_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES ) + foreach(${INDI_PRIVATE_VAR_NS}_BASE_NAME ${${INDI_PRIVATE_VAR_NS}_COMPONENTS_${${INDI_PRIVATE_VAR_NS}_COMPONENT}}) + list(APPEND ${INDI_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES "${${INDI_PRIVATE_VAR_NS}_BASE_NAME}") + list(APPEND ${INDI_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES "${${INDI_PRIVATE_VAR_NS}_BASE_NAME}d") + list(APPEND ${INDI_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES "${${INDI_PRIVATE_VAR_NS}_BASE_NAME}${INDI_MAJOR_VERSION}${INDI_MINOR_VERSION}") + list(APPEND ${INDI_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES "${${INDI_PRIVATE_VAR_NS}_BASE_NAME}${INDI_MAJOR_VERSION}${INDI_MINOR_VERSION}d") + endforeach(${INDI_PRIVATE_VAR_NS}_BASE_NAME) + + find_library( + ${INDI_PRIVATE_VAR_NS}_LIB_RELEASE_${${INDI_PRIVATE_VAR_NS}_COMPONENT} + NAMES ${${INDI_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES} + HINTS ${${INDI_PRIVATE_VAR_NS}_ROOT} + PATH_SUFFIXES ${_INDI_LIB_SUFFIXES} + DOC "Release libraries for INDI" + ) + find_library( + ${INDI_PRIVATE_VAR_NS}_LIB_DEBUG_${${INDI_PRIVATE_VAR_NS}_COMPONENT} + NAMES ${${INDI_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES} + HINTS ${${INDI_PRIVATE_VAR_NS}_ROOT} + PATH_SUFFIXES ${_INDI_LIB_SUFFIXES} + DOC "Debug libraries for INDI" + ) + + string(TOUPPER "${${INDI_PRIVATE_VAR_NS}_COMPONENT}" ${INDI_PRIVATE_VAR_NS}_UPPER_COMPONENT) + if(NOT ${INDI_PRIVATE_VAR_NS}_LIB_RELEASE_${${INDI_PRIVATE_VAR_NS}_COMPONENT} AND NOT ${INDI_PRIVATE_VAR_NS}_LIB_DEBUG_${${INDI_PRIVATE_VAR_NS}_COMPONENT}) # both not found + set("${INDI_PUBLIC_VAR_NS}_${${INDI_PRIVATE_VAR_NS}_UPPER_COMPONENT}_FOUND" FALSE) + set("${INDI_PUBLIC_VAR_NS}_FOUND" FALSE) + else(NOT ${INDI_PRIVATE_VAR_NS}_LIB_RELEASE_${${INDI_PRIVATE_VAR_NS}_COMPONENT} AND NOT ${INDI_PRIVATE_VAR_NS}_LIB_DEBUG_${${INDI_PRIVATE_VAR_NS}_COMPONENT}) # one or both found + set("${INDI_PUBLIC_VAR_NS}_${${INDI_PRIVATE_VAR_NS}_UPPER_COMPONENT}_FOUND" TRUE) + if(NOT ${INDI_PRIVATE_VAR_NS}_LIB_RELEASE_${${INDI_PRIVATE_VAR_NS}_COMPONENT}) # release not found => we are in debug + set(${INDI_PRIVATE_VAR_NS}_LIB_${${INDI_PRIVATE_VAR_NS}_COMPONENT} "${${INDI_PRIVATE_VAR_NS}_LIB_DEBUG_${${INDI_PRIVATE_VAR_NS}_COMPONENT}}") + elseif(NOT ${INDI_PRIVATE_VAR_NS}_LIB_DEBUG_${${INDI_PRIVATE_VAR_NS}_COMPONENT}) # debug not found => we are in release + set(${INDI_PRIVATE_VAR_NS}_LIB_${${INDI_PRIVATE_VAR_NS}_COMPONENT} "${${INDI_PRIVATE_VAR_NS}_LIB_RELEASE_${${INDI_PRIVATE_VAR_NS}_COMPONENT}}") + else() # both found + set( + ${INDI_PRIVATE_VAR_NS}_LIB_${${INDI_PRIVATE_VAR_NS}_COMPONENT} + optimized ${${INDI_PRIVATE_VAR_NS}_LIB_RELEASE_${${INDI_PRIVATE_VAR_NS}_COMPONENT}} + debug ${${INDI_PRIVATE_VAR_NS}_LIB_DEBUG_${${INDI_PRIVATE_VAR_NS}_COMPONENT}} + ) + endif() + list(APPEND ${INDI_PUBLIC_VAR_NS}_LIBRARIES ${${INDI_PRIVATE_VAR_NS}_LIB_${${INDI_PRIVATE_VAR_NS}_COMPONENT}}) + endif(NOT ${INDI_PRIVATE_VAR_NS}_LIB_RELEASE_${${INDI_PRIVATE_VAR_NS}_COMPONENT} AND NOT ${INDI_PRIVATE_VAR_NS}_LIB_DEBUG_${${INDI_PRIVATE_VAR_NS}_COMPONENT}) + endforeach(${INDI_PRIVATE_VAR_NS}_COMPONENT) + + # Check find_package arguments + include(FindPackageHandleStandardArgs) + if(${INDI_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${INDI_PUBLIC_VAR_NS}_FIND_QUIETLY) + find_package_handle_standard_args( + ${INDI_PUBLIC_VAR_NS} + REQUIRED_VARS ${INDI_PUBLIC_VAR_NS}_LIBRARIES ${INDI_PUBLIC_VAR_NS}_INCLUDE_DIR + VERSION_VAR ${INDI_PUBLIC_VAR_NS}_VERSION + ) + else(${INDI_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${INDI_PUBLIC_VAR_NS}_FIND_QUIETLY) + find_package_handle_standard_args(${INDI_PUBLIC_VAR_NS} "INDI not found" ${INDI_PUBLIC_VAR_NS}_LIBRARIES ${INDI_PUBLIC_VAR_NS}_INCLUDE_DIR) + endif(${INDI_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${INDI_PUBLIC_VAR_NS}_FIND_QUIETLY) +else(${INDI_PUBLIC_VAR_NS}_INCLUDE_DIR) + set("${INDI_PUBLIC_VAR_NS}_FOUND" FALSE) + if(${INDI_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${INDI_PUBLIC_VAR_NS}_FIND_QUIETLY) + message(FATAL_ERROR "Could not find INDI include directory") + endif(${INDI_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${INDI_PUBLIC_VAR_NS}_FIND_QUIETLY) +endif(${INDI_PUBLIC_VAR_NS}_INCLUDE_DIR) + +mark_as_advanced( + ${INDI_PUBLIC_VAR_NS}_INCLUDE_DIR + ${INDI_PUBLIC_VAR_NS}_LIBRARIES + INDI_WEBSOCKET +) + +# IN (args) +indidebug("FIND_COMPONENTS") +indidebug("FIND_REQUIRED") +indidebug("FIND_QUIETLY") +indidebug("FIND_VERSION") +# OUT +# Found +indidebug("FOUND") +indidebug("SERVER_FOUND") +indidebug("DRIVERS_FOUND") +indidebug("CLIENT_FOUND") +indidebug("QT5CLIENT_FOUND") +indidebug("LX200_FOUND") + +# Linking +indidebug("INCLUDE_DIR") +indidebug("DATA_DIR") +indidebug("LIBRARIES") +# Backward compatibility +set(${INDI_PUBLIC_VAR_NS}_DRIVER_LIBRARIES ${${INDI_PUBLIC_VAR_NS}_LIBRARIES}) +indidebug("DRIVER_LIBRARIES") +# Version +indidebug("MAJOR_VERSION") +indidebug("MINOR_VERSION") +indidebug("RELEASE_VERSION") +indidebug("VERSION") diff --git a/cmake_modules/FindINOVASDK.cmake b/cmake_modules/FindINOVASDK.cmake new file mode 100644 index 0000000..75874e0 --- /dev/null +++ b/cmake_modules/FindINOVASDK.cmake @@ -0,0 +1,50 @@ +# - Try to find INOVASDK Universal Library +# Once done this will define +# +# INOVASDK_FOUND - system has INOVASDK +# INOVASDK_INCLUDE_DIR - the INOVASDK include directory +# INOVASDK_LIBRARIES - Link these to use INOVASDK + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (INOVASDK_INCLUDE_DIR AND INOVASDK_LIBRARIES) + + # in cache already + set(INOVASDK_FOUND TRUE) + message(STATUS "Found libinovasdk: ${INOVASDK_LIBRARIES}") + +else (INOVASDK_INCLUDE_DIR AND INOVASDK_LIBRARIES) + + find_path(INOVASDK_INCLUDE_DIR inovasdk.h + PATH_SUFFIXES inovasdk + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(INOVASDK_LIBRARIES NAMES inovasdk + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if(INOVASDK_INCLUDE_DIR AND INOVASDK_LIBRARIES) + set(INOVASDK_FOUND TRUE) + else (INOVASDK_INCLUDE_DIR AND INOVASDK_LIBRARIES) + set(INOVASDK_FOUND FALSE) + endif(INOVASDK_INCLUDE_DIR AND INOVASDK_LIBRARIES) + + + if (INOVASDK_FOUND) + if (NOT INOVASDK_FIND_QUIETLY) + message(STATUS "Found INOVASDK: ${INOVASDK_LIBRARIES}") + endif (NOT INOVASDK_FIND_QUIETLY) + else (INOVASDK_FOUND) + if (INOVASDK_FIND_REQUIRED) + message(FATAL_ERROR "INOVASDK not found. Please install INOVASDK Library http://www.indilib.org") + endif (INOVASDK_FIND_REQUIRED) + endif (INOVASDK_FOUND) + + mark_as_advanced(INOVASDK_INCLUDE_DIR INOVASDK_LIBRARIES) + +endif (INOVASDK_INCLUDE_DIR AND INOVASDK_LIBRARIES) diff --git a/cmake_modules/FindIconv.cmake b/cmake_modules/FindIconv.cmake new file mode 100644 index 0000000..ea0e5f3 --- /dev/null +++ b/cmake_modules/FindIconv.cmake @@ -0,0 +1,81 @@ +# +# Copyright (C) 2010 Michael Bell <michael.bell@web.de> +# 2015-2016 MariaDB Corporation AB +# +# Redistribution and use is allowed according to the terms of the New +# BSD license. +# For details see the COPYING-CMAKE-SCRIPTS file. +# +# ICONV_EXTERNAL - Iconv is an external library (not libc) +# ICONV_FOUND - system has Iconv +# ICONV_INCLUDE_DIR - the Iconv include directory +# ICONV_LIBRARIES - Link these to use Iconv +# ICONV_SECOND_ARGUMENT_IS_CONST - the second argument for iconv() is const +# ICONV_VERSION - Iconv version string + +if (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) + # Already in cache, be silent + set(ICONV_FIND_QUIETLY TRUE) +endif (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) + +find_path(ICONV_INCLUDE_DIR iconv.h) + +IF(CMAKE_SYSTEM_NAME MATCHES "SunOS") + # There is some libiconv.so in /usr/local that must + # be avoided, iconv routines are in libc +ELSEIF(APPLE) + find_library(ICONV_LIBRARIES NAMES iconv libiconv PATHS + /usr/lib/ + NO_CMAKE_SYSTEM_PATH) + SET(ICONV_EXTERNAL TRUE) +ELSE() + find_library(ICONV_LIBRARIES NAMES iconv libiconv libiconv-2) + IF(ICONV_LIBRARIES) + SET(ICONV_EXTERNAL TRUE) + ENDIF() +ENDIF() + +if (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) + set (ICONV_FOUND TRUE) +endif (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) + +set(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR}) +IF(ICONV_EXTERNAL) + set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARIES}) +ENDIF() + +if (ICONV_FOUND) + include(CheckCSourceCompiles) + CHECK_C_SOURCE_COMPILES(" + #include <iconv.h> + int main(){ + iconv_t conv = 0; + const char* in = 0; + size_t ilen = 0; + char* out = 0; + size_t olen = 0; + iconv(conv, &in, &ilen, &out, &olen); + return 0; + } +" ICONV_SECOND_ARGUMENT_IS_CONST ) +endif (ICONV_FOUND) + +set (CMAKE_REQUIRED_INCLUDES) +set (CMAKE_REQUIRED_LIBRARIES) + +if (ICONV_FOUND) + if (NOT ICONV_FIND_QUIETLY) + message (STATUS "Found Iconv: ${ICONV_LIBRARIES}") + endif (NOT ICONV_FIND_QUIETLY) +else (ICONV_FOUND) + if (Iconv_FIND_REQUIRED) + message (FATAL_ERROR "Could not find Iconv") + endif (Iconv_FIND_REQUIRED) +endif (ICONV_FOUND) + +MARK_AS_ADVANCED( + ICONV_INCLUDE_DIR + ICONV_LIBRARIES + ICONV_EXTERNAL + ICONV_SECOND_ARGUMENT_IS_CONST +) diff --git a/cmake_modules/FindJPEG.cmake b/cmake_modules/FindJPEG.cmake new file mode 100644 index 0000000..3692ee1 --- /dev/null +++ b/cmake_modules/FindJPEG.cmake @@ -0,0 +1,28 @@ +# - Find JPEG +# Find the native JPEG includes and library +# This module defines +# JPEG_INCLUDE_DIR, where to find jpeglib.h, etc. +# JPEG_LIBRARIES, the libraries needed to use JPEG. +# JPEG_FOUND, If false, do not try to use JPEG. +# also defined, but not for general use are +# JPEG_LIBRARY, where to find the JPEG library. + +FIND_PATH(JPEG_INCLUDE_DIR jpeglib.h) + +SET(JPEG_NAMES ${JPEG_NAMES} jpeg) +FIND_LIBRARY(JPEG_LIBRARY NAMES ${JPEG_NAMES} ) + +# handle the QUIETLY and REQUIRED arguments and set JPEG_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(JPEG DEFAULT_MSG JPEG_LIBRARY JPEG_INCLUDE_DIR) + +IF(JPEG_FOUND) + SET(JPEG_LIBRARIES ${JPEG_LIBRARY}) +ENDIF(JPEG_FOUND) + +# Deprecated declarations. +SET (NATIVE_JPEG_INCLUDE_PATH ${JPEG_INCLUDE_DIR} ) +GET_FILENAME_COMPONENT (NATIVE_JPEG_LIB_PATH ${JPEG_LIBRARY} PATH) + +MARK_AS_ADVANCED(JPEG_LIBRARY JPEG_INCLUDE_DIR ) diff --git a/cmake_modules/FindLIMESUITE.cmake b/cmake_modules/FindLIMESUITE.cmake new file mode 100644 index 0000000..3f1168b --- /dev/null +++ b/cmake_modules/FindLIMESUITE.cmake @@ -0,0 +1,52 @@ +# - Try to find LIMESUITE +# Once done this will define +# +# LIMESUITE_FOUND - system has LIMESUITE +# LIMESUITE_INCLUDE_DIR - the LIMESUITE include directory +# LIMESUITE_LIBRARIES - Link these to use LIMESUITE +# LIMESUITE_VERSION_STRING - Human readable version number of rtlsdr +# LIMESUITE_VERSION_MAJOR - Major version number of rtlsdr +# LIMESUITE_VERSION_MINOR - Minor version number of rtlsdr + +# Copyright (c) 2017, Ilia Platone, <info@iliaplatone.com> +# Based on FindLibfacile by Carsten Niehaus, <cniehaus@gmx.de> +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (LIMESUITE_LIBRARIES) + + # in cache already + set(LIMESUITE_FOUND TRUE) + message(STATUS "Found LIMESUITE: ${LIMESUITE_LIBRARIES}") + + +else (LIMESUITE_LIBRARIES) + + find_library(LIMESUITE_LIBRARIES NAMES LimeSuite + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + /usr/local/lib + ) + + if(LIMESUITE_LIBRARIES) + set(LIMESUITE_FOUND TRUE) + else (LIMESUITE_LIBRARIES) + set(LIMESUITE_FOUND FALSE) + endif(LIMESUITE_LIBRARIES) + + + if (LIMESUITE_FOUND) + if (NOT LIMESUITE_FIND_QUIETLY) + message(STATUS "Found LIMESUITE: ${LIMESUITE_LIBRARIES}") + endif (NOT LIMESUITE_FIND_QUIETLY) + else (LIMESUITE_FOUND) + if (LIMESUITE_FIND_REQUIRED) + message(FATAL_ERROR "LIMESUITE not found. Please install libLimeSuite-dev") + endif (LIMESUITE_FIND_REQUIRED) + endif (LIMESUITE_FOUND) + + mark_as_advanced(LIMESUITE_LIBRARIES) + +endif (LIMESUITE_LIBRARIES) diff --git a/cmake_modules/FindLibRaw.cmake b/cmake_modules/FindLibRaw.cmake new file mode 100644 index 0000000..e2dbe09 --- /dev/null +++ b/cmake_modules/FindLibRaw.cmake @@ -0,0 +1,79 @@ +# - Find LibRaw +# Find the LibRaw library <http://www.libraw.org> +# This module defines +# LibRaw_VERSION_STRING, the version string of LibRaw +# LibRaw_INCLUDE_DIR, where to find libraw.h +# LibRaw_LIBRARIES, the libraries needed to use LibRaw (non-thread-safe) +# LibRaw_r_LIBRARIES, the libraries needed to use LibRaw (thread-safe) +# LibRaw_DEFINITIONS, the definitions needed to use LibRaw (non-thread-safe) +# LibRaw_r_DEFINITIONS, the definitions needed to use LibRaw (thread-safe) +# +# Copyright (c) 2013, Pino Toscano <pino at kde dot org> +# Copyright (c) 2013, Gilles Caulier <caulier dot gilles at gmail dot com> +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +FIND_PACKAGE(PkgConfig) + +IF(PKG_CONFIG_FOUND) + PKG_CHECK_MODULES(PC_LIBRAW libraw) + SET(LibRaw_DEFINITIONS ${PC_LIBRAW_CFLAGS_OTHER}) + + PKG_CHECK_MODULES(PC_LIBRAW_R libraw_r) + SET(LibRaw_r_DEFINITIONS ${PC_LIBRAW_R_CFLAGS_OTHER}) +ENDIF() + +FIND_PATH(LibRaw_INCLUDE_DIR libraw.h + HINTS + ${PC_LIBRAW_INCLUDEDIR} + ${PC_LibRaw_INCLUDE_DIRS} + PATH_SUFFIXES libraw + ) + +FIND_LIBRARY(LibRaw_LIBRARIES NAMES raw + HINTS + ${PC_LIBRAW_LIBDIR} + ${PC_LIBRAW_LIBRARY_DIRS} + ) + +FIND_LIBRARY(LibRaw_r_LIBRARIES NAMES raw_r + HINTS + ${PC_LIBRAW_R_LIBDIR} + ${PC_LIBRAW_R_LIBRARY_DIRS} + ) + +IF(LibRaw_INCLUDE_DIR) + FILE(READ ${LibRaw_INCLUDE_DIR}/libraw_version.h _libraw_version_content) + + STRING(REGEX MATCH "#define LIBRAW_MAJOR_VERSION[ \t]*([0-9]*)\n" _version_major_match ${_libraw_version_content}) + SET(_libraw_version_major "${CMAKE_MATCH_1}") + + STRING(REGEX MATCH "#define LIBRAW_MINOR_VERSION[ \t]*([0-9]*)\n" _version_minor_match ${_libraw_version_content}) + SET(_libraw_version_minor "${CMAKE_MATCH_1}") + + STRING(REGEX MATCH "#define LIBRAW_PATCH_VERSION[ \t]*([0-9]*)\n" _version_patch_match ${_libraw_version_content}) + SET(_libraw_version_patch "${CMAKE_MATCH_1}") + + IF(_version_major_match AND _version_minor_match AND _version_patch_match) + SET(LibRaw_VERSION_STRING "${_libraw_version_major}.${_libraw_version_minor}.${_libraw_version_patch}") + ELSE() + IF(NOT LibRaw_FIND_QUIETLY) + MESSAGE(STATUS "Failed to get version information from ${LibRaw_INCLUDE_DIR}/libraw_version.h") + ENDIF() + ENDIF() +ENDIF() + +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibRaw + REQUIRED_VARS LibRaw_LIBRARIES LibRaw_INCLUDE_DIR + VERSION_VAR LibRaw_VERSION_STRING + ) + +MARK_AS_ADVANCED(LibRaw_VERSION_STRING + LibRaw_INCLUDE_DIR + LibRaw_LIBRARIES + LibRaw_r_LIBRARIES + LibRaw_DEFINITIONS + LibRaw_r_DEFINITIONS + ) diff --git a/cmake_modules/FindMALLINCAM.cmake b/cmake_modules/FindMALLINCAM.cmake new file mode 100644 index 0000000..ce296b0 --- /dev/null +++ b/cmake_modules/FindMALLINCAM.cmake @@ -0,0 +1,49 @@ +# - Try to find MALLINCAM Camera Library +# Once done this will define +# +# MALLINCAM_FOUND - system has Levenhuk +# MALLINCAM_INCLUDE_DIR - the Levenhuk include directory +# MALLINCAM_LIBRARIES - Link these to use Levenhuk + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (MALLINCAM_INCLUDE_DIR AND MALLINCAM_LIBRARIES) + + # in cache already + set(MALLINCAM_FOUND TRUE) + message(STATUS "Found libnncam: ${MALLINCAM_LIBRARIES}") + +else (MALLINCAM_INCLUDE_DIR AND MALLINCAM_LIBRARIES) + + find_path(MALLINCAM_INCLUDE_DIR mallincam.h + PATH_SUFFIXES libmallincam + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(MALLINCAM_LIBRARIES NAMES mallincam + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if(MALLINCAM_INCLUDE_DIR AND MALLINCAM_LIBRARIES) + set(MALLINCAM_FOUND TRUE) + else (MALLINCAM_INCLUDE_DIR AND MALLINCAM_LIBRARIES) + set(MALLINCAM_FOUND FALSE) + endif(MALLINCAM_INCLUDE_DIR AND MALLINCAM_LIBRARIES) + + if (MALLINCAM_FOUND) + if (NOT MALLINCAM_FIND_QUIETLY) + message(STATUS "Found MALLINCAM: ${MALLINCAM_LIBRARIES}") + endif (NOT MALLINCAM_FIND_QUIETLY) + else (MALLINCAM_FOUND) + if (MALLINCAM_FIND_REQUIRED) + message(FATAL_ERROR "MALLINCAM not found. Please install MALLINCAM Library http://www.indilib.org") + endif (MALLINCAM_FIND_REQUIRED) + endif (MALLINCAM_FOUND) + + mark_as_advanced(MALLINCAM_INCLUDE_DIR MALLINCAM_LIBRARIES) + +endif (MALLINCAM_INCLUDE_DIR AND MALLINCAM_LIBRARIES) diff --git a/cmake_modules/FindMEADE.cmake b/cmake_modules/FindMEADE.cmake new file mode 100644 index 0000000..59427aa --- /dev/null +++ b/cmake_modules/FindMEADE.cmake @@ -0,0 +1,47 @@ +# - Try to find Meade DSI Library. +# Once done this will define +# +# MEADEDSI_FOUND - system has Meade DSI +# MEADEDSI_LIBRARIES - Link these to use Meade DSI + +# Copyright (c) 2006, Jasem Mutlaq <mutlaqja@ikarustech.com> +# Based on FindLibfacile by Carsten Niehaus, <cniehaus@gmx.de> +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (MEADEDSI_LIBRARIES) + + # in cache already + set(MEADEDSI_FOUND TRUE) + message(STATUS "Found MEADEDSI: ${MEADEDSI_LIBRARIES}") + +else (MEADEDSI_LIBRARIES) + + find_library(MEADEDSI_LIBRARIES NAMES dsi + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + set(CMAKE_REQUIRED_LIBRARIES ${MEADEDSI_LIBRARIES}) + + if(MEADEDSI_LIBRARIES) + set(MEADEDSI_FOUND TRUE) + else (MEADEDSI_LIBRARIES) + set(MEADEDSI_FOUND FALSE) + endif(MEADEDSI_LIBRARIES) + + if (MEADEDSI_FOUND) + if (NOT MEADEDSI_FIND_QUIETLY) + message(STATUS "Found Meade DSI: ${MEADEDSI_LIBRARIES}") + endif (NOT MEADEDSI_FIND_QUIETLY) + else (MEADEDSI_FOUND) + if (MEADEDSI_FIND_REQUIRED) + message(FATAL_ERROR "Meade DSI not found. Please install Meade DSI library. http://linuxdsi.sourceforge.net") + endif (MEADEDSI_FIND_REQUIRED) + endif (MEADEDSI_FOUND) + + mark_as_advanced(MEADEDSI_LIBRARIES) + +endif (MEADEDSI_LIBRARIES) diff --git a/cmake_modules/FindMICAM.cmake b/cmake_modules/FindMICAM.cmake new file mode 100644 index 0000000..b62561b --- /dev/null +++ b/cmake_modules/FindMICAM.cmake @@ -0,0 +1,49 @@ +# - Try to find Moravian Instruments Camera Library +# Once done this will define +# +# MICAM_FOUND - system has MI +# MICAM_INCLUDE_DIR - the MI include directory +# MICAM_LIBRARIES - Link these to use MI + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (MICAM_INCLUDE_DIR AND MICAM_LIBRARIES) + + # in cache already + set(MICAM_FOUND TRUE) + message(STATUS "Found libmicam: ${MICAM_LIBRARIES}") + +else (MICAM_INCLUDE_DIR AND MICAM_LIBRARIES) + + find_path(MICAM_INCLUDE_DIR gxccd.h + PATH_SUFFIXES libmicam + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(MICAM_LIBRARIES NAMES gxccd + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if(MICAM_INCLUDE_DIR AND MICAM_LIBRARIES) + set(MICAM_FOUND TRUE) + else (MICAM_INCLUDE_DIR AND MICAM_LIBRARIES) + set(MICAM_FOUND FALSE) + endif(MICAM_INCLUDE_DIR AND MICAM_LIBRARIES) + + if (MICAM_FOUND) + if (NOT MICAM_FIND_QUIETLY) + message(STATUS "Found MI Library: ${MICAM_LIBRARIES}") + endif (NOT MICAM_FIND_QUIETLY) + else (MICAM_FOUND) + if (MICAM_FIND_REQUIRED) + message(FATAL_ERROR "MI Library not found. Please install MI Library http://www.indilib.org") + endif (MICAM_FIND_REQUIRED) + endif (MICAM_FOUND) + + mark_as_advanced(MICAM_INCLUDE_DIR MICAM_LIBRARIES) + +endif (MICAM_INCLUDE_DIR AND MICAM_LIBRARIES) diff --git a/cmake_modules/FindMMAL.cmake b/cmake_modules/FindMMAL.cmake new file mode 100644 index 0000000..a537c51 --- /dev/null +++ b/cmake_modules/FindMMAL.cmake @@ -0,0 +1,45 @@ +# Licensed 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. +# +# This module can find the MMAL camera libraries. +# +cmake_minimum_required(VERSION 3.0.0) + +set (MMAL_LIBS mmal_core mmal_util mmal_vc_client) +set (EGL_LIBS brcmGLESv2 brcmEGL) + +foreach(lib ${MMAL_LIBS} ${EGL_LIBS} vcos bcm_host m dl) + find_library(${lib}_LIBRARY + NAMES ${lib} + HINTS ${MMAL_DIR}/lib /opt/vc/lib + ) + if (DEFINED ${lib}_LIBRARY) + set(MMAL_LIBRARIES ${MMAL_LIBRARIES} ${${lib}_LIBRARY}) + else() + message(FATAL_ERROR "Failed to find ${${lib}_LIBRARY} library") + endif() +endforeach(lib) + +find_path(BCM_INCLUDE_DIR NAMES bcm_host.h + HINTS "/opt/vc/include" +) + +find_path(MMAL_BASE_INCLUDE_DIR NAMES mmal.h + HINTS "/opt/vc/include/interface/mmal" +) + +find_path(MMAL_UTIL_INCLUDE_DIR NAMES mmal_util.h + HINTS "/opt/vc/include/interface/mmal/util" +) + +if (MMAL_BASE_INCLUDE_DIR AND BCM_INCLUDE_DIR AND MMAL_UTIL_INCLUDE_DIR) + set(MMAL_INCLUDE_DIR ${MMAL_BASE_INCLUDE_DIR} ${BCM_INCLUDE_DIR} ${MMAL_UTIL_INCLUDE_DIR}) + set(MMAL_FOUND TRUE) +endif() diff --git a/cmake_modules/FindMODBUS.cmake b/cmake_modules/FindMODBUS.cmake new file mode 100644 index 0000000..42e8c47 --- /dev/null +++ b/cmake_modules/FindMODBUS.cmake @@ -0,0 +1,56 @@ +# - Try to find libmodbus +# Once done this will define +# +# MODBUS_FOUND - system has MODBUS +# MODBUS_INCLUDE_DIR - the MODBUS include directory +# MODBUS_LIBRARIES - Link these to use MODBUS + +# Copyright (c) 2006, Jasem Mutlaq <mutlaqja@ikarustech.com> +# Based on FindLibfacile by Carsten Niehaus, <cniehaus@gmx.de> +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (MODBUS_INCLUDE_DIR AND MODBUS_LIBRARIES) + + # in cache already + set(MODBUS_FOUND TRUE) + message(STATUS "Found libmodbus: ${MODBUS_LIBRARIES}") + +else (MODBUS_INCLUDE_DIR AND MODBUS_LIBRARIES) + + find_path(MODBUS_INCLUDE_DIR modbus.h + PATH_SUFFIXES modbus + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(MODBUS_LIBRARIES NAMES modbus + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + set(CMAKE_REQUIRED_INCLUDES ${MODBUS_INCLUDE_DIR}) + set(CMAKE_REQUIRED_LIBRARIES ${MODBUS_LIBRARIES}) + + if(MODBUS_INCLUDE_DIR AND MODBUS_LIBRARIES) + set(MODBUS_FOUND TRUE) + else (MODBUS_INCLUDE_DIR AND MODBUS_LIBRARIES) + set(MODBUS_FOUND FALSE) + endif(MODBUS_INCLUDE_DIR AND MODBUS_LIBRARIES) + + if (MODBUS_FOUND) + if (NOT MODBUS_FIND_QUIETLY) + message(STATUS "Found libmodbus: ${MODBUS_LIBRARIES}") + endif (NOT MODBUS_FIND_QUIETLY) + else (MODBUS_FOUND) + if (MODBUS_FIND_REQUIRED) + message(FATAL_ERROR "libmodbus not found. Please install libmodbus-devel. https://launchpad.net/libmodbus/") + endif (MODBUS_FIND_REQUIRED) + endif (MODBUS_FOUND) + + mark_as_advanced(MODBUS_INCLUDE_DIR MODBUS_LIBRARIES) + +endif (MODBUS_INCLUDE_DIR AND MODBUS_LIBRARIES) + diff --git a/cmake_modules/FindNNCAM.cmake b/cmake_modules/FindNNCAM.cmake new file mode 100644 index 0000000..a9eabe1 --- /dev/null +++ b/cmake_modules/FindNNCAM.cmake @@ -0,0 +1,49 @@ +# - Try to find NNCAM Camera Library +# Once done this will define +# +# NNCAM_FOUND - system has Levenhuk +# NNCAM_INCLUDE_DIR - the Levenhuk include directory +# NNCAM_LIBRARIES - Link these to use Levenhuk + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (NNCAM_INCLUDE_DIR AND NNCAM_LIBRARIES) + + # in cache already + set(NNCAM_FOUND TRUE) + message(STATUS "Found libnncam: ${NNCAM_LIBRARIES}") + +else (NNCAM_INCLUDE_DIR AND NNCAM_LIBRARIES) + + find_path(NNCAM_INCLUDE_DIR nncam.h + PATH_SUFFIXES libnncam + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(NNCAM_LIBRARIES NAMES nncam + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if(NNCAM_INCLUDE_DIR AND NNCAM_LIBRARIES) + set(NNCAM_FOUND TRUE) + else (NNCAM_INCLUDE_DIR AND NNCAM_LIBRARIES) + set(NNCAM_FOUND FALSE) + endif(NNCAM_INCLUDE_DIR AND NNCAM_LIBRARIES) + + if (NNCAM_FOUND) + if (NOT NNCAM_FIND_QUIETLY) + message(STATUS "Found NNCAM: ${NNCAM_LIBRARIES}") + endif (NOT NNCAM_FIND_QUIETLY) + else (NNCAM_FOUND) + if (NNCAM_FIND_REQUIRED) + message(FATAL_ERROR "NNCAM not found. Please install NNCAM Library http://www.indilib.org") + endif (NNCAM_FIND_REQUIRED) + endif (NNCAM_FOUND) + + mark_as_advanced(NNCAM_INCLUDE_DIR NNCAM_LIBRARIES) + +endif (NNCAM_INCLUDE_DIR AND NNCAM_LIBRARIES) diff --git a/cmake_modules/FindNUTClient.cmake b/cmake_modules/FindNUTClient.cmake new file mode 100644 index 0000000..bdac85d --- /dev/null +++ b/cmake_modules/FindNUTClient.cmake @@ -0,0 +1,50 @@ +# - Try to find nutclient library (version 2) and include files +# Once done this will define +# +# NUTCLIENT_FOUND - system has NUTCLIENT +# NUTCLIENT_INCLUDE_DIR - the NUTCLIENT include directory +# NUTCLIENT_LIBRARIES - Link these to use NUTCLIENT + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (NUTCLIENT_INCLUDE_DIR AND NUTCLIENT_LIBRARIES) + + # in cache already + set(NUTCLIENT_FOUND TRUE) + message(STATUS "Found libnutclient: ${NUTCLIENT_LIBRARIES}") + +else (NUTCLIENT_INCLUDE_DIR AND NUTCLIENT_LIBRARIES) + + find_path(NUTCLIENT_INCLUDE_DIR nutclient.h + PATH_SUFFIXES nutclient + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(NUTCLIENT_LIBRARIES NAMES nutclient + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if(NUTCLIENT_INCLUDE_DIR AND NUTCLIENT_LIBRARIES) + set(NUTCLIENT_FOUND TRUE) + else (NUTCLIENT_INCLUDE_DIR AND NUTCLIENT_LIBRARIES) + set(NUTCLIENT_FOUND FALSE) + endif(NUTCLIENT_INCLUDE_DIR AND NUTCLIENT_LIBRARIES) + + + if (NUTCLIENT_FOUND) + if (NOT NUTCLIENT_FIND_QUIETLY) + message(STATUS "Found NUTCLIENT: ${NUTCLIENT_LIBRARIES}") + endif (NOT NUTCLIENT_FIND_QUIETLY) + else (NUTCLIENT_FOUND) + if (NUTCLIENT_FIND_REQUIRED) + message(FATAL_ERROR "NUTCLIENT not found. Please install libnutclient development package.") + endif (NUTCLIENT_FIND_REQUIRED) + endif (NUTCLIENT_FOUND) + + mark_as_advanced(NUTCLIENT_INCLUDE_DIR NUTCLIENT_LIBRARIES) + +endif (NUTCLIENT_INCLUDE_DIR AND NUTCLIENT_LIBRARIES) diff --git a/cmake_modules/FindNova.cmake b/cmake_modules/FindNova.cmake new file mode 100644 index 0000000..2d6761c --- /dev/null +++ b/cmake_modules/FindNova.cmake @@ -0,0 +1,55 @@ +# - Try to find NOVA +# Once done this will define +# +# NOVA_FOUND - system has NOVA +# NOVA_INCLUDE_DIR - the NOVA include directory +# NOVA_LIBRARIES - Link these to use NOVA + +# Copyright (c) 2006, Jasem Mutlaq <mutlaqja@ikarustech.com> +# Based on FindLibfacile by Carsten Niehaus, <cniehaus@gmx.de> +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (NOVA_INCLUDE_DIR AND NOVA_LIBRARIES) + + # in cache already + set(NOVA_FOUND TRUE) + message(STATUS "Found libnova: ${NOVA_LIBRARIES}") + +else (NOVA_INCLUDE_DIR AND NOVA_LIBRARIES) + + find_path(NOVA_INCLUDE_DIR libnova.h + PATH_SUFFIXES libnova + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(NOVA_LIBRARIES NAMES nova libnova libnovad + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + set(CMAKE_REQUIRED_INCLUDES ${NOVA_INCLUDE_DIR}) + set(CMAKE_REQUIRED_LIBRARIES ${NOVA_LIBRARIES}) + + if(NOVA_INCLUDE_DIR AND NOVA_LIBRARIES) + set(NOVA_FOUND TRUE) + else (NOVA_INCLUDE_DIR AND NOVA_LIBRARIES) + set(NOVA_FOUND FALSE) + endif(NOVA_INCLUDE_DIR AND NOVA_LIBRARIES) + + if (NOVA_FOUND) + if (NOT Nova_FIND_QUIETLY) + message(STATUS "Found NOVA: ${NOVA_LIBRARIES}") + endif (NOT Nova_FIND_QUIETLY) + else (NOVA_FOUND) + if (Nova_FIND_REQUIRED) + message(FATAL_ERROR "libnova not found. Please install libnova development package.") + endif (Nova_FIND_REQUIRED) + endif (NOVA_FOUND) + + mark_as_advanced(NOVA_INCLUDE_DIR NOVA_LIBRARIES) + +endif (NOVA_INCLUDE_DIR AND NOVA_LIBRARIES) diff --git a/cmake_modules/FindOMEGONPROCAM.cmake b/cmake_modules/FindOMEGONPROCAM.cmake new file mode 100644 index 0000000..6e04b37 --- /dev/null +++ b/cmake_modules/FindOMEGONPROCAM.cmake @@ -0,0 +1,50 @@ +# - Try to find Omegon Pro Cam Camera Library +# Once done this will define +# +# OMEGONPROCAM_FOUND - system has Omegon Pro Cam +# OMEGONPROCAM_INCLUDE_DIR - the Omegon Pro Cam include directory +# OMEGONPROCAM_LIBRARIES - Link these to use Omegon Pro Cam + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (OMEGONPROCAM_INCLUDE_DIR AND OMEGONPROCAM_LIBRARIES) + + # in cache already + set(OMEGONPROCAM_FOUND TRUE) + message(STATUS "Found libomegonprocam: ${OMEGONPROCAM_LIBRARIES}") + +else (OMEGONPROCAM_INCLUDE_DIR AND OMEGONPROCAM_LIBRARIES) + + find_path(OMEGONPROCAM_INCLUDE_DIR omegonprocam.h + PATH_SUFFIXES libomegonprocam + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(OMEGONPROCAM_LIBRARIES NAMES omegonprocam + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if(OMEGONPROCAM_INCLUDE_DIR AND OMEGONPROCAM_LIBRARIES) + set(OMEGONPROCAM_FOUND TRUE) + else (OMEGONPROCAM_INCLUDE_DIR AND OMEGONPROCAM_LIBRARIES) + set(OMEGONPROCAM_FOUND FALSE) + endif(OMEGONPROCAM_INCLUDE_DIR AND OMEGONPROCAM_LIBRARIES) + + + if (OMEGONPROCAM_FOUND) + if (NOT OMEGONPROCAM_FIND_QUIETLY) + message(STATUS "Found OmegonProCam: ${OMEGONPROCAM_LIBRARIES}") + endif (NOT OMEGONPROCAM_FIND_QUIETLY) + else (OMEGONPROCAM_FOUND) + if (OMEGONPROCAM_FIND_REQUIRED) + message(FATAL_ERROR "OmegonProCam not found. Please install OmegonProCam Library http://www.indilib.org") + endif (OMEGONPROCAM_FIND_REQUIRED) + endif (OMEGONPROCAM_FOUND) + + mark_as_advanced(OMEGONPROCAM_INCLUDE_DIR OMEGONPROCAM_LIBRARIES) + +endif (OMEGONPROCAM_INCLUDE_DIR AND OMEGONPROCAM_LIBRARIES) diff --git a/cmake_modules/FindOggTheora.cmake b/cmake_modules/FindOggTheora.cmake new file mode 100644 index 0000000..a536fc1 --- /dev/null +++ b/cmake_modules/FindOggTheora.cmake @@ -0,0 +1,47 @@ +# +# Find the native Ogg/Theora includes and libraries +# +# This module defines +# OGGTHEORA_INCLUDE_DIR, where to find ogg/ogg.h and theora/theora.h +# OGGTHEORA_LIBRARIES, the libraries to link against to use Ogg/Theora. +# OGGTHEORA_FOUND, If false, do not try to use Ogg/Theora. + +FIND_PATH(OGGTHEORA_ogg_INCLUDE_DIR ogg/ogg.h) + +FIND_PATH(OGGTHEORA_theora_INCLUDE_DIR theora/theora.h) + +FIND_LIBRARY(OGGTHEORA_ogg_LIBRARY ogg) + +FIND_LIBRARY(OGGTHEORA_theoraenc_LIBRARY theoraenc) + +FIND_LIBRARY(OGGTHEORA_theoradec_LIBRARY theoradec) + +SET(OGGTHEORA_INCLUDE_DIRS + ${OGGTHEORA_ogg_INCLUDE_DIR} + ${OGGTHEORA_theora_INCLUDE_DIR} + ) +#HACK multiple directories +SET(OGGTHEORA_INCLUDE_DIR ${OGGTHEORA_INCLUDE_DIRS}) + +SET(OGGTHEORA_LIBRARIES + ${OGGTHEORA_theoraenc_LIBRARY} + ${OGGTHEORA_theoradec_LIBRARY} + ${OGGTHEORA_ogg_LIBRARY} + ) +#HACK multiple libraries +SET(OGGTHEORA_LIBRARY ${OGGTHEORA_LIBRARIES}) + +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(OGGTHEORA + "Could NOT find the ogg and theora libraries" + OGGTHEORA_ogg_LIBRARY + OGGTHEORA_theoraenc_LIBRARY + OGGTHEORA_theoradec_LIBRARY + OGGTHEORA_ogg_INCLUDE_DIR + OGGTHEORA_theora_INCLUDE_DIR + ) + +MARK_AS_ADVANCED(OGGTHEORA_ogg_INCLUDE_DIR OGGTHEORA_theora_INCLUDE_DIR + OGGTHEORA_ogg_LIBRARY OGGTHEORA_theoraenc_LIBRARY + OGGTHEORA_theoradec_LIBRARY + ) diff --git a/cmake_modules/FindOpenAL.cmake b/cmake_modules/FindOpenAL.cmake new file mode 100644 index 0000000..8d2933c --- /dev/null +++ b/cmake_modules/FindOpenAL.cmake @@ -0,0 +1,100 @@ +# Locate OpenAL +# This module defines +# OPENAL_LIBRARY +# OPENAL_FOUND, if false, do not try to link to OpenAL +# OPENAL_INCLUDE_DIR, where to find the headers +# +# $OPENALDIR is an environment variable that would +# correspond to the ./configure --prefix=$OPENALDIR +# used in building OpenAL. +# +# Created by Eric Wing. This was influenced by the FindSDL.cmake module. + +# This makes the presumption that you are include al.h like +# #include "al.h" +# and not +# #include <AL/al.h> +# The reason for this is that the latter is not entirely portable. +# Windows/Creative Labs does not by default put their headers in AL/ and +# OS X uses the convention <OpenAL/al.h>. +# +# For Windows, Creative Labs seems to have added a registry key for their +# OpenAL 1.1 installer. I have added that key to the list of search paths, +# however, the key looks like it could be a little fragile depending on +# if they decide to change the 1.00.0000 number for bug fix releases. +# Also, they seem to have laid down groundwork for multiple library platforms +# which puts the library in an extra subdirectory. Currently there is only +# Win32 and I have hardcoded that here. This may need to be adjusted as +# platforms are introduced. +# The OpenAL 1.0 installer doesn't seem to have a useful key I can use. +# I do not know if the Nvidia OpenAL SDK has a registry key. +# +# For OS X, remember that OpenAL was added by Apple in 10.4 (Tiger). +# To support the framework, I originally wrote special framework detection +# code in this module which I have now removed with CMake's introduction +# of native support for frameworks. +# In addition, OpenAL is open source, and it is possible to compile on Panther. +# Furthermore, due to bugs in the initial OpenAL release, and the +# transition to OpenAL 1.1, it is common to need to override the built-in +# framework. +# Per my request, CMake should search for frameworks first in +# the following order: +# ~/Library/Frameworks/OpenAL.framework/Headers +# /Library/Frameworks/OpenAL.framework/Headers +# /System/Library/Frameworks/OpenAL.framework/Headers +# +# On OS X, this will prefer the Framework version (if found) over others. +# People will have to manually change the cache values of +# OPENAL_LIBRARY to override this selection or set the CMake environment +# CMAKE_INCLUDE_PATH to modify the search paths. + +FIND_PATH(OPENAL_INCLUDE_DIR al.h + PATHS + $ENV{OPENALDIR} + NO_DEFAULT_PATH + PATH_SUFFIXES include/AL include/OpenAL include +) + +FIND_PATH(OPENAL_INCLUDE_DIR al.h + PATHS + ~/Library/Frameworks + /Library/Frameworks + /usr/local + /usr + /sw # Fink + /opt/local # DarwinPorts + /opt/csw # Blastwave + /opt + [HKEY_LOCAL_MACHINE\\SOFTWARE\\Creative\ Labs\\OpenAL\ 1.1\ Software\ Development\ Kit\\1.00.0000;InstallDir] + PATH_SUFFIXES include/AL include/OpenAL include +) + +FIND_LIBRARY(OPENAL_LIBRARY + NAMES OpenAL al openal OpenAL32 + PATHS + $ENV{OPENALDIR} + NO_DEFAULT_PATH + PATH_SUFFIXES lib64 lib libs64 libs libs/Win32 libs/Win64 +) + +FIND_LIBRARY(OPENAL_LIBRARY + NAMES OpenAL al openal OpenAL32 + PATHS + ~/Library/Frameworks + /Library/Frameworks + /usr/local + /usr + /sw + /opt/local + /opt/csw + /opt + [HKEY_LOCAL_MACHINE\\SOFTWARE\\Creative\ Labs\\OpenAL\ 1.1\ Software\ Development\ Kit\\1.00.0000;InstallDir] + PATH_SUFFIXES lib64 lib libs64 libs libs/Win32 libs/Win64 +) + + +SET(OPENAL_FOUND "NO") +IF(OPENAL_LIBRARY AND OPENAL_INCLUDE_DIR) + SET(OPENAL_FOUND "YES") +ENDIF(OPENAL_LIBRARY AND OPENAL_INCLUDE_DIR) + diff --git a/cmake_modules/FindPENTAX.cmake b/cmake_modules/FindPENTAX.cmake new file mode 100644 index 0000000..5209c8a --- /dev/null +++ b/cmake_modules/FindPENTAX.cmake @@ -0,0 +1,86 @@ +# - Try to find PENTAX Universal Libraries +# Once done this will define +# +# PENTAX_FOUND - system has PENTAX +# PENTAX_INCLUDE_DIR - the PENTAX include directory +# PENTAX_LIBRARIES - Link these to use PENTAX + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (PENTAX_INCLUDE_DIR AND PENTAX_LIBRARIES) + + # in cache already + set(PENTAX_FOUND TRUE) + message(STATUS "Found PENTAX libraries: ${PENTAX_LIBRARIES}") + +else (PENTAX_INCLUDE_DIR AND PENTAX_LIBRARIES) + + find_path(PKTRIGGERCORD_INCLUDE_DIR libpktriggercord.h + PATH_SUFFIXES libpktriggercord + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(PKTRIGGERCORD_LIBRARIES NAMES pktriggercord + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + PATH_SUFFIXES indipentax + ) + +#if not armv8, then look for ricoh library; otherwise only use pktriggercord library + if(NOT (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^aarch64")) + find_path(RICOH_INCLUDE_DIR ricoh_camera_sdk.hpp + PATH_SUFFIXES libpentax libricohcamerasdk + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + find_library(RICOH_LIBRARIES NAMES RicohCameraSDKCpp + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + find_library(RICOHMTP_LIBRARIES NAMES libmtpricoh.so.9.3.0 + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if (RICOH_INCLUDE_DIR AND PKTRIGGERCORD_INCLUDE_DIR) + set(PENTAX_INCLUDE_DIR ${RICOH_INCLUDE_DIR} ${PKTRIGGERCORD_INCLUDE_DIR}) + endif (RICOH_INCLUDE_DIR AND PKTRIGGERCORD_INCLUDE_DIR) + if (RICOH_LIBRARIES AND RICOHMTP_LIBRARIES AND PKTRIGGERCORD_LIBRARIES) + set(PENTAX_LIBRARIES ${RICOH_LIBRARIES} ${RICOHMTP_LIBRARIES} ${PKTRIGGERCORD_LIBRARIES}) + endif (RICOH_LIBRARIES AND RICOHMTP_LIBRARIES AND PKTRIGGERCORD_LIBRARIES) + + else() + if (PKTRIGGERCORD_INCLUDE_DIR) + set(PENTAX_INCLUDE_DIR ${PKTRIGGERCORD_INCLUDE_DIR}) + endif (PKTRIGGERCORD_INCLUDE_DIR) + if (PKTRIGGERCORD_LIBRARIES) + set(PENTAX_LIBRARIES ${PKTRIGGERCORD_LIBRARIES}) + endif (PKTRIGGERCORD_LIBRARIES) + endif() + + + if(PENTAX_INCLUDE_DIR AND PENTAX_LIBRARIES) + set(PENTAX_FOUND TRUE) + else (PENTAX_INCLUDE_DIR AND PENTAX_LIBRARIES) + set(PENTAX_FOUND FALSE) + endif(PENTAX_INCLUDE_DIR AND PENTAX_LIBRARIES) + + + if (PENTAX_FOUND) + if (NOT PENTAX_FIND_QUIETLY) + message(STATUS "Found PENTAX libraries: ${PENTAX_LIBRARIES}") + endif (NOT PENTAX_FIND_QUIETLY) + else (PENTAX_FOUND) + if (PENTAX_FIND_REQUIRED) + message(FATAL_ERROR "One or both of libricohcamersdk and libpktriggercord are not found. Please install them. See http://www.indilib.org.") + endif (PENTAX_FIND_REQUIRED) + endif (PENTAX_FOUND) + + mark_as_advanced(PENTAX_INCLUDE_DIR PENTAX_LIBRARIES) + +endif (PENTAX_INCLUDE_DIR AND PENTAX_LIBRARIES) diff --git a/cmake_modules/FindPLAYERONE.cmake b/cmake_modules/FindPLAYERONE.cmake new file mode 100644 index 0000000..9171a51 --- /dev/null +++ b/cmake_modules/FindPLAYERONE.cmake @@ -0,0 +1,56 @@ +# - Try to find PlayerOne Library +# Once done this will define +# +# PLAYERONE_FOUND - system has PLAYERONE +# PLAYERONE_INCLUDE_DIR - the PLAYERONE include directory +# PLAYERONE_LIBRARIES - Link these to use ASI + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (PLAYERONE_INCLUDE_DIR AND PLAYERONE_LIBRARIES) + + # in cache already + set(PLAYERONE_FOUND TRUE) + message(STATUS "Found libplayerone: ${PLAYERONE_LIBRARIES}") + +else (PLAYERONE_INCLUDE_DIR AND PLAYERONE_LIBRARIES) + + find_path(PLAYERONE_INCLUDE_DIR PlayerOneCamera.h + PATH_SUFFIXES libplayerone + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(PLAYERONECAM_LIBRARIES NAMES PlayerOneCamera + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + + if (PLAYERONECAM_LIBRARIES) + set(PLAYERONE_LIBRARIES ${PLAYERONECAM_LIBRARIES}) + endif (PLAYERONECAM_LIBRARIES) + + + if(PLAYERONE_INCLUDE_DIR AND PLAYERONE_LIBRARIES) + set(PLAYERONE_FOUND TRUE) + else (PLAYERONE_INCLUDE_DIR AND PLAYERONE_LIBRARIES) + set(PLAYERONE_FOUND FALSE) + endif(PLAYERONE_INCLUDE_DIR AND PLAYERONE_LIBRARIES) + + + if (PLAYERONE_FOUND) + if (NOT PLAYERONE_FIND_QUIETLY) + message(STATUS "Found PLAYERONE: ${PLAYERONE_LIBRARIES}") + endif (NOT PLAYERONE_FIND_QUIETLY) + else (PLAYERONE_FOUND) + if (PLAYERONE_FIND_REQUIRED) + message(FATAL_ERROR "PLAYERONE not found. Please install libPlayerOneCamera.3 http://www.indilib.org") + endif (PLAYERONE_FIND_REQUIRED) + endif (PLAYERONE_FOUND) + + mark_as_advanced(PLAYERONE_INCLUDE_DIR PLAYERONE_LIBRARIES) + +endif (PLAYERONE_INCLUDE_DIR AND PLAYERONE_LIBRARIES) diff --git a/cmake_modules/FindPackageHandleStandardArgs.cmake b/cmake_modules/FindPackageHandleStandardArgs.cmake new file mode 100644 index 0000000..fe2dbea --- /dev/null +++ b/cmake_modules/FindPackageHandleStandardArgs.cmake @@ -0,0 +1,396 @@ +#[=======================================================================[.rst: +FindPackageHandleStandardArgs +----------------------------- + +This module provides a function intended to be used in :ref:`Find Modules` +implementing :command:`find_package(<PackageName>)` calls. It handles the +``REQUIRED``, ``QUIET`` and version-related arguments of ``find_package``. +It also sets the ``<PackageName>_FOUND`` variable. The package is +considered found if all variables listed contain valid results, e.g. +valid filepaths. + +.. command:: find_package_handle_standard_args + + There are two signatures:: + + find_package_handle_standard_args(<PackageName> + (DEFAULT_MSG|<custom-failure-message>) + <required-var>... + ) + + find_package_handle_standard_args(<PackageName> + [FOUND_VAR <result-var>] + [REQUIRED_VARS <required-var>...] + [VERSION_VAR <version-var>] + [HANDLE_COMPONENTS] + [CONFIG_MODE] + [FAIL_MESSAGE <custom-failure-message>] + ) + + The ``<PackageName>_FOUND`` variable will be set to ``TRUE`` if all + the variables ``<required-var>...`` are valid and any optional + constraints are satisfied, and ``FALSE`` otherwise. A success or + failure message may be displayed based on the results and on + whether the ``REQUIRED`` and/or ``QUIET`` option was given to + the :command:`find_package` call. + + The options are: + + ``(DEFAULT_MSG|<custom-failure-message>)`` + In the simple signature this specifies the failure message. + Use ``DEFAULT_MSG`` to ask for a default message to be computed + (recommended). Not valid in the full signature. + + ``FOUND_VAR <result-var>`` + Obsolete. Specifies either ``<PackageName>_FOUND`` or + ``<PACKAGENAME>_FOUND`` as the result variable. This exists only + for compatibility with older versions of CMake and is now ignored. + Result variables of both names are always set for compatibility. + + ``REQUIRED_VARS <required-var>...`` + Specify the variables which are required for this package. + These may be named in the generated failure message asking the + user to set the missing variable values. Therefore these should + typically be cache entries such as ``FOO_LIBRARY`` and not output + variables like ``FOO_LIBRARIES``. + + ``VERSION_VAR <version-var>`` + Specify the name of a variable that holds the version of the package + that has been found. This version will be checked against the + (potentially) specified required version given to the + :command:`find_package` call, including its ``EXACT`` option. + The default messages include information about the required + version and the version which has been actually found, both + if the version is ok or not. + + ``HANDLE_COMPONENTS`` + Enable handling of package components. In this case, the command + will report which components have been found and which are missing, + and the ``<PackageName>_FOUND`` variable will be set to ``FALSE`` + if any of the required components (i.e. not the ones listed after + the ``OPTIONAL_COMPONENTS`` option of :command:`find_package`) are + missing. + + ``CONFIG_MODE`` + Specify that the calling find module is a wrapper around a + call to ``find_package(<PackageName> NO_MODULE)``. This implies + a ``VERSION_VAR`` value of ``<PackageName>_VERSION``. The command + will automatically check whether the package configuration file + was found. + + ``FAIL_MESSAGE <custom-failure-message>`` + Specify a custom failure message instead of using the default + generated message. Not recommended. + +Example for the simple signature: + +.. code-block:: cmake + + find_package_handle_standard_args(LibXml2 DEFAULT_MSG + LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR) + +The ``LibXml2`` package is considered to be found if both +``LIBXML2_LIBRARY`` and ``LIBXML2_INCLUDE_DIR`` are valid. +Then also ``LibXml2_FOUND`` is set to ``TRUE``. If it is not found +and ``REQUIRED`` was used, it fails with a +:command:`message(FATAL_ERROR)`, independent whether ``QUIET`` was +used or not. If it is found, success will be reported, including +the content of the first ``<required-var>``. On repeated CMake runs, +the same message will not be printed again. + +Example for the full signature: + +.. code-block:: cmake + + find_package_handle_standard_args(LibArchive + REQUIRED_VARS LibArchive_LIBRARY LibArchive_INCLUDE_DIR + VERSION_VAR LibArchive_VERSION) + +In this case, the ``LibArchive`` package is considered to be found if +both ``LibArchive_LIBRARY`` and ``LibArchive_INCLUDE_DIR`` are valid. +Also the version of ``LibArchive`` will be checked by using the version +contained in ``LibArchive_VERSION``. Since no ``FAIL_MESSAGE`` is given, +the default messages will be printed. + +Another example for the full signature: + +.. code-block:: cmake + + find_package(Automoc4 QUIET NO_MODULE HINTS /opt/automoc4) + find_package_handle_standard_args(Automoc4 CONFIG_MODE) + +In this case, a ``FindAutmoc4.cmake`` module wraps a call to +``find_package(Automoc4 NO_MODULE)`` and adds an additional search +directory for ``automoc4``. Then the call to +``find_package_handle_standard_args`` produces a proper success/failure +message. +#]=======================================================================] + +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) + +include(${CMAKE_CURRENT_LIST_DIR}/FindPackageMessage.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/CMakeParseArguments.cmake) + +# internal helper macro +macro(_FPHSA_FAILURE_MESSAGE _msg) + if (${_NAME}_FIND_REQUIRED) + message(FATAL_ERROR "${_msg}") + else () + if (NOT ${_NAME}_FIND_QUIETLY) + message(STATUS "${_msg}") + endif () + endif () +endmacro() + + +# internal helper macro to generate the failure message when used in CONFIG_MODE: +macro(_FPHSA_HANDLE_FAILURE_CONFIG_MODE) + # <name>_CONFIG is set, but FOUND is false, this means that some other of the REQUIRED_VARS was not found: + if(${_NAME}_CONFIG) + _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: missing: ${MISSING_VARS} (found ${${_NAME}_CONFIG} ${VERSION_MSG})") + else() + # If _CONSIDERED_CONFIGS is set, the config-file has been found, but no suitable version. + # List them all in the error message: + if(${_NAME}_CONSIDERED_CONFIGS) + set(configsText "") + list(LENGTH ${_NAME}_CONSIDERED_CONFIGS configsCount) + math(EXPR configsCount "${configsCount} - 1") + foreach(currentConfigIndex RANGE ${configsCount}) + list(GET ${_NAME}_CONSIDERED_CONFIGS ${currentConfigIndex} filename) + list(GET ${_NAME}_CONSIDERED_VERSIONS ${currentConfigIndex} version) + set(configsText "${configsText} ${filename} (version ${version})\n") + endforeach() + if (${_NAME}_NOT_FOUND_MESSAGE) + set(configsText "${configsText} Reason given by package: ${${_NAME}_NOT_FOUND_MESSAGE}\n") + endif() + _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} ${VERSION_MSG}, checked the following files:\n${configsText}") + + else() + # Simple case: No Config-file was found at all: + _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: found neither ${_NAME}Config.cmake nor ${_NAME_LOWER}-config.cmake ${VERSION_MSG}") + endif() + endif() +endmacro() + + +function(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG) + +# set up the arguments for CMAKE_PARSE_ARGUMENTS and check whether we are in +# new extended or in the "old" mode: + set(options CONFIG_MODE HANDLE_COMPONENTS) + set(oneValueArgs FAIL_MESSAGE VERSION_VAR FOUND_VAR) + set(multiValueArgs REQUIRED_VARS) + set(_KEYWORDS_FOR_EXTENDED_MODE ${options} ${oneValueArgs} ${multiValueArgs} ) + list(FIND _KEYWORDS_FOR_EXTENDED_MODE "${_FIRST_ARG}" INDEX) + + if(${INDEX} EQUAL -1) + set(FPHSA_FAIL_MESSAGE ${_FIRST_ARG}) + set(FPHSA_REQUIRED_VARS ${ARGN}) + set(FPHSA_VERSION_VAR) + else() + + CMAKE_PARSE_ARGUMENTS(FPHSA "${options}" "${oneValueArgs}" "${multiValueArgs}" ${_FIRST_ARG} ${ARGN}) + + if(FPHSA_UNPARSED_ARGUMENTS) + message(FATAL_ERROR "Unknown keywords given to FIND_PACKAGE_HANDLE_STANDARD_ARGS(): \"${FPHSA_UNPARSED_ARGUMENTS}\"") + endif() + + if(NOT FPHSA_FAIL_MESSAGE) + set(FPHSA_FAIL_MESSAGE "DEFAULT_MSG") + endif() + endif() + +# now that we collected all arguments, process them + + if("x${FPHSA_FAIL_MESSAGE}" STREQUAL "xDEFAULT_MSG") + set(FPHSA_FAIL_MESSAGE "Could NOT find ${_NAME}") + endif() + + # In config-mode, we rely on the variable <package>_CONFIG, which is set by find_package() + # when it successfully found the config-file, including version checking: + if(FPHSA_CONFIG_MODE) + list(INSERT FPHSA_REQUIRED_VARS 0 ${_NAME}_CONFIG) + list(REMOVE_DUPLICATES FPHSA_REQUIRED_VARS) + set(FPHSA_VERSION_VAR ${_NAME}_VERSION) + endif() + + if(NOT FPHSA_REQUIRED_VARS) + message(FATAL_ERROR "No REQUIRED_VARS specified for FIND_PACKAGE_HANDLE_STANDARD_ARGS()") + endif() + + list(GET FPHSA_REQUIRED_VARS 0 _FIRST_REQUIRED_VAR) + + string(TOUPPER ${_NAME} _NAME_UPPER) + string(TOLOWER ${_NAME} _NAME_LOWER) + + if(FPHSA_FOUND_VAR) + if(FPHSA_FOUND_VAR MATCHES "^${_NAME}_FOUND$" OR FPHSA_FOUND_VAR MATCHES "^${_NAME_UPPER}_FOUND$") + set(_FOUND_VAR ${FPHSA_FOUND_VAR}) + else() + message(FATAL_ERROR "The argument for FOUND_VAR is \"${FPHSA_FOUND_VAR}\", but only \"${_NAME}_FOUND\" and \"${_NAME_UPPER}_FOUND\" are valid names.") + endif() + else() + set(_FOUND_VAR ${_NAME_UPPER}_FOUND) + endif() + + # collect all variables which were not found, so they can be printed, so the + # user knows better what went wrong (#6375) + set(MISSING_VARS "") + set(DETAILS "") + # check if all passed variables are valid + set(FPHSA_FOUND_${_NAME} TRUE) + foreach(_CURRENT_VAR ${FPHSA_REQUIRED_VARS}) + if(NOT ${_CURRENT_VAR}) + set(FPHSA_FOUND_${_NAME} FALSE) + set(MISSING_VARS "${MISSING_VARS} ${_CURRENT_VAR}") + else() + set(DETAILS "${DETAILS}[${${_CURRENT_VAR}}]") + endif() + endforeach() + if(FPHSA_FOUND_${_NAME}) + set(${_NAME}_FOUND TRUE) + set(${_NAME_UPPER}_FOUND TRUE) + else() + set(${_NAME}_FOUND FALSE) + set(${_NAME_UPPER}_FOUND FALSE) + endif() + + # component handling + unset(FOUND_COMPONENTS_MSG) + unset(MISSING_COMPONENTS_MSG) + + if(FPHSA_HANDLE_COMPONENTS) + foreach(comp ${${_NAME}_FIND_COMPONENTS}) + if(${_NAME}_${comp}_FOUND) + + if(NOT DEFINED FOUND_COMPONENTS_MSG) + set(FOUND_COMPONENTS_MSG "found components: ") + endif() + set(FOUND_COMPONENTS_MSG "${FOUND_COMPONENTS_MSG} ${comp}") + + else() + + if(NOT DEFINED MISSING_COMPONENTS_MSG) + set(MISSING_COMPONENTS_MSG "missing components: ") + endif() + set(MISSING_COMPONENTS_MSG "${MISSING_COMPONENTS_MSG} ${comp}") + + if(${_NAME}_FIND_REQUIRED_${comp}) + set(${_NAME}_FOUND FALSE) + set(MISSING_VARS "${MISSING_VARS} ${comp}") + endif() + + endif() + endforeach() + set(COMPONENT_MSG "${FOUND_COMPONENTS_MSG} ${MISSING_COMPONENTS_MSG}") + set(DETAILS "${DETAILS}[c${COMPONENT_MSG}]") + endif() + + # version handling: + set(VERSION_MSG "") + set(VERSION_OK TRUE) + set(VERSION ${${FPHSA_VERSION_VAR}}) + + # check with DEFINED here as the requested or found version may be "0" + if (DEFINED ${_NAME}_FIND_VERSION) + if(DEFINED ${FPHSA_VERSION_VAR}) + + if(${_NAME}_FIND_VERSION_EXACT) # exact version required + # count the dots in the version string + string(REGEX REPLACE "[^.]" "" _VERSION_DOTS "${VERSION}") + # add one dot because there is one dot more than there are components + string(LENGTH "${_VERSION_DOTS}." _VERSION_DOTS) + if (_VERSION_DOTS GREATER ${_NAME}_FIND_VERSION_COUNT) + # Because of the C++ implementation of find_package() ${_NAME}_FIND_VERSION_COUNT + # is at most 4 here. Therefore a simple lookup table is used. + if (${_NAME}_FIND_VERSION_COUNT EQUAL 1) + set(_VERSION_REGEX "[^.]*") + elseif (${_NAME}_FIND_VERSION_COUNT EQUAL 2) + set(_VERSION_REGEX "[^.]*\\.[^.]*") + elseif (${_NAME}_FIND_VERSION_COUNT EQUAL 3) + set(_VERSION_REGEX "[^.]*\\.[^.]*\\.[^.]*") + else () + set(_VERSION_REGEX "[^.]*\\.[^.]*\\.[^.]*\\.[^.]*") + endif () + string(REGEX REPLACE "^(${_VERSION_REGEX})\\..*" "\\1" _VERSION_HEAD "${VERSION}") + unset(_VERSION_REGEX) + if (NOT ${_NAME}_FIND_VERSION VERSION_EQUAL _VERSION_HEAD) + set(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"") + set(VERSION_OK FALSE) + else () + set(VERSION_MSG "(found suitable exact version \"${VERSION}\")") + endif () + unset(_VERSION_HEAD) + else () + if (NOT ${_NAME}_FIND_VERSION VERSION_EQUAL VERSION) + set(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"") + set(VERSION_OK FALSE) + else () + set(VERSION_MSG "(found suitable exact version \"${VERSION}\")") + endif () + endif () + unset(_VERSION_DOTS) + + else() # minimum version specified: + if (${_NAME}_FIND_VERSION VERSION_GREATER VERSION) + set(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is at least \"${${_NAME}_FIND_VERSION}\"") + set(VERSION_OK FALSE) + else () + set(VERSION_MSG "(found suitable version \"${VERSION}\", minimum required is \"${${_NAME}_FIND_VERSION}\")") + endif () + endif() + + else() + + # if the package was not found, but a version was given, add that to the output: + if(${_NAME}_FIND_VERSION_EXACT) + set(VERSION_MSG "(Required is exact version \"${${_NAME}_FIND_VERSION}\")") + else() + set(VERSION_MSG "(Required is at least version \"${${_NAME}_FIND_VERSION}\")") + endif() + + endif() + else () + if(VERSION) + set(VERSION_MSG "(found version \"${VERSION}\")") + endif() + endif () + + if(VERSION_OK) + set(DETAILS "${DETAILS}[v${VERSION}(${${_NAME}_FIND_VERSION})]") + else() + set(${_NAME}_FOUND FALSE) + endif() + + + # print the result: + if (${_NAME}_FOUND) + FIND_PACKAGE_MESSAGE(${_NAME} "Found ${_NAME}: ${${_FIRST_REQUIRED_VAR}} ${VERSION_MSG} ${COMPONENT_MSG}" "${DETAILS}") + else () + + if(FPHSA_CONFIG_MODE) + _FPHSA_HANDLE_FAILURE_CONFIG_MODE() + else() + if(NOT VERSION_OK) + _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: ${VERSION_MSG} (found ${${_FIRST_REQUIRED_VAR}})") + else() + _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} (missing: ${MISSING_VARS}) ${VERSION_MSG}") + endif() + endif() + + endif () + + set(${_NAME}_FOUND ${${_NAME}_FOUND} PARENT_SCOPE) + set(${_NAME_UPPER}_FOUND ${${_NAME}_FOUND} PARENT_SCOPE) +endfunction() diff --git a/cmake_modules/FindPackageMessage.cmake b/cmake_modules/FindPackageMessage.cmake new file mode 100644 index 0000000..a0349d3 --- /dev/null +++ b/cmake_modules/FindPackageMessage.cmake @@ -0,0 +1,57 @@ +#.rst: +# FindPackageMessage +# ------------------ +# +# +# +# FIND_PACKAGE_MESSAGE(<name> "message for user" "find result details") +# +# This macro is intended to be used in FindXXX.cmake modules files. It +# will print a message once for each unique find result. This is useful +# for telling the user where a package was found. The first argument +# specifies the name (XXX) of the package. The second argument +# specifies the message to display. The third argument lists details +# about the find result so that if they change the message will be +# displayed again. The macro also obeys the QUIET argument to the +# find_package command. +# +# Example: +# +# :: +# +# if(X11_FOUND) +# FIND_PACKAGE_MESSAGE(X11 "Found X11: ${X11_X11_LIB}" +# "[${X11_X11_LIB}][${X11_INCLUDE_DIR}]") +# else() +# ... +# endif() + +#============================================================================= +# Copyright 2008-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) + +function(FIND_PACKAGE_MESSAGE pkg msg details) + # Avoid printing a message repeatedly for the same find result. + if(NOT ${pkg}_FIND_QUIETLY) + string(REPLACE "\n" "" details "${details}") + set(DETAILS_VAR FIND_PACKAGE_MESSAGE_DETAILS_${pkg}) + if(NOT "${details}" STREQUAL "${${DETAILS_VAR}}") + # The message has not yet been printed. + message(STATUS "${msg}") + + # Save the find details in the cache to avoid printing the same + # message again. + set("${DETAILS_VAR}" "${details}" + CACHE INTERNAL "Details about finding ${pkg}") + endif() + endif() +endfunction() diff --git a/cmake_modules/FindQHY.cmake b/cmake_modules/FindQHY.cmake new file mode 100644 index 0000000..9b41ac5 --- /dev/null +++ b/cmake_modules/FindQHY.cmake @@ -0,0 +1,50 @@ +# - Try to find QHY Library +# Once done this will define +# +# QHY_FOUND - system has QHY +# QHY_INCLUDE_DIR - the QHY include directory +# QHY_LIBRARIES - Link these to use QHY + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (QHY_INCLUDE_DIR AND QHY_LIBRARIES) + + # in cache already + set(QHY_FOUND TRUE) + message(STATUS "Found libqhyccd: ${QHY_LIBRARIES}") + +else (QHY_INCLUDE_DIR AND QHY_LIBRARIES) + + find_path(QHY_INCLUDE_DIR qhyccd.h + PATH_SUFFIXES libqhy + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(QHY_LIBRARIES NAMES qhyccd + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if(QHY_INCLUDE_DIR AND QHY_LIBRARIES) + set(QHY_FOUND TRUE) + else (QHY_INCLUDE_DIR AND QHY_LIBRARIES) + set(QHY_FOUND FALSE) + endif(QHY_INCLUDE_DIR AND QHY_LIBRARIES) + + + if (QHY_FOUND) + if (NOT QHY_FIND_QUIETLY) + message(STATUS "Found QHY: ${QHY_LIBRARIES}") + endif (NOT QHY_FIND_QUIETLY) + else (QHY_FOUND) + if (QHY_FIND_REQUIRED) + message(FATAL_ERROR "QHY not found. Please install libqhy http://www.indilib.org") + endif (QHY_FIND_REQUIRED) + endif (QHY_FOUND) + + mark_as_advanced(QHY_INCLUDE_DIR QHY_LIBRARIES) + +endif (QHY_INCLUDE_DIR AND QHY_LIBRARIES) diff --git a/cmake_modules/FindQSI.cmake b/cmake_modules/FindQSI.cmake new file mode 100644 index 0000000..afaac6d --- /dev/null +++ b/cmake_modules/FindQSI.cmake @@ -0,0 +1,50 @@ +# - Try to find Quantum Scientific Imaging Library +# Once done this will define +# +# QSI_FOUND - system has QSI +# QSI_INCLUDE_DIR - the QSI include directory +# QSI_LIBRARIES - Link these to use QSI + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (QSI_INCLUDE_DIR AND QSI_LIBRARIES) + + # in cache already + set(QSI_FOUND TRUE) + message(STATUS "Found libqsiapi: ${QSI_LIBRARIES}") + +else (QSI_INCLUDE_DIR AND QSI_LIBRARIES) + + find_path(QSI_INCLUDE_DIR qsiapi.h + PATH_SUFFIXES qsiapi + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(QSI_LIBRARIES NAMES qsiapi + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if(QSI_INCLUDE_DIR AND QSI_LIBRARIES) + set(QSI_FOUND TRUE) + else (QSI_INCLUDE_DIR AND QSI_LIBRARIES) + set(QSI_FOUND FALSE) + endif(QSI_INCLUDE_DIR AND QSI_LIBRARIES) + + + if (QSI_FOUND) + if (NOT QSI_FIND_QUIETLY) + message(STATUS "Found QSI: ${QSI_LIBRARIES}") + endif (NOT QSI_FIND_QUIETLY) + else (QSI_FOUND) + if (QSI_FIND_REQUIRED) + message(FATAL_ERROR "QSI not found. Please install libqsi http://www.indilib.org") + endif (QSI_FIND_REQUIRED) + endif (QSI_FOUND) + + mark_as_advanced(QSI_INCLUDE_DIR QSI_LIBRARIES) + +endif (QSI_INCLUDE_DIR AND QSI_LIBRARIES) diff --git a/cmake_modules/FindRT.cmake b/cmake_modules/FindRT.cmake new file mode 100644 index 0000000..db7c4de --- /dev/null +++ b/cmake_modules/FindRT.cmake @@ -0,0 +1,39 @@ +# FindRT.cmake - Try to find the RT library +# Once done this will define +# +# RT_FOUND - System has rt +# RT_INCLUDE_DIR - The rt include directory +# RT_LIBRARIES - The libraries needed to use rt +# RT_DEFINITIONS - Compiler switches required for using rt +# +# Also creates an import target called RT::RT + +find_path (RT_INCLUDE_DIR NAMES time.h + PATHS + /usr + /usr/local + /opt + PATH_SUFFIXES +) + +find_library(RT_LIBRARIES NAMES rt + PATHS + /usr + /usr/local + /opt +) + +include(FindPackageHandleStandardArgs) + +FIND_PACKAGE_HANDLE_STANDARD_ARGS(rt DEFAULT_MSG RT_LIBRARIES RT_INCLUDE_DIR) + +mark_as_advanced(RT_INCLUDE_DIR RT_LIBRARIES) + +if (NOT TARGET RT::RT) + add_library(RT::RT INTERFACE IMPORTED) + + set_target_properties(RT::RT PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${RT_INCLUDE_DIR} + INTERFACE_LINK_LIBRARIES ${RT_LIBRARIES} + ) +endif()
\ No newline at end of file diff --git a/cmake_modules/FindSBIG.cmake b/cmake_modules/FindSBIG.cmake new file mode 100644 index 0000000..db01e93 --- /dev/null +++ b/cmake_modules/FindSBIG.cmake @@ -0,0 +1,50 @@ +# - Try to find SBIG Universal Library +# Once done this will define +# +# SBIG_FOUND - system has SBIG +# SBIG_INCLUDE_DIR - the SBIG include directory +# SBIG_LIBRARIES - Link these to use SBIG + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (SBIG_INCLUDE_DIR AND SBIG_LIBRARIES) + + # in cache already + set(SBIG_FOUND TRUE) + message(STATUS "Found libsbig: ${SBIG_LIBRARIES}") + +else (SBIG_INCLUDE_DIR AND SBIG_LIBRARIES) + + find_path(SBIG_INCLUDE_DIR sbigudrv.h + PATH_SUFFIXES libsbig + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(SBIG_LIBRARIES NAMES sbig + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if(SBIG_INCLUDE_DIR AND SBIG_LIBRARIES) + set(SBIG_FOUND TRUE) + else (SBIG_INCLUDE_DIR AND SBIG_LIBRARIES) + set(SBIG_FOUND FALSE) + endif(SBIG_INCLUDE_DIR AND SBIG_LIBRARIES) + + + if (SBIG_FOUND) + if (NOT SBIG_FIND_QUIETLY) + message(STATUS "Found SBIG: ${SBIG_LIBRARIES}") + endif (NOT SBIG_FIND_QUIETLY) + else (SBIG_FOUND) + if (SBIG_FIND_REQUIRED) + message(FATAL_ERROR "SBIG not found. Please install SBIG Library http://www.indilib.org") + endif (SBIG_FIND_REQUIRED) + endif (SBIG_FOUND) + + mark_as_advanced(SBIG_INCLUDE_DIR SBIG_LIBRARIES) + +endif (SBIG_INCLUDE_DIR AND SBIG_LIBRARIES) diff --git a/cmake_modules/FindSTARSHOOTG.cmake b/cmake_modules/FindSTARSHOOTG.cmake new file mode 100644 index 0000000..3551be8 --- /dev/null +++ b/cmake_modules/FindSTARSHOOTG.cmake @@ -0,0 +1,49 @@ +# - Try to find Starshoot Camera Library +# Once done this will define +# +# STARSHOOTG_FOUND - system has Starshoot +# STARSHOOTG_INCLUDE_DIR - the Starshoot include directory +# STARSHOOTG_LIBRARIES - Link these to use Starshoot + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (STARSHOOTG_INCLUDE_DIR AND STARSHOOTG_LIBRARIES) + + # in cache already + set(STARSHOOTG_FOUND TRUE) + message(STATUS "Found libstarshootg: ${STARSHOOTG_LIBRARIES}") + +else (STARSHOOTG_INCLUDE_DIR AND STARSHOOTG_LIBRARIES) + + find_path(STARSHOOTG_INCLUDE_DIR starshootg.h + PATH_SUFFIXES libstarshootg + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(STARSHOOTG_LIBRARIES NAMES starshootg + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if(STARSHOOTG_INCLUDE_DIR AND STARSHOOTG_LIBRARIES) + set(STARSHOOTG_FOUND TRUE) + else (STARSHOOTG_INCLUDE_DIR AND STARSHOOTG_LIBRARIES) + set(STARSHOOTG_FOUND FALSE) + endif(STARSHOOTG_INCLUDE_DIR AND STARSHOOTG_LIBRARIES) + + if (STARSHOOTG_FOUND) + if (NOT STARSHOOTG_FIND_QUIETLY) + message(STATUS "Found StarshootG: ${STARSHOOTG_LIBRARIES}") + endif (NOT STARSHOOTG_FIND_QUIETLY) + else (STARSHOOTG_FOUND) + if (STARSHOOTG_FIND_REQUIRED) + message(FATAL_ERROR "StarshootG not found. Please install StarshootG Library http://www.indilib.org") + endif (STARSHOOTG_FIND_REQUIRED) + endif (STARSHOOTG_FOUND) + + mark_as_advanced(STARSHOOTG_INCLUDE_DIR STARSHOOTG_LIBRARIES) + +endif (STARSHOOTG_INCLUDE_DIR AND STARSHOOTG_LIBRARIES) diff --git a/cmake_modules/FindSV305.cmake b/cmake_modules/FindSV305.cmake new file mode 100644 index 0000000..e5ffcaa --- /dev/null +++ b/cmake_modules/FindSV305.cmake @@ -0,0 +1,52 @@ +# - Try to find SV305 Library +# Once done this will define +# +# SV305_FOUND - system has QHY +# SV305_INCLUDE_DIR - the QHY include directory +# SV305_LIBRARIES - Link these to use QHY + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (SV305_INCLUDE_DIR AND SV305_LIBRARIES) + + # in cache already + set(SV305_FOUND TRUE) + message(STATUS "Found libsv305: ${SV305_LIBRARIES}") + +else (SV305_INCLUDE_DIR AND SV305_LIBRARIES) + + # find headers + find_path(SV305_INCLUDE_DIR NAMES SVBCameraSDK.h + PATH_SUFFIXES libsv305 + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + # find libraries + find_library(SV305_LIBRARIES NAMES SVBCameraSDK + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if(SV305_INCLUDE_DIR AND SV305_LIBRARIES) + set(SV305_FOUND TRUE) + else (SV305_INCLUDE_DIR AND SV305_LIBRARIES) + set(SV305_FOUND FALSE) + endif(SV305_INCLUDE_DIR AND SV305_LIBRARIES) + + + if (SV305_FOUND) + if (NOT SV305_FIND_QUIETLY) + message(STATUS "Found SV305 libraries : ${SV305_LIBRARIES}") + endif (NOT SV305_FIND_QUIETLY) + else (SV305_FOUND) + if (SV305_FIND_REQUIRED) + message(FATAL_ERROR "SV305 libraries not found. Please install libsv305 http://www.indilib.org") + endif (SV305_FIND_REQUIRED) + endif (SV305_FOUND) + + mark_as_advanced(SV305_INCLUDE_DIR SV305_LIBRARIES) + +endif (SV305_INCLUDE_DIR AND SV305_LIBRARIES) diff --git a/cmake_modules/FindTIFFXX.cmake b/cmake_modules/FindTIFFXX.cmake new file mode 100644 index 0000000..e478c05 --- /dev/null +++ b/cmake_modules/FindTIFFXX.cmake @@ -0,0 +1,41 @@ +# - Try to find TIFFXX Library +# Once done this will define +# +# TIFXX_LIBRARY - Link these to use TIFFXX + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (TIFFXX_LIBRARY) + + # in cache already + set(TIFFXX_FOUND TRUE) + message(STATUS "Found libtiffxx: ${TIFFXX_LIBRARY}") + +else (TIFFXX_LIBRARY) + + find_library(TIFFXX_LIBRARY NAMES tiffxx + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if(TIFFXX_LIBRARY) + set(TIFFXX_FOUND TRUE) + else (TIFFXX_LIBRARY) + set(TIFFXX_FOUND FALSE) + endif(TIFFXX_LIBRARY) + + if (TIFFXX_FOUND) + if (NOT TIFFXX_FIND_QUIETLY) + message(STATUS "Found tiffxx: ${TIFFXX_LIBRARY}") + endif (NOT TIFFXX_FIND_QUIETLY) + else (TIFFXX_FOUND) + if (TIFFXX_FIND_REQUIRED) + message(FATAL_ERROR "tiffxx is not found. Please install it first.") + endif (TIFFXX_FIND_REQUIRED) + endif (TIFFXX_FOUND) + + mark_as_advanced(TIFFXX_LIBRARY) + +endif (TIFFXX_LIBRARY) diff --git a/cmake_modules/FindTOUPCAM.cmake b/cmake_modules/FindTOUPCAM.cmake new file mode 100644 index 0000000..626c3a5 --- /dev/null +++ b/cmake_modules/FindTOUPCAM.cmake @@ -0,0 +1,50 @@ +# - Try to find Toupcam Camera Library +# Once done this will define +# +# TOUPCAM_FOUND - system has Toupcam +# TOUPCAM_INCLUDE_DIR - the Toupcam include directory +# TOUPCAM_LIBRARIES - Link these to use Toupcam + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (TOUPCAM_INCLUDE_DIR AND TOUPCAM_LIBRARIES) + + # in cache already + set(TOUPCAM_FOUND TRUE) + message(STATUS "Found libsbig: ${TOUPCAM_LIBRARIES}") + +else (TOUPCAM_INCLUDE_DIR AND TOUPCAM_LIBRARIES) + + find_path(TOUPCAM_INCLUDE_DIR toupcam.h + PATH_SUFFIXES libtoupcam + ${_obIncDir} + ${GNUWIN32_DIR}/include + ) + + find_library(TOUPCAM_LIBRARIES NAMES toupcam + PATHS + ${_obLinkDir} + ${GNUWIN32_DIR}/lib + ) + + if(TOUPCAM_INCLUDE_DIR AND TOUPCAM_LIBRARIES) + set(TOUPCAM_FOUND TRUE) + else (TOUPCAM_INCLUDE_DIR AND TOUPCAM_LIBRARIES) + set(TOUPCAM_FOUND FALSE) + endif(TOUPCAM_INCLUDE_DIR AND TOUPCAM_LIBRARIES) + + + if (TOUPCAM_FOUND) + if (NOT TOUPCAM_FIND_QUIETLY) + message(STATUS "Found Toupcam: ${TOUPCAM_LIBRARIES}") + endif (NOT TOUPCAM_FIND_QUIETLY) + else (TOUPCAM_FOUND) + if (TOUPCAM_FIND_REQUIRED) + message(FATAL_ERROR "Toupcam not found. Please install Toupcam Library http://www.indilib.org") + endif (TOUPCAM_FIND_REQUIRED) + endif (TOUPCAM_FOUND) + + mark_as_advanced(TOUPCAM_INCLUDE_DIR TOUPCAM_LIBRARIES) + +endif (TOUPCAM_INCLUDE_DIR AND TOUPCAM_LIBRARIES) diff --git a/cmake_modules/FindUSB1.cmake b/cmake_modules/FindUSB1.cmake new file mode 100644 index 0000000..0e155b4 --- /dev/null +++ b/cmake_modules/FindUSB1.cmake @@ -0,0 +1,83 @@ +# - Try to find libusb-1.0 +# Once done this will define +# +# USB1_FOUND - system has libusb-1.0 +# USB1_INCLUDE_DIRS - the libusb-1.0 include directories +# USB1_LIBRARIES - Link these to use libusb-1.0 +# USB1_DEFINITIONS - Compiler switches required for using libusb-1.0 +# +# USB1_HAS_LIBUSB_ERROR_NAME - defined when libusb-1.0 has libusb_error_name() + +#============================================================================= +# Copyright (c) 2017 Pino Toscano <toscano.pino@tiscali.it> +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +#============================================================================= + +find_package(PkgConfig) +pkg_check_modules(PC_LIBUSB1 QUIET libusb-1.0) + +find_path(USB1_INCLUDE_DIR + NAMES + libusb.h + HINTS + ${PC_LIBUSB1_INCLUDE_DIRS} + PATH_SUFFIXES + libusb-1.0 +) + +find_library(USB1_LIBRARY + NAMES + ${PC_LIBUSB1_LIBRARIES} + usb-1.0 + HINTS + ${PC_LIBUSB1_LIBRARY_DIRS} +) + +set(USB1_INCLUDE_DIRS ${USB1_INCLUDE_DIR}) +set(USB1_LIBRARIES ${USB1_LIBRARY}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(USB1 + FOUND_VAR + USB1_FOUND + REQUIRED_VARS + USB1_LIBRARY + USB1_INCLUDE_DIR + VERSION_VAR + PC_LIBUSB1_VERSION +) + +mark_as_advanced(USB1_INCLUDE_DIRS USB1_LIBRARIES) + +if(USB1_FOUND) + include(CheckCXXSourceCompiles) + include(CMakePushCheckState) + cmake_push_check_state(RESET) + set(CMAKE_REQUIRED_INCLUDES ${USB1_INCLUDE_DIRS}) + set(CMAKE_REQUIRED_LIBRARIES ${USB1_LIBRARIES}) + check_cxx_source_compiles("#include <libusb.h> + int main() { libusb_error_name(0); return 0; }" USB1_HAS_LIBUSB_ERROR_NAME) + cmake_pop_check_state() +endif() diff --git a/cmake_modules/FindVorbis.cmake b/cmake_modules/FindVorbis.cmake new file mode 100644 index 0000000..d5e273e --- /dev/null +++ b/cmake_modules/FindVorbis.cmake @@ -0,0 +1,32 @@ +# - Find vorbis +# Find the native vorbis includes and libraries +# +# VORBIS_INCLUDE_DIR - where to find vorbis.h, etc. +# VORBIS_LIBRARIES - List of libraries when using vorbis(file). +# VORBIS_FOUND - True if vorbis found. + +if(VORBIS_INCLUDE_DIR) + # Already in cache, be silent + set(VORBIS_FIND_QUIETLY TRUE) +endif(VORBIS_INCLUDE_DIR) + +find_path(VORBIS_INCLUDE_DIR vorbis/vorbisfile.h) + +find_library(OGG_LIBRARY NAMES ogg) +find_library(VORBIS_LIBRARY NAMES vorbis) +find_library(VORBISFILE_LIBRARY NAMES vorbisfile) + +# Handle the QUIETLY and REQUIRED arguments and set VORBIS_FOUND to TRUE if +# all listed variables are TRUE. +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(VORBIS DEFAULT_MSG + VORBIS_INCLUDE_DIR OGG_LIBRARY VORBIS_LIBRARY VORBIS_LIBRARY) + +if(VORBIS_FOUND) + set(VORBIS_LIBRARIES ${VORBISFILE_LIBRARY} ${VORBIS_LIBRARY} ${OGG_LIBRARY}) +else(VORBIS_FOUND) + set(VORBIS_LIBRARIES) +endif(VORBIS_FOUND) + +mark_as_advanced(VORBIS_INCLUDE_DIR) +mark_as_advanced(OGG_LIBRARY VORBIS_LIBRARY VORBISFILE_LIBRARY) diff --git a/cmake_modules/InstallImported.cmake b/cmake_modules/InstallImported.cmake new file mode 100644 index 0000000..740753c --- /dev/null +++ b/cmake_modules/InstallImported.cmake @@ -0,0 +1,92 @@ + +function (install_imported) + + cmake_parse_arguments (ARG "" "DESTINATION" "TARGETS" ${ARGN}) + + if (NOT DEFINED ARG_DESTINATION) + message (FATAL_ERROR "DESTINATION not defined") + endif () + + foreach (target ${ARG_TARGETS}) + + get_target_property (location ${target} LOCATION) + get_target_property (version ${target} VERSION) + get_target_property (soversion ${target} SOVERSION) + get_target_property (output_name ${target} OUTPUT_NAME) + get_target_property (suffix ${target} SUFFIX) + get_target_property (type ${target} TYPE) + + if (NOT ${type} STREQUAL "SHARED_LIBRARY") + message (FATAL_ERROR "install_imported: ${type} not supported") + endif () + + if (${location} STREQUAL "${target}-NOTFOUND") + return () + endif () + + if (NOT ${version} STREQUAL "version-NOTFOUND") + set (version ".${version}") + else () + set (version "") + endif () + + if (NOT ${soversion} STREQUAL "soversion-NOTFOUND") + set (soversion ".${soversion}") + else () + set (soversion "") + endif () + + if (${output_name} STREQUAL "output_name-NOTFOUND") + set (output_name ${target}) + endif () + + set (name_noversion "${CMAKE_SHARED_LIBRARY_PREFIX}${output_name}${CMAKE_SHARED_LIBRARY_SUFFIX}") + + if (APPLE) + set (name_version "${CMAKE_SHARED_LIBRARY_PREFIX}${output_name}${version}${CMAKE_SHARED_LIBRARY_SUFFIX}") + set (name_soversion "${CMAKE_SHARED_LIBRARY_PREFIX}${output_name}${soversion}${CMAKE_SHARED_LIBRARY_SUFFIX}") + else () + set (name_version "${CMAKE_SHARED_LIBRARY_PREFIX}${output_name}${CMAKE_SHARED_LIBRARY_SUFFIX}${version}") + set (name_soversion "${CMAKE_SHARED_LIBRARY_PREFIX}${output_name}${CMAKE_SHARED_LIBRARY_SUFFIX}${soversion}") + endif () + + if (NOT IS_ABSOLUTE ${location}) + set (location ${CMAKE_CURRENT_SOURCE_DIR}/${location}) + endif () + + if (NOT ${name_noversion} STREQUAL ${name_soversion}) + add_custom_command ( + OUTPUT ${name_noversion} + COMMAND ${CMAKE_COMMAND} -E create_symlink ${name_soversion} ${name_noversion} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + MAIN_DEPENDENCY ${name_soversion} + ) + + install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${name_noversion} DESTINATION ${ARG_DESTINATION}) + endif () + + if (NOT ${name_soversion} STREQUAL ${name_version}) + add_custom_command ( + OUTPUT ${name_soversion} + COMMAND ${CMAKE_COMMAND} -E create_symlink ${name_version} ${name_soversion} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + MAIN_DEPENDENCY ${name_version} + ) + + install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${name_soversion} DESTINATION ${ARG_DESTINATION}) + endif () + + add_custom_command ( + OUTPUT ${name_version} + COMMAND ${CMAKE_COMMAND} -E copy "${location}" "${CMAKE_CURRENT_BINARY_DIR}/${name_version}" + MAIN_DEPENDENCY ${location} + ) + + install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${name_version} DESTINATION ${ARG_DESTINATION}) + + add_custom_target( + imported_${output_name} ALL + DEPENDS ${name_version} ${name_noversion} ${name_soversion} + ) + + endforeach () + +endfunction () diff --git a/cmake_modules/UnityBuild.cmake b/cmake_modules/UnityBuild.cmake new file mode 100644 index 0000000..7c133f1 --- /dev/null +++ b/cmake_modules/UnityBuild.cmake @@ -0,0 +1,158 @@ +# +# Copyright (c) 2009-2012 Christoph Heindl +# Copyright (c) 2015 Csaba Kertész (csaba.kertesz@gmail.com) +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the <organization> nor the +# names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +MACRO (COMMIT_UNITY_FILE UNITY_FILE FILE_CONTENT) + SET(DIRTY FALSE) + # Check if the build file exists + SET(OLD_FILE_CONTENT "") + IF (NOT EXISTS ${${UNITY_FILE}} AND NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/${${UNITY_FILE}}) + SET(DIRTY TRUE) + ELSE () + # Check the file content + FILE(STRINGS ${${UNITY_FILE}} OLD_FILE_CONTENT) + STRING(REPLACE ";" "" OLD_FILE_CONTENT "${OLD_FILE_CONTENT}") + STRING(REPLACE "\n" "" NEW_CONTENT "${${FILE_CONTENT}}") + STRING(COMPARE EQUAL "${OLD_FILE_CONTENT}" "${NEW_CONTENT}" EQUAL_CHECK) + IF (NOT EQUAL_CHECK EQUAL 1) + SET(DIRTY TRUE) + ENDIF () + ENDIF () + IF (DIRTY MATCHES TRUE) + MESSAGE(STATUS "Write Unity Build file: " ${${UNITY_FILE}}) + FILE(WRITE ${${UNITY_FILE}} "${${FILE_CONTENT}}") + ENDIF () + # Create a dummy copy of the unity file to trigger CMake reconfigure if it is deleted. + SET(UNITY_FILE_PATH "") + SET(UNITY_FILE_NAME "") + GET_FILENAME_COMPONENT(UNITY_FILE_PATH ${${UNITY_FILE}} PATH) + GET_FILENAME_COMPONENT(UNITY_FILE_NAME ${${UNITY_FILE}} NAME) + CONFIGURE_FILE(${${UNITY_FILE}} ${UNITY_FILE_PATH}/CMakeFiles/${UNITY_FILE_NAME}.dummy) +ENDMACRO () + +MACRO (ENABLE_UNITY_BUILD TARGET_NAME SOURCE_VARIABLE_NAME UNIT_SIZE EXTENSION) + # Limit is zero based conversion of unit_size + MATH(EXPR LIMIT ${UNIT_SIZE}-1) + SET(FILES ${SOURCE_VARIABLE_NAME}) + # Effectivly ignore the source files from the build, but keep track them for changes. + SET_SOURCE_FILES_PROPERTIES(${${FILES}} PROPERTIES HEADER_FILE_ONLY true) + # Counts the number of source files up to the threshold + SET(COUNTER ${LIMIT}) + # Have one or more unity build files + SET(FILE_NUMBER 0) + SET(BUILD_FILE "") + SET(BUILD_FILE_CONTENT "") + SET(UNITY_BUILD_FILES "") + SET(_DEPS "") + + FOREACH (SOURCE_FILE ${${FILES}}) + IF (COUNTER EQUAL LIMIT) + SET(_DEPS "") + # Write the actual Unity Build file + IF (NOT ${BUILD_FILE} STREQUAL "" AND NOT ${BUILD_FILE_CONTENT} STREQUAL "") + COMMIT_UNITY_FILE(BUILD_FILE BUILD_FILE_CONTENT) + ENDIF () + SET(UNITY_BUILD_FILES ${UNITY_BUILD_FILES} ${BUILD_FILE}) + # Set the variables for the current Unity Build file + SET(BUILD_FILE ${CMAKE_CURRENT_BINARY_DIR}/unitybuild_${FILE_NUMBER}_${TARGET_NAME}.${EXTENSION}) + SET(BUILD_FILE_CONTENT "// Unity Build file generated by CMake\n") + MATH(EXPR FILE_NUMBER ${FILE_NUMBER}+1) + SET(COUNTER 0) + ENDIF () + # Add source path to the file name if it is not there yet. + SET(FINAL_SOURCE_FILE "") + SET(SOURCE_PATH "") + GET_FILENAME_COMPONENT(SOURCE_PATH ${SOURCE_FILE} PATH) + IF (SOURCE_PATH STREQUAL "" OR NOT EXISTS ${SOURCE_FILE}) + SET(FINAL_SOURCE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE_FILE}) + ELSE () + SET(FINAL_SOURCE_FILE ${SOURCE_FILE}) + ENDIF () + # Treat only the existing files or moc_*.cpp files + STRING(FIND ${SOURCE_FILE} "moc_" MOC_POS) + IF (EXISTS ${FINAL_SOURCE_FILE} OR MOC_POS GREATER -1) + # Add md5 hash of the source file (except moc files) to the build file content + IF (MOC_POS LESS 0) + SET(MD5_HASH "") + FILE(MD5 ${FINAL_SOURCE_FILE} MD5_HASH) + SET(BUILD_FILE_CONTENT "${BUILD_FILE_CONTENT}// md5: ${MD5_HASH}\n") + ENDIF () + # Add the source file to the build file content + IF (MOC_POS GREATER -1) + SET(BUILD_FILE_CONTENT "${BUILD_FILE_CONTENT}#include <${SOURCE_FILE}>\n") + ELSE () + SET(BUILD_FILE_CONTENT "${BUILD_FILE_CONTENT}#include <${FINAL_SOURCE_FILE}>\n") + ENDIF () + # Add the source dependencies to the Unity Build file + GET_SOURCE_FILE_PROPERTY(_FILE_DEPS ${SOURCE_FILE} OBJECT_DEPENDS) + + IF (_FILE_DEPS) + SET(_DEPS ${_DEPS} ${_FILE_DEPS}) + SET_SOURCE_FILES_PROPERTIES(${BUILD_FILE} PROPERTIES OBJECT_DEPENDS "${_DEPS}") + ENDIF() + # Keep counting up to the threshold. Increment counter. + MATH(EXPR COUNTER ${COUNTER}+1) + ENDIF () + ENDFOREACH () + # Write out the last Unity Build file + IF (NOT ${BUILD_FILE} STREQUAL "" AND NOT ${BUILD_FILE_CONTENT} STREQUAL "") + COMMIT_UNITY_FILE(BUILD_FILE BUILD_FILE_CONTENT) + ENDIF () + SET(UNITY_BUILD_FILES ${UNITY_BUILD_FILES} ${BUILD_FILE}) + SET(${SOURCE_VARIABLE_NAME} ${${SOURCE_VARIABLE_NAME}} ${UNITY_BUILD_FILES}) +ENDMACRO () + +MACRO (UNITY_GENERATE_MOC TARGET_NAME SOURCES HEADERS) + SET(NEW_SOURCES "") + FOREACH (HEADER_FILE ${${HEADERS}}) + IF (NOT EXISTS ${HEADER_FILE}) + MESSAGE(FATAL_ERROR "Header file does not exist (mocing): ${HEADER_FILE}") + ENDIF () + FILE(READ ${HEADER_FILE} FILE_CONTENT) + STRING(FIND "${FILE_CONTENT}" "Q_OBJECT" QOBJECT_POS) + STRING(FIND "${FILE_CONTENT}" "Q_SLOTS" QSLOTS_POS) + STRING(FIND "${FILE_CONTENT}" "Q_SIGNALS" QSIGNALS_POS) + STRING(FIND "${FILE_CONTENT}" "QObject" OBJECT_POS) + STRING(FIND "${FILE_CONTENT}" "slots" SLOTS_POS) + STRING(FIND "${FILE_CONTENT}" "signals" SIGNALS_POS) + IF (QOBJECT_POS GREATER 0 OR OBJECT_POS GREATER 0 OR QSLOTS_POS GREATER 0 OR Q_SIGNALS GREATER 0 OR + SLOTS_POS GREATER 0 OR SIGNALS GREATER 0) + # Generate the moc filename + GET_FILENAME_COMPONENT(HEADER_BASENAME ${HEADER_FILE} NAME_WE) + SET(MOC_FILENAME "moc_${HEADER_BASENAME}.cpp") + SET(NEW_SOURCES ${NEW_SOURCES} ; "${CMAKE_CURRENT_BINARY_DIR}/${MOC_FILENAME}") + ADD_CUSTOM_COMMAND(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${MOC_FILENAME}" + DEPENDS ${HEADER_FILE} + COMMAND ${QT_MOC_EXECUTABLE} ${HEADER_FILE} -o "${CMAKE_CURRENT_BINARY_DIR}/${MOC_FILENAME}") + ENDIF () + ENDFOREACH () + IF (NEW_SOURCES) + SET_SOURCE_FILES_PROPERTIES(${NEW_SOURCES} PROPERTIES GENERATED TRUE) + SET(${SOURCES} ${${SOURCES}} ; ${NEW_SOURCES}) + ENDIF () +ENDMACRO () |