Warning, /graphics/krita/cmake/modules/FindHEIF.cmake is written in an unsupported language. File is not indexed.

0001 # SPDX-FileCopyrightText: 2018 Boudewijn Rempt <boud@valdyas.org>
0002 # SPDX-FileCopyrightText: 2023 L. E. Segovia <amy@amyspark.me>
0003 # SPDX-License-Identifier: BSD-3-Clause
0004 
0005 #[=======================================================================[.rst:
0006 FindHEIF
0007 --------------
0008 
0009 Find HEIF headers and libraries.
0010 
0011 Imported Targets
0012 ^^^^^^^^^^^^^^^^
0013 
0014 ``HEIF::heif``
0015   The HEIF library, if found.
0016 
0017 Result Variables
0018 ^^^^^^^^^^^^^^^^
0019 
0020 This will define the following variables in your project:
0021 
0022 ``HEIF_FOUND``
0023   true if (the requested version of) HEIF is available.
0024 ``HEIF_VERSION``
0025   the version of HEIF.
0026 ``HEIF_LIBRARIES``
0027   the libraries to link against to use HEIF.
0028 ``HEIF_INCLUDE_DIRS``
0029   where to find the HEIF headers.
0030 ``HEIF_COMPILE_OPTIONS``
0031   this should be passed to target_compile_options(), if the
0032   target is not used for linking
0033 
0034 #]=======================================================================]
0035 
0036 include(FindPackageHandleStandardArgs)
0037 
0038 set(HEIF_PKGCONF_CONFIG_DIR CACHE STRING "PkgConfig path for locating the package modules")
0039 foreach(_dir ${CMAKE_PREFIX_PATH})
0040     list(APPEND HEIF_PKGCONF_CONFIG_DIR ${_dir}/lib/cmake/libheif)
0041 endforeach()
0042 mark_as_advanced(HEIF_PKGCONF_CONFIG_DIR)
0043 
0044 find_package(libheif QUIET NO_MODULE
0045     HINTS ${HEIF_PKGCONF_CONFIG_DIR} /usr/lib/cmake/libheif /usr/local/lib/cmake/libheif
0046 )
0047 mark_as_advanced(libheif_DIR)
0048 
0049 # if we found the libheif CMake package then we are done, and
0050 # can print what we found and return.
0051 if(libheif_FOUND)
0052     if (TARGET heif AND NOT TARGET HEIF::heif)
0053         add_library(HEIF::heif ALIAS heif)
0054     endif()
0055 
0056     if (TARGET HEIF::HEIF)
0057         set(HEIF_FOUND ON)
0058     else ()
0059         set(HEIF_FOUND OFF)
0060     endif ()
0061 
0062     if (NOT HEIF_LIBRARIES)
0063         set(HEIF_LIBRARIES HEIF::heif)
0064     endif()
0065     unset(libheif_LIBRARIES)
0066     
0067     set(HEIF_VERSION "${libheif_VERSION}")
0068     unset(libheif_VERSION)
0069 
0070     get_target_property(HEIF_INCLUDE_DIRS HEIF::heif INTERFACE_INCLUDE_DIRECTORIES)
0071 
0072     find_package_handle_standard_args(HEIF 
0073         FOUND_VAR HEIF_FOUND
0074         REQUIRED_VARS HEIF_INCLUDE_DIRS HEIF_LIBRARIES
0075         VERSION_VAR HEIF_VERSION
0076         NAME_MISMATCHED
0077     )
0078     return()
0079 endif()
0080 
0081 find_package(PkgConfig QUIET)
0082 
0083 if (PkgConfig_FOUND)
0084     pkg_check_modules(HEIF_PKGCONF QUIET libheif)
0085     set(HEIF_VERSION ${HEIF_PKGCONF_VERSION})
0086     set(HEIF_COMPILE_OPTIONS "${HEIF_PKGCONF_CFLAGS};${HEIF_PKGCONF_CFLAGS_OTHER}")
0087 endif ()
0088 
0089 find_path(HEIF_INCLUDE_DIR
0090     NAMES libheif/heif.h
0091     HINTS ${HEIF_PKGCONF_INCLUDE_DIRS} ${HEIF_PKGCONF_INCLUDEDIR}
0092     PATH_SUFFIXES heif
0093 )
0094 
0095 find_library(HEIF_LIBRARY
0096     NAMES libheif heif
0097     HINTS ${HEIF_PKGCONF_LIBRARY_DIRS} ${HEIF_PKGCONF_LIBDIR}
0098 )
0099 
0100 if (NOT HEIF_VERSION AND HEIF_FOUND)
0101     file(READ ${HEIF_INCLUDE_DIR}/libheif/heif_version.h _version_content)
0102 
0103     string(REGEX MATCH "#define LIBHEIF_VERSION[ \t]+\"(.+)\"" _version_match ${_version_content})
0104 
0105     if (_version_match)
0106         set(HEIF_VERSION "${CMAKE_MATCH_1}")
0107     else()
0108         if(NOT HEIF_FIND_QUIETLY)
0109             message(WARNING "Failed to get version information from ${HEIF_INCLUDE_DIR}/libheif/config.h")
0110         endif()
0111     endif()
0112 endif()
0113 
0114 if (HEIF_INCLUDE_DIR AND HEIF_LIBRARY)
0115     set(HEIF_FOUND ON)
0116 else()
0117     set(HEIF_FOUND OFF)
0118 endif()
0119 
0120 find_package_handle_standard_args(HEIF
0121     FOUND_VAR HEIF_FOUND
0122     REQUIRED_VARS HEIF_INCLUDE_DIR HEIF_LIBRARY
0123     HANDLE_COMPONENTS
0124     VERSION_VAR HEIF_VERSION
0125 )
0126 
0127 if (HEIF_FOUND)
0128 if (HEIF_LIBRARY AND NOT TARGET HEIF::heif)
0129     add_library(HEIF::heif UNKNOWN IMPORTED GLOBAL)
0130     set_target_properties(HEIF::heif PROPERTIES
0131         IMPORTED_LOCATION "${HEIF_LIBRARY}"
0132         INTERFACE_COMPILE_OPTIONS "${HEIF_PKGCONF_CFLAGS_OTHER}"
0133         INTERFACE_INCLUDE_DIRECTORIES "${HEIF_INCLUDE_DIR}"
0134         INTERFACE_LINK_LIBRARIES "${HEIF_PKGCONF_LIBRARIES}"
0135         INTERFACE_LINK_DIRECTORIES "${HEIF_PKGCONF_LIBDIR}"
0136     )
0137 endif()
0138 
0139 mark_as_advanced(
0140     HEIF_INCLUDE_DIR
0141     HEIF_LIBRARY
0142 )
0143 
0144 set(HEIF_LIBRARIES ${HEIF_LIBRARY})
0145 set(HEIF_INCLUDE_DIRS ${HEIF_INCLUDE_DIR})
0146 endif()