aboutsummaryrefslogtreecommitdiff
path: root/ports/opencv/0001-winrt-fixes.patch
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 /ports/opencv/0001-winrt-fixes.patch
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
Diffstat (limited to 'ports/opencv/0001-winrt-fixes.patch')
-rw-r--r--ports/opencv/0001-winrt-fixes.patch140
1 files changed, 140 insertions, 0 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
+