@@ -21,6 +21,22 @@ function(rawgl_windows_find_prefixed_library out_var library_name)
2121 set (${out_var} "${rawgl_found_library} " PARENT_SCOPE )
2222endfunction ()
2323
24+ function (rawgl_windows_find_prefixed_library_ordered out_var )
25+ set (rawgl_found_library)
26+ foreach (rawgl_library_name ${ARGN} )
27+ if (NOT rawgl_library_name)
28+ continue ()
29+ endif ()
30+ string (REGEX REPLACE "\\ .lib$" "" rawgl_library_stem "${rawgl_library_name} " )
31+ rawgl_windows_find_prefixed_library (rawgl_candidate "${rawgl_library_stem} " )
32+ if (rawgl_candidate)
33+ set (rawgl_found_library "${rawgl_candidate} " )
34+ break ()
35+ endif ()
36+ endforeach ()
37+ set (${out_var} "${rawgl_found_library} " PARENT_SCOPE )
38+ endfunction ()
39+
2440function (rawgl_windows_find_prefixed_library_any out_var )
2541 set (rawgl_found_library)
2642 foreach (rawgl_library_name ${ARGN} )
@@ -33,6 +49,137 @@ function(rawgl_windows_find_prefixed_library_any out_var)
3349 set (${out_var} "${rawgl_found_library} " PARENT_SCOPE )
3450endfunction ()
3551
52+ function (rawgl_windows_find_dual_config_library out_var config_name release_name debug_name )
53+ set (rawgl_debug_postfix "${RAWGL_WINDOWS_DEBUG_SUFFIX} " )
54+ if (NOT rawgl_debug_postfix )
55+ set (rawgl_debug_postfix "d" )
56+ endif ()
57+
58+ set (rawgl_candidate_names)
59+ if (config_name STREQUAL "Debug" )
60+ if (debug_name)
61+ list (APPEND rawgl_candidate_names
62+ "${debug_name} "
63+ "lib${debug_name} " )
64+ endif ()
65+ if (release_name)
66+ list (APPEND rawgl_candidate_names
67+ "${release_name}${rawgl_debug_postfix } "
68+ "lib${release_name}${rawgl_debug_postfix } "
69+ "${release_name} _${rawgl_debug_postfix } "
70+ "lib${release_name} _${rawgl_debug_postfix } "
71+ "${release_name} d"
72+ "lib${release_name} d"
73+ "${release_name} _d"
74+ "lib${release_name} _d"
75+ "${release_name} "
76+ "lib${release_name} " )
77+ endif ()
78+ else ()
79+ if (release_name)
80+ list (APPEND rawgl_candidate_names
81+ "${release_name} "
82+ "lib${release_name} " )
83+ endif ()
84+ if (debug_name)
85+ list (APPEND rawgl_candidate_names
86+ "${debug_name} "
87+ "lib${debug_name} " )
88+ endif ()
89+ if (release_name)
90+ list (APPEND rawgl_candidate_names
91+ "${release_name}${rawgl_debug_postfix } "
92+ "lib${release_name}${rawgl_debug_postfix } "
93+ "${release_name} _${rawgl_debug_postfix } "
94+ "lib${release_name} _${rawgl_debug_postfix } "
95+ "${release_name} d"
96+ "lib${release_name} d"
97+ "${release_name} _d"
98+ "lib${release_name} _d" )
99+ endif ()
100+ endif ()
101+ list (REMOVE_DUPLICATES rawgl_candidate_names)
102+
103+ rawgl_windows_find_prefixed_library_ordered (rawgl_library "${rawgl_candidate_names} " )
104+ set (${out_var} "${rawgl_library} " PARENT_SCOPE )
105+ endfunction ()
106+
107+ function (rawgl_windows_append_path_variants list_var path )
108+ if (NOT path)
109+ set (${list_var} "${${list_var} }" PARENT_SCOPE )
110+ return ()
111+ endif ()
112+
113+ list (APPEND ${list_var} "${path} " )
114+ string (REPLACE "\\ " "/" rawgl_normalized_path "${path} " )
115+ list (APPEND ${list_var} "${rawgl_normalized_path} " )
116+
117+ if (rawgl_normalized_path MATCHES "^([A-Za-z]):/(.*)$" )
118+ set (rawgl_path_drive "${CMAKE_MATCH_1} " )
119+ set (rawgl_path_tail "${CMAKE_MATCH_2} " )
120+ string (TOUPPER "${rawgl_path_drive} " rawgl_path_drive_upper)
121+ string (TOLOWER "${rawgl_path_drive} " rawgl_path_drive_lower)
122+ list (APPEND ${list_var}
123+ "${rawgl_path_drive_upper} :/${rawgl_path_tail} "
124+ "${rawgl_path_drive_lower} :/${rawgl_path_tail} " )
125+ endif ()
126+
127+ set (${list_var} "${${list_var} }" PARENT_SCOPE )
128+ endfunction ()
129+
130+ function (rawgl_windows_set_imported_target_library target_name release_name debug_name )
131+ if (NOT TARGET ${target_name} )
132+ return ()
133+ endif ()
134+
135+ get_target_property (rawgl_aliased_target ${target_name} ALIASED_TARGET)
136+ if (rawgl_aliased_target)
137+ set (target_name "${rawgl_aliased_target} " )
138+ endif ()
139+
140+ rawgl_windows_find_dual_config_library (rawgl_release_path Release "${release_name} " "${debug_name} " )
141+ rawgl_windows_find_dual_config_library (rawgl_debug_path Debug "${release_name} " "${debug_name} " )
142+
143+ if (NOT rawgl_release_path AND NOT rawgl_debug_path)
144+ return ()
145+ endif ()
146+
147+ get_target_property (rawgl_imported_configs ${target_name} IMPORTED_CONFIGURATIONS )
148+ if (NOT rawgl_imported_configs)
149+ set (rawgl_imported_configs)
150+ endif ()
151+
152+ if (rawgl_release_path)
153+ list (APPEND rawgl_imported_configs Release)
154+ set_target_properties (${target_name} PROPERTIES
155+ IMPORTED_LOCATION_RELEASE "${rawgl_release_path} " )
156+ endif ()
157+
158+ if (rawgl_debug_path)
159+ list (APPEND rawgl_imported_configs Debug)
160+ set_target_properties (${target_name} PROPERTIES
161+ IMPORTED_LOCATION_DEBUG "${rawgl_debug_path} " )
162+ endif ()
163+
164+ if (rawgl_imported_configs)
165+ list (REMOVE_DUPLICATES rawgl_imported_configs)
166+ set_target_properties (${target_name} PROPERTIES
167+ IMPORTED_CONFIGURATIONS "${rawgl_imported_configs} " )
168+ endif ()
169+
170+ if (rawgl_release_path)
171+ set_target_properties (${target_name} PROPERTIES
172+ IMPORTED_LOCATION "${rawgl_release_path} " )
173+ elseif (rawgl_debug_path)
174+ set_target_properties (${target_name} PROPERTIES
175+ IMPORTED_LOCATION "${rawgl_debug_path} " )
176+ endif ()
177+
178+ set_target_properties (${target_name} PROPERTIES
179+ MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release
180+ MAP_IMPORTED_CONFIG_MINSIZEREL Release)
181+ endfunction ()
182+
36183function (rawgl_windows_append_file_library out_var release_path debug_path )
37184 set (rawgl_items ${${out_var} })
38185
@@ -59,8 +206,8 @@ function(rawgl_windows_append_file_library out_var release_path debug_path)
59206endfunction ()
60207
61208function (rawgl_windows_append_vendor_library out_var release_name debug_name )
62- rawgl_windows_find_prefixed_library (rawgl_release_path "${release_name} " )
63- rawgl_windows_find_prefixed_library (rawgl_debug_path "${debug_name} " )
209+ rawgl_windows_find_dual_config_library (rawgl_release_path Release "${release_name} " " ${debug_name } " )
210+ rawgl_windows_find_dual_config_library (rawgl_debug_path Debug " ${release_name} " "${debug_name} " )
64211
65212 rawgl_windows_append_file_library (${out_var}
66213 "${rawgl_release_path} "
@@ -78,22 +225,23 @@ function(rawgl_windows_patch_imported_interface_library target_name release_name
78225 return ()
79226 endif ()
80227
81- rawgl_windows_find_prefixed_library (rawgl_release_path "${release_name} " )
82- rawgl_windows_find_prefixed_library (rawgl_debug_path "${debug_name} " )
228+ rawgl_windows_find_dual_config_library (rawgl_release_path Release "${release_name} " " ${debug_name } " )
229+ rawgl_windows_find_dual_config_library (rawgl_debug_path Debug " ${release_name} " "${debug_name} " )
83230
84231 if (NOT rawgl_release_path AND NOT rawgl_debug_path)
85232 return ()
86233 endif ()
87234
88235 rawgl_windows_config_library_expr (rawgl_expr "${rawgl_release_path} " "${rawgl_debug_path} " )
89236 set (rawgl_search_paths)
237+ rawgl_windows_append_path_variants (rawgl_search_paths "${rawgl_release_path} " )
90238 foreach (rawgl_prefix IN LISTS rawgl_windows_library_prefixes)
91- list ( APPEND rawgl_search_paths
239+ rawgl_windows_append_path_variants ( rawgl_search_paths
92240 "${rawgl_prefix} /lib/${release_name} .lib" )
93241 endforeach ()
94242 foreach (rawgl_rewrite_root IN LISTS RAWGL_WINDOWS_IMPORTED_CONFIG_REWRITE_ROOTS)
95243 if (rawgl_rewrite_root)
96- list ( APPEND rawgl_search_paths
244+ rawgl_windows_append_path_variants ( rawgl_search_paths
97245 "${rawgl_rewrite_root} /lib/${release_name} .lib" )
98246 endif ()
99247 endforeach ()
@@ -117,14 +265,31 @@ foreach(rawgl_oiio_target IN LISTS RAWGL_OIIO_TARGETS)
117265 endif ()
118266endforeach ()
119267
120- rawgl_windows_patch_imported_interface_library (OpenImageIO::OpenImageIO avcodec avcodecd )
121- rawgl_windows_patch_imported_interface_library (OpenImageIO::OpenImageIO avformat avformatd )
122- rawgl_windows_patch_imported_interface_library (OpenImageIO::OpenImageIO avutil avutild )
123- rawgl_windows_patch_imported_interface_library (OpenImageIO::OpenImageIO swscale swscaled )
124- rawgl_windows_patch_imported_interface_library (OpenImageIO::OpenImageIO jxl jxld )
125- rawgl_windows_patch_imported_interface_library (OpenImageIO::OpenImageIO jxl_threads jxl_threadsd )
126- rawgl_windows_patch_imported_interface_library (OpenImageIO::OpenImageIO raw rawd )
127- rawgl_windows_patch_imported_interface_library (OpenImageIO::OpenImageIO lcms2 lcms2d )
268+ foreach (rawgl_oiio_target IN LISTS RAWGL_OIIO_TARGETS)
269+ rawgl_windows_patch_imported_interface_library (${rawgl_oiio_target} avcodec avcodecd )
270+ rawgl_windows_patch_imported_interface_library (${rawgl_oiio_target} avdevice avdeviced )
271+ rawgl_windows_patch_imported_interface_library (${rawgl_oiio_target} avfilter avfilterd )
272+ rawgl_windows_patch_imported_interface_library (${rawgl_oiio_target} avformat avformatd )
273+ rawgl_windows_patch_imported_interface_library (${rawgl_oiio_target} avutil avutild )
274+ rawgl_windows_patch_imported_interface_library (${rawgl_oiio_target} swscale swscaled )
275+ rawgl_windows_patch_imported_interface_library (${rawgl_oiio_target} swresample swresampled )
276+ rawgl_windows_patch_imported_interface_library (${rawgl_oiio_target} jxl jxld )
277+ rawgl_windows_patch_imported_interface_library (${rawgl_oiio_target} jxl_cms jxl_cmsd )
278+ rawgl_windows_patch_imported_interface_library (${rawgl_oiio_target} jxl_extras_codec jxl_extras_codecd )
279+ rawgl_windows_patch_imported_interface_library (${rawgl_oiio_target} jxl_threads jxl_threadsd )
280+ rawgl_windows_patch_imported_interface_library (${rawgl_oiio_target} raw rawd )
281+ rawgl_windows_patch_imported_interface_library (${rawgl_oiio_target} lcms2 lcms2_staticd )
282+ endforeach ()
283+
284+ rawgl_windows_set_imported_target_library (pystring::pystring pystring pystringd )
285+ rawgl_windows_set_imported_target_library (Brotli::common brotlicommon brotlicommond )
286+ rawgl_windows_set_imported_target_library (Brotli::decoder brotlidec brotlidecd )
287+ rawgl_windows_set_imported_target_library (Brotli::encoder brotlienc brotliencd )
288+ rawgl_windows_set_imported_target_library (Brotli::brotlicommon brotlicommon brotlicommond )
289+ rawgl_windows_set_imported_target_library (Brotli::brotlidec brotlidec brotlidecd )
290+ rawgl_windows_set_imported_target_library (Brotli::brotlienc brotlienc brotliencd )
291+ rawgl_windows_patch_imported_interface_library (Brotli::decoder brotlicommon brotlicommond )
292+ rawgl_windows_patch_imported_interface_library (Brotli::encoder brotlicommon brotlicommond )
128293
129294rawgl_windows_patch_imported_interface_library (heif x265-static x265-staticd )
130295rawgl_windows_patch_imported_interface_library (heif libde265 libde265d )
@@ -137,14 +302,21 @@ rawgl_windows_patch_imported_interface_library(freetype brotlidec brotlidecd)
137302
138303set (rawgl_windows_vendor_libs)
139304
305+ if (TARGET dng_sdk::dng_sdk)
306+ list (APPEND rawgl_windows_vendor_libs dng_sdk::dng_sdk)
307+ endif ()
308+
140309rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs OpenColorIO OpenColorIO_d )
141310rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs Imath-3_2 Imath-3_2_d )
142311rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs Iex-3_4 Iex-3_4_d )
143312rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs IlmThread-3_4 IlmThread-3_4_d )
144313rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs OpenEXR-3_4 OpenEXR-3_4_d )
145314rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs OpenEXRCore-3_4 OpenEXRCore-3_4_d )
315+ rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs OpenEXRUtil-3_4 OpenEXRUtil-3_4_d )
146316rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs Ptex Ptexd )
147317rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs avcodec avcodecd )
318+ rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs avdevice avdeviced )
319+ rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs avfilter avfilterd )
148320rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs avformat avformatd )
149321rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs avutil avutild )
150322rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs swscale swscaled )
@@ -161,6 +333,7 @@ rawgl_windows_append_vendor_library(rawgl_windows_vendor_libs openjp2 openjp2d)
161333rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs openjph.0.21 openjph.0.21d )
162334rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs jxl jxld )
163335rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs jxl_cms jxl_cmsd )
336+ rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs jxl_extras_codec jxl_extras_codecd )
164337rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs jxl_threads jxl_threadsd )
165338rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs hwy hwyd )
166339rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs hwy_contrib hwy_contribd )
@@ -175,6 +348,8 @@ rawgl_windows_append_vendor_library(rawgl_windows_vendor_libs libwebpmux libwebp
175348rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs pugixml pugixmld )
176349rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs freetype freetyped )
177350rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs harfbuzz harfbuzzd )
351+ rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs harfbuzz-subset harfbuzz-subsetd )
352+ rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs harfbuzz-icu harfbuzz-icud )
178353rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs deflatestatic deflatestaticd )
179354rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs lzma lzmad )
180355rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs zstd_static zstd_staticd )
@@ -183,6 +358,7 @@ rawgl_windows_append_vendor_library(rawgl_windows_vendor_libs libexpatMT libexpa
183358rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs pystring pystringd )
184359rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs yaml-cpp yaml-cppd )
185360rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs minizip-ng minizip-ngd )
361+ rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs ppmd ppmdd )
186362rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs x265-static x265-staticd )
187363rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs libde265 libde265d )
188364rawgl_windows_append_vendor_library (rawgl_windows_vendor_libs aom aomd )
0 commit comments