Skip to content

Commit f7d2d45

Browse files
committed
Add JPEG-2000 native backend and CLI options
Introduce native JPEG-2000 support and wiring throughout the build, CLI, IO, and tests. - Add new native backend implementation (src/io/jpeg2000_backend.cpp + header) and wire it into image_backend.{cpp,h} and image_io/io_facade to route JP2/J2K/etc. to the native encoder/decoder when available. - Add typed Jpeg2000LoadOptions/Jpeg2000SaveOptions to include/rawgl/rawgl_io.h and map those options to attribute keys in io_facade. - Extend CLI parser and graph to accept JPEG-2000 specific options (in_jpeg2000_*, out_jpeg2000_*) and expose them in help text and option translation. - Update CMake files to add dependency hint lists, detect OpenJPEG/OpenJPH/JPEGXL/LibRaw headers, expose compile/link defines, and include the new backend in targets and tests. - Extend Image IO capability reporting to advertise jpeg2000, jpegxl and camera_raw codecs and added relevant details (versions, headers, native read/write flags). - Add tests and test scripts to exercise JPEG-2000 and sky-codec conversion paths. These changes enable optional native OpenJPEG/OpenJPH integration while falling back to OIIO when native support is unavailable.
1 parent cff97fb commit f7d2d45

26 files changed

Lines changed: 2105 additions & 80 deletions

cmake/rawgl_dependencies.cmake

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,20 @@ find_package(Threads REQUIRED)
22

33
set(RAWGL_EXTRA_WINDOWS_LIBS)
44

5+
set(rawgl_dependency_prefix_hints)
6+
set(rawgl_dependency_include_hints)
7+
set(rawgl_dependency_library_hints)
8+
if(RAWGL_LINUX_PREFIX)
9+
list(APPEND rawgl_dependency_prefix_hints "${RAWGL_LINUX_PREFIX}")
10+
list(APPEND rawgl_dependency_include_hints "${RAWGL_LINUX_PREFIX}/include")
11+
list(APPEND rawgl_dependency_library_hints "${RAWGL_LINUX_PREFIX}/lib")
12+
endif()
13+
if(RAWGL_WINDOWS_DEPS_ROOT)
14+
list(APPEND rawgl_dependency_prefix_hints "${RAWGL_WINDOWS_DEPS_ROOT}")
15+
list(APPEND rawgl_dependency_include_hints "${RAWGL_WINDOWS_DEPS_ROOT}/include")
16+
list(APPEND rawgl_dependency_library_hints "${RAWGL_WINDOWS_DEPS_ROOT}/lib")
17+
endif()
18+
519
if(WIN32)
620
include("${CMAKE_CURRENT_LIST_DIR}/rawgl_platform_windows.cmake")
721
else()
@@ -31,8 +45,11 @@ foreach(rawgl_oiio_target OpenImageIO::OpenImageIO OpenImageIO::OpenImageIO_Util
3145
if(WIN32)
3246
get_target_property(rawgl_oiio_iface_links ${rawgl_oiio_target} INTERFACE_LINK_LIBRARIES)
3347
if(rawgl_oiio_iface_links)
34-
string(REPLACE "E:/DVS" "${RAWGL_WINDOWS_DEPS_ROOT}" rawgl_oiio_iface_links "${rawgl_oiio_iface_links}")
35-
string(REPLACE "e:/DVS" "${RAWGL_WINDOWS_DEPS_ROOT}" rawgl_oiio_iface_links "${rawgl_oiio_iface_links}")
48+
foreach(rawgl_rewrite_root IN LISTS RAWGL_WINDOWS_IMPORTED_CONFIG_REWRITE_ROOTS)
49+
if(rawgl_rewrite_root AND RAWGL_WINDOWS_DEPS_ROOT)
50+
string(REPLACE "${rawgl_rewrite_root}" "${RAWGL_WINDOWS_DEPS_ROOT}" rawgl_oiio_iface_links "${rawgl_oiio_iface_links}")
51+
endif()
52+
endforeach()
3653
set_target_properties(${rawgl_oiio_target} PROPERTIES
3754
INTERFACE_LINK_LIBRARIES "${rawgl_oiio_iface_links}")
3855
endif()
@@ -46,10 +63,7 @@ endif()
4663

4764
find_path(RAWGL_SPDLOG_INCLUDE_DIR
4865
NAMES spdlog/spdlog.h
49-
HINTS
50-
"${RAWGL_LINUX_PREFIX}/include"
51-
"${RAWGL_WINDOWS_DEPS_ROOT}/include"
52-
"/mnt/e/DVS/include")
66+
HINTS ${rawgl_dependency_include_hints})
5367

5468
if(NOT RAWGL_SPDLOG_INCLUDE_DIR)
5569
message(FATAL_ERROR "spdlog headers were not found. Set CMAKE_PREFIX_PATH or RAWGL_WINDOWS_DEPS_ROOT so spdlog/spdlog.h is available.")
@@ -68,29 +82,26 @@ endif()
6882

6983
find_path(RAWGL_LIBRAW_INCLUDE_DIR
7084
NAMES libraw/libraw.h
71-
HINTS
72-
"${RAWGL_LINUX_PREFIX}/include"
73-
"${RAWGL_WINDOWS_DEPS_ROOT}/include"
74-
"/mnt/e/DVR/include")
85+
HINTS ${rawgl_dependency_include_hints})
7586

7687
if(NOT RAWGL_LIBRAW_INCLUDE_DIR)
7788
message(FATAL_ERROR "libraw headers were not found. Set CMAKE_PREFIX_PATH or RAWGL_WINDOWS_DEPS_ROOT so libraw/libraw.h is available.")
7889
endif()
7990

91+
find_path(RAWGL_JXL_INCLUDE_DIR
92+
NAMES jxl/decode.h
93+
HINTS ${rawgl_dependency_include_hints})
94+
8095
find_package(OpenMeta CONFIG QUIET)
8196
find_path(RAWGL_OPENMETA_INCLUDE_DIR
8297
NAMES openmeta/simple_meta.h
83-
HINTS
84-
"${RAWGL_LINUX_PREFIX}"
85-
"${RAWGL_WINDOWS_DEPS_ROOT}"
98+
HINTS ${rawgl_dependency_prefix_hints}
8699
PATH_SUFFIXES
87100
include
88101
src/include)
89102
find_library(RAWGL_OPENMETA_LIBRARY
90103
NAMES openmeta openmetad libopenmeta
91-
HINTS
92-
"${RAWGL_LINUX_PREFIX}"
93-
"${RAWGL_WINDOWS_DEPS_ROOT}"
104+
HINTS ${rawgl_dependency_prefix_hints}
94105
PATH_SUFFIXES
95106
lib
96107
build
@@ -112,6 +123,5 @@ endif()
112123
if(NOT WIN32)
113124
find_library(RAWGL_HARFBUZZ_LIBRARY
114125
NAMES harfbuzz libharfbuzz
115-
HINTS
116-
"${RAWGL_LINUX_PREFIX}/lib")
126+
HINTS ${rawgl_dependency_library_hints})
117127
endif()

cmake/rawgl_helpers.cmake

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,15 @@ function(rawgl_add_windows_imported_library target_name)
33
if(TARGET ${target_name})
44
return()
55
endif()
6+
if(ARG_RELEASE AND NOT EXISTS "${ARG_RELEASE}")
7+
set(ARG_RELEASE "")
8+
endif()
9+
if(ARG_DEBUG AND NOT EXISTS "${ARG_DEBUG}")
10+
set(ARG_DEBUG "")
11+
endif()
12+
if(NOT ARG_RELEASE AND NOT ARG_DEBUG)
13+
return()
14+
endif()
615

716
add_library(${target_name} UNKNOWN IMPORTED)
817
if(ARG_INCLUDE_DIR)

cmake/rawgl_options.cmake

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
include(GNUInstallDirs)
22

3-
set(RAWGL_LINUX_PREFIX "" CACHE PATH "Linux dependency prefix, for example /mnt/e/UBc/Release or /mnt/e/UBc/Debug")
4-
set(RAWGL_WINDOWS_DEPS_ROOT "E:/DVS" CACHE PATH "Windows dependency root used by the static CMake build")
5-
set(RAWGL_WINDOWS_DNG_SDK_ROOT "W:/VisualStudio/dng_sdk_1_7_1" CACHE PATH "Windows DNG SDK root used to resolve dng_sdk.lib for static builds")
6-
set(RAWGL_WINDOWS_DNG_LIBRARY_RELEASE "${RAWGL_WINDOWS_DNG_SDK_ROOT}/dng_sdk/projects/win/x64/Release/dng_sdk.lib" CACHE FILEPATH "Windows release DNG SDK library")
7-
set(RAWGL_WINDOWS_DNG_LIBRARY_DEBUG "${RAWGL_WINDOWS_DNG_SDK_ROOT}/dng_sdk/projects/win/x64/Debug/dng_sdk.lib" CACHE FILEPATH "Windows debug DNG SDK library")
8-
set(RAWGL_WINDOWS_XMP_CORE_LIBRARY_RELEASE "${RAWGL_WINDOWS_DEPS_ROOT}/lib/XMPCoreStaticRelease.lib" CACHE FILEPATH "Windows release XMP core library")
9-
set(RAWGL_WINDOWS_XMP_CORE_LIBRARY_DEBUG "${RAWGL_WINDOWS_DEPS_ROOT}/lib/XMPCoreStaticDebug.lib" CACHE FILEPATH "Windows debug XMP core library")
10-
set(RAWGL_WINDOWS_XMP_FILES_LIBRARY_RELEASE "${RAWGL_WINDOWS_DEPS_ROOT}/lib/XMPFilesStaticRelease.lib" CACHE FILEPATH "Windows release XMP files library")
11-
set(RAWGL_WINDOWS_XMP_FILES_LIBRARY_DEBUG "${RAWGL_WINDOWS_DEPS_ROOT}/lib/XMPFilesStaticDebug.lib" CACHE FILEPATH "Windows debug XMP files library")
3+
set(RAWGL_LINUX_PREFIX "" CACHE PATH "Optional Linux dependency prefix prepended to CMAKE_PREFIX_PATH.")
4+
set(RAWGL_WINDOWS_DEPS_ROOT "" CACHE PATH "Optional Windows dependency root for legacy static-library fallback discovery.")
5+
set(RAWGL_WINDOWS_IMPORTED_CONFIG_REWRITE_ROOTS "" CACHE STRING "Optional semicolon-separated stale roots to rewrite in imported Windows package configs.")
6+
set(RAWGL_WINDOWS_DNG_SDK_ROOT "" CACHE PATH "Optional Windows DNG SDK root used to resolve dng_sdk.lib for static builds.")
7+
set(RAWGL_WINDOWS_DNG_LIBRARY_RELEASE "" CACHE FILEPATH "Windows release DNG SDK library")
8+
set(RAWGL_WINDOWS_DNG_LIBRARY_DEBUG "" CACHE FILEPATH "Windows debug DNG SDK library")
9+
set(RAWGL_WINDOWS_XMP_CORE_LIBRARY_RELEASE "" CACHE FILEPATH "Windows release XMP core library")
10+
set(RAWGL_WINDOWS_XMP_CORE_LIBRARY_DEBUG "" CACHE FILEPATH "Windows debug XMP core library")
11+
set(RAWGL_WINDOWS_XMP_FILES_LIBRARY_RELEASE "" CACHE FILEPATH "Windows release XMP files library")
12+
set(RAWGL_WINDOWS_XMP_FILES_LIBRARY_DEBUG "" CACHE FILEPATH "Windows debug XMP files library")
1213
set(RAWGL_MINIPLY_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/miniply" CACHE PATH "Directory containing miniply.h")
1314
option(RAWGL_WINDOWS_UTF8 "Compile all Windows/MSVC targets with /utf-8." ON)
1415
set(RAWGL_WINDOWS_DEBUG_SUFFIX "d" CACHE STRING "Suffix applied to Windows Debug target output names.")

cmake/rawgl_platform_linux.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ endif()
6666
find_package(dng_sdk CONFIG QUIET)
6767
find_package(libheif CONFIG QUIET)
6868
find_package(libuhdr QUIET CONFIG)
69+
find_package(openjph CONFIG QUIET)
6970
find_package(OpenJPEG CONFIG QUIET)
7071
if(NOT TARGET openjp2)
7172
find_package(OpenJPEG QUIET)

cmake/rawgl_platform_windows.cmake

Lines changed: 52 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,59 @@
11
find_package(OpenGL REQUIRED)
2+
find_package(ZLIB QUIET)
23

34
set(GLEW_USE_STATIC_LIBS ON)
45
set(ZLIB_USE_STATIC_LIBS ON)
56

6-
if(NOT TARGET ZLIB::ZLIB)
7+
if(RAWGL_WINDOWS_DEPS_ROOT AND NOT TARGET ZLIB::ZLIB)
78
rawgl_add_windows_imported_library(ZLIB::ZLIB
89
INCLUDE_DIR "${RAWGL_WINDOWS_DEPS_ROOT}/include"
910
RELEASE "${RAWGL_WINDOWS_DEPS_ROOT}/lib/zlibstatic.lib"
1011
DEBUG "${RAWGL_WINDOWS_DEPS_ROOT}/lib/zlibstaticd.lib")
1112
endif()
12-
if(NOT TARGET ZLIB::ZLIBSTATIC)
13+
if(RAWGL_WINDOWS_DEPS_ROOT AND NOT TARGET ZLIB::ZLIBSTATIC)
1314
rawgl_add_windows_imported_library(ZLIB::ZLIBSTATIC
1415
INCLUDE_DIR "${RAWGL_WINDOWS_DEPS_ROOT}/include"
1516
RELEASE "${RAWGL_WINDOWS_DEPS_ROOT}/lib/zlibstatic.lib"
1617
DEBUG "${RAWGL_WINDOWS_DEPS_ROOT}/lib/zlibstaticd.lib")
1718
endif()
18-
set(ZLIB_FOUND TRUE)
19-
set(ZLIB_INCLUDE_DIR "${RAWGL_WINDOWS_DEPS_ROOT}/include")
20-
set(ZLIB_INCLUDE_DIRS "${RAWGL_WINDOWS_DEPS_ROOT}/include")
21-
set(ZLIB_LIBRARIES ZLIB::ZLIB)
19+
if(TARGET ZLIB::ZLIB)
20+
set(ZLIB_FOUND TRUE)
21+
if(RAWGL_WINDOWS_DEPS_ROOT AND NOT ZLIB_INCLUDE_DIR)
22+
set(ZLIB_INCLUDE_DIR "${RAWGL_WINDOWS_DEPS_ROOT}/include")
23+
set(ZLIB_INCLUDE_DIRS "${RAWGL_WINDOWS_DEPS_ROOT}/include")
24+
endif()
25+
set(ZLIB_LIBRARIES ZLIB::ZLIB)
26+
endif()
2227

23-
set(PNG_LIBRARY_RELEASE "${RAWGL_WINDOWS_DEPS_ROOT}/lib/libpng18_static.lib" CACHE FILEPATH "libpng release library" FORCE)
24-
set(PNG_LIBRARY_DEBUG "${RAWGL_WINDOWS_DEPS_ROOT}/lib/libpng18_staticd.lib" CACHE FILEPATH "libpng debug library" FORCE)
25-
set(PNG_LIBRARY "optimized;${PNG_LIBRARY_RELEASE};debug;${PNG_LIBRARY_DEBUG}" CACHE STRING "libpng libraries" FORCE)
26-
set(PNG_INCLUDE_DIR "${RAWGL_WINDOWS_DEPS_ROOT}/include/libpng18" CACHE PATH "libpng include dir" FORCE)
27-
set(PNG_PNG_INCLUDE_DIR "${RAWGL_WINDOWS_DEPS_ROOT}/include/libpng18" CACHE PATH "libpng include dir (png.h)" FORCE)
28-
set(PNG_FOUND TRUE CACHE BOOL "libpng found manually for Windows static build" FORCE)
28+
if(RAWGL_WINDOWS_DEPS_ROOT)
29+
set(rawgl_png_library_release "${RAWGL_WINDOWS_DEPS_ROOT}/lib/libpng18_static.lib")
30+
set(rawgl_png_library_debug "${RAWGL_WINDOWS_DEPS_ROOT}/lib/libpng18_staticd.lib")
31+
if(EXISTS "${rawgl_png_library_release}" OR EXISTS "${rawgl_png_library_debug}")
32+
set(PNG_LIBRARY_RELEASE "${rawgl_png_library_release}" CACHE FILEPATH "libpng release library" FORCE)
33+
set(PNG_LIBRARY_DEBUG "${rawgl_png_library_debug}" CACHE FILEPATH "libpng debug library" FORCE)
34+
set(PNG_LIBRARY "optimized;${PNG_LIBRARY_RELEASE};debug;${PNG_LIBRARY_DEBUG}" CACHE STRING "libpng libraries" FORCE)
35+
set(PNG_INCLUDE_DIR "${RAWGL_WINDOWS_DEPS_ROOT}/include/libpng18" CACHE PATH "libpng include dir" FORCE)
36+
set(PNG_PNG_INCLUDE_DIR "${RAWGL_WINDOWS_DEPS_ROOT}/include/libpng18" CACHE PATH "libpng include dir (png.h)" FORCE)
37+
set(PNG_FOUND TRUE CACHE BOOL "libpng found manually for Windows static build" FORCE)
2938

30-
if(NOT TARGET PNG::PNG)
31-
add_library(PNG::PNG UNKNOWN IMPORTED)
32-
set_target_properties(PNG::PNG PROPERTIES
33-
INTERFACE_INCLUDE_DIRECTORIES "${PNG_PNG_INCLUDE_DIR}")
34-
set_property(TARGET PNG::PNG APPEND PROPERTY IMPORTED_CONFIGURATIONS Release)
35-
set_target_properties(PNG::PNG PROPERTIES
36-
IMPORTED_LOCATION_RELEASE "${PNG_LIBRARY_RELEASE}")
37-
set_property(TARGET PNG::PNG APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug)
38-
set_target_properties(PNG::PNG PROPERTIES
39-
IMPORTED_LOCATION_DEBUG "${PNG_LIBRARY_DEBUG}")
39+
if(NOT TARGET PNG::PNG)
40+
add_library(PNG::PNG UNKNOWN IMPORTED)
41+
set_target_properties(PNG::PNG PROPERTIES
42+
INTERFACE_INCLUDE_DIRECTORIES "${PNG_PNG_INCLUDE_DIR}")
43+
if(EXISTS "${PNG_LIBRARY_RELEASE}")
44+
set_property(TARGET PNG::PNG APPEND PROPERTY IMPORTED_CONFIGURATIONS Release)
45+
set_target_properties(PNG::PNG PROPERTIES
46+
IMPORTED_LOCATION_RELEASE "${PNG_LIBRARY_RELEASE}")
47+
endif()
48+
if(EXISTS "${PNG_LIBRARY_DEBUG}")
49+
set_property(TARGET PNG::PNG APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug)
50+
set_target_properties(PNG::PNG PROPERTIES
51+
IMPORTED_LOCATION_DEBUG "${PNG_LIBRARY_DEBUG}")
52+
endif()
53+
endif()
54+
endif()
4055
endif()
41-
if(NOT TARGET PNG::png_static)
56+
if(TARGET PNG::PNG AND NOT TARGET PNG::png_static)
4257
add_library(PNG::png_static INTERFACE IMPORTED)
4358
set_target_properties(PNG::png_static PROPERTIES
4459
INTERFACE_LINK_LIBRARIES "PNG::PNG")
@@ -59,7 +74,7 @@ elseif(TARGET zstd::libzstd AND NOT TARGET ZSTD::ZSTD)
5974
add_library(ZSTD::ZSTD INTERFACE IMPORTED)
6075
set_target_properties(ZSTD::ZSTD PROPERTIES
6176
INTERFACE_LINK_LIBRARIES "zstd::libzstd")
62-
elseif(NOT TARGET ZSTD::ZSTD)
77+
elseif(RAWGL_WINDOWS_DEPS_ROOT AND NOT TARGET ZSTD::ZSTD)
6378
rawgl_add_windows_imported_library(ZSTD::ZSTD
6479
INCLUDE_DIR "${RAWGL_WINDOWS_DEPS_ROOT}/include"
6580
RELEASE "${RAWGL_WINDOWS_DEPS_ROOT}/lib/zstd_static.lib"
@@ -70,14 +85,14 @@ if(TARGET libdeflate::libdeflate_static AND NOT TARGET Deflate::Deflate)
7085
add_library(Deflate::Deflate INTERFACE IMPORTED)
7186
set_target_properties(Deflate::Deflate PROPERTIES
7287
INTERFACE_LINK_LIBRARIES "libdeflate::libdeflate_static")
73-
elseif(NOT TARGET Deflate::Deflate)
88+
elseif(RAWGL_WINDOWS_DEPS_ROOT AND NOT TARGET Deflate::Deflate)
7489
rawgl_add_windows_imported_library(Deflate::Deflate
7590
INCLUDE_DIR "${RAWGL_WINDOWS_DEPS_ROOT}/include"
7691
RELEASE "${RAWGL_WINDOWS_DEPS_ROOT}/lib/deflatestatic.lib"
7792
DEBUG "${RAWGL_WINDOWS_DEPS_ROOT}/lib/deflatestaticd.lib")
7893
endif()
7994

80-
if(NOT TARGET liblzma::liblzma)
95+
if(RAWGL_WINDOWS_DEPS_ROOT AND NOT TARGET liblzma::liblzma)
8196
rawgl_add_windows_imported_library(liblzma::liblzma
8297
INCLUDE_DIR "${RAWGL_WINDOWS_DEPS_ROOT}/include"
8398
RELEASE "${RAWGL_WINDOWS_DEPS_ROOT}/lib/lzma.lib"
@@ -86,19 +101,19 @@ if(NOT TARGET liblzma::liblzma)
86101
INTERFACE_COMPILE_DEFINITIONS "LZMA_API_STATIC")
87102
endif()
88103

89-
if(NOT TARGET ICU::uc)
104+
if(RAWGL_WINDOWS_DEPS_ROOT AND NOT TARGET ICU::uc)
90105
rawgl_add_windows_imported_library(ICU::uc
91106
INCLUDE_DIR "${RAWGL_WINDOWS_DEPS_ROOT}/include"
92107
RELEASE "${RAWGL_WINDOWS_DEPS_ROOT}/lib/icuuc.lib"
93108
DEBUG "${RAWGL_WINDOWS_DEPS_ROOT}/lib/icuuc.lib")
94109
endif()
95-
if(NOT TARGET ICU::i18n AND EXISTS "${RAWGL_WINDOWS_DEPS_ROOT}/lib/icuin.lib")
110+
if(RAWGL_WINDOWS_DEPS_ROOT AND NOT TARGET ICU::i18n AND EXISTS "${RAWGL_WINDOWS_DEPS_ROOT}/lib/icuin.lib")
96111
rawgl_add_windows_imported_library(ICU::i18n
97112
INCLUDE_DIR "${RAWGL_WINDOWS_DEPS_ROOT}/include"
98113
RELEASE "${RAWGL_WINDOWS_DEPS_ROOT}/lib/icuin.lib"
99114
DEBUG "${RAWGL_WINDOWS_DEPS_ROOT}/lib/icuin.lib")
100115
endif()
101-
if(NOT TARGET ICU::data AND EXISTS "${RAWGL_WINDOWS_DEPS_ROOT}/lib/icudt.lib")
116+
if(RAWGL_WINDOWS_DEPS_ROOT AND NOT TARGET ICU::data AND EXISTS "${RAWGL_WINDOWS_DEPS_ROOT}/lib/icudt.lib")
102117
rawgl_add_windows_imported_library(ICU::data
103118
INCLUDE_DIR "${RAWGL_WINDOWS_DEPS_ROOT}/include"
104119
RELEASE "${RAWGL_WINDOWS_DEPS_ROOT}/lib/icudt.lib"
@@ -119,8 +134,8 @@ if(NOT TARGET GIF::GIF)
119134
add_library(GIF::GIF INTERFACE IMPORTED)
120135
set_target_properties(GIF::GIF PROPERTIES
121136
INTERFACE_LINK_LIBRARIES "GIFLIB::GIFLIB")
122-
elseif(EXISTS "${RAWGL_WINDOWS_DEPS_ROOT}/lib/gif.lib"
123-
OR EXISTS "${RAWGL_WINDOWS_DEPS_ROOT}/lib/gifd.lib")
137+
elseif(RAWGL_WINDOWS_DEPS_ROOT AND EXISTS "${RAWGL_WINDOWS_DEPS_ROOT}/lib/gif.lib"
138+
OR RAWGL_WINDOWS_DEPS_ROOT AND EXISTS "${RAWGL_WINDOWS_DEPS_ROOT}/lib/gifd.lib")
124139
rawgl_add_windows_imported_library(GIF::GIF
125140
INCLUDE_DIR "${RAWGL_WINDOWS_DEPS_ROOT}/include"
126141
RELEASE "${RAWGL_WINDOWS_DEPS_ROOT}/lib/gif.lib"
@@ -135,7 +150,7 @@ find_package(AOM CONFIG QUIET)
135150
find_package(harfbuzz CONFIG QUIET)
136151
find_package(freetype CONFIG QUIET)
137152
find_package(libheif CONFIG QUIET)
138-
if(NOT TARGET pystring::pystring)
153+
if(RAWGL_WINDOWS_DEPS_ROOT AND NOT TARGET pystring::pystring)
139154
rawgl_add_windows_imported_library(pystring::pystring
140155
INCLUDE_DIR "${RAWGL_WINDOWS_DEPS_ROOT}/include"
141156
RELEASE "${RAWGL_WINDOWS_DEPS_ROOT}/lib/pystring.lib"
@@ -187,31 +202,32 @@ if(TARGET harfbuzz::harfbuzz AND NOT TARGET HarfBuzz::HarfBuzz)
187202
INTERFACE_LINK_LIBRARIES "harfbuzz::harfbuzz")
188203
endif()
189204

190-
if(NOT TARGET BZip2::BZip2)
205+
if(RAWGL_WINDOWS_DEPS_ROOT AND NOT TARGET BZip2::BZip2)
191206
rawgl_add_windows_imported_library(BZip2::BZip2
192207
INCLUDE_DIR "${RAWGL_WINDOWS_DEPS_ROOT}/include"
193208
RELEASE "${RAWGL_WINDOWS_DEPS_ROOT}/lib/bz2.lib"
194209
DEBUG "${RAWGL_WINDOWS_DEPS_ROOT}/lib/bz2d.lib")
195210
endif()
196-
if(NOT TARGET WebP::webp)
211+
if(RAWGL_WINDOWS_DEPS_ROOT AND NOT TARGET WebP::webp)
197212
rawgl_add_windows_imported_library(WebP::webp
198213
INCLUDE_DIR "${RAWGL_WINDOWS_DEPS_ROOT}/include"
199214
RELEASE "${RAWGL_WINDOWS_DEPS_ROOT}/lib/libwebp.lib"
200215
DEBUG "${RAWGL_WINDOWS_DEPS_ROOT}/lib/libwebpd.lib")
201216
endif()
202-
if(NOT TARGET WebP::webpdemux)
217+
if(RAWGL_WINDOWS_DEPS_ROOT AND NOT TARGET WebP::webpdemux)
203218
rawgl_add_windows_imported_library(WebP::webpdemux
204219
INCLUDE_DIR "${RAWGL_WINDOWS_DEPS_ROOT}/include"
205220
RELEASE "${RAWGL_WINDOWS_DEPS_ROOT}/lib/libwebpdemux.lib"
206221
DEBUG "${RAWGL_WINDOWS_DEPS_ROOT}/lib/libwebpdemuxd.lib")
207222
endif()
208-
if(NOT TARGET WebP::libwebpmux)
223+
if(RAWGL_WINDOWS_DEPS_ROOT AND NOT TARGET WebP::libwebpmux)
209224
rawgl_add_windows_imported_library(WebP::libwebpmux
210225
INCLUDE_DIR "${RAWGL_WINDOWS_DEPS_ROOT}/include"
211226
RELEASE "${RAWGL_WINDOWS_DEPS_ROOT}/lib/libwebpmux.lib"
212227
DEBUG "${RAWGL_WINDOWS_DEPS_ROOT}/lib/libwebpmuxd.lib")
213228
endif()
214229
if(NOT TARGET libuhdr::libuhdr
230+
AND RAWGL_WINDOWS_DEPS_ROOT
215231
AND EXISTS "${RAWGL_WINDOWS_DEPS_ROOT}/lib/uhdr.lib")
216232
rawgl_add_windows_imported_library(libuhdr::libuhdr
217233
INCLUDE_DIR "${RAWGL_WINDOWS_DEPS_ROOT}/include"

cmake/rawgl_targets.cmake

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ set(RAWGL_IO_SOURCES
2828
src/io/image_io.cpp
2929
src/io/io_facade.cpp
3030
src/io/io_runtime.cpp
31+
src/io/jpeg2000_backend.cpp
3132
src/io/jpg_backend.cpp
3233
src/io/metadata_reader.cpp
3334
src/io/openmeta_bridge.cpp
@@ -151,6 +152,19 @@ endif()
151152
if(TARGET OpenEXR::OpenEXR)
152153
target_compile_definitions(rawgl_io PRIVATE RAWGL_HAS_OPENEXR=1)
153154
endif()
155+
if(TARGET openjp2)
156+
target_compile_definitions(rawgl_io PRIVATE RAWGL_HAS_OPENJPEG=1)
157+
endif()
158+
if(TARGET openjph)
159+
target_compile_definitions(rawgl_io PRIVATE RAWGL_HAS_OPENJPH=1)
160+
endif()
161+
if(RAWGL_LIBRAW_INCLUDE_DIR)
162+
target_compile_definitions(rawgl_io PRIVATE RAWGL_HAS_LIBRAW_HEADERS=1)
163+
endif()
164+
if(RAWGL_JXL_INCLUDE_DIR)
165+
target_compile_definitions(rawgl_io PRIVATE RAWGL_HAS_JPEGXL_HEADERS=1)
166+
target_include_directories(rawgl_io PRIVATE "${RAWGL_JXL_INCLUDE_DIR}")
167+
endif()
154168

155169
target_compile_definitions(rawgl_batch PRIVATE
156170
_CRT_SECURE_NO_WARNINGS
@@ -212,6 +226,12 @@ endif()
212226
if(TARGET OpenEXR::OpenEXR)
213227
target_link_libraries(rawgl_io PUBLIC OpenEXR::OpenEXR)
214228
endif()
229+
if(TARGET openjp2)
230+
target_link_libraries(rawgl_io PUBLIC openjp2)
231+
endif()
232+
if(TARGET openjph)
233+
target_link_libraries(rawgl_io PUBLIC openjph)
234+
endif()
215235

216236
if(RAWGL_HAS_OPENMETA)
217237
target_link_libraries(rawgl_io PUBLIC OpenMeta::openmeta)

0 commit comments

Comments
 (0)