Refactored image format library finding logic.
authorRoman Donchenko <roman.donchenko@itseez.com>
Thu, 11 Jul 2013 08:40:16 +0000 (12:40 +0400)
committerRoman Donchenko <roman.donchenko@itseez.com>
Thu, 11 Jul 2013 08:40:16 +0000 (12:40 +0400)
Now the HAVE_* macros are set in cvconfig.h. Most of them already were there,
but were nonfunctional.

cmake/OpenCVFindLibsGrfmt.cmake
cmake/templates/cvconfig.h.cmake
modules/highgui/CMakeLists.txt

index c8ebb3d..9381350 100644 (file)
@@ -36,56 +36,58 @@ if(WITH_TIFF)
       ocv_parse_header("${TIFF_INCLUDE_DIR}/tiff.h" TIFF_VERSION_LINES TIFF_VERSION_CLASSIC TIFF_VERSION_BIG TIFF_VERSION TIFF_BIGTIFF_VERSION)
     endif()
   endif()
-endif()
 
-if(WITH_TIFF AND NOT TIFF_FOUND)
-  ocv_clear_vars(TIFF_LIBRARY TIFF_LIBRARIES TIFF_INCLUDE_DIR)
+  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()
+    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_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(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)
+  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()
-  unset(_TIFF_INCLUDE_DIR)
+
+  set(HAVE_TIFF YES)
 endif()
 
 # --- libjpeg (optional) ---
-if(WITH_JPEG AND NOT IOS)
+if(WITH_JPEG)
   if(BUILD_JPEG)
     ocv_clear_vars(JPEG_FOUND)
   else()
     include(FindJPEG)
   endif()
-endif()
 
-if(WITH_JPEG AND NOT JPEG_FOUND)
-  ocv_clear_vars(JPEG_LIBRARY JPEG_LIBRARIES JPEG_INCLUDE_DIR)
+  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(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()
 
 # --- libjasper (optional, should be searched after libjpeg) ---
 if(WITH_JASPER)
@@ -94,19 +96,21 @@ if(WITH_JASPER)
   else()
     include(FindJasper)
   endif()
-endif()
 
-if(WITH_JASPER AND NOT JASPER_FOUND)
-  ocv_clear_vars(JASPER_LIBRARY JASPER_LIBRARIES JASPER_INCLUDE_DIR)
+  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(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 "")
+  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) ---
@@ -117,29 +121,29 @@ if(WITH_PNG AND NOT IOS)
     include(FindPNG)
     if(PNG_FOUND)
       include(CheckIncludeFile)
-      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)
+      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()
-endif()
 
-if(WITH_PNG AND NOT PNG_FOUND)
-  ocv_clear_vars(PNG_LIBRARY PNG_LIBRARIES PNG_INCLUDE_DIR PNG_PNG_INCLUDE_DIR HAVE_PNG_H HAVE_LIBPNG_PNG_H PNG_DEFINITIONS)
+  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(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(PNG_VERSION "${PNG_LIBPNG_VER_MAJOR}.${PNG_LIBPNG_VER_MINOR}.${PNG_LIBPNG_VER_RELEASE}")
+  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)
@@ -148,14 +152,16 @@ if(WITH_OPENEXR)
   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)
+  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(OPENEXR_LIBRARIES IlmImf)
-  set(OPENEXR_ILMIMF_LIBRARY IlmImf)
-  add_subdirectory("${OpenCV_SOURCE_DIR}/3rdparty/openexr")
+  set(HAVE_OPENEXR YES)
 endif()
 
 #cmake 2.8.2 bug - it fails to determine zlib version
index 8aebbad..58f96a0 100644 (file)
@@ -53,7 +53,7 @@
 #cmakedefine  HAVE_GTK
 
 /* OpenEXR codec */
-#cmakedefine  HAVE_ILMIMF
+#cmakedefine  HAVE_OPENEXR
 
 /* Apple ImageIO Framework */
 #cmakedefine  HAVE_IMAGEIO
@@ -73,9 +73,6 @@
 /* PNG codec */
 #cmakedefine  HAVE_PNG
 
-/* png.h needs to be included */
-#cmakedefine  HAVE_PNG_H
-
 /* QuickTime video libraries */
 #cmakedefine  HAVE_QUICKTIME
 
index c251087..7b12ff0 100644 (file)
@@ -9,38 +9,33 @@ ocv_add_module(highgui opencv_imgproc OPTIONAL opencv_androidcamera)
 
 ocv_clear_vars(GRFMT_LIBS)
 
-if(WITH_PNG OR WITH_TIFF OR WITH_OPENEXR)
+if(HAVE_PNG OR HAVE_TIFF OR HAVE_OPENEXR)
   ocv_include_directories(${ZLIB_INCLUDE_DIR})
   list(APPEND GRFMT_LIBS ${ZLIB_LIBRARIES})
 endif()
 
-if(WITH_JPEG)
-  add_definitions(-DHAVE_JPEG)
+if(HAVE_JPEG)
   ocv_include_directories(${JPEG_INCLUDE_DIR})
   list(APPEND GRFMT_LIBS ${JPEG_LIBRARIES})
 endif()
 
-if(WITH_PNG)
-  add_definitions(-DHAVE_PNG)
+if(HAVE_PNG)
   add_definitions(${PNG_DEFINITIONS})
   ocv_include_directories(${PNG_INCLUDE_DIR})
   list(APPEND GRFMT_LIBS ${PNG_LIBRARIES})
 endif()
 
-if(WITH_TIFF)
-  add_definitions(-DHAVE_TIFF)
+if(HAVE_TIFF)
   ocv_include_directories(${TIFF_INCLUDE_DIR})
   list(APPEND GRFMT_LIBS ${TIFF_LIBRARIES})
 endif()
 
-if(WITH_JASPER)
-  add_definitions(-DHAVE_JASPER)
+if(HAVE_JASPER)
   ocv_include_directories(${JASPER_INCLUDE_DIR})
   list(APPEND GRFMT_LIBS ${JASPER_LIBRARIES})
 endif()
 
-if(WITH_OPENEXR)
-  add_definitions(-DHAVE_OPENEXR)
+if(HAVE_OPENEXR)
   include_directories(SYSTEM ${OPENEXR_INCLUDE_PATHS})
   list(APPEND GRFMT_LIBS ${OPENEXR_LIBRARIES})
 endif()