diff --git a/CMakeLists.txt b/CMakeLists.txt index a02b71a8b..f9dab3b7d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,6 +45,24 @@ endif(CMAKE_SYSTEM_NAME MATCHES WindowsPhone OR CMAKE_SYSTEM_NAME MATCHES Window if(WINRT) add_definitions(-DWINRT -DNO_GETENV) + + # Making definitions available to other configurations and + # to filter dependency restrictions at compile time. + if(CMAKE_SYSTEM_NAME MATCHES WindowsPhone) + set(WINRT_PHONE TRUE) + add_definitions(-DWINRT_PHONE) + elseif(CMAKE_SYSTEM_NAME MATCHES WindowsStore) + set(WINRT_STORE TRUE) + add_definitions(-DWINRT_STORE) + endif() + + if(CMAKE_SYSTEM_VERSION MATCHES 8.1) + set(WINRT_8_1 TRUE) + add_definitions(-DWINRT_8_1) + elseif(CMAKE_SYSTEM_VERSION MATCHES 8.0) + set(WINRT_8_0 TRUE) + add_definitions(-DWINRT_8_0) + endif() endif() if(POLICY CMP0022) diff --git a/modules/videoio/CMakeLists.txt b/modules/videoio/CMakeLists.txt index 9332f2860..810f31f63 100644 --- a/modules/videoio/CMakeLists.txt +++ b/modules/videoio/CMakeLists.txt @@ -1,7 +1,3 @@ -if(WINRT) - ocv_module_disable(videoio) -endif() - set(the_description "Media I/O") ocv_add_module(videoio opencv_imgproc opencv_imgcodecs OPTIONAL opencv_androidcamera WRAP java python) @@ -11,7 +7,7 @@ ocv_add_module(videoio opencv_imgproc opencv_imgcodecs OPTIONAL opencv_androidca # Jose Luis Blanco, 2008 # ---------------------------------------------------------------------------- -if(HAVE_WINRT_CX AND NOT WINRT) +if(WINRT_8_1) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /ZW") endif() @@ -36,6 +32,36 @@ file(GLOB videoio_ext_hdrs "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.hpp" "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.h") +# Removing WinRT API headers by default +status(" ${name}: Removing WinRT API headers by default") +list(REMOVE_ITEM videoio_ext_hdrs "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/cap_winrt.hpp") + +# Dependencies used by the implementation referenced +# below are not available on WinRT 8.0. +# Enabling it for WiRT 8.1+ only. +if(DEFINED WINRT AND NOT DEFINED WINRT_8_0) + + # WinRT detected. Adding WinRT API header + status(" ${name}: WinRT detected. Adding WinRT API header") + list(APPEND videoio_ext_hdrs "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/cap_winrt.hpp") + + # Adding WinRT internal sources and headers + list(APPEND videoio_srcs + ${CMAKE_CURRENT_LIST_DIR}/src/cap_winrt_capture.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/cap_winrt_bridge.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/cap_winrt_video.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/cap_winrt/CaptureFrameGrabber.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/cap_winrt/MediaStreamSink.cpp) + list(APPEND videoio_hdrs + ${CMAKE_CURRENT_LIST_DIR}/src/cap_winrt_capture.hpp + ${CMAKE_CURRENT_LIST_DIR}/src/cap_winrt_bridge.hpp + ${CMAKE_CURRENT_LIST_DIR}/src/cap_winrt_video.hpp + ${CMAKE_CURRENT_LIST_DIR}/src/cap_winrt/MFIncludes.hpp + ${CMAKE_CURRENT_LIST_DIR}/src/cap_winrt/CaptureFrameGrabber.hpp + ${CMAKE_CURRENT_LIST_DIR}/src/cap_winrt/MediaSink.hpp + ${CMAKE_CURRENT_LIST_DIR}/src/cap_winrt/MediaStreamSink.hpp) +endif() + if(WIN32 AND NOT ARM) list(APPEND videoio_srcs ${CMAKE_CURRENT_LIST_DIR}/src/cap_cmu.cpp) endif() diff --git a/modules/videostab/CMakeLists.txt b/modules/videostab/CMakeLists.txt index 8f7ae830a..49e75f9ad 100644 --- a/modules/videostab/CMakeLists.txt +++ b/modules/videostab/CMakeLists.txt @@ -4,5 +4,9 @@ if(HAVE_CUDA) ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef -Wmissing-declarations -Wshadow -Wunused-parameter) endif() +if(WINRT_8_1) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /ZW") +endif() + ocv_define_module(videostab opencv_imgproc opencv_features2d opencv_video opencv_photo opencv_calib3d OPTIONAL opencv_cudawarping opencv_cudaoptflow opencv_videoio WRAP python)