1+ # Macro to check pkg-config modules and produce a full-path library list 
2+ macro (pkg_check_modules_fullpath_libs PREFIX  MODULE_NAME)
3+ 	# Call pkg_check_modules 
4+ 	pkg_check_modules(${PREFIX}  REQUIRED IMPORTED_TARGET ${MODULE_NAME} )
5+ 	if (${PREFIX} _FOUND)
6+ 		set (${PREFIX} _FULLPATH_LIBRARIES ""  PARENT_SCOPE)
7+ 		foreach (lib ${${PREFIX} _LIBRARIES})
8+ 			set (lib_path "" )
9+ 			set (lib_prefix "" )
10+ 			set (lib_ext "" )
11+ 			if (WIN32 )
12+ 				set (lib_ext ".lib" )
13+ 			else ()
14+ 				set (lib_prefix "lib" )
15+ 				set (lib_ext ".a" )
16+ 			endif ()
17+ 			# Skip system libraries like 'm' on Windows 
18+ 			if (WIN32  AND  (lib STREQUAL  "m" ))
19+ 				continue ()
20+ 			endif ()
21+ 			# If lib already has a path, use as is 
22+ 			if (EXISTS  "${lib_prefix}${lib}${lib_ext} " )
23+ 				set (lib_path "${lib_prefix}${lib}${lib_ext} " )
24+ 			else ()
25+ 				foreach (dir ${${PREFIX} _LIBRARY_DIRS})
26+ 					if (EXISTS  "${dir} /${lib_prefix}${lib}${lib_ext} " )
27+ 						set (lib_path "${dir} /${lib_prefix}${lib}${lib_ext} " )
28+ 						break ()
29+ 					endif ()
30+ 				endforeach ()
31+ 			endif ()
32+ 			if (NOT  lib_path STREQUAL  "" )
33+ 				list (APPEND  ${PREFIX} _FULLPATH_LIBRARIES "${lib_path} " )
34+ 			else ()
35+ 				list (APPEND  ${PREFIX} _FULLPATH_LIBRARIES "${lib} " )
36+ 			endif ()
37+ 		endforeach ()
38+ 		set (${PREFIX} _FULLPATH_LIBRARIES "${${PREFIX} _FULLPATH_LIBRARIES}"  PARENT_SCOPE)
39+ 		message (STATUS  "Found ${MODULE_NAME} : ${${PREFIX} _VERSION} libs: ${${PREFIX} _FULLPATH_LIBRARIES}" )
40+ 	else ()
41+ 		set (${PREFIX} _FULLPATH_LIBRARIES ""  PARENT_SCOPE)
42+ 		message (STATUS  "${MODULE_NAME}  not found, support will be disabled" )
43+ 	endif ()
44+ endmacro ()
45+ 
146# Find required packages 
247FIND_PACKAGE (PNG QUIET )
348if (PNG_FOUND)
@@ -15,6 +60,14 @@ if(JPEG_FOUND)
1560else ()
1661	SET (JPEG_LIBRARIES "" )
1762endif ()
63+ FIND_PACKAGE (PkgConfig REQUIRED)
64+ pkg_check_modules_fullpath_libs(JPEGXL libjxl)
65+ if (JPEGXL_FOUND)
66+ 	SET (_USE_JXL TRUE  CACHE  INTERNAL  "" )
67+ 	set (JPEGXL_LIBRARIES ${JPEGXL_FULLPATH_LIBRARIES} )
68+ else ()
69+ 	SET (JPEGXL_LIBRARIES "" )
70+ endif ()
1871FIND_PACKAGE (TIFF QUIET )
1972if (TIFF_FOUND)
2073	INCLUDE_DIRECTORIES (${TIFF_INCLUDE_DIR} )
@@ -38,7 +91,7 @@ IF(CMAKE_VERSION VERSION_GREATER_EQUAL 3.16.0)
3891endif ()
3992
4093# Link its dependencies 
41- TARGET_LINK_LIBRARIES (IO Common ${PNG_LIBRARIES}  ${JPEG_LIBRARIES}  ${TIFF_LIBRARIES}  ${EXIV2_LIBS} )
94+ TARGET_LINK_LIBRARIES (IO Common ${PNG_LIBRARIES}  ${JPEG_LIBRARIES}  ${JPEGXL_LIBRARIES}    ${ TIFF_LIBRARIES}  ${EXIV2_LIBS} )
4295
4396# Install 
4497SET_TARGET_PROPERTIES (IO PROPERTIES
0 commit comments