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