# ---------------------------------------------------------------------------- # Detect 3rd-party image IO libraries # ---------------------------------------------------------------------------- # --- zlib (required) --- if(BUILD_ZLIB) ocv_clear_vars(ZLIB_FOUND) else() find_package(ZLIB "${MIN_VER_ZLIB}") if(ZLIB_FOUND AND ANDROID) if(ZLIB_LIBRARIES STREQUAL "${ANDROID_SYSROOT}/usr/lib/libz.so") set(ZLIB_LIBRARIES z) endif() endif() endif() if(NOT ZLIB_FOUND) ocv_clear_vars(ZLIB_LIBRARY ZLIB_LIBRARIES ZLIB_INCLUDE_DIRS) set(ZLIB_LIBRARY zlib) add_subdirectory("${OpenCV_SOURCE_DIR}/3rdparty/zlib") set(ZLIB_INCLUDE_DIRS "${${ZLIB_LIBRARY}_SOURCE_DIR}" "${${ZLIB_LIBRARY}_BINARY_DIR}") set(ZLIB_LIBRARIES ${ZLIB_LIBRARY}) ocv_parse_header2(ZLIB "${${ZLIB_LIBRARY}_SOURCE_DIR}/zlib.h" ZLIB_VERSION) endif() # --- libtiff (optional, should be searched after zlib) --- if(WITH_TIFF) if(BUILD_TIFF) ocv_clear_vars(TIFF_FOUND) else() include(FindTIFF) if(TIFF_FOUND) ocv_parse_header("${TIFF_INCLUDE_DIR}/tiff.h" TIFF_VERSION_LINES TIFF_VERSION_CLASSIC TIFF_VERSION_BIG TIFF_VERSION TIFF_BIGTIFF_VERSION) endif() endif() if(NOT TIFF_FOUND) ocv_clear_vars(TIFF_LIBRARY TIFF_LIBRARIES TIFF_INCLUDE_DIR) set(TIFF_LIBRARY libtiff) set(TIFF_LIBRARIES ${TIFF_LIBRARY}) add_subdirectory("${OpenCV_SOURCE_DIR}/3rdparty/libtiff") set(TIFF_INCLUDE_DIR "${${TIFF_LIBRARY}_SOURCE_DIR}" "${${TIFF_LIBRARY}_BINARY_DIR}") ocv_parse_header("${${TIFF_LIBRARY}_SOURCE_DIR}/tiff.h" TIFF_VERSION_LINES TIFF_VERSION_CLASSIC TIFF_VERSION_BIG TIFF_VERSION TIFF_BIGTIFF_VERSION) endif() if(TIFF_VERSION_CLASSIC AND NOT TIFF_VERSION) set(TIFF_VERSION ${TIFF_VERSION_CLASSIC}) endif() if(TIFF_BIGTIFF_VERSION AND NOT TIFF_VERSION_BIG) set(TIFF_VERSION_BIG ${TIFF_BIGTIFF_VERSION}) endif() if(NOT TIFF_VERSION_STRING AND TIFF_INCLUDE_DIR) list(GET TIFF_INCLUDE_DIR 0 _TIFF_INCLUDE_DIR) if(EXISTS "${_TIFF_INCLUDE_DIR}/tiffvers.h") file(STRINGS "${_TIFF_INCLUDE_DIR}/tiffvers.h" tiff_version_str REGEX "^#define[\t ]+TIFFLIB_VERSION_STR[\t ]+\"LIBTIFF, Version .*") string(REGEX REPLACE "^#define[\t ]+TIFFLIB_VERSION_STR[\t ]+\"LIBTIFF, Version +([^ \\n]*).*" "\\1" TIFF_VERSION_STRING "${tiff_version_str}") unset(tiff_version_str) endif() unset(_TIFF_INCLUDE_DIR) endif() set(HAVE_TIFF YES) endif() # --- libjpeg (optional) --- if(WITH_JPEG) if(BUILD_JPEG) ocv_clear_vars(JPEG_FOUND) else() include(FindJPEG) endif() if(NOT JPEG_FOUND) ocv_clear_vars(JPEG_LIBRARY JPEG_LIBRARIES JPEG_INCLUDE_DIR) set(JPEG_LIBRARY libjpeg) set(JPEG_LIBRARIES ${JPEG_LIBRARY}) add_subdirectory("${OpenCV_SOURCE_DIR}/3rdparty/libjpeg") set(JPEG_INCLUDE_DIR "${${JPEG_LIBRARY}_SOURCE_DIR}") endif() ocv_parse_header("${JPEG_INCLUDE_DIR}/jpeglib.h" JPEG_VERSION_LINES JPEG_LIB_VERSION) set(HAVE_JPEG YES) endif() # --- libwebp (optional) --- if(WITH_WEBP) if(BUILD_WEBP) ocv_clear_vars(WEBP_FOUND WEBP_LIBRARY WEBP_LIBRARIES WEBP_INCLUDE_DIR) else() include(cmake/OpenCVFindWebP.cmake) endif() endif() # --- Add libwebp to 3rdparty/libwebp and compile it if not available --- if(WITH_WEBP AND NOT WEBP_FOUND) set(WEBP_LIBRARY libwebp) set(WEBP_LIBRARIES ${WEBP_LIBRARY}) add_subdirectory("${OpenCV_SOURCE_DIR}/3rdparty/libwebp") set(WEBP_INCLUDE_DIR "${${WEBP_LIBRARY}_SOURCE_DIR}") endif() if(NOT WEBP_VERSION AND WEBP_INCLUDE_DIR) ocv_clear_vars(ENC_MAJ_VERSION ENC_MIN_VERSION ENC_REV_VERSION) if(EXISTS "${WEBP_INCLUDE_DIR}/enc/vp8enci.h") ocv_parse_header("${WEBP_INCLUDE_DIR}/enc/vp8enci.h" WEBP_VERSION_LINES ENC_MAJ_VERSION ENC_MIN_VERSION ENC_REV_VERSION) set(WEBP_VERSION "${ENC_MAJ_VERSION}.${ENC_MIN_VERSION}.${ENC_REV_VERSION}") elseif(EXISTS "${WEBP_INCLUDE_DIR}/webp/encode.h") file(STRINGS "${WEBP_INCLUDE_DIR}/webp/encode.h" WEBP_ENCODER_ABI_VERSION REGEX "#define[ \t]+WEBP_ENCODER_ABI_VERSION[ \t]+([x0-9a-f]+)" ) if(WEBP_ENCODER_ABI_VERSION MATCHES "#define[ \t]+WEBP_ENCODER_ABI_VERSION[ \t]+([x0-9a-f]+)") set(WEBP_ENCODER_ABI_VERSION "${CMAKE_MATCH_1}") set(WEBP_VERSION "encoder: ${WEBP_ENCODER_ABI_VERSION}") else() unset(WEBP_ENCODER_ABI_VERSION) endif() endif() endif() # --- libjasper (optional, should be searched after libjpeg) --- if(WITH_JASPER) if(BUILD_JASPER) ocv_clear_vars(JASPER_FOUND) else() include(FindJasper) endif() if(NOT JASPER_FOUND) ocv_clear_vars(JASPER_LIBRARY JASPER_LIBRARIES JASPER_INCLUDE_DIR) set(JASPER_LIBRARY libjasper) set(JASPER_LIBRARIES ${JASPER_LIBRARY}) add_subdirectory("${OpenCV_SOURCE_DIR}/3rdparty/libjasper") set(JASPER_INCLUDE_DIR "${${JASPER_LIBRARY}_SOURCE_DIR}") endif() set(HAVE_JASPER YES) if(NOT JASPER_VERSION_STRING) ocv_parse_header2(JASPER "${JASPER_INCLUDE_DIR}/jasper/jas_config.h" JAS_VERSION "") endif() endif() # --- libpng (optional, should be searched after zlib) --- if(WITH_PNG) if(BUILD_PNG) ocv_clear_vars(PNG_FOUND) else() include(FindPNG) if(PNG_FOUND) include(CheckIncludeFile) check_include_file("${PNG_PNG_INCLUDE_DIR}/libpng/png.h" HAVE_LIBPNG_PNG_H) if(HAVE_LIBPNG_PNG_H) ocv_parse_header("${PNG_PNG_INCLUDE_DIR}/libpng/png.h" PNG_VERSION_LINES PNG_LIBPNG_VER_MAJOR PNG_LIBPNG_VER_MINOR PNG_LIBPNG_VER_RELEASE) else() ocv_parse_header("${PNG_PNG_INCLUDE_DIR}/png.h" PNG_VERSION_LINES PNG_LIBPNG_VER_MAJOR PNG_LIBPNG_VER_MINOR PNG_LIBPNG_VER_RELEASE) endif() endif() endif() if(NOT PNG_FOUND) ocv_clear_vars(PNG_LIBRARY PNG_LIBRARIES PNG_INCLUDE_DIR PNG_PNG_INCLUDE_DIR HAVE_LIBPNG_PNG_H PNG_DEFINITIONS) set(PNG_LIBRARY libpng) set(PNG_LIBRARIES ${PNG_LIBRARY}) add_subdirectory("${OpenCV_SOURCE_DIR}/3rdparty/libpng") set(PNG_INCLUDE_DIR "${${PNG_LIBRARY}_SOURCE_DIR}") set(PNG_DEFINITIONS "") ocv_parse_header("${PNG_INCLUDE_DIR}/png.h" PNG_VERSION_LINES PNG_LIBPNG_VER_MAJOR PNG_LIBPNG_VER_MINOR PNG_LIBPNG_VER_RELEASE) endif() set(HAVE_PNG YES) set(PNG_VERSION "${PNG_LIBPNG_VER_MAJOR}.${PNG_LIBPNG_VER_MINOR}.${PNG_LIBPNG_VER_RELEASE}") endif() # --- OpenEXR (optional) --- if(WITH_OPENEXR) if(BUILD_OPENEXR) ocv_clear_vars(OPENEXR_FOUND) else() include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindOpenEXR.cmake") endif() if(NOT OPENEXR_FOUND) ocv_clear_vars(OPENEXR_INCLUDE_PATHS OPENEXR_LIBRARIES OPENEXR_ILMIMF_LIBRARY OPENEXR_VERSION) set(OPENEXR_LIBRARIES IlmImf) set(OPENEXR_ILMIMF_LIBRARY IlmImf) add_subdirectory("${OpenCV_SOURCE_DIR}/3rdparty/openexr") endif() set(HAVE_OPENEXR YES) endif() # --- GDAL (optional) --- if(WITH_GDAL) find_package(GDAL) if(NOT GDAL_FOUND) ocv_clear_vars(GDAL_LIBRARY GDAL_INCLUDE_DIR) set(HAVE_GDAL NO) else() set(HAVE_GDAL YES) ocv_include_directories(${GDAL_INCLUDE_DIR}) endif() endif()