Warning, /graphics/digikam/core/cmake/modules/FindGphoto2.cmake is written in an unsupported language. File is not indexed.
0001 # Cmake macro to detect gphoto2 libraries
0002 #
0003 # This module defines
0004 # Gphoto2_FOUND - True if libgphoto2 is detected.
0005 # GPHOTO2_INCLUDE_DIRS - Path to libgphoto2 header files.
0006 # GPHOTO2_LIBRARIES - Libraries to link against to use libgphoto2.
0007 # GPHOTO2_VERSION_STRING - e.g. "2.4.14"
0008 # GPHOTO2_VERSION_MAJOR - e.g. "2"
0009 # GPHOTO2_VERSION_MINOR - e.g. "4"
0010 # GPHOTO2_VERSION_PATCH - e.g. "14"
0011 #
0012 # SPDX-FileCopyrightText: 2006-2007 by Laurent Montel <montel@kde.org>
0013 # SPDX-FileCopyrightText: 2011-2024 by Gilles Caulier <caulier.gilles@gmail.com>
0014 #
0015 # SPDX-License-Identifier: BSD-3-Clause
0016 #
0017
0018 set(GPHOTO2_FIND_REQUIRED ${Gphoto2_FIND_REQUIRED})
0019
0020 find_path(GPHOTO2_INCLUDE_DIRS gphoto2/gphoto2.h)
0021 mark_as_advanced(GPHOTO2_INCLUDE_DIRS)
0022
0023 set(GPHOTO2_NAMES ${GPHOTO2_NAMES} gphoto2 libgphoto2)
0024 set(GPHOTO2_PORT_NAMES ${GPHOTO2_PORT_NAMES} gphoto2_port libgphoto2_port)
0025
0026 find_library(GPHOTO2_LIBRARY NAMES ${GPHOTO2_NAMES})
0027 find_library(GPHOTO2_PORT_LIBRARY NAMES ${GPHOTO2_PORT_NAMES})
0028
0029 mark_as_advanced(GPHOTO2_LIBRARY)
0030 mark_as_advanced(GPHOTO2_PORT_LIBRARY)
0031
0032 # Detect libgphoto2 version
0033
0034 find_package(PkgConfig)
0035 pkg_check_modules(PC_GPHOTO2 QUIET libgphoto2)
0036
0037 if(PC_GPHOTO2_FOUND)
0038
0039 set(GPHOTO2_VERSION_STRING "${PC_GPHOTO2_VERSION}")
0040
0041 endif()
0042
0043 # handle the QUIETLY and REQUIRED arguments and set Gphoto2_FOUND to TRUE if
0044 # all listed variables are TRUE
0045
0046 include(FindPackageHandleStandardArgs)
0047 find_package_handle_standard_args(Gphoto2 DEFAULT_MSG
0048 GPHOTO2_LIBRARY
0049 GPHOTO2_INCLUDE_DIRS)
0050
0051 if(Gphoto2_FOUND)
0052
0053 set(GPHOTO2_INCLUDE_DIRS ${GPHOTO2_INCLUDE_DIRS}/gphoto2)
0054 set(GPHOTO2_LIBRARIES ${GPHOTO2_LIBRARY} ${GPHOTO2_PORT_LIBRARY})
0055
0056 # See bug #268267: digiKam need to be linked to libusb to prevent crash
0057 # at gphoto2 init if opencv is linked with libdc1394.
0058 #
0059 # libgphoto2 dynamically loads and unloads usb library
0060 # without calling any cleanup functions (since they are absent from libusb-0.1).
0061 # This leaves usb event handling threads running with invalid callback and return addresses,
0062 # which causes a crash after any usb event is generated.
0063 # libusb1 backend does correctly call exit function, but ATM it crashes anyway.
0064 # Workaround is to link against libusb so that it wouldn't get unloaded.
0065
0066 find_library(USB1_LIBRARY NAMES usb-1.0 libusb-1.0)
0067 mark_as_advanced(USB1_LIBRARY)
0068
0069 if(USB1_LIBRARY)
0070
0071 set(GPHOTO2_LIBRARIES ${GPHOTO2_LIBRARIES} ${USB1_LIBRARY})
0072
0073 endif()
0074
0075 endif()
0076
0077 message(STATUS "libgphoto2 found : ${Gphoto2_FOUND}")
0078 message(STATUS "libgphoto2 version : ${GPHOTO2_VERSION_STRING}")
0079 message(STATUS "libgphoto2 includes : ${GPHOTO2_INCLUDE_DIRS}")
0080 message(STATUS "libgphoto2 libraries: ${GPHOTO2_LIBRARIES}")