Skip to content

Commit eeac950

Browse files
authored
fix: Use PkgConfig for WebP and WebM (#1400)
1 parent 57ff2eb commit eeac950

1 file changed

Lines changed: 41 additions & 24 deletions

File tree

CMakeLists.txt

Lines changed: 41 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -106,19 +106,28 @@ if(SD_WEBP)
106106
"Or link against system library:\n cmake (...) -DSD_USE_SYSTEM_WEBP=ON")
107107
endif()
108108
if(SD_USE_SYSTEM_WEBP)
109-
find_package(WebP REQUIRED)
110-
add_library(webp ALIAS WebP::webp)
111-
# libwebp CMake target naming is not consistent across versions/distros.
112-
# Some export WebP::libwebpmux, others export WebP::webpmux.
113-
if(TARGET WebP::libwebpmux)
114-
add_library(libwebpmux ALIAS WebP::libwebpmux)
115-
elseif(TARGET WebP::webpmux)
116-
add_library(libwebpmux ALIAS WebP::webpmux)
109+
find_package(WebP)
110+
if(WebP_FOUND)
111+
add_library(webp ALIAS WebP::webp)
112+
# libwebp CMake target naming is not consistent across versions/distros.
113+
# Some export WebP::libwebpmux, others export WebP::webpmux.
114+
if(TARGET WebP::libwebpmux)
115+
add_library(libwebpmux ALIAS WebP::libwebpmux)
116+
elseif(TARGET WebP::webpmux)
117+
add_library(libwebpmux ALIAS WebP::webpmux)
118+
else()
119+
message(FATAL_ERROR
120+
"Could not find a compatible webpmux target in system WebP package. "
121+
"Expected WebP::libwebpmux or WebP::webpmux."
122+
)
123+
endif()
117124
else()
118-
message(FATAL_ERROR
119-
"Could not find a compatible webpmux target in system WebP package. "
120-
"Expected WebP::libwebpmux or WebP::webpmux."
121-
)
125+
find_package(PkgConfig REQUIRED)
126+
pkg_check_modules(WebP REQUIRED IMPORTED_TARGET GLOBAL libwebp)
127+
pkg_check_modules(WebPMux REQUIRED IMPORTED_TARGET GLOBAL libwebpmux)
128+
link_libraries(PkgConfig::WebP)
129+
link_libraries(PkgConfig::WebPMux)
130+
add_library(libwebpmux ALIAS PkgConfig::WebPMux)
122131
endif()
123132
endif()
124133
endif()
@@ -133,18 +142,26 @@ if(SD_WEBM)
133142
"Or link against system library:\n cmake (...) -DSD_USE_SYSTEM_WEBM=ON")
134143
endif()
135144
if(SD_USE_SYSTEM_WEBM)
136-
find_path(WEBM_INCLUDE_DIR
137-
NAMES mkvmuxer/mkvmuxer.h mkvparser/mkvparser.h common/webmids.h
138-
PATH_SUFFIXES webm
139-
REQUIRED)
140-
find_library(WEBM_LIBRARY
141-
NAMES webm libwebm
142-
REQUIRED)
143-
144-
add_library(webm UNKNOWN IMPORTED)
145-
set_target_properties(webm PROPERTIES
146-
IMPORTED_LOCATION "${WEBM_LIBRARY}"
147-
INTERFACE_INCLUDE_DIRECTORIES "${WEBM_INCLUDE_DIR}")
145+
find_package(PkgConfig)
146+
if(PkgConfig_FOUND)
147+
pkg_check_modules(WebM REQUIRED IMPORTED_TARGET GLOBAL libwebm)
148+
endif()
149+
if(PkgConfig_FOUND AND WebM_FOUND)
150+
link_libraries(PkgConfig::WebM)
151+
else()
152+
find_path(WEBM_INCLUDE_DIR
153+
NAMES mkvmuxer/mkvmuxer.h mkvparser/mkvparser.h common/webmids.h
154+
PATH_SUFFIXES webm
155+
REQUIRED)
156+
find_library(WEBM_LIBRARY
157+
NAMES webm libwebm
158+
REQUIRED)
159+
160+
add_library(webm UNKNOWN IMPORTED)
161+
set_target_properties(webm PROPERTIES
162+
IMPORTED_LOCATION "${WEBM_LIBRARY}"
163+
INTERFACE_INCLUDE_DIRECTORIES "${WEBM_INCLUDE_DIR}")
164+
endif()
148165
endif()
149166
endif()
150167

0 commit comments

Comments
 (0)