From 5ea50d1e8da78e6ed0cd6d264148bb302bda3595 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Wed, 29 Nov 2017 16:21:00 +0300 Subject: [PATCH 1/4] cmake: don't use Eigen auto-detection in cross-compiling modes Sometimes it tries to use host '/usr/include' directory and garbages compiler flags with invalid '-I /usr/include' --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f200a2b03..8b5945cfa7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -197,7 +197,7 @@ OCV_OPTION(WITH_CUDA "Include NVidia Cuda Runtime support" OCV_OPTION(WITH_CUFFT "Include NVidia Cuda Fast Fourier Transform (FFT) library support" ON IF (NOT IOS AND NOT WINRT) ) OCV_OPTION(WITH_CUBLAS "Include NVidia Cuda Basic Linear Algebra Subprograms (BLAS) library support" ON IF (NOT IOS AND NOT WINRT) ) OCV_OPTION(WITH_NVCUVID "Include NVidia Video Decoding library support" ON IF (NOT IOS AND NOT APPLE) ) -OCV_OPTION(WITH_EIGEN "Include Eigen2/Eigen3 support" ON IF (NOT WINRT) ) +OCV_OPTION(WITH_EIGEN "Include Eigen2/Eigen3 support" ON IF (NOT WINRT AND NOT CMAKE_CROSSCOMPILING) ) 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 AND NOT IOS AND NOT WINRT) ) From 28717d0437afd5c6c46e81d638ac2f259984d0bd Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Wed, 29 Nov 2017 16:25:11 +0300 Subject: [PATCH 2/4] cmake: don't try to detect Python libraries for iOS builds Python executable is not used to generate code for iOS builds --- CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8b5945cfa7..5aad691ebf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -514,7 +514,9 @@ if(CMAKE_GENERATOR MATCHES "Makefiles|Ninja" AND "${CMAKE_BUILD_TYPE}" STREQUAL endif() # --- Python Support --- -include(cmake/OpenCVDetectPython.cmake) +if(NOT IOS) + include(cmake/OpenCVDetectPython.cmake) +endif() include(cmake/OpenCVCompilerOptions.cmake) From b19f81b35bbc49d45ac6297469a84ce29164f235 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Wed, 29 Nov 2017 16:49:24 +0300 Subject: [PATCH 3/4] cmake: update BUILD_DOCS / ENABLE_PYLINT options, add BUILD_JAVA --- CMakeLists.txt | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5aad691ebf..f73c8c872b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -257,7 +257,7 @@ OCV_OPTION(BUILD_SHARED_LIBS "Build shared libraries (.dll/.so) instead o OCV_OPTION(BUILD_opencv_apps "Build utility applications (used for example to train classifiers)" (NOT ANDROID AND NOT WINRT) IF (NOT APPLE_FRAMEWORK) ) OCV_OPTION(BUILD_opencv_js "Build JavaScript bindings by Emscripten" OFF ) OCV_OPTION(BUILD_ANDROID_EXAMPLES "Build examples for Android platform" ON IF ANDROID ) -OCV_OPTION(BUILD_DOCS "Create build rules for OpenCV Documentation" ON IF (NOT WINRT OR APPLE_FRAMEWORK)) +OCV_OPTION(BUILD_DOCS "Create build rules for OpenCV Documentation" ON IF (NOT WINRT AND NOT APPLE_FRAMEWORK)) OCV_OPTION(BUILD_EXAMPLES "Build all examples" OFF ) OCV_OPTION(BUILD_PACKAGE "Enables 'make package_source' command" ON IF NOT WINRT) OCV_OPTION(BUILD_PERF_TESTS "Build performance tests" ON IF (NOT APPLE_FRAMEWORK) ) @@ -268,6 +268,8 @@ OCV_OPTION(BUILD_WITH_DYNAMIC_IPP "Enables dynamic linking of IPP (only for st OCV_OPTION(BUILD_FAT_JAVA_LIB "Create fat java wrapper containing the whole OpenCV library" ON IF NOT BUILD_SHARED_LIBS AND CMAKE_COMPILER_IS_GNUCXX ) OCV_OPTION(BUILD_ANDROID_SERVICE "Build OpenCV Manager for Google Play" OFF IF ANDROID ) OCV_OPTION(BUILD_CUDA_STUBS "Build CUDA modules stubs when no CUDA SDK" OFF IF (NOT APPLE_FRAMEWORK) ) +OCV_OPTION(BUILD_JAVA "Enable Java support" (ANDROID OR NOT CMAKE_CROSSCOMPILING) IF (ANDROID OR (NOT APPLE_FRAMEWORK AND NOT WINRT)) ) + # 3rd party libs OCV_OPTION(BUILD_ZLIB "Build zlib from source" WIN32 OR APPLE ) @@ -314,7 +316,7 @@ OCV_OPTION(CV_ENABLE_INTRINSICS "Use intrinsic-based optimized code" ON ) OCV_OPTION(CV_DISABLE_OPTIMIZATION "Disable explicit optimized code (dispatched code/intrinsics/loop unrolling/etc)" OFF ) OCV_OPTION(CV_TRACE "Enable OpenCV code trace" ON) -OCV_OPTION(ENABLE_PYLINT "Add target with Pylint checks" (${BUILD_DOCS} OR ${BUILD_EXAMPLES}) ) +OCV_OPTION(ENABLE_PYLINT "Add target with Pylint checks" (${BUILD_DOCS} OR ${BUILD_EXAMPLES}) IF (NOT CMAKE_CROSSCOMPILING AND NOT APPLE_FRAMEWORK) ) if(ENABLE_IMPL_COLLECTION) add_definitions(-DCV_COLLECT_IMPL_DATA) @@ -610,15 +612,17 @@ else() endif() # --- Java Support --- -include(cmake/OpenCVDetectApacheAnt.cmake) -if(ANDROID) - include(cmake/OpenCVDetectAndroidSDK.cmake) +if(BUILD_JAVA) + include(cmake/OpenCVDetectApacheAnt.cmake) + if(ANDROID) + include(cmake/OpenCVDetectAndroidSDK.cmake) - if(NOT ANDROID_TOOLS_Pkg_Revision GREATER 13) - message(WARNING "OpenCV requires Android SDK tools revision 14 or newer. Otherwise tests and samples will no be compiled.") + if(NOT ANDROID_TOOLS_Pkg_Revision GREATER 13) + message(WARNING "OpenCV requires Android SDK tools revision 14 or newer. Otherwise tests and samples will no be compiled.") + endif() + else() + find_package(JNI) endif() -else() - find_package(JNI) endif() if(ENABLE_PYLINT) @@ -1386,7 +1390,7 @@ if(PYLINT_FOUND AND PYLINT_EXECUTABLE) endif() # ========================== java ========================== -if(BUILD_opencv_java) +if(BUILD_JAVA OR BUILD_opencv_java) status("") status(" Java:") status(" ant:" ANT_EXECUTABLE THEN "${ANT_EXECUTABLE} (ver ${ANT_VERSION})" ELSE NO) From 22c0bb7dc9570416d6c4beec54735b6a58dac495 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Wed, 29 Nov 2017 16:52:42 +0300 Subject: [PATCH 4/4] cmake: fix WITH_VTK usage 'WITH_' variables is intended to enable CMake scripts with some autodetection logic. 'WITH_' can be off, but components is really enabled via command-line options with proper variables setup (including 'HAVE_'). --- CMakeLists.txt | 4 +++- cmake/OpenCVDetectVTK.cmake | 4 ---- modules/viz/CMakeLists.txt | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f73c8c872b..4af166dded 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -656,7 +656,9 @@ if(WITH_MATLAB) include(cmake/OpenCVFindMatlab.cmake) endif() -include(cmake/OpenCVDetectVTK.cmake) +if(WITH_VTK) + include(cmake/OpenCVDetectVTK.cmake) +endif() if(WITH_OPENVX) include(cmake/FindOpenVX.cmake) diff --git a/cmake/OpenCVDetectVTK.cmake b/cmake/OpenCVDetectVTK.cmake index cf4eb2b4cd..74f075ed9c 100644 --- a/cmake/OpenCVDetectVTK.cmake +++ b/cmake/OpenCVDetectVTK.cmake @@ -1,7 +1,3 @@ -if(NOT WITH_VTK) - return() -endif() - # VTK 6.x components find_package(VTK QUIET COMPONENTS vtkInteractionStyle vtkRenderingLOD vtkIOPLY vtkFiltersTexture vtkRenderingFreeType vtkIOExport NO_MODULE) IF(VTK_FOUND) diff --git a/modules/viz/CMakeLists.txt b/modules/viz/CMakeLists.txt index a5468c5bba..3575a0cb6e 100644 --- a/modules/viz/CMakeLists.txt +++ b/modules/viz/CMakeLists.txt @@ -1,4 +1,4 @@ -if(NOT WITH_VTK OR NOT DEFINED HAVE_VTK OR NOT HAVE_VTK) +if(NOT HAVE_VTK) ocv_module_disable(viz) endif()