@@ -531,6 +531,9 @@ if(SDLIMAGE_AVIF)
531
531
target_link_options (avif PRIVATE "-Wl,--no-undefined" )
532
532
endif ()
533
533
endif ()
534
+ elseif (SDLIMAGE_AVIF_SHARED AND DEFINED SDLIMAGE_DYNAMIC_AVIF AND EXISTS "${SDLIMAGE_DYNAMIC_AVIF} " )
535
+ message (STATUS "${PROJECT_NAME} : Using libavif from CMake variable" )
536
+ set (SDLIMAGE_AVIF_ENABLED TRUE )
534
537
else ()
535
538
find_package (libavif "${LIBAVIF_MINIMUM_VERSION} " QUIET ${required} )
536
539
if (libavif_FOUND)
@@ -550,17 +553,19 @@ if(SDLIMAGE_AVIF)
550
553
SDL_IMAGE_SAVE_AVIF=$<BOOL :${SDLIMAGE_AVIF_SAVE} >
551
554
)
552
555
if (SDLIMAGE_AVIF_SHARED)
553
- target_include_directories (${sdl3_image_target_name} PRIVATE
554
- $<TARGET_PROPERTY:avif,INCLUDE_DIRECTORIES >
555
- $<TARGET_PROPERTY:avif,INTERFACE_INCLUDE_DIRECTORIES >
556
- $<TARGET_PROPERTY:avif,INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>
557
- )
558
- target_get_dynamic_library(dynamic_avif avif)
559
- message (STATUS "Dynamic libavif: ${dynamic_avif} " )
560
- target_compile_definitions (${sdl3_image_target_name} PRIVATE "LOAD_AVIF_DYNAMIC=\" ${dynamic_avif} \" " )
561
- if (SDLIMAGE_AVIF_VENDORED)
562
- add_dependencies (${sdl3_image_target_name} avif)
556
+ if (NOT DEFINED SDLIMAGE_DYNAMIC_AVIF)
557
+ target_include_directories (${sdl3_image_target_name} PRIVATE
558
+ $<TARGET_PROPERTY:avif,INCLUDE_DIRECTORIES >
559
+ $<TARGET_PROPERTY:avif,INTERFACE_INCLUDE_DIRECTORIES >
560
+ $<TARGET_PROPERTY:avif,INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>
561
+ )
562
+ if (SDLIMAGE_AVIF_VENDORED)
563
+ add_dependencies (${sdl3_image_target_name} avif)
564
+ endif ()
563
565
endif ()
566
+ target_get_dynamic_library(SDLIMAGE_DYNAMIC_AVIF avif)
567
+ message (STATUS "Dynamic libavif: ${SDLIMAGE_DYNAMIC_AVIF} " )
568
+ target_compile_definitions (${sdl3_image_target_name} PRIVATE "LOAD_AVIF_DYNAMIC=\" ${SDLIMAGE_DYNAMIC_AVIF} \" " )
564
569
else ()
565
570
target_link_libraries (${sdl3_image_target_name} PRIVATE avif)
566
571
endif ()
@@ -602,6 +607,9 @@ if(SDLIMAGE_JPG)
602
607
if (NOT SDLIMAGE_JPG_SHARED)
603
608
list (APPEND PC_LIBS -l$<TARGET_FILE_BASE_NAME:jpeg>)
604
609
endif ()
610
+ elseif (SDLIMAGE_JPG_SHARED AND DEFINED SDLIMAGE_DYNAMIC_JPEG AND EXISTS "${SDLIMAGE_DYNAMIC_JPEG} " )
611
+ message (STATUS "${PROJECT_NAME} : Using libjpeg from CMake variable" )
612
+ set (SDLIMAGE_JPG_ENABLED TRUE )
605
613
else ()
606
614
find_package (JPEG ${required} )
607
615
if (JPEG_FOUND)
@@ -616,17 +624,19 @@ if(SDLIMAGE_JPG)
616
624
endif ()
617
625
if (SDLIMAGE_JPG_ENABLED)
618
626
if (SDLIMAGE_JPG_SHARED)
619
- target_include_directories (${sdl3_image_target_name} PRIVATE
620
- $<TARGET_PROPERTY:JPEG::JPEG,INCLUDE_DIRECTORIES >
621
- $<TARGET_PROPERTY:JPEG::JPEG,INTERFACE_INCLUDE_DIRECTORIES >
622
- $<TARGET_PROPERTY:JPEG::JPEG,INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>
623
- )
624
- target_get_dynamic_library(dynamic_jpeg JPEG::JPEG)
625
- message (STATUS "Dynamic libjpeg: ${dynamic_jpeg} " )
626
- target_compile_definitions (${sdl3_image_target_name} PRIVATE "LOAD_JPG_DYNAMIC=\" ${dynamic_jpeg} \" " )
627
- if (SDLIMAGE_JPG_VENDORED)
628
- add_dependencies (${sdl3_image_target_name} JPEG::JPEG)
627
+ if (NOT DEFINED SDLIMAGE_DYNAMIC_JPEG)
628
+ target_include_directories (${sdl3_image_target_name} PRIVATE
629
+ $<TARGET_PROPERTY:JPEG::JPEG,INCLUDE_DIRECTORIES >
630
+ $<TARGET_PROPERTY:JPEG::JPEG,INTERFACE_INCLUDE_DIRECTORIES >
631
+ $<TARGET_PROPERTY:JPEG::JPEG,INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>
632
+ )
633
+ if (SDLIMAGE_JPG_VENDORED)
634
+ add_dependencies (${sdl3_image_target_name} JPEG::JPEG)
635
+ endif ()
629
636
endif ()
637
+ target_get_dynamic_library(SDLIMAGE_DYNAMIC_JPEG JPEG::JPEG)
638
+ message (STATUS "Dynamic libjpeg: ${SDLIMAGE_DYNAMIC_JPEG} " )
639
+ target_compile_definitions (${sdl3_image_target_name} PRIVATE "LOAD_JPG_DYNAMIC=\" ${SDLIMAGE_DYNAMIC_JPEG} \" " )
630
640
else ()
631
641
target_link_libraries (${sdl3_image_target_name} PRIVATE JPEG::JPEG)
632
642
endif ()
@@ -684,6 +694,9 @@ if(SDLIMAGE_JXL)
684
694
if (NOT TARGET libjxl::libjxl)
685
695
add_library (libjxl::libjxl ALIAS ${jxl_lib} )
686
696
endif ()
697
+ elseif (SDLIMAGE_JXL_SHARED AND DEFINED SDLIMAGE_DYNAMIC_JXL AND EXISTS "${SDLIMAGE_DYNAMIC_JXL} " )
698
+ message (STATUS "${PROJECT_NAME} : Using libjxl from CMake variable" )
699
+ set (SDLIMAGE_JXL_ENABLED TRUE )
687
700
else ()
688
701
find_package (libjxl ${required} )
689
702
if (libjxl_FOUND)
@@ -700,17 +713,19 @@ if(SDLIMAGE_JXL)
700
713
if (SDLIMAGE_JXL_ENABLED)
701
714
target_compile_definitions (${sdl3_image_target_name} PRIVATE LOAD_JXL)
702
715
if (SDLIMAGE_JXL_SHARED)
703
- target_include_directories (${sdl3_image_target_name} PRIVATE
704
- $<TARGET_PROPERTY:libjxl::libjxl,INCLUDE_DIRECTORIES >
705
- $<TARGET_PROPERTY:libjxl::libjxl,INTERFACE_INCLUDE_DIRECTORIES >
706
- $<TARGET_PROPERTY:libjxl::libjxl,INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>
707
- )
708
- target_get_dynamic_library(dynamic_jxl libjxl::libjxl)
709
- message (STATUS "Dynamic libjxl: ${dynamic_jxl} " )
710
- target_compile_definitions (${sdl3_image_target_name} PRIVATE "LOAD_JXL_DYNAMIC=\" ${dynamic_jxl} \" " )
711
- if (SDLIMAGE_JXL_VENDORED)
712
- add_dependencies (${sdl3_image_target_name} libjxl::libjxl)
716
+ if (NOT DEFINED SDLIMAGE_DYNAMIC_JXL)
717
+ target_include_directories (${sdl3_image_target_name} PRIVATE
718
+ $<TARGET_PROPERTY:libjxl::libjxl,INCLUDE_DIRECTORIES >
719
+ $<TARGET_PROPERTY:libjxl::libjxl,INTERFACE_INCLUDE_DIRECTORIES >
720
+ $<TARGET_PROPERTY:libjxl::libjxl,INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>
721
+ )
722
+ if (SDLIMAGE_JXL_VENDORED)
723
+ add_dependencies (${sdl3_image_target_name} libjxl::libjxl)
724
+ endif ()
713
725
endif ()
726
+ target_get_dynamic_library(SDLIMAGE_DYNAMIC_JXL libjxl::libjxl)
727
+ message (STATUS "Dynamic libjxl: ${SDLIMAGE_DYNAMIC_JXL} " )
728
+ target_compile_definitions (${sdl3_image_target_name} PRIVATE "LOAD_JXL_DYNAMIC=\" ${SDLIMAGE_DYNAMIC_JXL} \" " )
714
729
else ()
715
730
target_link_libraries (${sdl3_image_target_name} PRIVATE libjxl::libjxl)
716
731
endif ()
@@ -766,6 +781,9 @@ if(SDLIMAGE_PNG)
766
781
list (APPEND PC_REQUIRES zlib)
767
782
endif ()
768
783
endif ()
784
+ elseif (SDLIMAGE_PNG_SHARED AND DEFINED SDLIMAGE_DYNAMIC_PNG AND EXISTS "${SDLIMAGE_DYNAMIC_PNG} " )
785
+ message (STATUS "${PROJECT_NAME} : Using libpng from CMake variable" )
786
+ set (SDLIMAGE_PNG_ENABLED TRUE )
769
787
else ()
770
788
find_package (PNG ${required} )
771
789
if (PNG_FOUND)
@@ -780,17 +798,19 @@ if(SDLIMAGE_PNG)
780
798
endif ()
781
799
if (SDLIMAGE_PNG_ENABLED)
782
800
if (SDLIMAGE_PNG_SHARED)
783
- target_include_directories (${sdl3_image_target_name} PRIVATE
784
- $<TARGET_PROPERTY:PNG::PNG,INCLUDE_DIRECTORIES >
785
- $<TARGET_PROPERTY:PNG::PNG,INTERFACE_INCLUDE_DIRECTORIES >
786
- $<TARGET_PROPERTY:PNG::PNG,INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>
787
- )
788
- target_get_dynamic_library(dynamic_png PNG::PNG)
789
- message (STATUS "Dynamic libpng: ${dynamic_png} " )
790
- target_compile_definitions (${sdl3_image_target_name} PRIVATE "LOAD_PNG_DYNAMIC=\" ${dynamic_png} \" " )
791
- if (SDLIMAGE_PNG_VENDORED)
792
- add_dependencies (${sdl3_image_target_name} PNG::PNG)
801
+ if (NOT DEFINED SDLIMAGE_DYNAMIC_PNG)
802
+ target_include_directories (${sdl3_image_target_name} PRIVATE
803
+ $<TARGET_PROPERTY:PNG::PNG,INCLUDE_DIRECTORIES >
804
+ $<TARGET_PROPERTY:PNG::PNG,INTERFACE_INCLUDE_DIRECTORIES >
805
+ $<TARGET_PROPERTY:PNG::PNG,INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>
806
+ )
807
+ if (SDLIMAGE_PNG_VENDORED)
808
+ add_dependencies (${sdl3_image_target_name} PNG::PNG)
809
+ endif ()
793
810
endif ()
811
+ target_get_dynamic_library(SDLIMAGE_DYNAMIC_PNG PNG::PNG)
812
+ message (STATUS "Dynamic libpng: ${SDLIMAGE_DYNAMIC_PNG} " )
813
+ target_compile_definitions (${sdl3_image_target_name} PRIVATE "LOAD_PNG_DYNAMIC=\" ${SDLIMAGE_DYNAMIC_PNG} \" " )
794
814
else ()
795
815
target_link_libraries (${sdl3_image_target_name} PRIVATE PNG::PNG)
796
816
endif ()
@@ -868,7 +888,7 @@ if(SDLIMAGE_TIF)
868
888
add_subdirectory (external/libtiff EXCLUDE_FROM_ALL )
869
889
register_license(tiff external/libtiff/LICENSE.md )
870
890
add_library (TIFF::TIFF ALIAS tiff)
871
- set (SDL2IMAGE_TIF_TARGET "TIFF::tiff" )
891
+ set (SDLIMAGE_TIF_TARGET "TIFF::tiff" )
872
892
if (SDLIMAGE_TIF_SHARED OR NOT SDLIMAGE_BUILD_SHARED_LIBS)
873
893
list (APPEND INSTALL_EXTRA_TARGETS tiff)
874
894
endif ()
@@ -877,6 +897,10 @@ if(SDLIMAGE_TIF)
877
897
if (NOT SDLIMAGE_TIF_SHARED)
878
898
list (APPEND PC_LIBS -l$<TARGET_FILE_BASE_NAME:tiff>)
879
899
endif ()
900
+ elseif (SDLIMAGE_TIF_SHARED AND DEFINED SDLIMAGE_DYNAMIC_TIF AND EXISTS "${SDLIMAGE_DYNAMIC_TIF} " )
901
+ message (STATUS "${PROJECT_NAME} : Using libtiff from CMake variable" )
902
+ set (SDLIMAGE_TIF_ENABLED TRUE )
903
+ set (SDLIMAGE_TIF_TARGET "tiff-non-existing-target" )
880
904
else ()
881
905
find_package (TIFF ${required} )
882
906
if (TIFF_FOUND)
@@ -888,9 +912,9 @@ if(SDLIMAGE_TIF)
888
912
if (TARGET TIFF::tiff)
889
913
# introduced in CMake 3.28
890
914
# TIFF::TIFF still exists, but it is an INTERFACE library linking to TIFF::tiff (no ALIAS library)
891
- set (SDL2IMAGE_TIF_TARGET "TIFF::tiff" )
915
+ set (SDLIMAGE_TIF_TARGET "TIFF::tiff" )
892
916
else ()
893
- set (SDL2IMAGE_TIF_TARGET "TIFF::TIFF" )
917
+ set (SDLIMAGE_TIF_TARGET "TIFF::TIFF" )
894
918
endif ()
895
919
else ()
896
920
message (${fatal_error} "libtiff NOT found" )
@@ -899,19 +923,21 @@ if(SDLIMAGE_TIF)
899
923
if (SDLIMAGE_TIF_ENABLED)
900
924
target_compile_definitions (${sdl3_image_target_name} PRIVATE LOAD_TIF)
901
925
if (SDLIMAGE_TIF_SHARED)
902
- target_include_directories (${sdl3_image_target_name} PRIVATE
903
- $<TARGET_PROPERTY:${SDL2IMAGE_TIF_TARGET} ,INCLUDE_DIRECTORIES >
904
- $<TARGET_PROPERTY:${SDL2IMAGE_TIF_TARGET} ,INTERFACE_INCLUDE_DIRECTORIES >
905
- $<TARGET_PROPERTY:${SDL2IMAGE_TIF_TARGET} ,INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>
906
- )
907
- target_get_dynamic_library(dynamic_tif ${SDL2IMAGE_TIF_TARGET} )
908
- message (STATUS "Dynamic libtiff: ${dynamic_tif} " )
909
- target_compile_definitions (${sdl3_image_target_name} PRIVATE "LOAD_TIF_DYNAMIC=\" ${dynamic_tif} \" " )
910
- if (SDLIMAGE_TIF_VENDORED)
911
- add_dependencies (${sdl3_image_target_name} ${SDL2IMAGE_TIF_TARGET} )
926
+ if (NOT DEFINED SDLIMAGE_DYNAMIC_TIF)
927
+ target_include_directories (${sdl3_image_target_name} PRIVATE
928
+ $<TARGET_PROPERTY:${SDLIMAGE_TIF_TARGET} ,INCLUDE_DIRECTORIES >
929
+ $<TARGET_PROPERTY:${SDLIMAGE_TIF_TARGET} ,INTERFACE_INCLUDE_DIRECTORIES >
930
+ $<TARGET_PROPERTY:${SDLIMAGE_TIF_TARGET} ,INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>
931
+ )
932
+ if (SDLIMAGE_TIF_VENDORED)
933
+ add_dependencies (${sdl3_image_target_name} ${SDLIMAGE_TIF_TARGET} )
934
+ endif ()
912
935
endif ()
936
+ target_get_dynamic_library(SDLIMAGE_DYNAMIC_TIF ${SDLIMAGE_TIF_TARGET} )
937
+ message (STATUS "Dynamic libtiff: ${SDLIMAGE_DYNAMIC_TIF} " )
938
+ target_compile_definitions (${sdl3_image_target_name} PRIVATE "LOAD_TIF_DYNAMIC=\" ${SDLIMAGE_DYNAMIC_TIF} \" " )
913
939
else ()
914
- target_link_libraries (${sdl3_image_target_name} PRIVATE ${SDL2IMAGE_TIF_TARGET } )
940
+ target_link_libraries (${sdl3_image_target_name} PRIVATE ${SDLIMAGE_TIF_TARGET } )
915
941
endif ()
916
942
endif ()
917
943
endif ()
@@ -941,6 +967,9 @@ if(SDLIMAGE_WEBP)
941
967
set_target_properties (webpdemux PROPERTIES EXPORT_NAME "external_webpdemux" )
942
968
set_target_properties (sharpyuv PROPERTIES EXPORT_NAME "external_sharpyuv" )
943
969
add_library (SDL3_image::external_libwebp ALIAS webp)
970
+ elseif (SDLIMAGE_WEBP_SHARED AND DEFINED SDLIMAGE_DYNAMIC_WEBP AND EXISTS "${SDLIMAGE_DYNAMIC_WEBP} " AND DEFINED SDLIMAGE_DYNAMIC_WEBPDEMUX AND EXISTS "${SDLIMAGE_DYNAMIC_WEBPDEMUX} " )
971
+ message (STATUS "${PROJECT_NAME} : Using libwebp from CMake variable" )
972
+ set (SDLIMAGE_WEBP_ENABLED TRUE )
944
973
else ()
945
974
find_package (webp ${required} )
946
975
if (webp_FOUND)
@@ -957,23 +986,25 @@ if(SDLIMAGE_WEBP)
957
986
if (SDLIMAGE_WEBP_ENABLED)
958
987
target_compile_definitions (${sdl3_image_target_name} PRIVATE LOAD_WEBP)
959
988
if (SDLIMAGE_WEBP_SHARED)
960
- target_include_directories (${sdl3_image_target_name} PRIVATE
961
- $<TARGET_PROPERTY:WebP::webp,INCLUDE_DIRECTORIES >
962
- $<TARGET_PROPERTY:WebP::webp,INTERFACE_INCLUDE_DIRECTORIES >
963
- $<TARGET_PROPERTY:WebP::webp,INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>
964
- $<TARGET_PROPERTY:WebP::webpdemux,INCLUDE_DIRECTORIES >
965
- $<TARGET_PROPERTY:WebP::webpdemux,INTERFACE_INCLUDE_DIRECTORIES >
966
- $<TARGET_PROPERTY:WebP::webpdemux,INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>
967
- )
968
- target_get_dynamic_library(dynamic_webpdemux WebP::webpdemux)
969
- message (STATUS "Dynamic libwebpdemux: ${dynamic_webpdemux} " )
970
- target_compile_definitions (${sdl3_image_target_name} PRIVATE "LOAD_WEBPDEMUX_DYNAMIC=\" ${dynamic_webpdemux} \" " )
971
- target_get_dynamic_library(dynamic_webp WebP::webp)
972
- message (STATUS "Dynamic libwebp: ${dynamic_webp} " )
973
- target_compile_definitions (${sdl3_image_target_name} PRIVATE "LOAD_WEBP_DYNAMIC=\" ${dynamic_webp} \" " )
974
- if (SDLIMAGE_WEBP_VENDORED)
975
- add_dependencies (${sdl3_image_target_name} WebP::webp WebP::webpdemux)
989
+ if (NOT DEFINED SDLIMAGE_DYNAMIC_WEBP AND NOT DEFINED SDLIMAGE_DYNAMIC_WEBPDEMUX)
990
+ target_include_directories (${sdl3_image_target_name} PRIVATE
991
+ $<TARGET_PROPERTY:WebP::webp,INCLUDE_DIRECTORIES >
992
+ $<TARGET_PROPERTY:WebP::webp,INTERFACE_INCLUDE_DIRECTORIES >
993
+ $<TARGET_PROPERTY:WebP::webp,INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>
994
+ $<TARGET_PROPERTY:WebP::webpdemux,INCLUDE_DIRECTORIES >
995
+ $<TARGET_PROPERTY:WebP::webpdemux,INTERFACE_INCLUDE_DIRECTORIES >
996
+ $<TARGET_PROPERTY:WebP::webpdemux,INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>
997
+ )
998
+ if (SDLIMAGE_WEBP_VENDORED)
999
+ add_dependencies (${sdl3_image_target_name} WebP::webp WebP::webpdemux)
1000
+ endif ()
976
1001
endif ()
1002
+ target_get_dynamic_library(SDLIMAGE_DYNAMIC_WEBPDEMUX WebP::webpdemux)
1003
+ message (STATUS "Dynamic libwebpdemux: ${SDLIMAGE_DYNAMIC_WEBPDEMUX} " )
1004
+ target_compile_definitions (${sdl3_image_target_name} PRIVATE "LOAD_WEBPDEMUX_DYNAMIC=\" ${SDLIMAGE_DYNAMIC_WEBPDEMUX} \" " )
1005
+ target_get_dynamic_library(SDLIMAGE_DYNAMIC_WEBP WebP::webp)
1006
+ message (STATUS "Dynamic libwebp: ${SDLIMAGE_DYNAMIC_WEBP} " )
1007
+ target_compile_definitions (${sdl3_image_target_name} PRIVATE "LOAD_WEBP_DYNAMIC=\" ${SDLIMAGE_DYNAMIC_WEBP} \" " )
977
1008
else ()
978
1009
target_link_libraries (${sdl3_image_target_name} PRIVATE WebP::webp WebP::webpdemux)
979
1010
endif ()
0 commit comments