OpenCVFindLibsGrfmt.cmake 5.31 KB
Newer Older
1 2 3
# ----------------------------------------------------------------------------
#  Detect 3rd-party image IO libraries
# ----------------------------------------------------------------------------
4

5
# --- zlib (required) ---
6
if(BUILD_ZLIB)
7
  ocv_clear_vars(ZLIB_FOUND)
8
else()
Vadim Pisarevsky's avatar
Vadim Pisarevsky committed
9 10 11 12 13
  include(FindZLIB)
  if(ZLIB_FOUND AND ANDROID)
    if(ZLIB_LIBRARY STREQUAL "${ANDROID_SYSROOT}/usr/lib/libz.so")
      set(ZLIB_LIBRARY z)
      set(ZLIB_LIBRARIES z)
14
    endif()
15 16 17 18
  endif()
endif()

if(NOT ZLIB_FOUND)
19
  ocv_clear_vars(ZLIB_LIBRARY ZLIB_LIBRARIES ZLIB_INCLUDE_DIR)
20

21 22 23 24
  set(ZLIB_LIBRARY zlib)
  set(ZLIB_LIBRARIES ${ZLIB_LIBRARY})
  add_subdirectory("${OpenCV_SOURCE_DIR}/3rdparty/zlib")
  set(ZLIB_INCLUDE_DIR "${${ZLIB_LIBRARY}_SOURCE_DIR}" "${${ZLIB_LIBRARY}_BINARY_DIR}")
25 26

  ocv_parse_header2(ZLIB "${${ZLIB_LIBRARY}_SOURCE_DIR}/zlib.h" ZLIB_VERSION)
27 28
endif()

29
# --- libtiff (optional, should be searched after zlib) ---
30 31
if(WITH_TIFF)
  if(BUILD_TIFF)
32
    ocv_clear_vars(TIFF_FOUND)
33 34
  else()
    include(FindTIFF)
35 36 37
    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()
38 39 40 41
  endif()
endif()

if(WITH_TIFF AND NOT TIFF_FOUND)
42
  ocv_clear_vars(TIFF_LIBRARY TIFF_LIBRARIES TIFF_INCLUDE_DIR)
43

44 45 46
  set(TIFF_LIBRARY libtiff)
  set(TIFF_LIBRARIES ${TIFF_LIBRARY})
  add_subdirectory("${OpenCV_SOURCE_DIR}/3rdparty/libtiff")
47
  set(TIFF_INCLUDE_DIR "${${TIFF_LIBRARY}_SOURCE_DIR}" "${${TIFF_LIBRARY}_BINARY_DIR}")
48 49 50 51 52 53 54 55 56
  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})
57 58
endif()

59 60 61 62 63 64 65 66 67 68
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()

69
# --- libjpeg (optional) ---
70 71
if(WITH_JPEG)
  if(BUILD_JPEG)
72
    ocv_clear_vars(JPEG_FOUND)
73 74 75 76 77 78
  else()
    include(FindJPEG)
  endif()
endif()

if(WITH_JPEG AND NOT JPEG_FOUND)
79
  ocv_clear_vars(JPEG_LIBRARY JPEG_LIBRARIES JPEG_INCLUDE_DIR)
80

81 82 83 84 85 86
  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()

87 88 89
ocv_parse_header("${JPEG_INCLUDE_DIR}/jpeglib.h" JPEG_VERSION_LINES JPEG_LIB_VERSION)


90
# --- libjasper (optional, should be searched after libjpeg) ---
91 92
if(WITH_JASPER)
  if(BUILD_JASPER)
93
    ocv_clear_vars(JASPER_FOUND)
94 95 96 97 98 99
  else()
    include(FindJasper)
  endif()
endif()

if(WITH_JASPER AND NOT JASPER_FOUND)
100
  ocv_clear_vars(JASPER_LIBRARY JASPER_LIBRARIES JASPER_INCLUDE_DIR)
101

102 103 104 105 106 107
  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()

Vadim Pisarevsky's avatar
Vadim Pisarevsky committed
108 109 110
if(NOT JASPER_VERSION_STRING)
  ocv_parse_header2(JASPER "${JASPER_INCLUDE_DIR}/jasper/jas_config.h" JAS_VERSION "")
endif()
111

112
# --- libpng (optional, should be searched after zlib) ---
113 114
if(WITH_PNG)
  if(BUILD_PNG)
115
    ocv_clear_vars(PNG_FOUND)
116 117 118
  else()
    include(FindPNG)
    if(PNG_FOUND)
119 120 121 122 123 124 125
      check_include_file("${PNG_PNG_INCLUDE_DIR}/png.h"        HAVE_PNG_H)
      check_include_file("${PNG_PNG_INCLUDE_DIR}/libpng/png.h" HAVE_LIBPNG_PNG_H)
      if(HAVE_PNG_H)
        ocv_parse_header("${PNG_PNG_INCLUDE_DIR}/png.h" PNG_VERSION_LINES PNG_LIBPNG_VER_MAJOR PNG_LIBPNG_VER_MINOR PNG_LIBPNG_VER_RELEASE)
      elseif(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)
      endif()
126 127 128 129 130
    endif()
  endif()
endif()

if(WITH_PNG AND NOT PNG_FOUND)
131
  ocv_clear_vars(PNG_LIBRARY PNG_LIBRARIES PNG_INCLUDE_DIR PNG_PNG_INCLUDE_DIR HAVE_PNG_H HAVE_LIBPNG_PNG_H PNG_DEFINITIONS)
132

133 134 135 136 137
  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 "")
138
  ocv_parse_header("${PNG_INCLUDE_DIR}/png.h" PNG_VERSION_LINES PNG_LIBPNG_VER_MAJOR PNG_LIBPNG_VER_MINOR PNG_LIBPNG_VER_RELEASE)
139 140
endif()

141 142
set(PNG_VERSION "${PNG_LIBPNG_VER_MAJOR}.${PNG_LIBPNG_VER_MINOR}.${PNG_LIBPNG_VER_RELEASE}")

143
# --- OpenEXR (optional) ---
144
if(WITH_OPENEXR)
145 146 147 148 149 150 151 152 153 154 155 156 157
  if(BUILD_OPENEXR)
    ocv_clear_vars(OPENEXR_FOUND)
  else()
    include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindOpenEXR.cmake")
  endif()
endif()

if(WITH_OPENEXR AND 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")
158
endif()
159 160 161 162 163

#cmake 2.8.2 bug - it fails to determine zlib version
if(ZLIB_FOUND)
  ocv_parse_header2(ZLIB "${ZLIB_INCLUDE_DIR}/zlib.h" ZLIB_VERSION)
endif()