add_gdal_driver( TARGET gdal_MRF SOURCES BitMask2D.h marfa.h marfa_dataset.cpp mrf_band.cpp mrf_overview.cpp mrf_util.cpp Packer.h Packer_RLE.cpp Packer_RLE.h Tif_band.cpp CORE_SOURCES mrfdrivercore.cpp PLUGIN_CAPABLE_IF "NOT GDAL_USE_JPEG_INTERNAL\\\;NOT GDAL_USE_JPEG12_INTERNAL\\\;NOT GDAL_USE_LERC_INTERNAL\\\;NOT GDAL_USE_PNG_INTERNAL\\\;NOT GDAL_USE_TIFF_INTERNAL\\\;NOT GDAL_USE_ZLIB_INTERNAL" NO_SHARED_SYMBOL_WITH_CORE NO_CXX_WFLAGS_EFFCXX NO_WFLAG_OLD_STYLE_CAST ) if(TARGET gdal_MRF_core) if (GDAL_USE_LERC OR GDAL_USE_LERC_INTERNAL) target_compile_definitions(gdal_MRF_core PRIVATE -DLERC) endif() endif() if(NOT TARGET gdal_MRF) return() endif() gdal_standard_includes(gdal_MRF) if (GDAL_USE_JPEG OR GDAL_USE_JPEG_INTERNAL) target_compile_definitions(gdal_MRF PRIVATE -DHAVE_JPEG) target_sources(gdal_MRF PRIVATE JPEG_band.cpp) endif() if (GDAL_USE_PNG OR GDAL_USE_PNG_INTERNAL) target_compile_definitions(gdal_MRF PRIVATE -DHAVE_PNG) target_sources(gdal_MRF PRIVATE PNG_band.cpp) endif() if ((GDAL_USE_JPEG OR GDAL_USE_JPEG_INTERNAL) AND (GDAL_USE_PNG OR GDAL_USE_PNG_INTERNAL)) target_sources(gdal_MRF PRIVATE JPNG_band.cpp) endif() # Internal libs first if ((GDAL_USE_JPEG OR GDAL_USE_JPEG_INTERNAL) AND GDAL_USE_JPEG12_INTERNAL) target_sources(gdal_MRF PRIVATE JPEG12_band.cpp) target_compile_definitions(gdal_MRF PRIVATE -DJPEG12_SUPPORTED) target_include_directories(gdal_MRF PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) set_property(SOURCE JPEG12_band.cpp PROPERTY SKIP_UNITY_BUILD_INCLUSION ON) elseif (GDAL_USE_JPEG AND NOT GDAL_USE_JPEG_INTERNAL AND HAVE_JPEGTURBO_DUAL_MODE_8_12) target_sources(gdal_MRF PRIVATE JPEG12_band.cpp) target_compile_definitions(gdal_MRF PRIVATE JPEG12_SUPPORTED HAVE_JPEGTURBO_DUAL_MODE_8_12) endif () if (GDAL_USE_JPEG_INTERNAL) gdal_add_vendored_lib(gdal_MRF libjpeg) endif () if (GDAL_USE_PNG_INTERNAL) gdal_add_vendored_lib(gdal_MRF libpng) endif () if (GDAL_USE_ZLIB_INTERNAL) gdal_add_vendored_lib(gdal_MRF libz) endif () if (GDAL_USE_LERC OR GDAL_USE_LERC_INTERNAL) target_sources(gdal_MRF PRIVATE LERC_band.cpp) gdal_add_vendored_lib(gdal_MRF PRIVATE liblercv1) target_compile_definitions(gdal_MRF PRIVATE -DLERC) add_subdirectory(LERCV1) endif () if (GDAL_USE_LERC_INTERNAL) gdal_add_vendored_lib(gdal_MRF lerc) endif () # Now external libs # Include libjpeg first so that if we want to use jpeg-turbo on homebrew # /usr/local/opt/jpeg-turbo gets included first, before /usr/local/opt # triggered by libtiff, that contains libjpeg 9e if (GDAL_USE_JPEG AND NOT GDAL_USE_JPEG_INTERNAL) gdal_target_link_libraries(gdal_MRF PRIVATE JPEG::JPEG) endif () if (GDAL_USE_PNG AND NOT GDAL_USE_PNG_INTERNAL) gdal_target_link_libraries(gdal_MRF PRIVATE PNG::PNG) endif () if (NOT GDAL_USE_ZLIB_INTERNAL) gdal_target_link_libraries(gdal_MRF PRIVATE ZLIB::ZLIB) endif () if (NOT GDAL_USE_LERC_INTERNAL AND GDAL_USE_LERC) gdal_target_link_libraries(gdal_MRF PRIVATE LERC::LERC) endif () if (GDAL_USE_ZSTD) target_compile_definitions(gdal_MRF PRIVATE -DZSTD_SUPPORT) gdal_target_link_libraries(gdal_MRF PRIVATE ${ZSTD_TARGET}) endif () if (GDAL_USE_BRUNSLI) target_compile_definitions(gdal_MRF PRIVATE -DBRUNSLI) gdal_target_link_libraries(gdal_MRF PRIVATE BRUNSLI::ENCODE BRUNSLI::DECODE) endif () if (GDAL_USE_LIBQB3) target_sources(gdal_MRF PRIVATE QB3_band.cpp) target_compile_definitions(gdal_MRF PRIVATE -DQB3_SUPPORT) gdal_target_link_libraries(gdal_MRF PRIVATE QB3::libQB3) endif()