aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2018-02-21 16:47:42 -0800
committerRobert Schumacher <roschuma@microsoft.com>2018-02-23 17:06:37 -0800
commit471f7dc9700f7618aa16274fb9961e4e068f7656 (patch)
tree87e418ecbd19bfd6a54cf1c8fd9a003bd9a4722d
parent5609d34b39009a2b511ae85ee5d8484d1db514c5 (diff)
downloadvcpkg-471f7dc9700f7618aa16274fb9961e4e068f7656.tar.gz
vcpkg-471f7dc9700f7618aa16274fb9961e4e068f7656.zip
[opencv] Rework
Split off contrib, ipp, webp, openexr, tiff, png, tiff, jpeg, jasper, eigen into features. Prevent downloads during the build
-rw-r--r--ports/opencv/0001-winrt-fixes.patch140
-rw-r--r--ports/opencv/0002-install-options.patch (renamed from ports/opencv/opencv-installation-options.patch)93
-rw-r--r--ports/opencv/0003-disable-downloading.patch25
-rw-r--r--ports/opencv/0004-use-find-package-required.patch97
-rw-r--r--ports/opencv/001-fix-uwp.patch57
-rw-r--r--ports/opencv/002-fix-uwp.patch26
-rw-r--r--ports/opencv/CONTROL37
-rw-r--r--ports/opencv/filesystem-uwp.patch41
-rw-r--r--ports/opencv/msvs-fix-2017-u5.patch39
-rw-r--r--ports/opencv/no-double-expand-enable-pylint.patch13
-rw-r--r--ports/opencv/open_contrib-remove-waldboost.patch13
-rw-r--r--ports/opencv/portfile.cmake209
12 files changed, 530 insertions, 260 deletions
diff --git a/ports/opencv/0001-winrt-fixes.patch b/ports/opencv/0001-winrt-fixes.patch
new file mode 100644
index 000000000..c52c662e1
--- /dev/null
+++ b/ports/opencv/0001-winrt-fixes.patch
@@ -0,0 +1,140 @@
+From 005963d571f95fc536f60aa77098b9ecbb17128c Mon Sep 17 00:00:00 2001
+From: Robert Schumacher <roschuma@microsoft.com>
+Date: Wed, 21 Feb 2018 17:03:30 -0800
+Subject: [PATCH 1/5] winrt-fixes
+
+---
+ CMakeLists.txt | 2 +-
+ cmake/OpenCVCompilerOptions.cmake | 3 +++
+ cmake/OpenCVModule.cmake | 2 +-
+ modules/core/src/utils/filesystem.cpp | 14 ++++++++++++--
+ modules/highgui/include/opencv2/highgui/highgui_winrt.hpp | 1 +
+ modules/highgui/src/window_winrt_bridge.hpp | 1 +
+ modules/videoio/src/cap_winrt/CaptureFrameGrabber.cpp | 4 ++--
+ 7 files changed, 21 insertions(+), 6 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 4464441..6bfbecd 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -296,7 +296,7 @@ OCV_OPTION(INSTALL_TESTS "Install accuracy and performance test binar
+ # OpenCV build options
+ # ===================================================
+ OCV_OPTION(ENABLE_CCACHE "Use ccache" (UNIX AND NOT IOS AND (CMAKE_GENERATOR MATCHES "Makefile" OR CMAKE_GENERATOR MATCHES "Ninja")) )
+-OCV_OPTION(ENABLE_PRECOMPILED_HEADERS "Use precompiled headers" ON IF (NOT IOS AND NOT CMAKE_CROSSCOMPILING) )
++OCV_OPTION(ENABLE_PRECOMPILED_HEADERS "Use precompiled headers" ON IF (NOT IOS AND (MSVC OR NOT CMAKE_CROSSCOMPILING)) )
+ OCV_OPTION(ENABLE_SOLUTION_FOLDERS "Solution folder in Visual Studio or in other IDEs" (MSVC_IDE OR CMAKE_GENERATOR MATCHES Xcode) )
+ OCV_OPTION(ENABLE_PROFILING "Enable profiling in the GCC compiler (Add flags: -g -pg)" OFF IF CMAKE_COMPILER_IS_GNUCXX )
+ OCV_OPTION(ENABLE_COVERAGE "Enable coverage collection with GCov" OFF IF CMAKE_COMPILER_IS_GNUCXX )
+diff --git a/cmake/OpenCVCompilerOptions.cmake b/cmake/OpenCVCompilerOptions.cmake
+index 353ee12..8f4aa3b 100644
+--- a/cmake/OpenCVCompilerOptions.cmake
++++ b/cmake/OpenCVCompilerOptions.cmake
+@@ -37,6 +37,9 @@ if(MSVC)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHa")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "Flags used by the compiler during all build types." FORCE)
+ endif()
++ if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /ZW")
++ endif()
+ endif()
+
+ set(OPENCV_EXTRA_FLAGS "")
+diff --git a/cmake/OpenCVModule.cmake b/cmake/OpenCVModule.cmake
+index a84bbff..8feb6df 100644
+--- a/cmake/OpenCVModule.cmake
++++ b/cmake/OpenCVModule.cmake
+@@ -785,7 +785,7 @@ macro(ocv_create_module)
+ set(the_module_target ${the_module})
+ endif()
+
+- if(WINRT)
++ if(WINRT AND BUILD_TESTS)
+ # removing APPCONTAINER from modules to run from console
+ # in case of usual starting of WinRT test apps output is missing
+ # so starting of console version w/o APPCONTAINER is required to get test results
+diff --git a/modules/core/src/utils/filesystem.cpp b/modules/core/src/utils/filesystem.cpp
+index 266a92f..1d5a302 100644
+--- a/modules/core/src/utils/filesystem.cpp
++++ b/modules/core/src/utils/filesystem.cpp
+@@ -186,7 +186,7 @@ bool createDirectory(const cv::String& path)
+ wchar_t wpath[MAX_PATH];
+ size_t copied = mbstowcs(wpath, path.c_str(), MAX_PATH);
+ CV_Assert((copied != MAX_PATH) && (copied != (size_t)-1));
+- int result = CreateDirectoryA(wpath, NULL) ? 0 : -1;
++ int result = CreateDirectoryW(wpath, NULL) ? 0 : -1;
+ #else
+ int result = _mkdir(path.c_str());
+ #endif
+@@ -248,8 +248,16 @@ struct FileLock::Impl
+ int numRetries = 5;
+ do
+ {
++#ifdef WINRT
++ wchar_t wpath[MAX_PATH];
++ size_t copied = mbstowcs(wpath, fname, MAX_PATH);
++ CV_Assert((copied != MAX_PATH) && (copied != (size_t)-1));
++ handle = ::CreateFile2(wpath, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
++ OPEN_EXISTING, NULL);
++#else
+ handle = ::CreateFileA(fname, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
+ OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
++#endif
+ if (INVALID_HANDLE_VALUE == handle)
+ {
+ if (ERROR_SHARING_VIOLATION == GetLastError())
+@@ -399,7 +407,9 @@ cv::String getCacheDirectory(const char* sub_directory_name, const char* configu
+ if (cache_path.empty())
+ {
+ cv::String default_cache_path;
+-#ifdef _WIN32
++#if WINRT
++ // no defaults
++#elif defined _WIN32
+ char tmp_path_buf[MAX_PATH+1] = {0};
+ DWORD res = GetTempPath(MAX_PATH, tmp_path_buf);
+ if (res > 0 && res <= MAX_PATH)
+diff --git a/modules/highgui/include/opencv2/highgui/highgui_winrt.hpp b/modules/highgui/include/opencv2/highgui/highgui_winrt.hpp
+index f4147f3..b92efdd 100644
+--- a/modules/highgui/include/opencv2/highgui/highgui_winrt.hpp
++++ b/modules/highgui/include/opencv2/highgui/highgui_winrt.hpp
+@@ -24,6 +24,7 @@
+ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ // POSSIBILITY OF SUCH DAMAGE.
+
++#include "opencv2/core/cvdef.h"
+ using namespace Windows::UI::Xaml::Controls;
+
+ namespace cv
+diff --git a/modules/highgui/src/window_winrt_bridge.hpp b/modules/highgui/src/window_winrt_bridge.hpp
+index 25f4aef..5429f0b 100644
+--- a/modules/highgui/src/window_winrt_bridge.hpp
++++ b/modules/highgui/src/window_winrt_bridge.hpp
+@@ -28,6 +28,7 @@
+
+ #include <map>
+ #include <opencv2\core.hpp>
++#include "opencv2/highgui/highgui_c.h"
+
+ using namespace Windows::UI::Xaml::Controls;
+
+diff --git a/modules/videoio/src/cap_winrt/CaptureFrameGrabber.cpp b/modules/videoio/src/cap_winrt/CaptureFrameGrabber.cpp
+index 236e227..e2417dc 100644
+--- a/modules/videoio/src/cap_winrt/CaptureFrameGrabber.cpp
++++ b/modules/videoio/src/cap_winrt/CaptureFrameGrabber.cpp
+@@ -94,10 +94,10 @@ Media::CaptureFrameGrabber::~CaptureFrameGrabber()
+
+ void Media::CaptureFrameGrabber::ShowCameraSettings()
+ {
+-#if WINAPI_FAMILY!=WINAPI_FAMILY_PHONE_APP
++#if (WINAPI_FAMILY!=WINAPI_FAMILY_PHONE_APP) && (WINAPI_FAMILY!=WINAPI_FAMILY_APP)
+ if (_state == State::Started)
+ {
+- CameraOptionsUI::Show(_capture.Get());
++ CameraOptionsUI::Show(_capture.Get()); // TODO: Turn it on again in UWP mode by adding reference to UWP Desktop Extensions
+ }
+ #endif
+ }
+--
+2.15.1.windows.2
+
diff --git a/ports/opencv/opencv-installation-options.patch b/ports/opencv/0002-install-options.patch
index cfb401836..6351ceeb8 100644
--- a/ports/opencv/opencv-installation-options.patch
+++ b/ports/opencv/0002-install-options.patch
@@ -1,8 +1,22 @@
+From 5d4d154117b39d9e11fda709ede7aadf6b960a7d Mon Sep 17 00:00:00 2001
+From: Robert Schumacher <roschuma@microsoft.com>
+Date: Wed, 21 Feb 2018 17:05:16 -0800
+Subject: [PATCH 2/5] install-options
+
+---
+ CMakeLists.txt | 20 +++++++++++---------
+ cmake/OpenCVGenConfig.cmake | 4 ++--
+ cmake/OpenCVGenHeaders.cmake | 8 ++++++--
+ cmake/OpenCVModule.cmake | 4 +++-
+ data/CMakeLists.txt | 6 ++++--
+ include/CMakeLists.txt | 16 +++++++++-------
+ 6 files changed, 35 insertions(+), 23 deletions(-)
+
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index cc45f6f..b4265bd 100644
+index 6bfbecd..0156eeb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -263,6 +263,10 @@ OCV_OPTION(INSTALL_PYTHON_EXAMPLES "Install Python examples" OFF )
+@@ -292,6 +292,10 @@ OCV_OPTION(INSTALL_PYTHON_EXAMPLES "Install Python examples" OFF )
OCV_OPTION(INSTALL_ANDROID_EXAMPLES "Install Android examples" OFF IF ANDROID )
OCV_OPTION(INSTALL_TO_MANGLED_PATHS "Enables mangled install paths, that help with side by side installs." OFF IF (UNIX AND NOT ANDROID AND NOT APPLE_FRAMEWORK AND BUILD_SHARED_LIBS) )
OCV_OPTION(INSTALL_TESTS "Install accuracy and performance test binaries and test data" OFF)
@@ -13,7 +27,16 @@ index cc45f6f..b4265bd 100644
# OpenCV build options
# ===================================================
-@@ -330,7 +334,9 @@ else()
+@@ -319,7 +323,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}) IF (NOT CMAKE_CROSSCOMPILING AND NOT APPLE_FRAMEWORK) )
++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)
+@@ -355,7 +359,9 @@ else()
endif()
if(WIN32 AND CMAKE_HOST_SYSTEM_NAME MATCHES Windows)
@@ -24,7 +47,22 @@ index cc45f6f..b4265bd 100644
ocv_update(OpenCV_INSTALL_BINARIES_PREFIX "${OpenCV_ARCH}/${OpenCV_RUNTIME}/")
else()
message(STATUS "Can't detect runtime and/or arch")
-@@ -784,7 +790,7 @@ if(NOT OPENCV_LICENSE_FILE)
+@@ -409,12 +415,8 @@ else()
+ ocv_update(3P_LIBRARY_OUTPUT_PATH "${OpenCV_BINARY_DIR}/3rdparty/lib${LIB_SUFFIX}")
+
+ if(WIN32 AND CMAKE_HOST_SYSTEM_NAME MATCHES Windows)
+- if(OpenCV_STATIC)
+- ocv_update(OPENCV_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}staticlib${LIB_SUFFIX}")
+- else()
+- ocv_update(OPENCV_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}lib${LIB_SUFFIX}")
+- endif()
+- ocv_update(OPENCV_3P_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}staticlib${LIB_SUFFIX}")
++ ocv_update(OPENCV_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}lib${LIB_SUFFIX}")
++ ocv_update(OPENCV_3P_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}lib${LIB_SUFFIX}")
+ ocv_update(OPENCV_SAMPLES_SRC_INSTALL_PATH samples/native)
+ ocv_update(OPENCV_JAR_INSTALL_PATH java)
+ ocv_update(OPENCV_OTHER_INSTALL_PATH etc)
+@@ -856,7 +858,7 @@ if(NOT OPENCV_LICENSE_FILE)
endif()
# for UNIX it does not make sense as LICENSE and readme will be part of the package automatically
@@ -34,19 +72,19 @@ index cc45f6f..b4265bd 100644
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
DESTINATION ./ COMPONENT libs)
diff --git a/cmake/OpenCVGenConfig.cmake b/cmake/OpenCVGenConfig.cmake
-index 206acfd..b4c223e 100644
+index 57c79f2..23f1012 100644
--- a/cmake/OpenCVGenConfig.cmake
+++ b/cmake/OpenCVGenConfig.cmake
-@@ -91,7 +91,7 @@ function(ocv_gen_config TMP_DIR NESTED_PATH ROOT_NAME)
+@@ -103,7 +103,7 @@ function(ocv_gen_config TMP_DIR NESTED_PATH ROOT_NAME)
endif()
endfunction()
--if(UNIX AND NOT ANDROID)
-+if((UNIX AND NOT ANDROID) OR INSTALL_FORCE_UNIX_PATHS)
+-if((CMAKE_HOST_SYSTEM_NAME MATCHES "Linux" OR UNIX) AND NOT ANDROID)
++if(((CMAKE_HOST_SYSTEM_NAME MATCHES "Linux" OR UNIX) AND NOT ANDROID) OR INSTALL_FORCE_UNIX_PATHS)
ocv_gen_config("${CMAKE_BINARY_DIR}/unix-install" "" "")
endif()
-@@ -103,7 +103,7 @@ endif()
+@@ -115,7 +115,7 @@ endif()
# --------------------------------------------------------------------------------------------
# Part 3/3: ${BIN_DIR}/win-install/OpenCVConfig.cmake -> For use within binary installers/packages
# --------------------------------------------------------------------------------------------
@@ -56,7 +94,7 @@ index 206acfd..b4c223e 100644
if(BUILD_SHARED_LIBS)
set(_lib_suffix "lib")
diff --git a/cmake/OpenCVGenHeaders.cmake b/cmake/OpenCVGenHeaders.cmake
-index 2988979..810871b 100644
+index 477b910..beace28 100644
--- a/cmake/OpenCVGenHeaders.cmake
+++ b/cmake/OpenCVGenHeaders.cmake
@@ -1,7 +1,9 @@
@@ -68,9 +106,9 @@ index 2988979..810871b 100644
+ install(FILES "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/cvconfig.h" DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv2 COMPONENT dev)
+endif()
- # ----------------------------------------------------------------------------
- # opencv_modules.hpp based on actual modules list
-@@ -25,4 +27,6 @@ set(OPENCV_MODULE_DEFINITIONS_CONFIGMAKE "${OPENCV_MODULE_DEFINITIONS_CONFIGMAKE
+ # platform-specific config file
+ ocv_compiler_optimization_fill_cpu_config()
+@@ -29,4 +31,6 @@ set(OPENCV_MODULE_DEFINITIONS_CONFIGMAKE "${OPENCV_MODULE_DEFINITIONS_CONFIGMAKE
#endforeach()
configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/opencv_modules.hpp.in" "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/opencv2/opencv_modules.hpp")
@@ -79,20 +117,20 @@ index 2988979..810871b 100644
+ install(FILES "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/opencv2/opencv_modules.hpp" DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv2 COMPONENT dev)
+endif()
diff --git a/cmake/OpenCVModule.cmake b/cmake/OpenCVModule.cmake
-index 742a287..c8242dd 100644
+index 8feb6df..1a098c4 100644
--- a/cmake/OpenCVModule.cmake
+++ b/cmake/OpenCVModule.cmake
-@@ -880,7 +880,9 @@ macro(_ocv_create_module)
- foreach(hdr ${OPENCV_MODULE_${m}_HEADERS})
- string(REGEX REPLACE "^.*opencv2/" "opencv2/" hdr2 "${hdr}")
- if(NOT hdr2 MATCHES "opencv2/${m}/private.*" AND hdr2 MATCHES "^(opencv2/?.*)/[^/]+.h(..)?$" )
-- install(FILES ${hdr} OPTIONAL DESTINATION "${OPENCV_INCLUDE_INSTALL_PATH}/${CMAKE_MATCH_1}" COMPONENT dev)
-+ if(INSTALL_HEADERS)
-+ install(FILES ${hdr} OPTIONAL DESTINATION "${OPENCV_INCLUDE_INSTALL_PATH}/${CMAKE_MATCH_1}" COMPONENT dev)
-+ endif()
- endif()
- endforeach()
- endif()
+@@ -930,7 +930,9 @@ macro(_ocv_create_module)
+ foreach(hdr ${OPENCV_MODULE_${the_module}_HEADERS})
+ string(REGEX REPLACE "^.*opencv2/" "opencv2/" hdr2 "${hdr}")
+ if(NOT hdr2 MATCHES "private" AND hdr2 MATCHES "^(opencv2/?.*)/[^/]+.h(..)?$" )
+- install(FILES ${hdr} OPTIONAL DESTINATION "${OPENCV_INCLUDE_INSTALL_PATH}/${CMAKE_MATCH_1}" COMPONENT dev)
++ if(INSTALL_HEADERS)
++ install(FILES ${hdr} OPTIONAL DESTINATION "${OPENCV_INCLUDE_INSTALL_PATH}/${CMAKE_MATCH_1}" COMPONENT dev)
++ endif()
+ endif()
+ endforeach()
+ endif()
diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt
index 1f0d720..86b9d89 100644
--- a/data/CMakeLists.txt
@@ -111,7 +149,7 @@ index 1f0d720..86b9d89 100644
if(INSTALL_TESTS AND OPENCV_TEST_DATA_PATH)
install(DIRECTORY "${OPENCV_TEST_DATA_PATH}/" DESTINATION "${OPENCV_TEST_DATA_INSTALL_PATH}" COMPONENT "tests")
diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
-index b4e48e6..d5ed455 100644
+index b4e48e6..5ac6f16 100644
--- a/include/CMakeLists.txt
+++ b/include/CMakeLists.txt
@@ -1,7 +1,9 @@
@@ -131,7 +169,6 @@ index b4e48e6..d5ed455 100644
+ DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv2
+ COMPONENT dev)
+endif()
-\ No newline at end of file
--
-2.9.0.windows.1
+2.15.1.windows.2
diff --git a/ports/opencv/0003-disable-downloading.patch b/ports/opencv/0003-disable-downloading.patch
new file mode 100644
index 000000000..e51bab3b2
--- /dev/null
+++ b/ports/opencv/0003-disable-downloading.patch
@@ -0,0 +1,25 @@
+From 692f6f4fcf9bfddaf8779ba622f190c3a8c772f9 Mon Sep 17 00:00:00 2001
+From: Robert Schumacher <roschuma@microsoft.com>
+Date: Wed, 21 Feb 2018 17:20:22 -0800
+Subject: [PATCH 3/5] disable-downloading
+
+---
+ cmake/OpenCVDownload.cmake | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/cmake/OpenCVDownload.cmake b/cmake/OpenCVDownload.cmake
+index f660502..90785f1 100644
+--- a/cmake/OpenCVDownload.cmake
++++ b/cmake/OpenCVDownload.cmake
+@@ -151,6 +151,8 @@ function(ocv_download)
+ # Download
+ if(NOT EXISTS "${CACHE_CANDIDATE}")
+ ocv_download_log("#cmake_download \"${CACHE_CANDIDATE}\" \"${DL_URL}\"")
++ string(REPLACE "${OPENCV_DOWNLOAD_PATH}/" "opencv-cache/" CACHE_SUBPATH "${CACHE_CANDIDATE}")
++ message(FATAL_ERROR " Downloads are not permitted during configure. Please pre-download the file \"${CACHE_CANDIDATE}\":\n \n vcpkg_download_distfile(OCV_DOWNLOAD\n URLS \"${DL_URL}\"\n FILENAME \"${CACHE_SUBPATH}\"\n SHA512 0\n )")
+ file(DOWNLOAD "${DL_URL}" "${CACHE_CANDIDATE}"
+ INACTIVITY_TIMEOUT 60
+ TIMEOUT 600
+--
+2.15.1.windows.2
+
diff --git a/ports/opencv/0004-use-find-package-required.patch b/ports/opencv/0004-use-find-package-required.patch
new file mode 100644
index 000000000..6d2fa5688
--- /dev/null
+++ b/ports/opencv/0004-use-find-package-required.patch
@@ -0,0 +1,97 @@
+From 7e02db97d43cb9aa331da0dbfce8c372c19ad32b Mon Sep 17 00:00:00 2001
+From: Robert Schumacher <roschuma@microsoft.com>
+Date: Wed, 21 Feb 2018 17:20:49 -0800
+Subject: [PATCH 4/5] use-find-package-required
+
+---
+ cmake/OpenCVFindLibsGrfmt.cmake | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/cmake/OpenCVFindLibsGrfmt.cmake b/cmake/OpenCVFindLibsGrfmt.cmake
+index 0ae58c8..5832d56 100644
+--- a/cmake/OpenCVFindLibsGrfmt.cmake
++++ b/cmake/OpenCVFindLibsGrfmt.cmake
+@@ -6,7 +6,7 @@
+ if(BUILD_ZLIB)
+ ocv_clear_vars(ZLIB_FOUND)
+ else()
+- find_package(ZLIB "${MIN_VER_ZLIB}")
++ find_package(ZLIB "${MIN_VER_ZLIB}" REQUIRED)
+ if(ZLIB_FOUND AND ANDROID)
+ if(ZLIB_LIBRARIES STREQUAL "${ANDROID_SYSROOT}/usr/lib/libz.so" OR
+ ZLIB_LIBRARIES STREQUAL "${ANDROID_SYSROOT}/usr/lib64/libz.so")
+@@ -31,7 +31,7 @@ if(WITH_JPEG)
+ if(BUILD_JPEG)
+ ocv_clear_vars(JPEG_FOUND)
+ else()
+- include(FindJPEG)
++ find_package(JPEG REQUIRED)
+ endif()
+
+ if(NOT JPEG_FOUND)
+@@ -52,7 +52,7 @@ if(WITH_TIFF)
+ if(BUILD_TIFF)
+ ocv_clear_vars(TIFF_FOUND)
+ else()
+- include(FindTIFF)
++ find_package(TIFF REQUIRED)
+ 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()
+@@ -95,7 +95,7 @@ if(WITH_WEBP)
+ if(BUILD_WEBP)
+ ocv_clear_vars(WEBP_FOUND WEBP_LIBRARY WEBP_LIBRARIES WEBP_INCLUDE_DIR)
+ else()
+- include(cmake/OpenCVFindWebP.cmake)
++ find_package(WebP REQUIRED)
+ if(WEBP_FOUND)
+ set(HAVE_WEBP 1)
+ endif()
+@@ -136,7 +136,7 @@ if(WITH_JASPER)
+ if(BUILD_JASPER)
+ ocv_clear_vars(JASPER_FOUND)
+ else()
+- include(FindJasper)
++ find_package(Jasper REQUIRED)
+ endif()
+
+ if(NOT JASPER_FOUND)
+@@ -160,7 +160,7 @@ if(WITH_PNG)
+ if(BUILD_PNG)
+ ocv_clear_vars(PNG_FOUND)
+ else()
+- include(FindPNG)
++ find_package(PNG REQUIRED)
+ if(PNG_FOUND)
+ include(CheckIncludeFile)
+ check_include_file("${PNG_PNG_INCLUDE_DIR}/libpng/png.h" HAVE_LIBPNG_PNG_H)
+@@ -192,7 +192,7 @@ if(WITH_OPENEXR)
+ if(BUILD_OPENEXR)
+ ocv_clear_vars(OPENEXR_FOUND)
+ else()
+- include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindOpenEXR.cmake")
++ find_package(OpenEXR REQUIRED)
+ endif()
+
+ if(NOT OPENEXR_FOUND)
+@@ -208,7 +208,7 @@ endif()
+
+ # --- GDAL (optional) ---
+ if(WITH_GDAL)
+- find_package(GDAL QUIET)
++ find_package(GDAL REQUIRED)
+
+ if(NOT GDAL_FOUND)
+ set(HAVE_GDAL NO)
+@@ -220,7 +220,7 @@ if(WITH_GDAL)
+ endif()
+
+ if (WITH_GDCM)
+- find_package(GDCM QUIET)
++ find_package(GDCM REQUIRED)
+ if(NOT GDCM_FOUND)
+ set(HAVE_GDCM NO)
+ ocv_clear_vars(GDCM_VERSION GDCM_LIBRARIES)
+--
+2.15.1.windows.2
+
diff --git a/ports/opencv/001-fix-uwp.patch b/ports/opencv/001-fix-uwp.patch
deleted file mode 100644
index fa047ee4e..000000000
--- a/ports/opencv/001-fix-uwp.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-diff --git a/cmake/OpenCVCompilerOptions.cmake b/cmake/OpenCVCompilerOptions.cmake
-index 0dcf7ed..c722a03 100644
---- "a/cmake/OpenCVCompilerOptions.cmake"
-+++ "b/cmake/OpenCVCompilerOptions.cmake"
-@@ -21,6 +21,9 @@ if(MSVC)
- string(REPLACE "/EHsc" "/EHa" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "Flags used by the compiler during all build types." FORCE)
- endif()
-+ if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
-+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /ZW")
-+ endif()
- endif()
-
- set(OPENCV_EXTRA_FLAGS "")
- diff --git "a/modules/highgui/include/opencv2/highgui/highgui_winrt.hpp" "b/modules/highgui/include/opencv2/highgui/highgui_winrt.hpp"
-index f4147f3..498f414 100644
---- "a/modules/highgui/include/opencv2/highgui/highgui_winrt.hpp"
-+++ "b/modules/highgui/include/opencv2/highgui/highgui_winrt.hpp"
-@@ -24,6 +24,8 @@
- // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- // POSSIBILITY OF SUCH DAMAGE.
-
-+#include "opencv2/core/cvdef.h"
-+
- using namespace Windows::UI::Xaml::Controls;
-
- namespace cv
-diff --git "a/modules/highgui/src/window_winrt_bridge.hpp" "b/modules/highgui/src/window_winrt_bridge.hpp"
-index 25f4aef..5429f0b 100644
---- "a/modules/highgui/src/window_winrt_bridge.hpp"
-+++ "b/modules/highgui/src/window_winrt_bridge.hpp"
-@@ -28,6 +28,7 @@
-
- #include <map>
- #include <opencv2\core.hpp>
-+#include "opencv2/highgui/highgui_c.h"
-
- using namespace Windows::UI::Xaml::Controls;
-
-diff --git "a/modules/videoio/src/cap_winrt/CaptureFrameGrabber.cpp" "b/modules/videoio/src/cap_winrt/CaptureFrameGrabber.cpp"
-index 236e227..9f5970e 100644
---- "a/modules/videoio/src/cap_winrt/CaptureFrameGrabber.cpp"
-+++ "b/modules/videoio/src/cap_winrt/CaptureFrameGrabber.cpp"
-@@ -94,10 +94,10 @@ Media::CaptureFrameGrabber::~CaptureFrameGrabber()
-
- void Media::CaptureFrameGrabber::ShowCameraSettings()
- {
--#if WINAPI_FAMILY!=WINAPI_FAMILY_PHONE_APP
-+#if (WINAPI_FAMILY!=WINAPI_FAMILY_PHONE_APP) && (WINAPI_FAMILY!=WINAPI_FAMILY_APP)
- if (_state == State::Started)
- {
-- CameraOptionsUI::Show(_capture.Get());
-+ CameraOptionsUI::Show(_capture.Get()); // TODO: Turn it back by adding reference to UWP Desktop Extensions
- }
- #endif
- }
- \ No newline at end of file
diff --git a/ports/opencv/002-fix-uwp.patch b/ports/opencv/002-fix-uwp.patch
deleted file mode 100644
index 22d006862..000000000
--- a/ports/opencv/002-fix-uwp.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index b4265bd..f1621e0 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -271,7 +271,7 @@ OCV_OPTION(INSTALL_FORCE_UNIX_PATHS "Force unix-style installation" OFF)
- # OpenCV build options
- # ===================================================
- OCV_OPTION(ENABLE_CCACHE "Use ccache" (UNIX AND NOT IOS AND (CMAKE_GENERATOR MATCHES "Makefile" OR CMAKE_GENERATOR MATCHES "Ninja")) )
--OCV_OPTION(ENABLE_PRECOMPILED_HEADERS "Use precompiled headers" ON IF (NOT IOS AND NOT CMAKE_CROSSCOMPILING) )
-+OCV_OPTION(ENABLE_PRECOMPILED_HEADERS "Use precompiled headers" ON IF (NOT IOS AND (MSVC OR NOT CMAKE_CROSSCOMPILING)) )
- OCV_OPTION(ENABLE_SOLUTION_FOLDERS "Solution folder in Visual Studio or in other IDEs" (MSVC_IDE OR CMAKE_GENERATOR MATCHES Xcode) )
- OCV_OPTION(ENABLE_PROFILING "Enable profiling in the GCC compiler (Add flags: -g -pg)" OFF IF CMAKE_COMPILER_IS_GNUCXX )
- OCV_OPTION(ENABLE_COVERAGE "Enable coverage collection with GCov" OFF IF CMAKE_COMPILER_IS_GNUCXX )
-diff --git a/cmake/OpenCVModule.cmake b/cmake/OpenCVModule.cmake
-index c8242dd..97edd14 100644
---- a/cmake/OpenCVModule.cmake
-+++ b/cmake/OpenCVModule.cmake
-@@ -730,7 +730,7 @@ macro(ocv_create_module)
- set(the_module_target ${the_module})
- endif()
-
-- if(WINRT)
-+ if(WINRT AND BUILD_TESTS)
- # removing APPCONTAINER from modules to run from console
- # in case of usual starting of WinRT test apps output is missing
- # so starting of console version w/o APPCONTAINER is required to get test results
diff --git a/ports/opencv/CONTROL b/ports/opencv/CONTROL
index 9d15073e0..df27dc08c 100644
--- a/ports/opencv/CONTROL
+++ b/ports/opencv/CONTROL
@@ -1,12 +1,16 @@
Source: opencv
Version: 3.4.0-3
-Build-Depends: zlib, libpng, libjpeg-turbo, tiff, protobuf (windows)
+Build-Depends: opengl, zlib, protobuf (windows)
Description: computer vision library
+Default-Features: jpeg, png, tiff, eigen
Feature: sfm
Build-Depends: eigen3, glog, gflags, ceres
Description: opencv_sfm module
+Feature: contrib
+Description: opencv_contrib module
+
Feature: cuda
Build-Depends: cuda
Description: CUDA support for opencv
@@ -14,6 +18,9 @@ Description: CUDA support for opencv
Feature: ffmpeg
Description: prebuilt ffmpeg support for opencv
+Feature: ipp
+Description: Enable Intel Integrated Performance Primitives
+
Feature: qt
Build-Depends: qt5
Description: Qt GUI support for opencv
@@ -25,3 +32,31 @@ Description: vtk support for opencv
Feature: gdcm
Build-Depends: gdcm2
Description: GDCM support for opencv
+
+Feature: webp
+Build-Depends: libwebp
+Description: WebP support for opencv
+
+Feature: openexr
+Build-Depends: openexr
+Description: OpenEXR support for opencv
+
+Feature: tiff
+Build-Depends: tiff
+Description: TIFF support for opencv
+
+Feature: png
+Build-Depends: libpng
+Description: PNG support for opencv
+
+Feature: jpeg
+Build-Depends: libjpeg-turbo
+Description: JPEG support for opencv
+
+Feature: jasper
+Build-Depends: jasper
+Description: JPEG 2000 support for opencv
+
+Feature: eigen
+Build-Depends: eigen3
+Description: Eigen support for opencv
diff --git a/ports/opencv/filesystem-uwp.patch b/ports/opencv/filesystem-uwp.patch
deleted file mode 100644
index c4ddb6b78..000000000
--- a/ports/opencv/filesystem-uwp.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-diff --git a/modules/core/src/utils/filesystem.cpp b/modules/core/src/utils/filesystem.cpp
-index 266a92f..1d5a302 100644
---- a/modules/core/src/utils/filesystem.cpp
-+++ b/modules/core/src/utils/filesystem.cpp
-@@ -186,7 +186,7 @@ bool createDirectory(const cv::String& path)
- wchar_t wpath[MAX_PATH];
- size_t copied = mbstowcs(wpath, path.c_str(), MAX_PATH);
- CV_Assert((copied != MAX_PATH) && (copied != (size_t)-1));
-- int result = CreateDirectoryA(wpath, NULL) ? 0 : -1;
-+ int result = CreateDirectoryW(wpath, NULL) ? 0 : -1;
- #else
- int result = _mkdir(path.c_str());
- #endif
-@@ -248,8 +248,16 @@ struct FileLock::Impl
- int numRetries = 5;
- do
- {
-+#ifdef WINRT
-+ wchar_t wpath[MAX_PATH];
-+ size_t copied = mbstowcs(wpath, fname, MAX_PATH);
-+ CV_Assert((copied != MAX_PATH) && (copied != (size_t)-1));
-+ handle = ::CreateFile2(wpath, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
-+ OPEN_EXISTING, NULL);
-+#else
- handle = ::CreateFileA(fname, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
- OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
-+#endif
- if (INVALID_HANDLE_VALUE == handle)
- {
- if (ERROR_SHARING_VIOLATION == GetLastError())
-@@ -399,7 +407,9 @@ cv::String getCacheDirectory(const char* sub_directory_name, const char* configu
- if (cache_path.empty())
- {
- cv::String default_cache_path;
--#ifdef _WIN32
-+#if WINRT
-+ // no defaults
-+#elif defined _WIN32
- char tmp_path_buf[MAX_PATH+1] = {0};
- DWORD res = GetTempPath(MAX_PATH, tmp_path_buf);
- if (res > 0 && res <= MAX_PATH)
diff --git a/ports/opencv/msvs-fix-2017-u5.patch b/ports/opencv/msvs-fix-2017-u5.patch
deleted file mode 100644
index ab0d0d0ff..000000000
--- a/ports/opencv/msvs-fix-2017-u5.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 62737c777c9314ee2e4b4e595daa830ba12765e2 Mon Sep 17 00:00:00 2001
-From: Mikhail Paulyshka <me@mixaill.tk>
-Date: Sat, 4 Nov 2017 23:52:37 +0300
-Subject: [PATCH] cmake: add support for MSVS 2017 update 5
-
----
- cmake/OpenCVDetectCXXCompiler.cmake | 2 +-
- cmake/templates/OpenCVConfig.root-WIN32.cmake.in | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/cmake/OpenCVDetectCXXCompiler.cmake b/cmake/OpenCVDetectCXXCompiler.cmake
-index cfb613b..3874467 100644
---- a/cmake/OpenCVDetectCXXCompiler.cmake
-+++ b/cmake/OpenCVDetectCXXCompiler.cmake
-@@ -114,7 +114,7 @@ if(MSVC)
- set(OpenCV_RUNTIME vc12)
- elseif(MSVC_VERSION EQUAL 1900)
- set(OpenCV_RUNTIME vc14)
-- elseif(MSVC_VERSION EQUAL 1910 OR MSVC_VERSION EQUAL 1911)
-+ elseif(MSVC_VERSION EQUAL 1910 OR MSVC_VERSION EQUAL 1911 OR MSVC_VERSION EQUAL 1912)
- set(OpenCV_RUNTIME vc15)
- else()
- message(WARNING "OpenCV does not recognize MSVC_VERSION \"${MSVC_VERSION}\". Cannot set OpenCV_RUNTIME")
-diff --git a/cmake/templates/OpenCVConfig.root-WIN32.cmake.in b/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
-index 7dc6666..846c400 100644
---- a/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
-+++ b/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
-@@ -78,7 +78,7 @@ if(MSVC)
- set(OpenCV_RUNTIME vc12)
- elseif(MSVC_VERSION EQUAL 1900)
- set(OpenCV_RUNTIME vc14)
-- elseif(MSVC_VERSION EQUAL 1910 OR MSVC_VERSION EQUAL 1911)
-+ elseif(MSVC_VERSION EQUAL 1910 OR MSVC_VERSION EQUAL 1911 OR MSVC_VERSION EQUAL 1912)
- set(OpenCV_RUNTIME vc15)
- endif()
- elseif(MINGW)
---
-2.14.1.windows.1
-
diff --git a/ports/opencv/no-double-expand-enable-pylint.patch b/ports/opencv/no-double-expand-enable-pylint.patch
deleted file mode 100644
index 9eb5563d8..000000000
--- a/ports/opencv/no-double-expand-enable-pylint.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index c46fc17..07507b6 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -314,7 +314,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(ENABLE_IMPL_COLLECTION)
- add_definitions(-DCV_COLLECT_IMPL_DATA)
diff --git a/ports/opencv/open_contrib-remove-waldboost.patch b/ports/opencv/open_contrib-remove-waldboost.patch
deleted file mode 100644
index 6c4da30ae..000000000
--- a/ports/opencv/open_contrib-remove-waldboost.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/modules/xobjdetect/CMakeLists.txt b/modules/xobjdetect/CMakeLists.txt
-index 567909b..2f30b41 100644
---- a/modules/xobjdetect/CMakeLists.txt
-+++ b/modules/xobjdetect/CMakeLists.txt
-@@ -1,5 +1,2 @@
- set(the_description "Object detection algorithms")
- ocv_define_module(xobjdetect opencv_core opencv_imgproc opencv_highgui opencv_objdetect WRAP python)
--if (NOT APPLE_FRAMEWORK)
-- add_subdirectory(tools)
--endif()
---
-2.12.0.windows.1
-
diff --git a/ports/opencv/portfile.cmake b/ports/opencv/portfile.cmake
index d9d9d7344..5ccf1c66f 100644
--- a/ports/opencv/portfile.cmake
+++ b/ports/opencv/portfile.cmake
@@ -1,44 +1,85 @@
include(vcpkg_common_functions)
+set(OPENCV_PORT_VERSION "3.4.0")
+
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO opencv/opencv
- REF 3.4.0
+ REF ${OPENCV_PORT_VERSION}
SHA512 aa7e475f356ffdaeb2ae9f7e9380c92cae58fabde9cd3b23c388f9190b8fde31ee70d16648042d0c43c03b2ff1f15e4be950be7851133ea0aa82cf6e42ba4710
HEAD_REF master
)
vcpkg_apply_patches(
SOURCE_PATH ${SOURCE_PATH}
- PATCHES "${CMAKE_CURRENT_LIST_DIR}/opencv-installation-options.patch"
- "${CMAKE_CURRENT_LIST_DIR}/001-fix-uwp.patch"
- "${CMAKE_CURRENT_LIST_DIR}/002-fix-uwp.patch"
- "${CMAKE_CURRENT_LIST_DIR}/no-double-expand-enable-pylint.patch"
- "${CMAKE_CURRENT_LIST_DIR}/msvs-fix-2017-u5.patch"
- "${CMAKE_CURRENT_LIST_DIR}/filesystem-uwp.patch"
-)
-file(REMOVE_RECURSE ${SOURCE_PATH}/3rdparty/libjpeg ${SOURCE_PATH}/3rdparty/libpng ${SOURCE_PATH}/3rdparty/zlib ${SOURCE_PATH}/3rdparty/libtiff)
-
-vcpkg_from_github(
- OUT_SOURCE_PATH CONTRIB_SOURCE_PATH
- REPO opencv/opencv_contrib
- REF 3.4.0
- SHA512 53f6127304f314d3be834f79520d4bc8a75e14cad8c9c14a66a7a6b37908ded114d24e3a2c664d4ec2275903db08ac826f29433e810c6400f3adc2714a3c5be7
- HEAD_REF master
+ PATCHES
+ "${CMAKE_CURRENT_LIST_DIR}/0001-winrt-fixes.patch"
+ "${CMAKE_CURRENT_LIST_DIR}/0002-install-options.patch"
+ "${CMAKE_CURRENT_LIST_DIR}/0003-disable-downloading.patch"
+ "${CMAKE_CURRENT_LIST_DIR}/0004-use-find-package-required.patch"
)
-vcpkg_apply_patches(
- SOURCE_PATH ${CONTRIB_SOURCE_PATH}
- PATCHES "${CMAKE_CURRENT_LIST_DIR}/open_contrib-remove-waldboost.patch"
+vcpkg_download_distfile(TINYDNN_ARCHIVE
+ URLS "https://github.com/tiny-dnn/tiny-dnn/archive/v1.0.0a3.tar.gz"
+ FILENAME "opencv-cache/tiny_dnn/adb1c512e09ca2c7a6faef36f9c53e59-v1.0.0a3.tar.gz"
+ SHA512 5f2c1a161771efa67e85b1fea395953b7744e29f61187ac5a6c54c912fb195b3aef9a5827135c3668bd0eeea5ae04a33cc433e1f6683e2b7955010a2632d168b
)
string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" BUILD_WITH_STATIC_CRT)
+set(CMAKE_MODULE_PATH)
+
set(BUILD_opencv_sfm OFF)
if("sfm" IN_LIST FEATURES)
set(BUILD_opencv_sfm ON)
endif()
+set(BUILD_opencv_contrib OFF)
+if("contrib" IN_LIST FEATURES)
+ set(BUILD_opencv_contrib ON)
+
+ # Used for opencv's face module
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/8afa57abc8229d611c4937165d20e2a2d9fc5a12/face_landmark_model.dat"
+ FILENAME "opencv-cache/data/7505c44ca4eb54b4ab1e4777cb96ac05-face_landmark_model.dat"
+ SHA512 c16e60a6c4bb4de3ab39b876ae3c3f320ea56f69c93e9303bd2dff8760841dcd71be4161fff8bc71e8fe4fe8747fa8465d49d6bd8f5ebcdaea161f4bc2da7c93
+ )
+
+ function(download_opencv_3rdparty ID COMMIT HASH)
+ if(NOT EXISTS "${DOWNLOADS}/opencv-cache/${ID}/${COMMIT}.stamp")
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://github.com/opencv/opencv_3rdparty/archive/${COMMIT}.zip"
+ FILENAME "opencv_3rdparty-${COMMIT}.zip"
+ SHA512 ${HASH}
+ )
+ vcpkg_extract_source_archive(${OCV_DOWNLOAD})
+ file(MAKE_DIRECTORY "${DOWNLOADS}/opencv-cache/${ID}")
+ file(GLOB XFEATURES2D_I ${CURRENT_BUILDTREES_DIR}/src/opencv_3rdparty-${COMMIT}/*)
+ foreach(FILE ${XFEATURES2D_I})
+ file(COPY ${FILE} DESTINATION "${DOWNLOADS}/opencv-cache/${ID}")
+ get_filename_component(XFEATURES2D_I_NAME "${FILE}" NAME)
+ file(MD5 "${FILE}" FILE_HASH)
+ file(RENAME "${DOWNLOADS}/opencv-cache/${ID}/${XFEATURES2D_I_NAME}" "${DOWNLOADS}/opencv-cache/${ID}/${FILE_HASH}-${XFEATURES2D_I_NAME}")
+ endforeach()
+ file(WRITE "${DOWNLOADS}/opencv-cache/${ID}/${COMMIT}.stamp")
+ endif()
+ endfunction()
+
+ # Used for opencv's xfeature2d module
+ download_opencv_3rdparty(
+ xfeatures2d/boostdesc
+ 34e4206aef44d50e6bbcd0ab06354b52e7466d26
+ 2ccdc8fb59da55eabc73309a80a4d3b1e73e2341027cdcdd2d714e0f519e60f243f38f79b13ed3de32f595aa23e4f86418eed42e741f32a81b1e6e0879190601
+ )
+
+ # Used for opencv's xfeature2d module
+ download_opencv_3rdparty(
+ xfeatures2d/vgg
+ fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d
+ 7051f5d6ccb938d296b919dd6d5dcddc5afb527aed456639c9984276a8f64565c084d96a72499a7756f127f8d2b1ce9ab70e4cbb3f89c4e16f82296c2a15daed
+ )
+endif()
+
set(WITH_CUDA OFF)
if("cuda" IN_LIST FEATURES)
set(WITH_CUDA ON)
@@ -47,6 +88,40 @@ endif()
set(WITH_FFMPEG OFF)
if("ffmpeg" IN_LIST FEATURES)
set(WITH_FFMPEG ON)
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/66b1fed06cf3510235f367f96aa26da5cb234a15/ffmpeg/opencv_ffmpeg.dll"
+ FILENAME "opencv-cache/ffmpeg/3ae76b105113d944984b2351c61e21c6-opencv_ffmpeg.dll"
+ SHA512 62ad0d6de7a7887a08313e20c474b4f98ae7746a2c10cce2ea5eae284250830e721b81308a401d0fadd238dda85c3ec0f347b41361fd56e473e790e3c40fa554
+ )
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/66b1fed06cf3510235f367f96aa26da5cb234a15/ffmpeg/opencv_ffmpeg_64.dll"
+ FILENAME "opencv-cache/ffmpeg/cf3bb5bc9d393b022ea7a42eb63e794d-opencv_ffmpeg_64.dll"
+ SHA512 5de95a180895aaa5186578572dd1968d2ff3ce8d24c46755c94d768ea6f463c92416c86e851b06b15fc314dd852a456282a56f5b14d6fb9130a054ac9e8230bd
+ )
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/66b1fed06cf3510235f367f96aa26da5cb234a15/ffmpeg/ffmpeg_version.cmake"
+ FILENAME "opencv-cache/ffmpeg/ec59008da403fb18ab3c1ed66aed583b-ffmpeg_version.cmake"
+ SHA512 97784032256b104ed9bb3e3f71824985c551b3e4a86928bcf60d3beef50817f66cf276256e140e645e78e04f4463f3665bdda0574585d05af640fb43d0ba4cb9
+ )
+endif()
+
+set(WITH_IPP OFF)
+if("ipp" IN_LIST FEATURES)
+ set(WITH_IPP ON)
+
+ if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ vcpkg_download_distfile(IPPICV_ARCHIVE
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/dfe3162c237af211e98b8960018b564bc209261d/ippicv/ippicv_2017u3_win_intel64_general_20170822.zip"
+ FILENAME "opencv-cache/ippicv/0421e642bc7ad741a2236d3ec4190bdd-ippicv_2017u3_win_intel64_general_20170822.zip"
+ SHA512 1b2b66ac60e5b6ba2fc95a3839d09b7fcfb42628dc6e01648727ee5394f6405702f69f741371627a9e1690294147c730196f1c9872339301c92a1424f159df6c
+ )
+ else()
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/dfe3162c237af211e98b8960018b564bc209261d/ippicv/ippicv_2017u3_win_ia32_general_20170822.zip"
+ FILENAME "opencv-cache/ippicv/8a7680ae352c192de2e2e34936164bd0-ippicv_2017u3_win_ia32_general_20170822.zip"
+ SHA512 6bbe08264b56117d4a00118088d72274396964bb904fb0719fc48beeb458ac31bea3d4d2fa2e0449f55af42471758f2c090c82061c91985c8b7994ed3b71df81
+ )
+ endif()
endif()
set(WITH_QT OFF)
@@ -59,16 +134,64 @@ if("vtk" IN_LIST FEATURES)
set(WITH_VTK ON)
endif()
+set(WITH_WEBP OFF)
+if("webp" IN_LIST FEATURES)
+ set(WITH_WEBP ON)
+ list(APPEND CMAKE_MODULE_PATH ${CURRENT_INSTALLED_DIR}/share/libwebp)
+endif()
+
set(WITH_GDCM OFF)
if("gdcm" IN_LIST FEATURES)
set(WITH_GDCM ON)
endif()
+set(WITH_OPENEXR OFF)
+if("openexr" IN_LIST FEATURES)
+ set(WITH_OPENEXR ON)
+ list(APPEND CMAKE_MODULE_PATH ${CURRENT_INSTALLED_DIR}/share/openexr)
+endif()
+
set(WITH_MSMF ON)
if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
set(WITH_MSMF OFF)
endif()
+set(WITH_TIFF OFF)
+if("tiff" IN_LIST FEATURES)
+ set(WITH_TIFF ON)
+endif()
+
+set(WITH_JPEG OFF)
+if("jpeg" IN_LIST FEATURES)
+ set(WITH_JPEG ON)
+endif()
+
+set(WITH_JASPER OFF)
+if("jasper" IN_LIST FEATURES)
+ set(WITH_JASPER ON)
+endif()
+
+set(WITH_PNG OFF)
+if("png" IN_LIST FEATURES)
+ set(WITH_PNG ON)
+endif()
+
+set(WITH_EIGEN OFF)
+if("eigen" IN_LIST FEATURES)
+ set(WITH_EIGEN ON)
+endif()
+
+if(BUILD_opencv_contrib)
+ vcpkg_from_github(
+ OUT_SOURCE_PATH CONTRIB_SOURCE_PATH
+ REPO opencv/opencv_contrib
+ REF ${OPENCV_PORT_VERSION}
+ SHA512 53f6127304f314d3be834f79520d4bc8a75e14cad8c9c14a66a7a6b37908ded114d24e3a2c664d4ec2275903db08ac826f29433e810c6400f3adc2714a3c5be7
+ HEAD_REF master
+ )
+ set(BUILD_WITH_CONTRIB_FLAG "-DOPENCV_EXTRA_MODULES_PATH=${CONTRIB_SOURCE_PATH}/modules")
+endif()
+
set(BUILD_opencv_line_descriptor ON)
set(BUILD_opencv_saliency ON)
set(BUILD_opencv_bgsegm ON)
@@ -78,7 +201,10 @@ if(VCPKG_TARGET_ARCHITECTURE MATCHES "arm")
set(BUILD_opencv_bgsegm OFF)
endif()
+string(REPLACE ";" "\\\\\;" CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}")
+
vcpkg_configure_cmake(
+ PREFER_NINJA
SOURCE_PATH ${SOURCE_PATH}
OPTIONS
# Ungrouped Entries
@@ -88,13 +214,16 @@ vcpkg_configure_cmake(
# BUILD
-DBUILD_DOCS=OFF
-DBUILD_EXAMPLES=OFF
+ -DBUILD_JASPER=OFF
-DBUILD_JPEG=OFF
+ -DBUILD_OPENEXR=OFF
-DBUILD_PACKAGE=OFF
-DBUILD_PERF_TESTS=OFF
-DBUILD_PNG=OFF
-DBUILD_PROTOBUF=OFF
-DBUILD_TESTS=OFF
-DBUILD_TIFF=OFF
+ -DBUILD_WEBP=OFF
-DBUILD_WITH_DEBUG_INFO=ON
-DBUILD_WITH_STATIC_CRT=${BUILD_WITH_STATIC_CRT}
-DBUILD_ZLIB=OFF
@@ -107,8 +236,10 @@ vcpkg_configure_cmake(
-DBUILD_opencv_line_descriptor=${BUILD_opencv_line_descriptor}
-DBUILD_opencv_saliency=${BUILD_opencv_saliency}
-DBUILD_opencv_bgsegm=${BUILD_opencv_bgsegm}
+
# CMAKE
-DCMAKE_DISABLE_FIND_PACKAGE_JNI=ON
+ "-DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH}"
# ENABLE
-DENABLE_CXX11=ON
-DENABLE_PYLINT=OFF
@@ -118,12 +249,13 @@ vcpkg_configure_cmake(
# OPENCV
-DOPENCV_CONFIG_INSTALL_PATH=share/opencv
"-DOPENCV_DOWNLOAD_PATH=${DOWNLOADS}/opencv-cache"
- -DOPENCV_EXTRA_MODULES_PATH=${CONTRIB_SOURCE_PATH}/modules
+ ${BUILD_WITH_CONTRIB_FLAG}
-DOPENCV_OTHER_INSTALL_PATH=share/opencv
# WITH
-DWITH_CUBLAS=OFF
-DWITH_CUDA=${WITH_CUDA}
-DWITH_FFMPEG=${WITH_FFMPEG}
+ -DWITH_IPP=${WITH_IPP}
-DWITH_LAPACK=OFF
-DWITH_MSMF=${WITH_MSMF}
-DWITH_OPENCLAMDBLAS=OFF
@@ -131,6 +263,13 @@ vcpkg_configure_cmake(
-DWITH_QT=${WITH_QT}
-DWITH_VTK=${WITH_VTK}
-DWITH_GDCM=${WITH_GDCM}
+ -DWITH_WEBP=${WITH_WEBP}
+ -DWITH_OPENEXR=${WITH_OPENEXR}
+ -DWITH_TIFF=${WITH_TIFF}
+ -DWITH_JPEG=${WITH_JPEG}
+ -DWITH_PNG=${WITH_PNG}
+ -DWITH_JASPER=${WITH_JASPER}
+ -DWITH_EIGEN=${WITH_EIGEN}
OPTIONS_DEBUG
-DINSTALL_HEADERS=OFF
-DINSTALL_OTHER=OFF
@@ -179,39 +318,25 @@ if(STATICLIB)
endif()
file(READ ${CURRENT_PACKAGES_DIR}/share/opencv/OpenCVConfig.cmake OPENCV_CONFIG)
-string(REPLACE " vc15"
- " ${OpenCV_RUNTIME}" OPENCV_CONFIG "${OPENCV_CONFIG}")
-string(REPLACE " vc14"
- " ${OpenCV_RUNTIME}" OPENCV_CONFIG "${OPENCV_CONFIG}")
+string(REPLACE "/staticlib/"
+ "/lib/" OPENCV_CONFIG "${OPENCV_CONFIG}")
file(WRITE ${CURRENT_PACKAGES_DIR}/share/opencv/OpenCVConfig.cmake "${OPENCV_CONFIG}")
-if(EXISTS "${CURRENT_PACKAGES_DIR}/share/opencv/${OpenCV_ARCH}/${OpenCV_RUNTIME}/staticlib")
- file(RENAME ${CURRENT_PACKAGES_DIR}/share/opencv/${OpenCV_ARCH}/${OpenCV_RUNTIME}/staticlib ${CURRENT_PACKAGES_DIR}/share/opencv/${OpenCV_ARCH}/${OpenCV_RUNTIME}/lib)
-endif()
-file(READ ${CURRENT_PACKAGES_DIR}/share/opencv/${OpenCV_ARCH}/${OpenCV_RUNTIME}/lib/OpenCVModules-release.cmake OPENCV_CONFIG_LIB)
+file(READ ${CURRENT_PACKAGES_DIR}/share/opencv/OpenCVModules-release.cmake OPENCV_CONFIG_LIB)
string(REPLACE "/staticlib/"
"/lib/" OPENCV_CONFIG_LIB "${OPENCV_CONFIG_LIB}")
-string(REPLACE "/${OpenCV_ARCH}/${OpenCV_RUNTIME}/"
- "/" OPENCV_CONFIG_LIB "${OPENCV_CONFIG_LIB}")
-string(REPLACE "${CURRENT_INSTALLED_DIR}"
- "\${_IMPORT_PREFIX}" OPENCV_CONFIG_LIB "${OPENCV_CONFIG_LIB}")
-file(WRITE ${CURRENT_PACKAGES_DIR}/share/opencv/${OpenCV_ARCH}/${OpenCV_RUNTIME}/lib/OpenCVModules-release.cmake "${OPENCV_CONFIG_LIB}")
+file(WRITE ${CURRENT_PACKAGES_DIR}/share/opencv/OpenCVModules-release.cmake "${OPENCV_CONFIG_LIB}")
-if(EXISTS "${CURRENT_PACKAGES_DIR}/debug/share/opencv/${OpenCV_ARCH}/${OpenCV_RUNTIME}/staticlib")
- file(RENAME ${CURRENT_PACKAGES_DIR}/debug/share/opencv/${OpenCV_ARCH}/${OpenCV_RUNTIME}/staticlib ${CURRENT_PACKAGES_DIR}/debug/share/opencv/${OpenCV_ARCH}/${OpenCV_RUNTIME}/lib)
-endif()
-file(READ ${CURRENT_PACKAGES_DIR}/debug/share/opencv/${OpenCV_ARCH}/${OpenCV_RUNTIME}/lib/OpenCVModules-debug.cmake OPENCV_CONFIG_LIB)
+file(READ ${CURRENT_PACKAGES_DIR}/debug/share/opencv/OpenCVModules-debug.cmake OPENCV_CONFIG_LIB)
string(REPLACE "/staticlib/"
"/lib/" OPENCV_CONFIG_LIB "${OPENCV_CONFIG_LIB}")
-string(REPLACE "/${OpenCV_ARCH}/${OpenCV_RUNTIME}/"
- "/" OPENCV_CONFIG_LIB "${OPENCV_CONFIG_LIB}")
string(REPLACE "PREFIX}/lib"
"PREFIX}/debug/lib" OPENCV_CONFIG_LIB "${OPENCV_CONFIG_LIB}")
string(REPLACE "PREFIX}/bin"
"PREFIX}/debug/bin" OPENCV_CONFIG_LIB "${OPENCV_CONFIG_LIB}")
-string(REPLACE "${CURRENT_INSTALLED_DIR}"
- "\${_IMPORT_PREFIX}" OPENCV_CONFIG_LIB "${OPENCV_CONFIG_LIB}")
-file(WRITE ${CURRENT_PACKAGES_DIR}/share/opencv/${OpenCV_ARCH}/${OpenCV_RUNTIME}/lib/OpenCVModules-debug.cmake "${OPENCV_CONFIG_LIB}")
+file(WRITE ${CURRENT_PACKAGES_DIR}/share/opencv/OpenCVModules-debug.cmake "${OPENCV_CONFIG_LIB}")
+
+file(RENAME ${CURRENT_PACKAGES_DIR}/debug/share/opencv/OpenCVModules.cmake ${CURRENT_PACKAGES_DIR}/share/opencv/OpenCVModules.cmake)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)