Warning, /graphics/krita/cmake/modules/FindWebP.cmake is written in an unsupported language. File is not indexed.
0001 # Copyright (C) 2020 Sony Interactive Entertainment Inc. 0002 # Copyright (C) 2012 Raphael Kubo da Costa <rakuco@webkit.org> 0003 # Copyright (C) 2013 Igalia S.L. 0004 # Copyright (C) 2021 L. E. Segovia <amy@amyspark.me> 0005 # 0006 # Redistribution and use in source and binary forms, with or without 0007 # modification, are permitted provided that the following conditions 0008 # are met: 0009 # 1. Redistributions of source code must retain the above copyright 0010 # notice, this list of conditions and the following disclaimer. 0011 # 2. Redistributions in binary form must reproduce the above copyright 0012 # notice, this list of conditions and the following disclaimer in the 0013 # documentation and/or other materials provided with the distribution. 0014 # 0015 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND ITS CONTRIBUTORS ``AS 0016 # IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 0017 # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 0018 # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ITS 0019 # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 0020 # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 0021 # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 0022 # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 0023 # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 0024 # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 0025 # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 0026 0027 #[=======================================================================[.rst: 0028 FindWebP 0029 -------------- 0030 0031 Find WebP headers and libraries. 0032 0033 Imported Targets 0034 ^^^^^^^^^^^^^^^^ 0035 0036 ``WebP::webp`` 0037 The WebP library, if found. 0038 0039 ``WebP::webpdemux`` 0040 The WebP demux library, if found. 0041 0042 ``WebP::libwebpmux`` 0043 The WebP mux library, if found. 0044 0045 ``WebP::decoder`` 0046 The WebP decoder library, if found. 0047 0048 ``WebP::sharpyuv`` 0049 The WebP Sharp RGB to YUV420 conversion library, if found. 0050 0051 Result Variables 0052 ^^^^^^^^^^^^^^^^ 0053 0054 This will define the following variables in your project: 0055 0056 ``WebP_FOUND`` 0057 true if (the requested version of) WebP is available. 0058 ``WebP_VERSION`` 0059 the version of WebP. 0060 ``WebP_LIBRARIES`` 0061 the libraries to link against to use WebP. 0062 ``WebP_INCLUDE_DIRS`` 0063 where to find the WebP headers. 0064 ``WebP_COMPILE_OPTIONS`` 0065 this should be passed to target_compile_options(), if the 0066 target is not used for linking 0067 0068 #]=======================================================================] 0069 0070 include(FindPackageHandleStandardArgs) 0071 0072 set(PC_WEBP_CONFIG_DIR CACHE STRING "PkgConfig path for locating the package modules") 0073 foreach(_dir ${CMAKE_PREFIX_PATH}) 0074 list(APPEND PC_WEBP_CONFIG_DIR ${_dir}/share/WebP/cmake) 0075 endforeach() 0076 mark_as_advanced(PC_WEBP_CONFIG_DIR) 0077 0078 find_package(WebP QUIET NO_MODULE 0079 HINTS ${PC_WEBP_CONFIG_DIR} /usr/share/WebP/cmake /usr/local/share/WebP/cmake 0080 ) 0081 mark_as_advanced(WebP_DIR) 0082 0083 # if we found the WebP CMake package then we are done, and 0084 # can print what we found and return. 0085 if(WebP_FOUND) 0086 if (TARGET WebP::webp) 0087 set(WebP_webp_FOUND ON) 0088 else () 0089 set(WebP_webp_FOUND OFF) 0090 endif () 0091 0092 if (TARGET WebP::webpdemux) 0093 set(WebP_demux_FOUND ON) 0094 else () 0095 set(WebP_demux_FOUND OFF) 0096 endif () 0097 0098 if (TARGET WebP::libwebpmux) 0099 set(WebP_mux_FOUND ON) 0100 else () 0101 set(WebP_mux_FOUND OFF) 0102 endif () 0103 0104 if (TARGET WebP::decoder) 0105 set(WebP_decoder_FOUND ON) 0106 else () 0107 set(WebP_decoder_FOUND OFF) 0108 endif () 0109 0110 if (TARGET WebP::sharpyuv) 0111 set(WebP_sharpyuv_FOUND ON) 0112 else () 0113 set(WebP_sharpyuv_FOUND OFF) 0114 endif () 0115 0116 find_package_handle_standard_args(WebP 0117 FOUND_VAR WebP_FOUND 0118 HANDLE_COMPONENTS 0119 CONFIG_MODE 0120 ) 0121 return() 0122 endif() 0123 0124 find_package(PkgConfig QUIET) 0125 0126 if (PkgConfig_FOUND) 0127 pkg_check_modules(PC_WEBP QUIET libwebp) 0128 set(WebP_VERSION ${PC_WEBP_VERSION}) 0129 set(WebP_COMPILE_OPTIONS "${PC_WEBP_CFLAGS};${PC_WEBP_CFLAGS_OTHER}") 0130 0131 pkg_check_modules(PC_WEBP_DECODER QUIET libwebpdecoder) 0132 0133 pkg_check_modules(PC_WEBP_DEMUX QUIET libwebpdemux) 0134 0135 pkg_check_modules(PC_WEBP_DECODER QUIET libwebpmux) 0136 0137 pkg_check_modules(PC_WEBP_SHARPYUV QUIET libsharpyuv) 0138 endif () 0139 0140 find_path(WebP_INCLUDE_DIR 0141 NAMES webp/decode.h 0142 HINTS ${PC_WEBP_INCLUDEDIR} ${PC_WEBP_INCLUDE_DIRS} 0143 ) 0144 0145 find_library(WebP_LIBRARY 0146 NAMES ${WebP_NAMES} webp libwebp 0147 HINTS ${PC_WEBP_LIBDIR} ${PC_WEBP_LIBRARY_DIRS} 0148 ) 0149 0150 # There's nothing in the WebP headers that could be used to detect the exact 0151 # WebP version being used so don't attempt to do so. A version can only be found 0152 # through pkg-config 0153 if (NOT WebP_VERSION) 0154 message(WARNING "Cannot determine WebP version without pkg-config") 0155 endif () 0156 0157 if (WebP_INCLUDE_DIR AND WebP_LIBRARY) 0158 set(WebP_webp_FOUND ON) 0159 else() 0160 set(WebP_webp_FOUND OFF) 0161 endif() 0162 0163 # Find components 0164 if ("demux" IN_LIST WebP_FIND_COMPONENTS) 0165 find_library(WebP_DEMUX_LIBRARY 0166 NAMES ${WebP_DEMUX_NAMES} webpdemux libwebpdemux 0167 HINTS ${PC_WEBP_LIBDIR} ${PC_WEBP_LIBRARY_DIRS} 0168 ) 0169 0170 if (WebP_DEMUX_LIBRARY) 0171 set(WebP_demux_FOUND ON) 0172 else () 0173 set(WebP_demux_FOUND OFF) 0174 endif () 0175 endif () 0176 0177 if ("mux" IN_LIST WebP_FIND_COMPONENTS) 0178 find_library(WebP_MUX_LIBRARY 0179 NAMES ${WebP_MUX_NAMES} webpmux libwebpmux 0180 HINTS ${PC_WEBP_LIBDIR} ${PC_WEBP_LIBRARY_DIRS} 0181 ) 0182 0183 if (WebP_MUX_LIBRARY) 0184 set(WebP_mux_FOUND ON) 0185 else () 0186 set(WebP_mux_FOUND OFF) 0187 endif () 0188 endif () 0189 0190 if ("decoder" IN_LIST WebP_FIND_COMPONENTS) 0191 find_library(WebP_DECODER_LIBRARY 0192 NAMES ${WebP_DECODER_NAMES} webpdecoder libwebpdecoder 0193 HINTS ${PC_WEBP_LIBDIR} ${PC_WEBP_LIBRARY_DIRS} 0194 ) 0195 0196 if (WebP_DECODER_LIBRARY) 0197 set(WebP_decoder_FOUND ON) 0198 else () 0199 set(WebP_decoder_FOUND OFF) 0200 endif () 0201 endif () 0202 0203 # SharpYUV is a dependency of WebP, should be looked up 0204 # if neither the CMake module nor pkgconf are available 0205 # (this could only happen, in theory, in Windows MSVC) 0206 if ("sharpyuv" IN_LIST WebP_FIND_COMPONENTS OR WebP_webp_FOUND) 0207 find_library(WebP_SHARPYUV_LIBRARY 0208 NAMES ${WebP_DECODER_NAMES} sharpyuv libsharpyuv 0209 HINTS ${PC_WEBP_LIBDIR} ${PC_WEBP_LIBRARY_DIRS} 0210 ) 0211 0212 if (WebP_SHARPYUV_LIBRARY) 0213 set(WebP_sharpyuv_FOUND ON) 0214 else () 0215 set(WebP_sharpyuv_FOUND OFF) 0216 endif () 0217 endif () 0218 0219 find_package_handle_standard_args(WebP 0220 FOUND_VAR WebP_FOUND 0221 REQUIRED_VARS WebP_INCLUDE_DIR WebP_LIBRARY 0222 HANDLE_COMPONENTS 0223 VERSION_VAR WebP_VERSION 0224 ) 0225 0226 if (WebP_FOUND) 0227 if (WebP_LIBRARY AND NOT TARGET WebP::webp) 0228 add_library(WebP::webp UNKNOWN IMPORTED GLOBAL) 0229 set_target_properties(WebP::webp PROPERTIES 0230 IMPORTED_LOCATION "${WebP_LIBRARY}" 0231 INTERFACE_COMPILE_OPTIONS "${PC_WEBP_CFLAGS};${PC_WEBP_CFLAGS_OTHER}" 0232 INTERFACE_INCLUDE_DIRECTORIES "${WebP_INCLUDE_DIR};${PC_WEBP_INCLUDE_DIRS}" 0233 INTERFACE_LINK_LIBRARIES "${PC_WEBP_LINK_LIBRARIES}" 0234 ) 0235 endif () 0236 0237 if (WebP_DEMUX_LIBRARY AND NOT TARGET WebP::webpdemux) 0238 add_library(WebP::webpdemux UNKNOWN IMPORTED GLOBAL) 0239 set_target_properties(WebP::webpdemux PROPERTIES 0240 IMPORTED_LOCATION "${WebP_DEMUX_LIBRARY}" 0241 INTERFACE_COMPILE_OPTIONS "${PC_WEBP_DEMUX_CFLAGS};${PC_WEBP_DEMUX_CFLAGS_OTHER}" 0242 INTERFACE_INCLUDE_DIRECTORIES "${WebP_INCLUDE_DIR};${PC_WEBP_DEMUX_INCLUDE_DIRS}" 0243 INTERFACE_LINK_LIBRARIES "${PC_WEBP_DEMUX_LINK_LIBRARIES}" 0244 ) 0245 endif () 0246 0247 if (WebP_MUX_LIBRARY AND NOT TARGET WebP::libwebpmux) 0248 add_library(WebP::libwebpmux UNKNOWN IMPORTED GLOBAL) 0249 set_target_properties(WebP::libwebpmux PROPERTIES 0250 IMPORTED_LOCATION "${WebP_MUX_LIBRARY}" 0251 INTERFACE_COMPILE_OPTIONS "${PC_WEBP_MUX_CFLAGS};${PC_WEBP_MUX_CFLAGS_OTHER}" 0252 INTERFACE_INCLUDE_DIRECTORIES "${WebP_INCLUDE_DIR};${PC_WEBP_MUX_INCLUDE_DIRS}" 0253 INTERFACE_LINK_LIBRARIES "${PC_WEBP_MUX_LINK_LIBRARIES}" 0254 ) 0255 endif () 0256 0257 if (WebP_DECODER_LIBRARY AND NOT TARGET WebP::webpdecoder) 0258 add_library(WebP::webpdecoder UNKNOWN IMPORTED GLOBAL) 0259 set_target_properties(WebP::webpdecoder PROPERTIES 0260 IMPORTED_LOCATION "${WebP_DECODER_LIBRARY}" 0261 INTERFACE_COMPILE_OPTIONS "${PC_WEBP_DECODER_CFLAGS};${PC_WEBP_DECODER_CFLAGS_OTHER}" 0262 INTERFACE_INCLUDE_DIRECTORIES "${WebP_INCLUDE_DIR};${PC_WEBP_DECODER_INCLUDE_DIRS}" 0263 INTERFACE_LINK_LIBRARIES "${PC_WEBP_DECODER_LINK_LIBRARIES}" 0264 ) 0265 endif () 0266 0267 if (WebP_SHARPYUV_LIBRARY AND NOT TARGET WebP::sharpyuv) 0268 add_library(WebP::sharpyuv UNKNOWN IMPORTED GLOBAL) 0269 set_target_properties(WebP::sharpyuv PROPERTIES 0270 IMPORTED_LOCATION "${WebP_SHARPYUV_LIBRARY}" 0271 INTERFACE_COMPILE_OPTIONS "${PC_WEBP_SHARPYUV_CFLAGS};${PC_WEBP_SHARPYUV_CFLAGS_OTHER}" 0272 INTERFACE_INCLUDE_DIRECTORIES "${WebP_INCLUDE_DIR};${PC_WEBP_SHARPYUV_INCLUDE_DIRS}" 0273 INTERFACE_LINK_LIBRARIES "${PC_WEBP_SHARPYUV_LINK_LIBRARIES}" 0274 ) 0275 endif () 0276 0277 mark_as_advanced( 0278 WebP_INCLUDE_DIR 0279 WebP_LIBRARY 0280 WebP_DEMUX_LIBRARY 0281 WebP_MUX_LIBRARY 0282 WebP_DECODER_LIBRARY 0283 WebP_SHARPYUV_LIBRARY 0284 ) 0285 0286 set(WebP_LIBRARIES ${WebP_LIBRARY} ${WebP_DEMUX_LIBRARY} ${WebP_MUX_LIBRARY} ${WebP_DECODER_LIBRARY} ${WebP_SHARPYUV_LIBRARY}) 0287 set(WebP_INCLUDE_DIRS ${WebP_INCLUDE_DIR}) 0288 0289 endif()