Skip to content

Commit 036cbbc

Browse files
committed
CMake: detect JPEG XL
1 parent 776a0b0 commit 036cbbc

File tree

4 files changed

+63
-0
lines changed

4 files changed

+63
-0
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ else()
8080
set(ALLOW_DOWNLOADING_PUGIXML OFF CACHE BOOL "If pugixml src tree is not found in location specified by PUGIXML_PATH, do fetch the archive from internet" FORCE)
8181
endif()
8282
option(WITH_JPEG "Enable JPEG support for DNG Lossy JPEG support" ON)
83+
option(WITH_JXL "Enable JPEG XL support for DNG JPEG XL support" ON)
8384
option(WITH_ZLIB "Enable ZLIB support for DNG deflate support" ON)
8485
if(WITH_ZLIB)
8586
option(USE_BUNDLED_ZLIB "Build and use zlib in-tree" OFF)

cmake/Modules/FindJXL.cmake

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Find libjxl
2+
# Will define:
3+
# - JXL_FOUND
4+
# - JXL_INCLUDE_DIRS directory to include for libjxl headers
5+
# - JXL_LIBRARIES libraries to link to
6+
# - JXL_VERSION
7+
8+
find_package(PkgConfig QUIET REQUIRED)
9+
pkg_check_modules(JXL_PKGCONF QUIET libjxl)
10+
11+
if(JXL_PKGCONF_VERSION)
12+
set(JXL_VERSION ${JXL_PKGCONF_VERSION})
13+
endif()
14+
15+
find_path(JXL_INCLUDE_DIR
16+
NAMES jxl/decode.h
17+
HINTS ${JXL_PKGCONF_INCLUDE_DIRS})
18+
mark_as_advanced(JXL_INCLUDE_DIR)
19+
20+
find_library(JXL_LIBRARY
21+
NAMES jxl
22+
HINTS ${JXL_PKGCONF_LIBRARY_DIRS})
23+
mark_as_advanced(JXL_LIBRARY)
24+
25+
include(FindPackageHandleStandardArgs)
26+
find_package_handle_standard_args(JXL
27+
REQUIRED_VARS JXL_LIBRARY JXL_INCLUDE_DIR
28+
VERSION_VAR JXL_VERSION)
29+
30+
if(JXL_FOUND)
31+
set(JXL_INCLUDE_DIRS ${JXL_INCLUDE_DIR})
32+
set(JXL_LIBRARIES ${JXL_LIBRARY})
33+
endif()

cmake/src-dependencies.cmake

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,33 @@ else()
184184
endif()
185185
add_feature_info("Lossy JPEG decoding" HAVE_JPEG "used for DNG Lossy JPEG compression decoding")
186186

187+
unset(HAVE_JXL)
188+
if(WITH_JXL)
189+
message(STATUS "Looking for JPEG XL")
190+
find_package(JXL)
191+
if(NOT JXL_FOUND)
192+
message(SEND_ERROR "Did not find JPEG XL! Either make it find JPEG XL, or pass -DWITH_JXL=OFF to disable JPEG XL.")
193+
else()
194+
message(STATUS "Looking for JPEG XL - found")
195+
set(HAVE_JXL 1)
196+
197+
if(NOT TARGET JXL::jxl)
198+
add_library(JXL::jxl INTERFACE IMPORTED)
199+
set_property(TARGET JXL::jxl PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${JXL_INCLUDE_DIRS}")
200+
set_property(TARGET JXL::jxl PROPERTY INTERFACE_LINK_LIBRARIES "${JXL_LIBRARIES}")
201+
endif()
202+
203+
target_link_libraries(rawspeed PRIVATE JXL::jxl)
204+
set_package_properties(JXL PROPERTIES
205+
TYPE RECOMMENDED
206+
DESCRIPTION "library for handling the JPEG XL image data format, implements a JPEG XL codec"
207+
PURPOSE "Used for decoding DNG JPEG XL compression")
208+
endif()
209+
else()
210+
message(STATUS "JPEG XL is disabled, DNG JPEG XL support won't be available.")
211+
endif()
212+
add_feature_info("JPEG XL decoding" HAVE_JXL "used for DNG JPEG XL compression decoding")
213+
187214
unset(HAVE_ZLIB)
188215
if (WITH_ZLIB)
189216
message(STATUS "Looking for ZLIB")

src/config.h.in

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ static_assert(RAWSPEED_LARGEPAGESIZE >= RAWSPEED_PAGESIZE,
6565
#cmakedefine HAVE_JPEG
6666
#cmakedefine HAVE_JPEG_MEM_SRC
6767

68+
#cmakedefine HAVE_JXL
69+
6870
#cmakedefine HAVE_CXX_THREAD_LOCAL
6971
#cmakedefine HAVE_GCC_THREAD_LOCAL
7072

0 commit comments

Comments
 (0)