diff --git a/CMakeLists.txt b/CMakeLists.txt index a43c99f90..7a7e82cec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.12) +cmake_minimum_required(VERSION 4.1) project("stable-diffusion") set(CMAKE_EXPORT_COMPILE_COMMANDS ON) @@ -108,19 +108,27 @@ if(SD_WEBP) "Or link against system library:\n cmake (...) -DSD_USE_SYSTEM_WEBP=ON") endif() if(SD_USE_SYSTEM_WEBP) - find_package(WebP REQUIRED) - add_library(webp ALIAS WebP::webp) - # libwebp CMake target naming is not consistent across versions/distros. - # Some export WebP::libwebpmux, others export WebP::webpmux. - if(TARGET WebP::libwebpmux) - add_library(libwebpmux ALIAS WebP::libwebpmux) - elseif(TARGET WebP::webpmux) - add_library(libwebpmux ALIAS WebP::webpmux) - else() - message(FATAL_ERROR - "Could not find a compatible webpmux target in system WebP package. " - "Expected WebP::libwebpmux or WebP::webpmux." - ) + find_package(WebP) + if(WebP_FOUND) + add_library(webp ALIAS WebP::webp) + # libwebp CMake target naming is not consistent across versions/distros. + # Some export WebP::libwebpmux, others export WebP::webpmux. + if(TARGET WebP::libwebpmux) + add_library(libwebpmux ALIAS WebP::libwebpmux) + elseif(TARGET WebP::webpmux) + add_library(libwebpmux ALIAS WebP::webpmux) + else() + message(FATAL_ERROR + "Could not find a compatible webpmux target in system WebP package. " + "Expected WebP::libwebpmux or WebP::webpmux." + ) + endif() + else() + cmake_pkg_config(IMPORT libwebp REQUIRED) + link_libraries(PkgConfig::libwebp) + cmake_pkg_config(IMPORT libwebpmux REQUIRED) + link_libraries(PkgConfig::libwebpmux) + add_library(libwebpmux ALIAS PkgConfig::libwebpmux) endif() endif() endif() @@ -135,18 +143,23 @@ if(SD_WEBM) "Or link against system library:\n cmake (...) -DSD_USE_SYSTEM_WEBM=ON") endif() if(SD_USE_SYSTEM_WEBM) - find_path(WEBM_INCLUDE_DIR - NAMES mkvmuxer/mkvmuxer.h mkvparser/mkvparser.h common/webmids.h - PATH_SUFFIXES webm - REQUIRED) - find_library(WEBM_LIBRARY - NAMES webm libwebm - REQUIRED) - - add_library(webm UNKNOWN IMPORTED) - set_target_properties(webm PROPERTIES - IMPORTED_LOCATION "${WEBM_LIBRARY}" - INTERFACE_INCLUDE_DIRECTORIES "${WEBM_INCLUDE_DIR}") + cmake_pkg_config(IMPORT libwebm) + if(PKGCONFIG_libwebm_FOUND) + link_libraries(PkgConfig::libwebm) + else() + find_path(WEBM_INCLUDE_DIR + NAMES mkvmuxer/mkvmuxer.h mkvparser/mkvparser.h common/webmids.h + PATH_SUFFIXES webm + REQUIRED) + find_library(WEBM_LIBRARY + NAMES webm libwebm + REQUIRED) + + add_library(webm UNKNOWN IMPORTED) + set_target_properties(webm PROPERTIES + IMPORTED_LOCATION "${WEBM_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${WEBM_INCLUDE_DIR}") + endif() endif() endif()