Merge pull request #1152 from StevenPuttemans:bugfix_2795
[profile/ivi/opencv.git] / cmake / OpenCVFindLibsGrfmt.cmake
1 # ----------------------------------------------------------------------------
2 #  Detect 3rd-party image IO libraries
3 # ----------------------------------------------------------------------------
4
5 # --- zlib (required) ---
6 if(BUILD_ZLIB)
7   ocv_clear_vars(ZLIB_FOUND)
8 else()
9   include(FindZLIB)
10   if(ZLIB_FOUND AND ANDROID)
11     if(ZLIB_LIBRARY STREQUAL "${ANDROID_SYSROOT}/usr/lib/libz.so")
12       set(ZLIB_LIBRARY z)
13       set(ZLIB_LIBRARIES z)
14     endif()
15   endif()
16 endif()
17
18 if(NOT ZLIB_FOUND)
19   ocv_clear_vars(ZLIB_LIBRARY ZLIB_LIBRARIES ZLIB_INCLUDE_DIR)
20
21   set(ZLIB_LIBRARY zlib)
22   set(ZLIB_LIBRARIES ${ZLIB_LIBRARY})
23   add_subdirectory("${OpenCV_SOURCE_DIR}/3rdparty/zlib")
24   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 endif()
28
29 # --- libtiff (optional, should be searched after zlib) ---
30 if(WITH_TIFF)
31   if(BUILD_TIFF)
32     ocv_clear_vars(TIFF_FOUND)
33   else()
34     include(FindTIFF)
35     if(TIFF_FOUND)
36       ocv_parse_header("${TIFF_INCLUDE_DIR}/tiff.h" TIFF_VERSION_LINES TIFF_VERSION_CLASSIC TIFF_VERSION_BIG TIFF_VERSION TIFF_BIGTIFF_VERSION)
37     endif()
38   endif()
39
40   if(NOT TIFF_FOUND)
41     ocv_clear_vars(TIFF_LIBRARY TIFF_LIBRARIES TIFF_INCLUDE_DIR)
42
43     set(TIFF_LIBRARY libtiff)
44     set(TIFF_LIBRARIES ${TIFF_LIBRARY})
45     add_subdirectory("${OpenCV_SOURCE_DIR}/3rdparty/libtiff")
46     set(TIFF_INCLUDE_DIR "${${TIFF_LIBRARY}_SOURCE_DIR}" "${${TIFF_LIBRARY}_BINARY_DIR}")
47     ocv_parse_header("${${TIFF_LIBRARY}_SOURCE_DIR}/tiff.h" TIFF_VERSION_LINES TIFF_VERSION_CLASSIC TIFF_VERSION_BIG TIFF_VERSION TIFF_BIGTIFF_VERSION)
48   endif()
49
50   if(TIFF_VERSION_CLASSIC AND NOT TIFF_VERSION)
51     set(TIFF_VERSION ${TIFF_VERSION_CLASSIC})
52   endif()
53
54   if(TIFF_BIGTIFF_VERSION AND NOT TIFF_VERSION_BIG)
55     set(TIFF_VERSION_BIG ${TIFF_BIGTIFF_VERSION})
56   endif()
57
58   if(NOT TIFF_VERSION_STRING AND TIFF_INCLUDE_DIR)
59     list(GET TIFF_INCLUDE_DIR 0 _TIFF_INCLUDE_DIR)
60     if(EXISTS "${_TIFF_INCLUDE_DIR}/tiffvers.h")
61       file(STRINGS "${_TIFF_INCLUDE_DIR}/tiffvers.h" tiff_version_str REGEX "^#define[\t ]+TIFFLIB_VERSION_STR[\t ]+\"LIBTIFF, Version .*")
62       string(REGEX REPLACE "^#define[\t ]+TIFFLIB_VERSION_STR[\t ]+\"LIBTIFF, Version +([^ \\n]*).*" "\\1" TIFF_VERSION_STRING "${tiff_version_str}")
63       unset(tiff_version_str)
64     endif()
65     unset(_TIFF_INCLUDE_DIR)
66   endif()
67
68   set(HAVE_TIFF YES)
69 endif()
70
71 # --- libjpeg (optional) ---
72 if(WITH_JPEG)
73   if(BUILD_JPEG)
74     ocv_clear_vars(JPEG_FOUND)
75   else()
76     include(FindJPEG)
77   endif()
78
79   if(NOT JPEG_FOUND)
80     ocv_clear_vars(JPEG_LIBRARY JPEG_LIBRARIES JPEG_INCLUDE_DIR)
81
82     set(JPEG_LIBRARY libjpeg)
83     set(JPEG_LIBRARIES ${JPEG_LIBRARY})
84     add_subdirectory("${OpenCV_SOURCE_DIR}/3rdparty/libjpeg")
85     set(JPEG_INCLUDE_DIR "${${JPEG_LIBRARY}_SOURCE_DIR}")
86   endif()
87
88   ocv_parse_header("${JPEG_INCLUDE_DIR}/jpeglib.h" JPEG_VERSION_LINES JPEG_LIB_VERSION)
89   set(HAVE_JPEG YES)
90 endif()
91
92 # --- libjasper (optional, should be searched after libjpeg) ---
93 if(WITH_JASPER)
94   if(BUILD_JASPER)
95     ocv_clear_vars(JASPER_FOUND)
96   else()
97     include(FindJasper)
98   endif()
99
100   if(NOT JASPER_FOUND)
101     ocv_clear_vars(JASPER_LIBRARY JASPER_LIBRARIES JASPER_INCLUDE_DIR)
102
103     set(JASPER_LIBRARY libjasper)
104     set(JASPER_LIBRARIES ${JASPER_LIBRARY})
105     add_subdirectory("${OpenCV_SOURCE_DIR}/3rdparty/libjasper")
106     set(JASPER_INCLUDE_DIR "${${JASPER_LIBRARY}_SOURCE_DIR}")
107   endif()
108
109   set(HAVE_JASPER YES)
110
111   if(NOT JASPER_VERSION_STRING)
112     ocv_parse_header2(JASPER "${JASPER_INCLUDE_DIR}/jasper/jas_config.h" JAS_VERSION "")
113   endif()
114 endif()
115
116 # --- libpng (optional, should be searched after zlib) ---
117 if(WITH_PNG AND NOT IOS)
118   if(BUILD_PNG)
119     ocv_clear_vars(PNG_FOUND)
120   else()
121     include(FindPNG)
122     if(PNG_FOUND)
123       include(CheckIncludeFile)
124       check_include_file("${PNG_PNG_INCLUDE_DIR}/libpng/png.h" HAVE_LIBPNG_PNG_H)
125       if(HAVE_LIBPNG_PNG_H)
126         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)
127       else()
128         ocv_parse_header("${PNG_PNG_INCLUDE_DIR}/png.h" PNG_VERSION_LINES PNG_LIBPNG_VER_MAJOR PNG_LIBPNG_VER_MINOR PNG_LIBPNG_VER_RELEASE)
129       endif()
130     endif()
131   endif()
132
133   if(NOT PNG_FOUND)
134     ocv_clear_vars(PNG_LIBRARY PNG_LIBRARIES PNG_INCLUDE_DIR PNG_PNG_INCLUDE_DIR HAVE_LIBPNG_PNG_H PNG_DEFINITIONS)
135
136     set(PNG_LIBRARY libpng)
137     set(PNG_LIBRARIES ${PNG_LIBRARY})
138     add_subdirectory("${OpenCV_SOURCE_DIR}/3rdparty/libpng")
139     set(PNG_INCLUDE_DIR "${${PNG_LIBRARY}_SOURCE_DIR}")
140     set(PNG_DEFINITIONS "")
141     ocv_parse_header("${PNG_INCLUDE_DIR}/png.h" PNG_VERSION_LINES PNG_LIBPNG_VER_MAJOR PNG_LIBPNG_VER_MINOR PNG_LIBPNG_VER_RELEASE)
142   endif()
143
144   set(HAVE_PNG YES)
145   set(PNG_VERSION "${PNG_LIBPNG_VER_MAJOR}.${PNG_LIBPNG_VER_MINOR}.${PNG_LIBPNG_VER_RELEASE}")
146 endif()
147
148 # --- OpenEXR (optional) ---
149 if(WITH_OPENEXR)
150   if(BUILD_OPENEXR)
151     ocv_clear_vars(OPENEXR_FOUND)
152   else()
153     include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindOpenEXR.cmake")
154   endif()
155
156   if(NOT OPENEXR_FOUND)
157     ocv_clear_vars(OPENEXR_INCLUDE_PATHS OPENEXR_LIBRARIES OPENEXR_ILMIMF_LIBRARY OPENEXR_VERSION)
158
159     set(OPENEXR_LIBRARIES IlmImf)
160     set(OPENEXR_ILMIMF_LIBRARY IlmImf)
161     add_subdirectory("${OpenCV_SOURCE_DIR}/3rdparty/openexr")
162   endif()
163
164   set(HAVE_OPENEXR YES)
165 endif()
166
167 #cmake 2.8.2 bug - it fails to determine zlib version
168 if(ZLIB_FOUND)
169   ocv_parse_header2(ZLIB "${ZLIB_INCLUDE_DIR}/zlib.h" ZLIB_VERSION)
170 endif()
171
172 # --- Apple ImageIO ---
173 if(WITH_IMAGEIO)
174   set(HAVE_IMAGEIO YES)
175 endif()