@@ -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