cmake: simplified configuration output
authorMaksim Shabunin <maksim.shabunin@gmail.com>
Tue, 14 Nov 2017 14:07:04 +0000 (17:07 +0300)
committerMaksim Shabunin <maksim.shabunin@gmail.com>
Fri, 17 Nov 2017 08:57:49 +0000 (11:57 +0300)
CMakeLists.txt
cmake/OpenCVDetectApacheAnt.cmake
cmake/OpenCVDetectVTK.cmake
cmake/OpenCVUtils.cmake

index 6e6fa2f..6f200a2 100644 (file)
@@ -200,7 +200,7 @@ OCV_OPTION(WITH_NVCUVID        "Include NVidia Video Decoding library support"
 OCV_OPTION(WITH_EIGEN          "Include Eigen2/Eigen3 support"               ON   IF (NOT WINRT) )
 OCV_OPTION(WITH_VFW            "Include Video for Windows support"           ON   IF WIN32 )
 OCV_OPTION(WITH_FFMPEG         "Include FFMPEG support"                      ON   IF (NOT ANDROID AND NOT IOS AND NOT WINRT) )
-OCV_OPTION(WITH_GSTREAMER      "Include Gstreamer support"                   ON   IF (NOT ANDROID) )
+OCV_OPTION(WITH_GSTREAMER      "Include Gstreamer support"                   ON   IF (NOT ANDROID AND NOT IOS AND NOT WINRT) )
 OCV_OPTION(WITH_GSTREAMER_0_10 "Enable Gstreamer 0.10 support (instead of 1.x)"                              OFF )
 OCV_OPTION(WITH_GTK            "Include GTK support"                         ON   IF (UNIX AND NOT APPLE AND NOT ANDROID) )
 OCV_OPTION(WITH_GTK_2_X        "Use GTK version 2"                           OFF  IF (UNIX AND NOT APPLE AND NOT ANDROID) )
@@ -229,8 +229,8 @@ OCV_OPTION(WITH_CSTRIPES       "Include C= support"                          OFF
 OCV_OPTION(WITH_PTHREADS_PF    "Use pthreads-based parallel_for"             ON   IF (NOT WIN32 OR MINGW) )
 OCV_OPTION(WITH_TIFF           "Include TIFF support"                        ON   IF (NOT IOS) )
 OCV_OPTION(WITH_UNICAP         "Include Unicap support (GPL)"                OFF  IF (UNIX AND NOT APPLE AND NOT ANDROID) )
-OCV_OPTION(WITH_V4L            "Include Video 4 Linux support"               ON   IF (UNIX AND NOT ANDROID) )
-OCV_OPTION(WITH_LIBV4L         "Use libv4l for Video 4 Linux support"        OFF  IF (UNIX AND NOT ANDROID) )
+OCV_OPTION(WITH_V4L            "Include Video 4 Linux support"               ON   IF (UNIX AND NOT ANDROID AND NOT APPLE) )
+OCV_OPTION(WITH_LIBV4L         "Use libv4l for Video 4 Linux support"        OFF  IF (UNIX AND NOT ANDROID AND NOT APPLE) )
 OCV_OPTION(WITH_DSHOW          "Build VideoIO with DirectShow support"       ON   IF (WIN32 AND NOT ARM AND NOT WINRT) )
 OCV_OPTION(WITH_MSMF           "Build VideoIO with Media Foundation support" OFF  IF WIN32 )
 OCV_OPTION(WITH_XIMEA          "Include XIMEA cameras support"               OFF  IF (NOT ANDROID AND NOT WINRT) )
@@ -247,7 +247,7 @@ OCV_OPTION(WITH_VA             "Include VA support"                          OFF
 OCV_OPTION(WITH_VA_INTEL       "Include Intel VA-API/OpenCL support"         OFF  IF (UNIX AND NOT ANDROID) )
 OCV_OPTION(WITH_MFX            "Include Intel Media SDK support"             OFF   IF ((UNIX AND NOT ANDROID) OR (WIN32 AND NOT WINRT AND NOT MINGW)) )
 OCV_OPTION(WITH_GDAL           "Include GDAL Support"                        OFF  IF (NOT ANDROID AND NOT IOS AND NOT WINRT) )
-OCV_OPTION(WITH_GPHOTO2        "Include gPhoto2 library support"             ON   IF (UNIX AND NOT ANDROID) )
+OCV_OPTION(WITH_GPHOTO2        "Include gPhoto2 library support"             ON   IF (UNIX AND NOT ANDROID AND NOT IOS) )
 OCV_OPTION(WITH_LAPACK         "Include Lapack library support"              ON   IF (NOT ANDROID AND NOT IOS) )
 OCV_OPTION(WITH_ITT            "Include Intel ITT support"                   ON   IF (NOT APPLE_FRAMEWORK) )
 
@@ -996,32 +996,28 @@ status("")
 status("  OpenCV modules:")
 string(REPLACE "opencv_" "" OPENCV_MODULES_BUILD_ST          "${OPENCV_MODULES_BUILD}")
 string(REPLACE "opencv_" "" OPENCV_MODULES_DISABLED_USER_ST  "${OPENCV_MODULES_DISABLED_USER}")
+string(REPLACE "opencv_" "" OPENCV_MODULES_DISABLED_AUTO_ST  "${OPENCV_MODULES_DISABLED_AUTO}")
 string(REPLACE "opencv_" "" OPENCV_MODULES_DISABLED_FORCE_ST "${OPENCV_MODULES_DISABLED_FORCE}")
-set(OPENCV_MODULES_DISABLED_AUTO_ST "")
-foreach(m ${OPENCV_MODULES_DISABLED_AUTO})
-  set(__mdeps "")
-  foreach(d ${OPENCV_MODULE_${m}_DEPS})
-    if(d MATCHES "^opencv_" AND NOT HAVE_${d})
-      list(APPEND __mdeps ${d})
-    endif()
-  endforeach()
-  if(__mdeps)
-    list(APPEND OPENCV_MODULES_DISABLED_AUTO_ST "${m}(deps: ${__mdeps})")
-  else()
-    list(APPEND OPENCV_MODULES_DISABLED_AUTO_ST "${m}")
-  endif()
-endforeach()
-string(REPLACE "opencv_" "" OPENCV_MODULES_DISABLED_AUTO_ST  "${OPENCV_MODULES_DISABLED_AUTO_ST}")
-
+list(SORT OPENCV_MODULES_BUILD_ST)
+list(SORT OPENCV_MODULES_DISABLED_USER_ST)
+list(SORT OPENCV_MODULES_DISABLED_AUTO_ST)
+list(SORT OPENCV_MODULES_DISABLED_FORCE_ST)
 status("    To be built:"            OPENCV_MODULES_BUILD          THEN ${OPENCV_MODULES_BUILD_ST}          ELSE "-")
 status("    Disabled:"               OPENCV_MODULES_DISABLED_USER  THEN ${OPENCV_MODULES_DISABLED_USER_ST}  ELSE "-")
 status("    Disabled by dependency:" OPENCV_MODULES_DISABLED_AUTO  THEN ${OPENCV_MODULES_DISABLED_AUTO_ST}  ELSE "-")
 status("    Unavailable:"            OPENCV_MODULES_DISABLED_FORCE THEN ${OPENCV_MODULES_DISABLED_FORCE_ST} ELSE "-")
 
-if(OPENCV_ENABLE_NONFREE)
-  status("")
-  status("  Non-free algorithms are enabled")
-endif()
+ocv_build_features_string(apps_status
+  IF BUILD_TESTS AND HAVE_opencv_ts THEN "tests"
+  IF BUILD_PERF_TESTS AND HAVE_opencv_ts THEN "perf_tests"
+  IF BUILD_EXAMPLES THEN "examples"
+  IF BUILD_opencv_apps THEN "apps"
+  IF BUILD_ANDROID_SERVICE THEN "android_service"
+  IF BUILD_ANDROID_EXAMPLES AND CAN_BUILD_ANDROID_PROJECTS THEN "android_examples"
+  ELSE "-")
+status("    Applications:" "${apps_status}")
+status("    Documentation:" BUILD_DOCS AND DOXYGEN_FOUND THEN "YES (${DOXYGEN_EXECUTABLE} ${DOXYGEN_VERSION})" ELSE "NO")
+status("    Non-free algorithms:" OPENCV_ENABLE_NONFREE THEN "YES" ELSE "NO")
 
 # ========================== Android details ==========================
 if(ANDROID)
@@ -1038,8 +1034,6 @@ if(ANDROID)
     status("    Android toolchain:" "${ANDROID_STANDALONE_TOOLCHAIN}")
   endif()
   status("    android tool:"  ANDROID_EXECUTABLE  THEN "${ANDROID_EXECUTABLE} (${ANDROID_TOOLS_Pkg_Desc})" ELSE NO)
-  status("    Google Play manager:" BUILD_ANDROID_SERVICE                                         THEN YES ELSE NO)
-  status("    Android examples:"    BUILD_ANDROID_EXAMPLES AND CAN_BUILD_ANDROID_PROJECTS         THEN YES ELSE NO)
 endif()
 
 # ================== Windows RT features ==================
@@ -1060,111 +1054,108 @@ endif(WIN32)
 status("")
 status("  GUI: ")
 
-if(HAVE_QT5)
-  status("    QT 5.x:"            HAVE_QT        THEN "YES (ver ${Qt5Core_VERSION_STRING})" ELSE NO)
-  status("    QT OpenGL support:" HAVE_QT_OPENGL THEN "YES (${Qt5OpenGL_LIBRARIES} ${Qt5OpenGL_VERSION_STRING})" ELSE NO)
-elseif(HAVE_QT)
-  status("    QT 4.x:"            HAVE_QT        THEN "YES (ver ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH} ${QT_EDITION})" ELSE NO)
-  status("    QT OpenGL support:" HAVE_QT_OPENGL THEN "YES (${QT_QTOPENGL_LIBRARY})" ELSE NO)
-else()
-  if(DEFINED WITH_QT)
-    status("    QT:" NO)
+if(WITH_QT OR HAVE_QT)
+  if(HAVE_QT5)
+    status("    QT:" "YES (ver ${Qt5Core_VERSION_STRING})")
+    status("      QT OpenGL support:" HAVE_QT_OPENGL THEN "YES (${Qt5OpenGL_LIBRARIES} ${Qt5OpenGL_VERSION_STRING})" ELSE NO)
+  elseif(HAVE_QT)
+    status("    QT:" "YES (ver ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH} ${QT_EDITION})")
+    status("      QT OpenGL support:" HAVE_QT_OPENGL THEN "YES (${QT_QTOPENGL_LIBRARY})" ELSE NO)
+  else()
+    status("    QT:" "NO")
   endif()
-  if(DEFINED WITH_WIN32UI)
-    status("    Win32 UI:" HAVE_WIN32UI THEN YES ELSE NO)
+endif()
+
+if(WITH_WIN32UI)
+  status("    Win32 UI:" HAVE_WIN32UI THEN YES ELSE NO)
+endif()
+
+if(APPLE)
+  if(WITH_CARBON)
+    status("    Carbon:" YES)
   else()
-    if(APPLE)
-      if(WITH_CARBON)
-        status("    Carbon:" YES)
-      else()
-        status("    Cocoa:"  YES)
-      endif()
-    else()
-      if(HAVE_GTK3)
-        status("    GTK+ 3.x:" HAVE_GTK THEN "YES (ver ${ALIASOF_gtk+-3.0_VERSION})" ELSE NO)
-      elseif(HAVE_GTK)
-        status("    GTK+ 2.x:" HAVE_GTK THEN "YES (ver ${ALIASOF_gtk+-2.0_VERSION})" ELSE NO)
-      else()
-        status("    GTK+:" NO)
-      endif()
-      status("    GThread :" HAVE_GTHREAD THEN "YES (ver ${ALIASOF_gthread-2.0_VERSION})" ELSE NO)
-      status("    GtkGlExt:" HAVE_GTKGLEXT THEN "YES (ver ${ALIASOF_gtkglext-1.0_VERSION})" ELSE NO)
-    endif()
+    status("    Cocoa:"  YES)
+  endif()
+endif()
+
+if(WITH_GTK OR HAVE_GTK)
+  if(HAVE_GTK3)
+    status("    GTK+:" "YES (ver ${ALIASOF_gtk+-3.0_VERSION})")
+  elseif(HAVE_GTK)
+    status("    GTK+:" "YES (ver ${ALIASOF_gtk+-2.0_VERSION})")
+  else()
+    status("    GTK+:" "NO")
+  endif()
+  if(HAVE_GTK)
+    status(  "      GThread :" HAVE_GTHREAD THEN "YES (ver ${ALIASOF_gthread-2.0_VERSION})" ELSE NO)
+    status(  "      GtkGlExt:" HAVE_GTKGLEXT THEN "YES (ver ${ALIASOF_gtkglext-1.0_VERSION})" ELSE NO)
   endif()
 endif()
 
-status("    OpenGL support:" HAVE_OPENGL THEN "YES (${OPENGL_LIBRARIES})" ELSE NO)
-status("    VTK support:" HAVE_VTK THEN "YES (ver ${VTK_VERSION})" ELSE NO)
+if(WITH_OPENGL OR HAVE_OPENGL)
+  status("    OpenGL support:" HAVE_OPENGL THEN "YES (${OPENGL_LIBRARIES})" ELSE NO)
+endif()
+
+if(WITH_VTK OR HAVE_VTK)
+  status("    VTK support:" HAVE_VTK THEN "YES (ver ${VTK_VERSION})" ELSE NO)
+endif()
 
 # ========================== MEDIA IO ==========================
 status("")
 status("  Media I/O: ")
-status("    ZLib:"         BUILD_ZLIB    THEN "build (ver ${ZLIB_VERSION_STRING})"               ELSE "${ZLIB_LIBRARIES} (ver ${ZLIB_VERSION_STRING})")
+status("    ZLib:"   ZLIB_FOUND THEN "${ZLIB_LIBRARIES} (ver ${ZLIB_VERSION_STRING})" ELSE "build (ver ${ZLIB_VERSION_STRING})")
 
-if(WITH_JPEG)
-  status("    JPEG:"       JPEG_FOUND    THEN "${JPEG_LIBRARY} (ver ${JPEG_LIB_VERSION})"        ELSE "build (ver ${JPEG_LIB_VERSION})")
-else()
-  status("    JPEG:"       "NO")
+if(WITH_JPEG OR HAVE_JPEG)
+  status("    JPEG:" JPEG_FOUND THEN "${JPEG_LIBRARY} (ver ${JPEG_LIB_VERSION})" ELSE "build (ver ${JPEG_LIB_VERSION})")
 endif()
 
-if(WITH_WEBP)
-  status("    WEBP:"       WEBP_FOUND    THEN "${WEBP_LIBRARY} (ver ${WEBP_VERSION})"        ELSE "build (ver ${WEBP_VERSION})")
-else()
-  status("    WEBP:"       "NO")
+if(WITH_WEBP OR HAVE_WEBP)
+  status("    WEBP:" WEBP_FOUND THEN "${WEBP_LIBRARY} (ver ${WEBP_VERSION})" ELSE "build (ver ${WEBP_VERSION})")
 endif()
 
-if(WITH_PNG)
-  status("    PNG:"        PNG_FOUND     THEN "${PNG_LIBRARY} (ver ${PNG_VERSION})"              ELSE "build (ver ${PNG_VERSION})")
-else()
-  status("    PNG:"        "NO")
+if(WITH_PNG OR HAVE_PNG)
+  status("    PNG:"  PNG_FOUND  THEN "${PNG_LIBRARY} (ver ${PNG_VERSION})" ELSE "build (ver ${PNG_VERSION})")
 endif()
 
-if(WITH_TIFF)
-  if(TIFF_VERSION_STRING AND TIFF_FOUND)
-    status("    TIFF:"     "${TIFF_LIBRARY} (ver ${TIFF_VERSION} - ${TIFF_VERSION_STRING})")
-  else()
-    status("    TIFF:"     TIFF_FOUND    THEN "${TIFF_LIBRARY} (ver ${TIFF_VERSION})"            ELSE "build (ver ${TIFF_VERSION} - ${TIFF_VERSION_STRING})")
-  endif()
-else()
-  status("    TIFF:"       "NO")
+if(WITH_TIFF OR HAVE_TIFF)
+  status("    TIFF:" TIFF_FOUND THEN "${TIFF_LIBRARY} (ver ${TIFF_VERSION} / ${TIFF_VERSION_STRING})" ELSE "build (ver ${TIFF_VERSION} - ${TIFF_VERSION_STRING})")
 endif()
-if(WITH_JASPER)
-  status("    JPEG 2000:"  JASPER_FOUND  THEN "${JASPER_LIBRARY} (ver ${JASPER_VERSION_STRING})" ELSE "build (ver ${JASPER_VERSION_STRING})")
-else()
-  status("    JPEG 2000:"  "NO")
+
+if(WITH_JASPER OR HAVE_JASPER)
+  status("    JPEG 2000:" JASPER_FOUND THEN "${JASPER_LIBRARY} (ver ${JASPER_VERSION_STRING})" ELSE "build (ver ${JASPER_VERSION_STRING})")
 endif()
-if(WITH_OPENEXR)
-  status("    OpenEXR:"  OPENEXR_FOUND  THEN "${OPENEXR_LIBRARIES} (ver ${OPENEXR_VERSION})" ELSE "build (ver ${OPENEXR_VERSION})")
-else()
-  status("    OpenEXR:"  "NO")
+
+if(WITH_OPENEXR OR HAVE_OPENEXR)
+  status("    OpenEXR:" OPENEXR_FOUND THEN "${OPENEXR_LIBRARIES} (ver ${OPENEXR_VERSION})" ELSE "build (ver ${OPENEXR_VERSION})")
 endif()
 
-if( WITH_GDAL )
-  status("    GDAL:"   GDAL_FOUND THEN "${GDAL_LIBRARY}" ELSE "NO")
-else()
-  status("    GDAL:"     "NO")
+if(WITH_GDAL OR HAVE_GDAL)
+  status("    GDAL:" HAVE_GDAL THEN "YES (${GDAL_LIBRARY})" ELSE "NO")
 endif()
 
-if(WITH_GDCM)
-  status("    GDCM:"   GDCM_FOUND THEN "YES (ver ${GDCM_VERSION})" ELSE "NO")
-else()
-  status("    GDCM:"     "NO")
+if(WITH_GDCM OR HAVE_GDCM)
+  status("    GDCM:" HAVE_GDCM THEN "YES (ver ${GDCM_VERSION})" ELSE "NO")
 endif()
 
 # ========================== VIDEO IO ==========================
 status("")
 status("  Video I/O:")
 
-if (DEFINED WITH_VFW)
+if(WITH_VFW OR HAVE_VFW)
   status("    Video for Windows:" HAVE_VFW         THEN YES                                        ELSE NO)
-endif(DEFINED WITH_VFW)
+endif()
 
-if(DEFINED WITH_1394)
-  status("    DC1394 1.x:"     HAVE_DC1394         THEN "YES (ver ${ALIASOF_libdc1394_VERSION})"   ELSE NO)
-  status("    DC1394 2.x:"     HAVE_DC1394_2       THEN "YES (ver ${ALIASOF_libdc1394-2_VERSION})" ELSE NO)
-endif(DEFINED WITH_1394)
+if(WITH_1394 OR HAVE_DC1394)
+  if (HAVE_DC1394_2)
+    status("    DC1394:" "YES (ver ${ALIASOF_libdc1394-2_VERSION})")
+  elseif (HAVE_DC1394)
+    status("    DC1394:" "YES (ver ${ALIASOF_libdc1394_VERSION})")
+  else()
+    status("    DC1394:" "NO")
+  endif()
+endif()
 
-if(DEFINED WITH_FFMPEG OR HAVE_FFMPEG)
+if(WITH_FFMPEG OR HAVE_FFMPEG)
   if(WIN32)
     status("    FFMPEG:"       HAVE_FFMPEG         THEN "YES (prebuilt binaries)"                  ELSE NO)
   else()
@@ -1177,7 +1168,7 @@ if(DEFINED WITH_FFMPEG OR HAVE_FFMPEG)
   status("      avresample:"   FFMPEG_libavresample_FOUND THEN "YES (ver ${FFMPEG_libavresample_VERSION})" ELSE NO)
 endif()
 
-if(DEFINED WITH_GSTREAMER)
+if(WITH_GSTREAMER OR HAVE_GSTREAMER)
   status("    GStreamer:"      HAVE_GSTREAMER      THEN ""                                         ELSE NO)
   if(HAVE_GSTREAMER)
     status("      base:"       "YES (ver ${GSTREAMER_BASE_VERSION})")
@@ -1186,121 +1177,100 @@ if(DEFINED WITH_GSTREAMER)
     status("      riff:"       "YES (ver ${GSTREAMER_RIFF_VERSION})")
     status("      pbutils:"    "YES (ver ${GSTREAMER_PBUTILS_VERSION})")
   endif(HAVE_GSTREAMER)
-endif(DEFINED WITH_GSTREAMER)
+endif()
 
-if(DEFINED WITH_OPENNI)
-  status("    OpenNI:"         HAVE_OPENNI         THEN "YES (ver ${OPENNI_VERSION_STRING}, build ${OPENNI_VERSION_BUILD})"
-                                                                                                   ELSE NO)
-  status("    OpenNI PrimeSensor Modules:" HAVE_OPENNI_PRIME_SENSOR_MODULE
-                                                   THEN "YES (${OPENNI_PRIME_SENSOR_MODULE})"      ELSE NO)
-endif(DEFINED WITH_OPENNI)
+if(WITH_OPENNI OR HAVE_OPENNI)
+  status("    OpenNI:"         HAVE_OPENNI         THEN "YES (ver ${OPENNI_VERSION_STRING}, build ${OPENNI_VERSION_BUILD})" ELSE NO)
+  status("    OpenNI PrimeSensor Modules:" HAVE_OPENNI_PRIME_SENSOR_MODULE THEN "YES (${OPENNI_PRIME_SENSOR_MODULE})"      ELSE NO)
+endif()
 
-if(DEFINED WITH_OPENNI2)
-  status("    OpenNI2:"        HAVE_OPENNI2    THEN "YES (ver ${OPENNI2_VERSION_STRING}, build ${OPENNI2_VERSION_BUILD})"
-                                                                                                   ELSE NO)
-endif(DEFINED WITH_OPENNI2)
+if(WITH_OPENNI2 OR HAVE_OPENNI2)
+  status("    OpenNI2:"        HAVE_OPENNI2    THEN "YES (ver ${OPENNI2_VERSION_STRING}, build ${OPENNI2_VERSION_BUILD})" ELSE NO)
+endif()
 
-if(DEFINED WITH_PVAPI)
+if(WITH_PVAPI OR HAVE_PVAPI)
   status("    PvAPI:"          HAVE_PVAPI          THEN YES                                        ELSE NO)
-endif(DEFINED WITH_PVAPI)
+endif()
 
-if(DEFINED WITH_GIGEAPI)
+if(WITH_GIGEAPI OR HAVE_GIGE_API)
   status("    GigEVisionSDK:"  HAVE_GIGE_API       THEN YES                                        ELSE NO)
-endif(DEFINED WITH_GIGEAPI)
+endif()
 
-if(DEFINED WITH_ARAVIS)
+if(WITH_ARAVIS OR HAVE_ARAVIS_API)
   status("    Aravis SDK:"     HAVE_ARAVIS_API     THEN "YES (${ARAVIS_LIBRARIES})"                ELSE NO)
-endif(DEFINED WITH_ARAVIS)
+endif()
 
-if(DEFINED APPLE)
+if(APPLE)
   status("    AVFoundation:"   HAVE_AVFOUNDATION   THEN YES                                        ELSE NO)
   if(WITH_QUICKTIME OR HAVE_QUICKTIME)
-  status("    QuickTime:"      HAVE_QUICKTIME      THEN YES                                        ELSE NO)
+    status("    QuickTime:"      HAVE_QUICKTIME      THEN YES                                        ELSE NO)
   endif()
   if(WITH_QTKIT OR HAVE_QTKIT)
-  status("    QTKit:"          HAVE_QTKIT          THEN "YES (deprecated)"                         ELSE NO)
+    status("    QTKit:"          HAVE_QTKIT          THEN "YES (deprecated)"                         ELSE NO)
   endif()
-endif(DEFINED APPLE)
+endif()
 
-if(DEFINED WITH_UNICAP)
+if(WITH_UNICAP OR HAVE_UNICAP)
   status("    UniCap:"         HAVE_UNICAP         THEN "YES (ver ${ALIASOF_libunicap_VERSION})"   ELSE NO)
   status("    UniCap ucil:"    HAVE_UNICAP_UCIL    THEN "YES (ver ${ALIASOF_libucil_VERSION})"     ELSE NO)
-endif(DEFINED WITH_UNICAP)
+endif()
 
-if(DEFINED WITH_V4L)
-  if(HAVE_CAMV4L)
-    set(HAVE_CAMV4L_STR "YES")
-  else()
-    set(HAVE_CAMV4L_STR "NO")
-  endif()
-  if(HAVE_CAMV4L2)
-    set(HAVE_CAMV4L2_STR "YES")
-  elseif(HAVE_VIDEOIO)
-    set(HAVE_CAMV4L2_STR "YES(videoio)")
-  else()
-    set(HAVE_CAMV4L2_STR "NO")
-  endif()
-  status("    V4L/V4L2:"       HAVE_LIBV4L
-             THEN "Using libv4l1 (ver ${ALIASOF_libv4l1_VERSION}) / libv4l2 (ver ${ALIASOF_libv4l2_VERSION})"
-             ELSE "${HAVE_CAMV4L_STR}/${HAVE_CAMV4L2_STR}")
-endif(DEFINED WITH_V4L)
+if(WITH_V4L OR WITH_LIBV4L OR HAVE_LIBV4L OR HAVE_CAMV4L OR HAVE_CAMV4L2 OR HAVE_VIDEOIO)
+  status("    libv4l/libv4l2:" HAVE_LIBV4L THEN "${ALIASOF_libv4l1_VERSION} / ${ALIASOF_libv4l2_VERSION}" ELSE "NO")
+  ocv_build_features_string(v4l_status
+    IF HAVE_CAMV4L THEN "linux/videodev.h"
+    IF HAVE_CAMV4L2 THEN "linux/videodev2.h"
+    IF HAVE_VIDEOIO THEN "sys/videoio.h"
+    ELSE "NO")
+  status("    v4l/v4l2:" "${v4l_status}")
+endif()
 
-if(DEFINED WITH_DSHOW)
+if(WITH_DSHOW OR HAVE_DSHOW)
   status("    DirectShow:"     HAVE_DSHOW     THEN YES                                        ELSE NO)
-endif(DEFINED WITH_DSHOW)
+endif()
 
-if(DEFINED WITH_MSMF)
+if(WITH_MSMF OR HAVE_MSMF)
   status("    Media Foundation:" HAVE_MSMF    THEN YES                                        ELSE NO)
-endif(DEFINED WITH_MSMF)
+endif()
 
-if(DEFINED WITH_XIMEA)
+if(WITH_XIMEA OR HAVE_XIMEA)
   status("    XIMEA:"          HAVE_XIMEA          THEN YES                                        ELSE NO)
-endif(DEFINED WITH_XIMEA)
+endif()
 
-if(DEFINED WITH_XINE)
+if(WITH_XINE OR HAVE_XINE)
   status("    Xine:"           HAVE_XINE           THEN "YES (ver ${ALIASOF_libxine_VERSION})"     ELSE NO)
-endif(DEFINED WITH_XINE)
+endif()
 
-if(DEFINED WITH_INTELPERC)
+if(WITH_INTELPERC OR HAVE_INTELPERC)
   status("    Intel PerC:"     HAVE_INTELPERC      THEN "YES"                                 ELSE NO)
-endif(DEFINED WITH_INTELPERC)
+endif()
 
-if(DEFINED WITH_MFX)
+if(WITH_MFX OR HAVE_MFX)
   status("    Intel Media SDK:" HAVE_MFX      THEN "YES (${MFX_LIBRARY})" ELSE NO)
 endif()
 
-if(DEFINED WITH_GPHOTO2)
+if(WITH_GPHOTO2 OR HAVE_GPHOTO2)
   status("    gPhoto2:"        HAVE_GPHOTO2        THEN "YES"                                 ELSE NO)
-endif(DEFINED WITH_GPHOTO2)
-
+endif()
 
 # Order is similar to CV_PARALLEL_FRAMEWORK in core/src/parallel.cpp
-ocv_clear_vars(CV_PARALLEL_FRAMEWORK)
-if(HAVE_TBB)
-  set(CV_PARALLEL_FRAMEWORK "TBB (ver ${TBB_VERSION_MAJOR}.${TBB_VERSION_MINOR} interface ${TBB_INTERFACE_VERSION})")
-elseif(HAVE_CSTRIPES)
-  set(CV_PARALLEL_FRAMEWORK "C=")
-elseif(HAVE_OPENMP)
-  set(CV_PARALLEL_FRAMEWORK "OpenMP")
-elseif(HAVE_GCD)
-  set(CV_PARALLEL_FRAMEWORK "GCD")
-elseif(WINRT OR HAVE_CONCURRENCY)
-  set(CV_PARALLEL_FRAMEWORK "Concurrency")
-elseif(HAVE_PTHREADS_PF)
-  set(CV_PARALLEL_FRAMEWORK "pthreads")
-else()
-  set(CV_PARALLEL_FRAMEWORK "none")
-endif()
+ocv_build_features_string(parallel_status EXCLUSIVE
+  IF HAVE_TBB THEN "TBB (ver ${TBB_VERSION_MAJOR}.${TBB_VERSION_MINOR} interface ${TBB_INTERFACE_VERSION})"
+  IF HAVE_CSTRIPES THEN "C="
+  IF HAVE_OPENMP THEN "OpenMP"
+  IF HAVE_GCD THEN "GCD"
+  IF WINRT OR HAVE_CONCURRENCY THEN "Concurrency"
+  IF HAVE_PTHREADS_PF THEN "pthreads"
+  ELSE "none")
 status("")
-status("  Parallel framework:" TRUE THEN "${CV_PARALLEL_FRAMEWORK}" ELSE NO)
+status("  Parallel framework:" "${parallel_status}")
 
 if(CV_TRACE OR OPENCV_TRACE)
-  set(__msg "")
-  if(HAVE_ITT)
-    set(__msg "with Intel ITT")
-  endif()
+  ocv_build_features_string(trace_status EXCLUSIVE
+    IF HAVE_ITT THEN "with Intel ITT"
+    ELSE "built-in")
   status("")
-  status("  Trace: " OPENCV_TRACE THEN "YES (${__msg})" ELSE NO)
+  status("  Trace: " OPENCV_TRACE THEN "YES (${trace_status})" ELSE NO)
 endif()
 
 # ========================== Other third-party libraries ==========================
@@ -1308,95 +1278,83 @@ status("")
 status("  Other third-party libraries:")
 
 if(WITH_IPP AND HAVE_IPP)
-  status("    Use Intel IPP:" "${IPP_VERSION_STR} [${IPP_VERSION_MAJOR}.${IPP_VERSION_MINOR}.${IPP_VERSION_BUILD}]")
-  status("               at:" "${IPP_ROOT_DIR}")
+  status("    Intel IPP:" "${IPP_VERSION_STR} [${IPP_VERSION_MAJOR}.${IPP_VERSION_MINOR}.${IPP_VERSION_BUILD}]")
+  status("           at:" "${IPP_ROOT_DIR}")
   if(NOT HAVE_IPP_ICV)
-    status("           linked:" BUILD_WITH_DYNAMIC_IPP THEN "dynamic" ELSE "static")
+    status("       linked:" BUILD_WITH_DYNAMIC_IPP THEN "dynamic" ELSE "static")
   endif()
   if(HAVE_IPP_IW)
     if(BUILD_IPP_IW)
-      status("    Use Intel IPP IW:" "sources (${IW_VERSION_MAJOR}.${IW_VERSION_MINOR}.${IW_VERSION_UPDATE})")
+      status("    Intel IPP IW:" "sources (${IW_VERSION_MAJOR}.${IW_VERSION_MINOR}.${IW_VERSION_UPDATE})")
     else()
-      status("    Use Intel IPP IW:" "binaries (${IW_VERSION_MAJOR}.${IW_VERSION_MINOR}.${IW_VERSION_UPDATE})")
+      status("    Intel IPP IW:" "binaries (${IW_VERSION_MAJOR}.${IW_VERSION_MINOR}.${IW_VERSION_UPDATE})")
     endif()
-    status("                  at:" "${IPP_IW_PATH}")
+    status("              at:" "${IPP_IW_PATH}")
   else()
-    status("    Use Intel IPP IW:"   NO)
+    status("    Intel IPP IW:"   NO)
   endif()
-else()
-  status("    Use Intel IPP:"      WITH_IPP AND NOT HAVE_IPP THEN "IPP not found or implicitly disabled" ELSE NO)
-  status("    Use Intel IPP IW:"   WITH_IPP AND NOT HAVE_IPP AND HAVE_IPP_IW THEN "IPP not found or implicitly disabled" ELSE NO)
 endif()
 
-if(DEFINED WITH_VA)
-status("    Use VA:"            HAVE_VA          THEN "YES" ELSE NO)
-endif(DEFINED WITH_VA)
+if(WITH_VA OR HAVE_VA)
+  status("    VA:"            HAVE_VA          THEN "YES" ELSE NO)
+endif()
 
-if(DEFINED WITH_VA_INTEL)
-status("    Use Intel VA-API/OpenCL:"  HAVE_VA_INTEL       THEN "YES (MSDK: ${VA_INTEL_MSDK_ROOT}  OpenCL: ${VA_INTEL_IOCL_ROOT})" ELSE NO)
-endif(DEFINED WITH_VA_INTEL)
+if(WITH_VA_INTEL OR HAVE_VA_INTEL)
+  status("    Intel VA-API/OpenCL:"  HAVE_VA_INTEL       THEN "YES (MSDK: ${VA_INTEL_MSDK_ROOT}  OpenCL: ${VA_INTEL_IOCL_ROOT})" ELSE NO)
+endif()
 
-if(DEFINED WITH_LAPACK)
-status("    Use Lapack:"      HAVE_LAPACK     THEN "YES (${LAPACK_LIBRARIES})" ELSE NO)
-endif(DEFINED WITH_LAPACK)
+if(WITH_LAPACK OR HAVE_LAPACK)
+  status("    Lapack:"      HAVE_LAPACK     THEN "YES (${LAPACK_LIBRARIES})" ELSE NO)
+endif()
 
-status("    Use Eigen:"      HAVE_EIGEN       THEN "YES (ver ${EIGEN_WORLD_VERSION}.${EIGEN_MAJOR_VERSION}.${EIGEN_MINOR_VERSION})" ELSE NO)
-status("    Use Cuda:"       HAVE_CUDA        THEN "YES (ver ${CUDA_VERSION_STRING})" ELSE NO)
-status("    Use OpenCL:"     HAVE_OPENCL      THEN YES ELSE NO)
 if(WITH_HALIDE OR HAVE_HALIDE)
-status("    Use Halide:"     HAVE_HALIDE      THEN "YES (${HALIDE_LIBRARIES} ${HALIDE_INCLUDE_DIRS})" ELSE NO)
+  status("    Halide:"     HAVE_HALIDE      THEN "YES (${HALIDE_LIBRARIES} ${HALIDE_INCLUDE_DIRS})" ELSE NO)
 endif()
-status("    Use OpenVX:"     HAVE_OPENVX      THEN "YES (${OPENVX_LIBRARIES})" ELSE "NO")
-status("    Use custom HAL:" OpenCV_USED_HAL  THEN "YES (${OpenCV_USED_HAL})" ELSE "NO")
 
-if(HAVE_CUDA)
-  status("")
-  status("  NVIDIA CUDA")
+if(WITH_EIGEN OR HAVE_EIGEN)
+  status("    Eigen:"      HAVE_EIGEN       THEN "YES (ver ${EIGEN_WORLD_VERSION}.${EIGEN_MAJOR_VERSION}.${EIGEN_MINOR_VERSION})" ELSE NO)
+endif()
 
-  status("    Use CUFFT:"            HAVE_CUFFT   THEN YES ELSE NO)
-  status("    Use CUBLAS:"           HAVE_CUBLAS  THEN YES ELSE NO)
-  status("    USE NVCUVID:"          HAVE_NVCUVID THEN YES ELSE NO)
-  status("    NVIDIA GPU arch:"      ${OPENCV_CUDA_ARCH_BIN})
-  status("    NVIDIA PTX archs:"     ${OPENCV_CUDA_ARCH_PTX})
-  status("    Use fast math:"        CUDA_FAST_MATH THEN YES ELSE NO)
+if(WITH_OPENVX OR HAVE_OPENVX)
+  status("    OpenVX:"     HAVE_OPENVX      THEN "YES (${OPENVX_LIBRARIES})" ELSE "NO")
 endif()
 
-if(HAVE_OPENCL)
+status("    Custom HAL:" OpenCV_USED_HAL  THEN "YES (${OpenCV_USED_HAL})" ELSE "NO")
+
+if(WITH_CUDA OR HAVE_CUDA)
+  ocv_build_features_string(cuda_features
+    IF HAVE_CUFFT THEN "CUFFT"
+    IF HAVE_CUBLAS THEN "CUBLAS"
+    IF HAVE_NVCUVID THEN "NVCUVID"
+    IF CUDA_FAST_MATH THEN "FAST_MATH"
+    ELSE "no extra features")
   status("")
-  if(HAVE_OPENCL_STATIC)
-    set(__opencl_type "<Link with OpenCL library>")
-  else()
-    set(__opencl_type "<Dynamic loading of OpenCL library>")
-  endif()
-  status("  OpenCL:"                 ${__opencl_type})
-  if(OPENCL_INCLUDE_DIRS)
-    status("    Include path:"       ${OPENCL_INCLUDE_DIRS})
+  status("  NVIDIA CUDA:" HAVE_CUDA THEN "YES (ver ${CUDA_VERSION_STRING}, ${cuda_features})" ELSE NO)
+  if(HAVE_CUDA)
+    status("    NVIDIA GPU arch:"      ${OPENCV_CUDA_ARCH_BIN})
+    status("    NVIDIA PTX archs:"     ${OPENCV_CUDA_ARCH_PTX})
   endif()
-  if(OPENCL_LIBRARIES)
-    set(__libs "")
-    foreach(l ${OPENCL_LIBRARIES})
-      if(TARGET ${l})
-        get_target_property(p ${l} IMPORTED_LOCATION)
-        if(p MATCHES NOTFOUND)
-          list(APPEND __libs "${l}")
-        else()
-          list(APPEND __libs "${p}")
-        endif()
-      else()
-        list(APPEND __libs "${l}")
-      endif()
-    endforeach()
-    status("    Link libraries:"          ${__libs})
+endif()
+
+if(WITH_OPENCL OR HAVE_OPENCL)
+  ocv_build_features_string(opencl_features
+    IF HAVE_OPENCL_SVM THEN "SVM"
+    IF HAVE_CLAMDFFT THEN "AMDFFT"
+    IF HAVE_CLAMDBLAS THEN "AMDBLAS"
+    ELSE "no extra features")
+  status("")
+  status("  OpenCL:"     HAVE_OPENCL   THEN   "YES (${opencl_features})" ELSE "NO")
+  if(HAVE_OPENCL)
+    status("    Include path:"  OPENCL_INCLUDE_DIRS THEN "${OPENCL_INCLUDE_DIRS}" ELSE "NO")
+    status("    Link libraries:"       OPENCL_LIBRARIES THEN "${OPENCL_LIBRARIES}" ELSE "Dynamic load")
   endif()
-  status("    Use AMDFFT:"           HAVE_CLAMDFFT  THEN YES ELSE NO)
-  status("    Use AMDBLAS:"          HAVE_CLAMDBLAS THEN YES ELSE NO)
 endif()
 
 # ========================== python ==========================
-status("")
-status("  Python 2:")
-status("    Interpreter:"     PYTHON2INTERP_FOUND  THEN "${PYTHON2_EXECUTABLE} (ver ${PYTHON2_VERSION_STRING})"       ELSE NO)
 if(BUILD_opencv_python2)
+  status("")
+  status("  Python 2:")
+  status("    Interpreter:"     PYTHON2INTERP_FOUND  THEN "${PYTHON2_EXECUTABLE} (ver ${PYTHON2_VERSION_STRING})"       ELSE NO)
   if(PYTHON2LIBS_VERSION_STRING)
     status("    Libraries:"   HAVE_opencv_python2  THEN  "${PYTHON2_LIBRARIES} (ver ${PYTHON2LIBS_VERSION_STRING})"   ELSE NO)
   else()
@@ -1406,10 +1364,10 @@ if(BUILD_opencv_python2)
   status("    packages path:" PYTHON2_EXECUTABLE         THEN "${PYTHON2_PACKAGES_PATH}"                                    ELSE "-")
 endif()
 
-status("")
-status("  Python 3:")
-status("    Interpreter:"     PYTHON3INTERP_FOUND  THEN "${PYTHON3_EXECUTABLE} (ver ${PYTHON3_VERSION_STRING})"       ELSE NO)
 if(BUILD_opencv_python3)
+  status("")
+  status("  Python 3:")
+  status("    Interpreter:"     PYTHON3INTERP_FOUND  THEN "${PYTHON3_EXECUTABLE} (ver ${PYTHON3_VERSION_STRING})"       ELSE NO)
   if(PYTHON3LIBS_VERSION_STRING)
     status("    Libraries:"   HAVE_opencv_python3  THEN  "${PYTHON3_LIBRARIES} (ver ${PYTHON3LIBS_VERSION_STRING})"   ELSE NO)
   else()
@@ -1422,51 +1380,38 @@ endif()
 status("")
 status("  Python (for build):"  PYTHON_DEFAULT_AVAILABLE THEN "${PYTHON_DEFAULT_EXECUTABLE}" ELSE NO)
 if(PYLINT_FOUND AND PYLINT_EXECUTABLE)
-status("    Pylint:"  PYLINT_FOUND THEN "${PYLINT_EXECUTABLE} (ver: ${PYLINT_VERSION}, checks: ${PYLINT_TOTAL_TARGETS})" ELSE NO)
+  status("    Pylint:"  PYLINT_FOUND THEN "${PYLINT_EXECUTABLE} (ver: ${PYLINT_VERSION}, checks: ${PYLINT_TOTAL_TARGETS})" ELSE NO)
 endif()
 
 # ========================== java ==========================
-status("")
-status("  Java:")
-status("    ant:"           ANT_EXECUTABLE      THEN "${ANT_EXECUTABLE} (ver ${ANT_VERSION})"                    ELSE NO)
-if(NOT ANDROID)
-  status("    JNI:"         JNI_INCLUDE_DIRS    THEN "${JNI_INCLUDE_DIRS}"                                       ELSE NO)
+if(BUILD_opencv_java)
+  status("")
+  status("  Java:")
+  status("    ant:"           ANT_EXECUTABLE      THEN "${ANT_EXECUTABLE} (ver ${ANT_VERSION})"                    ELSE NO)
+  if(NOT ANDROID)
+    status("    JNI:"         JNI_INCLUDE_DIRS    THEN "${JNI_INCLUDE_DIRS}"                                       ELSE NO)
+  endif()
+  status("    Java wrappers:" HAVE_opencv_java                                                            THEN YES ELSE NO)
+  status("    Java tests:"    BUILD_TESTS AND opencv_test_java_BINARY_DIR                                 THEN YES ELSE NO)
 endif()
-status("    Java wrappers:" HAVE_opencv_java                                                            THEN YES ELSE NO)
-status("    Java tests:"    BUILD_TESTS AND opencv_test_java_BINARY_DIR                                 THEN YES ELSE NO)
 
 # ========================= matlab =========================
-status("")
-if(MATLAB_FOUND)
-  status("  Matlab:")
-  status("    mex:"         MATLAB_MEX_SCRIPT  THEN  "${MATLAB_MEX_SCRIPT}"   ELSE NO)
-  status("    Compiler/generator:" MEX_WORKS   THEN  "Working"                ELSE "Not working (bindings will not be generated)")
-else()
-  status("  Matlab:"        WITH_MATLAB AND NOT MATLAB_FOUND THEN "Matlab not found or implicitly disabled" ELSE NO)
-endif()
-
-# ========================== documentation ==========================
-if(BUILD_DOCS)
+if(WITH_MATLAB OR MATLAB_FOUND)
   status("")
-  status("  Documentation:")
-  status("    Doxygen:"             DOXYGEN_FOUND             THEN "${DOXYGEN_EXECUTABLE} (ver ${DOXYGEN_VERSION})" ELSE NO)
+  status("  Matlab:" MATLAB_FOUND THEN "YES" ELSE "NO")
+  if(MATLAB_FOUND)
+    status("    mex:"         MATLAB_MEX_SCRIPT  THEN  "${MATLAB_MEX_SCRIPT}"   ELSE NO)
+    status("    Compiler/generator:" MEX_WORKS   THEN  "Working"                ELSE "Not working (bindings will not be generated)")
+  endif()
 endif()
 
-# ========================== samples and tests ==========================
-status("")
-status("  Tests and samples:")
-status("    Tests:"             BUILD_TESTS AND HAVE_opencv_ts       THEN YES ELSE NO)
-status("    Performance tests:" BUILD_PERF_TESTS AND HAVE_opencv_ts  THEN YES ELSE NO)
-status("    C/C++ Examples:"    BUILD_EXAMPLES                       THEN YES ELSE NO)
-
 # ========================== auxiliary ==========================
 status("")
-status("  Install path:" "${CMAKE_INSTALL_PREFIX}")
-status("")
-status("  cvconfig.h is in:" "${OPENCV_CONFIG_FILE_INCLUDE_DIR}")
+status("  Install to:" "${CMAKE_INSTALL_PREFIX}")
 status("-----------------------------------------------------------------")
 status("")
 
+
 ocv_finalize_status()
 
 # ----------------------------------------------------------------------------
index 7b7e9a6..989cb40 100644 (file)
@@ -26,6 +26,6 @@ if(ANT_EXECUTABLE)
     string(REGEX MATCH "[0-9]+.[0-9]+.[0-9]+" ANT_VERSION "${ANT_VERSION_FULL}")
     set(ANT_VERSION "${ANT_VERSION}" CACHE INTERNAL "Detected ant vesion")
 
-    message(STATUS "Found apache ant ${ANT_VERSION}: ${ANT_EXECUTABLE}")
+    message(STATUS "Found apache ant: ${ANT_EXECUTABLE} (${ANT_VERSION})")
   endif()
 endif()
index c92174f..cf4eb2b 100644 (file)
@@ -57,4 +57,4 @@ if(HAVE_QT AND ${VTK_VERSION} VERSION_GREATER "6.0.0" AND NOT ${VTK_QT_VERSION}
 endif()
 
 set(HAVE_VTK ON)
-message(STATUS "Found VTK ver. ${VTK_VERSION} (usefile: ${VTK_USE_FILE})")
+message(STATUS "Found VTK ${VTK_VERSION} (${VTK_USE_FILE})")
index 841a83e..e5ca276 100644 (file)
@@ -600,6 +600,51 @@ endfunction()
 
 endif() # NOT DEFINED CMAKE_ARGC
 
+#
+# Generate a list of enabled features basing on conditions:
+#   IF <cond> THEN <title>: check condition and append title to the result if it is true
+#   ELSE <title>: return provided value instead of empty result
+#   EXCLUSIVE: break after first successful condition
+#
+# Usage:
+#   ocv_build_features_string(out [EXLUSIVE] [IF feature THEN title] ... [ELSE title])
+#
+function(ocv_build_features_string out)
+  set(result)
+  list(REMOVE_AT ARGV 0)
+  foreach(arg ${ARGV})
+    if(arg STREQUAL "EXCLUSIVE")
+      set(exclusive TRUE)
+    elseif(arg STREQUAL "IF")
+      set(then FALSE)
+      set(cond)
+    elseif(arg STREQUAL "THEN")
+      set(then TRUE)
+      set(title)
+    elseif(arg STREQUAL "ELSE")
+      set(then FALSE)
+      set(else TRUE)
+    else()
+      if(then)
+        if(${cond})
+          list(APPEND result "${arg}")
+          if(exclusive)
+            break()
+          endif()
+        endif()
+      elseif(else)
+        if(NOT result)
+          set(result "${arg}")
+        endif()
+      else()
+        list(APPEND cond ${arg})
+      endif()
+    endif()
+  endforeach()
+  set(${out} ${result} PARENT_SCOPE)
+endfunction()
+
+
 # remove all matching elements from the list
 macro(ocv_list_filterout lst regex)
   foreach(item ${${lst}})