58 lines
2.6 KiB
CMake
58 lines
2.6 KiB
CMake
# Copyright (C) 2022 The Qt Company Ltd.
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
# Latest upstream package provides both CMake and autotools building.
|
|
# Unfortunately Linux distros and homebrew build the package with autotools,
|
|
# so they do not ship the CMake Config file, but only the pkg-config files.
|
|
# vcpkg and Conan do ship Config files.
|
|
# So try config files first, and then use the regular find_library / find_path dance with pkg-config
|
|
# paths as hints.
|
|
|
|
# We can't create the same interface imported target multiple times, CMake will complain if we do
|
|
# that. This can happen if the find_package call is done in multiple different subdirectories.
|
|
if(TARGET WrapWebP::WrapWebP)
|
|
set(WrapWebP_FOUND TRUE)
|
|
return()
|
|
endif()
|
|
|
|
find_package(WebP QUIET)
|
|
if(TARGET WebP::webp AND TARGET WebP::webpdemux AND TARGET WebP::libwebpmux)
|
|
set(WrapWebP_FOUND ON)
|
|
add_library(WrapWebP::WrapWebP INTERFACE IMPORTED)
|
|
target_link_libraries(WrapWebP::WrapWebP INTERFACE WebP::webp WebP::webpdemux WebP::libwebpmux)
|
|
return()
|
|
endif()
|
|
|
|
find_package(PkgConfig QUIET)
|
|
pkg_check_modules(PC_WebP libwebp)
|
|
pkg_check_modules(PC_WebPDemux libwebpdemux)
|
|
pkg_check_modules(PC_WebPMux libwebpmux)
|
|
|
|
find_library(WebP_LIBRARY NAMES "webp"
|
|
HINTS ${PC_WebP_LIBDIR})
|
|
find_library(WebP_demux_LIBRARY NAMES "webpdemux"
|
|
HINTS ${PC_WebPDemux_LIBDIR})
|
|
find_library(WebP_mux_LIBRARY NAMES "webpmux"
|
|
HINTS ${PC_WebPMux_LIBDIR})
|
|
|
|
find_path(WebP_INCLUDE_DIR NAMES "webp/decode.h"
|
|
HINTS ${PC_WebP_INCLUDEDIR})
|
|
find_path(WebP_demux_INCLUDE_DIR NAMES "webp/demux.h"
|
|
HINTS ${PC_WebPDemux_INCLUDEDIR})
|
|
find_path(WebP_mux_INCLUDE_DIR NAMES "webp/mux.h"
|
|
HINTS ${PC_WebPMux_INCLUDEDIR})
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(WrapWebP DEFAULT_MSG WebP_INCLUDE_DIR WebP_LIBRARY
|
|
WebP_demux_INCLUDE_DIR WebP_demux_LIBRARY
|
|
WebP_mux_INCLUDE_DIR WebP_mux_LIBRARY)
|
|
|
|
mark_as_advanced(WebP_INCLUDE_DIR WebP_LIBRARY WebP_demux_INCLUDE_DIR WebP_demux_LIBRARY WebP_mux_INCLUDE_DIR WebP_mux_LIBRARY)
|
|
if(WrapWebP_FOUND)
|
|
set(WebP_FOUND ON)
|
|
add_library(WrapWebP::WrapWebP INTERFACE IMPORTED)
|
|
target_link_libraries(WrapWebP::WrapWebP INTERFACE ${WebP_LIBRARY} ${WebP_demux_LIBRARY} ${WebP_mux_LIBRARY})
|
|
target_include_directories(WrapWebP::WrapWebP
|
|
INTERFACE ${WebP_INCLUDE_DIR} ${WebP_demux_INCLUDE_DIR} ${WebP_mux_INCLUDE_DIR})
|
|
endif()
|