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()