[cudnn] add port and enable it in darknet (#7536)

* [cudnn] add port and enable it in darknet
* [OpenCV4] fix ffmpeg feature on uwp
* [darknet] enable integration with cuda/cudnn also with opencv3
* [darknet] update to latest revision
This commit is contained in:
Stefano Sinigardi 2019-09-24 21:58:38 +02:00 committed by Phil Christensen
parent e9047ef771
commit 3532a7cf3c
14 changed files with 373 additions and 108 deletions

View File

@ -1,3 +1,3 @@
Source: cuda
Version: 9.0
Description: A parallel computing platform and programming model
Version: 10.1
Description: A parallel computing platform and programming model

View File

@ -1,4 +1,4 @@
# Due to the complexity involved, this package doesn't install CUDA. It instead verifies that CUDA is installed.
# This package doesn't install CUDA. It instead verifies that CUDA is installed.
# Other packages can depend on this package to declare a dependency on CUDA.
# If this package is installed, we assume that CUDA is properly installed.
@ -9,8 +9,7 @@ find_program(NVCC
ENV CUDA_BIN_PATH
PATH_SUFFIXES bin bin64
DOC "Toolkit location."
NO_DEFAULT_PATH
)
NO_DEFAULT_PATH)
set(error_code 1)
if (NVCC)
@ -20,12 +19,12 @@ if (NVCC)
RESULT_VARIABLE error_code)
endif()
set(CUDA_REQUIRED_VERSION "V9.0.0")
#note: this port must be kept in sync with CUDNN port: every time one is upgraded, the other must be too
set(CUDA_REQUIRED_VERSION "V10.1.0")
if (error_code)
message(FATAL_ERROR "Could not find CUDA. Before continuing, please download and install CUDA (${CUDA_REQUIRED_VERSION} or higher) from:"
"\n https://developer.nvidia.com/cuda-downloads\n"
"\nAlso ensure vcpkg has been rebuilt with the latest version (v0.0.104 or later)")
message(FATAL_ERROR "Could not find CUDA. Before continuing, please download and install CUDA (${CUDA_REQUIRED_VERSION} or higher) from:"
"\n https://developer.nvidia.com/cuda-downloads\n")
endif()
# Sample output:
@ -36,12 +35,12 @@ endif()
string(REGEX MATCH "V([0-9]+)\\.([0-9]+)\\.([0-9]+)" CUDA_VERSION ${NVCC_OUTPUT})
message(STATUS "Found CUDA ${CUDA_VERSION}")
set(CUDA_VERSION_MAJOR ${CMAKE_MATCH_1})
#set(CUDA_VERSION_MINOR ${CMAKE_MATCH_2})
#set(CUDA_VERSION_PATCH ${CMAKE_MATCH_3})
set(CUDA_VERSION_MINOR ${CMAKE_MATCH_2})
set(CUDA_VERSION_PATCH ${CMAKE_MATCH_3})
if (CUDA_VERSION_MAJOR LESS 9)
message(FATAL_ERROR "CUDA ${CUDA_VERSION} but ${CUDA_REQUIRED_VERSION} is required. Please download and install a more recent version of CUDA from:"
if (CUDA_VERSION_MAJOR LESS 10 AND CUDA_VERSION_MINOR LESS 1)
message(FATAL_ERROR "CUDA ${CUDA_VERSION} found, but ${CUDA_REQUIRED_VERSION} is required. Please download and install a more recent version of CUDA from:"
"\n https://developer.nvidia.com/cuda-downloads\n")
endif()
SET(VCPKG_POLICY_EMPTY_PACKAGE enabled)
SET(VCPKG_POLICY_EMPTY_PACKAGE enabled)

4
ports/cudnn/CONTROL Normal file
View File

@ -0,0 +1,4 @@
Source: cudnn
Version: 7.6
Description: NVIDIA's cuDNN deep neural network acceleration library
Build-Depends: cuda

View File

@ -0,0 +1,90 @@
# Distributed under the OSI-approved BSD 3-Clause License.
#.rst:
# FindCUDNN
# --------
#
# Result Variables
# ^^^^^^^^^^^^^^^^
#
# This module will set the following variables in your project::
#
# ``CUDNN_FOUND``
# True if CUDNN found on the local system
#
# ``CUDNN_INCLUDE_DIRS``
# Location of CUDNN header files.
#
# ``CUDNN_LIBRARIES``
# The CUDNN libraries.
#
# ``CuDNN::CuDNN``
# The CUDNN target
#
include(FindPackageHandleStandardArgs)
if(NOT CUDNN_INCLUDE_DIR)
find_path(CUDNN_INCLUDE_DIR cudnn.h
HINTS ${CUDA_HOME} ${CUDA_TOOLKIT_ROOT_DIR} $ENV{cudnn} $ENV{CUDNN}
PATH_SUFFIXES cuda/include include)
endif()
if(NOT CUDNN_LIBRARY)
find_library(CUDNN_LIBRARY cudnn
HINTS ${CUDA_HOME} ${CUDA_TOOLKIT_ROOT_DIR} $ENV{cudnn} $ENV{CUDNN}
PATH_SUFFIXES lib lib64 cuda/lib cuda/lib64 lib/x64)
endif()
if(EXISTS "${CUDNN_INCLUDE_DIR}/cudnn.h")
file(READ ${CUDNN_INCLUDE_DIR}/cudnn.h CUDNN_HEADER_CONTENTS)
string(REGEX MATCH "define CUDNN_MAJOR * +([0-9]+)"
CUDNN_VERSION_MAJOR "${CUDNN_HEADER_CONTENTS}")
string(REGEX REPLACE "define CUDNN_MAJOR * +([0-9]+)" "\\1"
CUDNN_VERSION_MAJOR "${CUDNN_VERSION_MAJOR}")
string(REGEX MATCH "define CUDNN_MINOR * +([0-9]+)"
CUDNN_VERSION_MINOR "${CUDNN_HEADER_CONTENTS}")
string(REGEX REPLACE "define CUDNN_MINOR * +([0-9]+)" "\\1"
CUDNN_VERSION_MINOR "${CUDNN_VERSION_MINOR}")
string(REGEX MATCH "define CUDNN_PATCHLEVEL * +([0-9]+)"
CUDNN_VERSION_PATCH "${CUDNN_HEADER_CONTENTS}")
string(REGEX REPLACE "define CUDNN_PATCHLEVEL * +([0-9]+)" "\\1"
CUDNN_VERSION_PATCH "${CUDNN_VERSION_PATCH}")
if(NOT CUDNN_VERSION_MAJOR)
set(CUDNN_VERSION "?")
else()
set(CUDNN_VERSION "${CUDNN_VERSION_MAJOR}.${CUDNN_VERSION_MINOR}.${CUDNN_VERSION_PATCH}")
endif()
endif()
set(CUDNN_INCLUDE_DIRS ${CUDNN_INCLUDE_DIR})
set(CUDNN_LIBRARIES ${CUDNN_LIBRARY})
mark_as_advanced(CUDNN_LIBRARY CUDNN_INCLUDE_DIR)
find_package_handle_standard_args(CUDNN
REQUIRED_VARS CUDNN_INCLUDE_DIR CUDNN_LIBRARY
VERSION_VAR CUDNN_VERSION
)
if(WIN32)
set(CUDNN_DLL_DIR ${CUDNN_INCLUDE_DIR})
list(TRANSFORM CUDNN_DLL_DIR APPEND "/../bin")
find_file(CUDNN_LIBRARY_DLL NAMES cudnn64_${CUDNN_VERSION_MAJOR}.dll PATHS ${CUDNN_DLL_DIR})
endif()
if( CUDNN_FOUND AND NOT TARGET CuDNN::CuDNN )
if( EXISTS "${CUDNN_LIBRARY_DLL}" )
add_library( CuDNN::CuDNN SHARED IMPORTED )
set_target_properties( CuDNN::CuDNN PROPERTIES
IMPORTED_LOCATION "${CUDNN_LIBRARY_DLL}"
IMPORTED_IMPLIB "${CUDNN_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${CUDNN_INCLUDE_DIR}"
IMPORTED_LINK_INTERFACE_LANGUAGES "C" )
else()
add_library( CuDNN::CuDNN UNKNOWN IMPORTED )
set_target_properties( CuDNN::CuDNN PROPERTIES
IMPORTED_LOCATION "${CUDNN_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${CUDNN_INCLUDE_DIR}"
IMPORTED_LINK_INTERFACE_LANGUAGES "C" )
endif()
endif()

View File

@ -0,0 +1,62 @@
include(vcpkg_common_functions)
if(VCPKG_TARGET_IS_UWP OR VCPKG_TARGET_IS_OSX)
message(FATAL_ERROR "This port is only for Windows Desktop or Linux")
endif()
if(NOT VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
message(FATAL_ERROR "This port is only for x64 architectures")
endif()
vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY ONLY_DYNAMIC_CRT)
#note: this port must be kept in sync with CUDA port: every time one is upgraded, the other must be too
set(CUDNN_VERSION "7.6.0")
set(CUDNN_FULL_VERSION "${CUDNN_VERSION}-cuda10.1_0")
if(VCPKG_TARGET_IS_WINDOWS)
set(CUDNN_DOWNLOAD_LINK "https://anaconda.org/anaconda/cudnn/${CUDNN_VERSION}/download/win-64/cudnn-${CUDNN_FULL_VERSION}.tar.bz2")
set(SHA512_CUDNN "c0218407e7bc2b3c1497f1709dedee345bc619603ec0efa094e392888c0d513d645a1241501f9b406f688defa811578f36b49f456eb533535ecd526702156eea")
set(CUDNN_OS "windows")
elseif(VCPKG_TARGET_IS_LINUX)
set(CUDNN_DOWNLOAD_LINK "https://anaconda.org/anaconda/cudnn/${CUDNN_VERSION}/download/linux-64/cudnn-${CUDNN_FULL_VERSION}.tar.bz2")
set(SHA512_CUDNN "128ccdc0ec24a1133947d7a8eff6cd8edc224134fa5065a11a1a01a99dbaee7d799db1454e0a59e411cf6db244f8c2420c160488a5dd4830addc3578b2011e3d")
set(CUDNN_OS "linux")
endif()
vcpkg_download_distfile(ARCHIVE
URLS ${CUDNN_DOWNLOAD_LINK}
FILENAME "cudnn-${CUDNN_FULL_VERSION}-${CUDNN_OS}.tar.bz2"
SHA512 ${SHA512_CUDNN}
)
vcpkg_extract_source_archive_ex(
OUT_SOURCE_PATH SOURCE_PATH
ARCHIVE ${ARCHIVE}
NO_REMOVE_ONE_LEVEL
)
string(REPLACE "." ";" VERSION_LIST ${CUDNN_VERSION})
list(GET VERSION_LIST 0 CUDNN_VERSION_MAJOR)
list(GET VERSION_LIST 1 CUDNN_VERSION_MINOR)
list(GET VERSION_LIST 2 CUDNN_VERSION_PATCH)
if(VCPKG_TARGET_IS_WINDOWS)
file(INSTALL "${SOURCE_PATH}/Library/include/cudnn.h" DESTINATION ${CURRENT_PACKAGES_DIR}/include)
file(INSTALL "${SOURCE_PATH}/Library/lib/x64/cudnn.lib" DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
file(INSTALL "${SOURCE_PATH}/Library/bin/cudnn64_${CUDNN_VERSION_MAJOR}.dll" DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
file(INSTALL "${SOURCE_PATH}/Library/lib/x64/cudnn.lib" DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
file(INSTALL "${SOURCE_PATH}/Library/bin/cudnn64_${CUDNN_VERSION_MAJOR}.dll" DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin)
elseif(VCPKG_TARGET_IS_LINUX)
file(INSTALL "${SOURCE_PATH}/include/cudnn.h" DESTINATION ${CURRENT_PACKAGES_DIR}/include)
file(INSTALL "${SOURCE_PATH}/lib/libcudnn.so.${CUDNN_VERSION}" DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
file(INSTALL "${SOURCE_PATH}/lib/libcudnn.so.${CUDNN_VERSION_MAJOR}" DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
file(INSTALL "${SOURCE_PATH}/lib/libcudnn.so" DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
file(INSTALL "${SOURCE_PATH}/lib/libcudnn.so.${CUDNN_VERSION}" DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
file(INSTALL "${SOURCE_PATH}/lib/libcudnn.so.${CUDNN_VERSION_MAJOR}" DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
file(INSTALL "${SOURCE_PATH}/lib/libcudnn.so" DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
endif()
file(INSTALL "${SOURCE_PATH}/info/LICENSE.txt" DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/FindCUDNN.cmake" DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})

View File

@ -0,0 +1,8 @@
set(CUDNN_PREV_MODULE_PATH ${CMAKE_MODULE_PATH})
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
if(NOT CUDNN_LIBRARIES)
_find_package(${ARGS})
endif()
set(CMAKE_MODULE_PATH ${CUDNN_PREV_MODULE_PATH})

View File

@ -1,23 +1,38 @@
Source: darknet
Version: 0.2.5-6
Version: 0.2.5.1
Description: Darknet is an open source neural network framework written in C and CUDA. You only look once (YOLO) is a state-of-the-art, real-time object detection system, best example of darknet functionalities.
Build-Depends: pthreads (windows), stb
Default-Features: weights
Feature: opencv
Build-Depends: opencv[ffmpeg]
Description: Build darknet with support for OpenCV
Feature: cuda
Build-Depends: cuda
Description: Build darknet with support for CUDA
Feature: cudnn
Build-Depends: darknet[cuda]
Description: Build darknet with support for CUDNN
Feature: opencv-base
Build-Depends: opencv[ffmpeg]
Description: Build darknet with support for OpenCV
Feature: opencv-cuda
Build-Depends: opencv[ffmpeg], opencv[cuda]
Description: Build darknet with support for a CUDA-enabled OpenCV
Feature: opencv3-base
Build-Depends: opencv3[ffmpeg]
Description: Build darknet with support for OpenCV3
Feature: opencv3-cuda
Build-Depends: opencv3[ffmpeg], opencv3[cuda]
Description: Build darknet with support for a CUDA-enabled OpenCV3
Feature: weights
Description: Download pre-built weights for test
Feature: weights-train
Description: Download pre-built weights for training
Feature: opencv-cuda
Build-Depends: darknet[opencv], darknet[cuda]
Description: Build darknet with support for a CUDA-enabled OpenCV
Feature: full
Build-Depends: darknet[opencv-cuda], darknet[cudnn], darknet[weights], darknet[weights-train]
Description: Build darknet fully-featured

View File

@ -11,15 +11,41 @@ include(vcpkg_common_functions)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO AlexeyAB/darknet
REF b2d795e34e1d734d0f451ce9847a0e6b68c32351
SHA512 1964aa0d768d37fc614983718aede8b29e562fd8120116b7cd7a1331bb8a3256e28c01cdff6f19bbe7b9d6289b3292188205f362bae38393cee33d8a2e6a5273
REF 35346d2ef80dc46b9eb4fba57da1737a49f4743e
SHA512 a905a5e42c4ecfdf2b8276fc565b82e30c97e249c0530b403d149a8e6276bb3852a956869c21efbe092799f3743cf529a577fb03275cfcfcc8322b92e9de0ff6
HEAD_REF master
)
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
"cuda" ENABLE_CUDA
"opencv" ENABLE_OPENCV
)
# enable CUDA inside DARKNET
set(ENABLE_CUDA OFF)
if("cuda" IN_LIST FEATURES)
set(ENABLE_CUDA ON)
endif()
set(ENABLE_OPENCV OFF)
# enable OPENCV (basic version) inside DARKNET
if("opencv-base" IN_LIST FEATURES)
set(ENABLE_OPENCV ON)
endif()
if("opencv3-base" IN_LIST FEATURES)
set(ENABLE_OPENCV ON)
endif()
# enable OPENCV (with its own CUDA feature enabled) inside DARKNET
# (note: this does not mean that DARKNET itself will have CUDA support since by design it is independent, to have it you must require both opencv-cuda and cuda features!)
# DARKNET will be automatically able to distinguish an OpenCV that is built with or without CUDA support.
if("opencv-cuda" IN_LIST FEATURES)
set(ENABLE_OPENCV ON)
endif()
if("opencv3-cuda" IN_LIST FEATURES)
set(ENABLE_OPENCV ON)
endif()
# enable CUDNN inside DARKNET (which depends on the "cuda" feature by design)
set(ENABLE_CUDNN OFF)
if("cudnn" IN_LIST FEATURES)
set(ENABLE_CUDNN ON)
endif()
if ("cuda" IN_LIST FEATURES)
if (NOT VCPKG_CMAKE_SYSTEM_NAME AND NOT ENV{CUDACXX})
@ -67,15 +93,18 @@ endif()
#make sure we don't use any integrated pre-built library nor any unnecessary CMake module
file(REMOVE_RECURSE ${SOURCE_PATH}/3rdparty)
file(REMOVE ${SOURCE_PATH}/cmake/Modules/FindPThreads_windows.cmake)
file(REMOVE ${SOURCE_PATH}/cmake/Modules/FindCUDNN.cmake)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
DISABLE_PARALLEL_CONFIGURE #since darknet configures a file inside source tree, it is better to disable parallel configure
DISABLE_PARALLEL_CONFIGURE
PREFER_NINJA
OPTIONS
-DINSTALL_BIN_DIR:STRING=bin
-DINSTALL_LIB_DIR:STRING=lib
${FEATURE_OPTIONS}
-DENABLE_CUDA=${ENABLE_CUDA}
-DENABLE_CUDNN=${ENABLE_CUDNN}
-DENABLE_OPENCV=${ENABLE_OPENCV}
)
vcpkg_install_cmake()
@ -91,15 +120,15 @@ file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/bin/uselib${EXECUTABLE_SUFFIX})
if(EXISTS ${CURRENT_PACKAGES_DIR}/debug/bin/uselib_track${EXECUTABLE_SUFFIX})
file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/bin/uselib_track${EXECUTABLE_SUFFIX})
endif()
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/tools/darknet/)
file(RENAME ${CURRENT_PACKAGES_DIR}/bin/darknet${EXECUTABLE_SUFFIX} ${CURRENT_PACKAGES_DIR}/tools/darknet/darknet${EXECUTABLE_SUFFIX})
file(RENAME ${CURRENT_PACKAGES_DIR}/bin/uselib${EXECUTABLE_SUFFIX} ${CURRENT_PACKAGES_DIR}/tools/darknet/uselib${EXECUTABLE_SUFFIX})
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/tools/${PORT})
file(RENAME ${CURRENT_PACKAGES_DIR}/bin/darknet${EXECUTABLE_SUFFIX} ${CURRENT_PACKAGES_DIR}/tools/${PORT}/darknet${EXECUTABLE_SUFFIX})
file(RENAME ${CURRENT_PACKAGES_DIR}/bin/uselib${EXECUTABLE_SUFFIX} ${CURRENT_PACKAGES_DIR}/tools/${PORT}/uselib${EXECUTABLE_SUFFIX})
if(EXISTS ${CURRENT_PACKAGES_DIR}/bin/uselib_track${EXECUTABLE_SUFFIX})
file(RENAME ${CURRENT_PACKAGES_DIR}/bin/uselib_track${EXECUTABLE_SUFFIX} ${CURRENT_PACKAGES_DIR}/tools/darknet/uselib_track${EXECUTABLE_SUFFIX})
file(RENAME ${CURRENT_PACKAGES_DIR}/bin/uselib_track${EXECUTABLE_SUFFIX} ${CURRENT_PACKAGES_DIR}/tools/${PORT}/uselib_track${EXECUTABLE_SUFFIX})
endif()
file(COPY ${SOURCE_PATH}/cfg DESTINATION ${CURRENT_PACKAGES_DIR}/tools/darknet)
file(COPY ${SOURCE_PATH}/data DESTINATION ${CURRENT_PACKAGES_DIR}/tools/darknet)
vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/darknet)
file(COPY ${SOURCE_PATH}/cfg DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
file(COPY ${SOURCE_PATH}/data DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/${PORT})
if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin)
@ -107,21 +136,19 @@ endif()
vcpkg_fixup_cmake_targets()
file(COPY ${SOURCE_PATH}/cmake/Modules/FindCUDNN.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/darknet)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/darknet RENAME copyright)
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
if("weights" IN_LIST FEATURES)
file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/yolov3.weights DESTINATION ${CURRENT_PACKAGES_DIR}/tools/darknet)
file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/yolov2.weights DESTINATION ${CURRENT_PACKAGES_DIR}/tools/darknet)
file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/yolov3-tiny.weights DESTINATION ${CURRENT_PACKAGES_DIR}/tools/darknet)
file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/yolov2-tiny.weights DESTINATION ${CURRENT_PACKAGES_DIR}/tools/darknet)
file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/yolov3.weights DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/yolov2.weights DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/yolov3-tiny.weights DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/yolov2-tiny.weights DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
endif()
if("weights-train" IN_LIST FEATURES)
file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/darknet53.conv.74 DESTINATION ${CURRENT_PACKAGES_DIR}/tools/darknet)
file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/darknet19_448.conv.23 DESTINATION ${CURRENT_PACKAGES_DIR}/tools/darknet)
file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/darknet53.conv.74 DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
file(COPY ${VCPKG_ROOT_DIR}/downloads/darknet-cache/darknet19_448.conv.23 DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
endif()

View File

@ -11,6 +11,19 @@ index c2fda8f..3f7dfdc 100644
# 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/datafile.cpp b/modules/core/src/utils/datafile.cpp
index f1107b0..c613ca2 100644
--- a/modules/core/src/utils/datafile.cpp
+++ b/modules/core/src/utils/datafile.cpp
@@ -108,7 +108,7 @@ static cv::String getModuleLocation(const void* addr)
CV_UNUSED(addr);
#ifdef _WIN32
HMODULE m = 0;
-#if _WIN32_WINNT >= 0x0501
+#if (_WIN32_WINNT >= 0x0501) && (!WINRT_STORE)
::GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
reinterpret_cast<LPCTSTR>(addr),
&m);
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

View File

@ -12,7 +12,7 @@ Feature: flann
Description: opencv_flann module
Feature: contrib
Build-Depends: hdf5 (!uwp)
Build-Depends: opencv3[dnn], hdf5 (!uwp)
Description: opencv_contrib module
Feature: cuda
@ -20,6 +20,7 @@ Build-Depends: opencv3[contrib], cuda
Description: CUDA support for opencv
Feature: dnn
Build-Depends: opencv3[flann]
Description: Enable dnn module
Feature: eigen
@ -53,7 +54,6 @@ Feature: opengl
Build-Depends: opengl
Description: opengl support for opencv
Feature: ovis
Build-Depends: opencv3[contrib], ogre
Description: opencv_ovis module
@ -67,7 +67,7 @@ Build-Depends: qt5
Description: Qt GUI support for opencv
Feature: sfm
Build-Depends: opencv3[contrib], opencv3[flann], eigen3, glog, gflags, ceres
Build-Depends: opencv3[contrib], eigen3, glog, gflags, ceres
Description: opencv_sfm module
Feature: tbb

View File

@ -74,7 +74,18 @@ if("dnn" IN_LIST FEATURES)
)
endif()
# Build image quality module when building with 'contrib' feature and not UWP.
set(BUILD_opencv_quality OFF)
if("contrib" IN_LIST FEATURES)
if (VCPKG_TARGET_IS_UWP)
set(BUILD_opencv_quality OFF)
message(WARNING "The image quality module (quality) does not build for UWP, the module has been disabled.")
# The hdf module is silently disabled by OpenCVs buildsystem if HDF5 is not detected.
message(WARNING "The hierarchical data format module (hdf) depends on HDF5 which doesn't support UWP, the module has been disabled.")
else()
set(BUILD_opencv_quality CMAKE_DEPENDS_IN_PROJECT_ONLY)
endif()
vcpkg_from_github(
OUT_SOURCE_PATH CONTRIB_SOURCE_PATH
REPO opencv/opencv_contrib
@ -90,12 +101,6 @@ if("contrib" IN_LIST FEATURES)
SHA512 c16e60a6c4bb4de3ab39b876ae3c3f320ea56f69c93e9303bd2dff8760841dcd71be4161fff8bc71e8fe4fe8747fa8465d49d6bd8f5ebcdaea161f4bc2da7c93
)
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
)
function(download_opencv_3rdparty ID COMMIT HASH)
if(NOT EXISTS "${DOWNLOADS}/opencv-cache/${ID}/${COMMIT}.stamp")
vcpkg_download_distfile(OCV_DOWNLOAD
@ -184,11 +189,38 @@ if(WITH_IPP)
endif()
set(WITH_MSMF ON)
if(VCPKG_TARGET_IS_UWP)
if(NOT VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_UWP)
set(WITH_MSMF OFF)
endif()
set(WITH_ZLIB ON)
if (VCPKG_LIBRARY_LINKAGE STREQUAL static)
if (WITH_TBB)
message(WARNING "TBB is currently unsupported in this build configuration, turning it off")
set(WITH_TBB OFF)
endif()
if (WITH_VTK)
message(WARNING "VTK is currently unsupported in this build configuration, turning it off")
set(WITH_VTK OFF)
endif()
if (VCPKG_TARGET_IS_WINDOWS AND BUILD_opencv_ovis)
message(WARNING "OVIS is currently unsupported in this build configuration, turning it off")
set(BUILD_opencv_ovis OFF)
endif()
endif()
if("ffmpeg" IN_LIST FEATURES)
if(VCPKG_TARGET_IS_UWP)
set(VCPKG_C_FLAGS "/sdl- ${VCPKG_C_FLAGS}")
set(VCPKG_CXX_FLAGS "/sdl- ${VCPKG_CXX_FLAGS}")
endif()
endif()
if("qt" IN_LIST FEATURES)
list(APPEND ADDITIONAL_BUILD_FLAGS "-DCMAKE_AUTOMOC=ON")
endif()
set(BUILD_opencv_line_descriptor ON)
set(BUILD_opencv_saliency ON)
set(BUILD_opencv_bgsegm ON)
@ -197,14 +229,11 @@ if(VCPKG_TARGET_ARCHITECTURE MATCHES "arm")
set(BUILD_opencv_saliency OFF)
set(BUILD_opencv_bgsegm OFF)
endif()
if (VCPKG_TARGET_IS_UWP)
set(BUILD_opencv_quality OFF)
endif()
vcpkg_configure_cmake(
PREFER_NINJA
SOURCE_PATH ${SOURCE_PATH}
OPTIONS ${FEATURE_OPTIONS}
OPTIONS
###### ocv_options
-DOpenCV_INSTALL_BINARIES_PREFIX=
-DOPENCV_LIB_INSTALL_PATH=lib
@ -216,63 +245,57 @@ vcpkg_configure_cmake(
# Do not build docs/examples
-DBUILD_DOCS=OFF
-DBUILD_EXAMPLES=OFF
# Do not build integrated libraries, use external ones whenever possible
###### Disable build 3rd party libs
-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
# Select which OpenCV modules should be built
###### Disable build 3rd party components
-DBUILD_PROTOBUF=OFF
###### OpenCV Build components
-DBUILD_opencv_apps=OFF
-DBUILD_opencv_bgsegm=${BUILD_opencv_bgsegm}
-DBUILD_opencv_line_descriptor=${BUILD_opencv_line_descriptor}
-DBUILD_opencv_ovis=${BUILD_opencv_ovis}
-DBUILD_opencv_python2=OFF
-DBUILD_opencv_python3=OFF
-DBUILD_opencv_saliency=${BUILD_opencv_saliency}
# PROTOBUF
-DBUILD_PACKAGE=OFF
-DBUILD_PERF_TESTS=OFF
-DBUILD_TESTS=OFF
-DBUILD_WITH_DEBUG_INFO=ON
-DBUILD_WITH_STATIC_CRT=${BUILD_WITH_STATIC_CRT}
###### PROTOBUF
-DPROTOBUF_UPDATE_FILES=ON
-DUPDATE_PROTO_FILES=ON
-DWITH_PROTOBUF=ON
# CMAKE
-DCMAKE_DISABLE_FIND_PACKAGE_Git=ON
-DCMAKE_DISABLE_FIND_PACKAGE_JNI=ON
# ENABLE
-DENABLE_CXX11=ON
-DENABLE_PYLINT=OFF
-DOPENCV_ENABLE_NONFREE=${OPENCV_ENABLE_NONFREE}
# INSTALL
-DINSTALL_FORCE_UNIX_PATHS=ON
-DINSTALL_LICENSE=OFF
# OPENCV
-DOPENCV_CONFIG_INSTALL_PATH=share/opencv
-DOPENCV_OTHER_INSTALL_PATH=share/opencv
###### OPENCV vars
"-DOPENCV_DOWNLOAD_PATH=${DOWNLOADS}/opencv-cache"
${BUILD_WITH_CONTRIB_FLAG}
-DOPENCV_OTHER_INSTALL_PATH=share/opencv
# WITH
${FEATURE_OPPTIONS}
###### customized properties
## Options from vcpkg_check_features()
${FEATURE_OPTIONS}
-DHALIDE_ROOT_DIR=${CURRENT_INSTALLED_DIR}
-DWITH_IPP=${WITH_IPP}
-DWITH_LAPACK=OFF
-DWITH_MATLAB=OFF
-DWITH_MSMF=${WITH_MSMF}
-DWITH_PROTOBUF=ON
-DWITH_OPENCLAMDBLAS=OFF
-DWITH_TBB=${WITH_TBB}
-DWITH_VTK=${WITH_VTK}
-DWITH_ZLIB=${WITH_ZLIB}
-DCURRENT_INSTALLED_DIR=${CURRENT_INSTALLED_DIR}
-DHALIDE_ROOT_DIR=${CURRENT_INSTALLED_DIR}
OPTIONS_DEBUG
-DINSTALL_HEADERS=OFF
-DINSTALL_OTHER=OFF
###### WITH PROPERTIES explicitly disabled, they have problems with libraries if already installed by user and that are "involuntarily" found during install
-DWITH_LAPACK=OFF
###### BUILD_options (mainly modules which require additional libraries)
-DBUILD_opencv_ovis=${BUILD_opencv_ovis}
###### The following modules are disabled for UWP
-DBUILD_opencv_quality=${BUILD_opencv_quality}
###### Additional build flags
${ADDITIONAL_BUILD_FLAGS}
)
vcpkg_install_cmake()
@ -321,4 +344,4 @@ file(REMOVE ${CURRENT_PACKAGES_DIR}/setup_vars_opencv3.cmd)
file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/setup_vars_opencv3.cmd)
file(REMOVE ${CURRENT_PACKAGES_DIR}/LICENSE)
file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/LICENSE)
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/opencv3 RENAME copyright)
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)

View File

@ -0,0 +1,9 @@
diff --git a/modules/videoio/CMakeLists.txt b/modules/videoio/CMakeLists.txt
index 1608655..a394f04 100644
--- a/modules/videoio/CMakeLists.txt
+++ b/modules/videoio/CMakeLists.txt
@@ -1,3 +1,4 @@
+cmake_minimum_required(VERSION 3.3)
set(VIDEOIO_PLUGIN_LIST "" CACHE STRING "List of videoio backends to be compiled as plugins (ffmpeg, gstreamer)")
set(VIDEOIO_ENABLE_PLUGINS "ON" CACHE BOOL "Allow building videoio plugin support")
set(VIDEOIO_ENABLE_STRICT_PLUGIN_CHECK "ON" CACHE BOOL "Make sure OpenCV version is the same in plugin and host code")

View File

@ -1,5 +1,5 @@
Source: opencv4
Version: 4.1.1-1
Version: 4.1.1-2
Build-Depends: protobuf, zlib
Homepage: https://github.com/opencv/opencv
Description: computer vision library

View File

@ -16,6 +16,7 @@ vcpkg_from_github(
0001-disable-downloading.patch
0002-install-options.patch
0003-force-package-requirements.patch
0004-fix-policy-CMP0057.patch
0009-fix-uwp.patch
)
@ -69,6 +70,14 @@ if("vtk" IN_LIST FEATURES)
set(WITH_VTK ON)
endif()
if("dnn" IN_LIST FEATURES)
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
)
endif()
if("cuda" IN_LIST FEATURES)
vcpkg_download_distfile(OCV_DOWNLOAD
URLS "https://github.com/NVIDIA/NVIDIAOpticalFlowSDK/archive/79c6cee80a2df9a196f20afd6b598a9810964c32.zip"
@ -96,6 +105,8 @@ if("contrib" IN_LIST FEATURES)
SHA512 8af13f0a5f350360316662c1ce5e58c21d906a58591acfbd575a8dacde19b6f3bbd694c3c199feb35c33549cf8c37e3fb4c494b586a00ad29fe3b4aeeb2d22ab
HEAD_REF master
)
set(BUILD_WITH_CONTRIB_FLAG "-DOPENCV_EXTRA_MODULES_PATH=${CONTRIB_SOURCE_PATH}/modules")
vcpkg_download_distfile(OCV_DOWNLOAD
URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm.i"
FILENAME "opencv-cache/xfeatures2d/boostdesc/0ea90e7a8f3f7876d450e4149c97c74f-boostdesc_bgm.i"
@ -156,15 +167,6 @@ if("contrib" IN_LIST FEATURES)
FILENAME "opencv-cache/data/7505c44ca4eb54b4ab1e4777cb96ac05-face_landmark_model.dat"
SHA512 c16e60a6c4bb4de3ab39b876ae3c3f320ea56f69c93e9303bd2dff8760841dcd71be4161fff8bc71e8fe4fe8747fa8465d49d6bd8f5ebcdaea161f4bc2da7c93
)
set(BUILD_WITH_CONTRIB_FLAG "-DOPENCV_EXTRA_MODULES_PATH=${CONTRIB_SOURCE_PATH}/modules")
endif()
if("dnn" IN_LIST FEATURES)
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
)
endif()
if(WITH_IPP)
@ -241,6 +243,17 @@ if (VCPKG_LIBRARY_LINKAGE STREQUAL static)
endif()
endif()
if("ffmpeg" IN_LIST FEATURES)
if(VCPKG_TARGET_IS_UWP)
set(VCPKG_C_FLAGS "/sdl- ${VCPKG_C_FLAGS}")
set(VCPKG_CXX_FLAGS "/sdl- ${VCPKG_CXX_FLAGS}")
endif()
endif()
if("qt" IN_LIST FEATURES)
list(APPEND ADDITIONAL_BUILD_FLAGS "-DCMAKE_AUTOMOC=ON")
endif()
vcpkg_configure_cmake(
PREFER_NINJA
SOURCE_PATH ${SOURCE_PATH}
@ -252,8 +265,9 @@ vcpkg_configure_cmake(
-DOPENCV_CONFIG_INSTALL_PATH=share/opencv
-DOPENCV_FFMPEG_USE_FIND_PACKAGE=FFMPEG
-DCMAKE_DEBUG_POSTFIX=d
###### Ungrouped Entries
-DBUILD_opencv_java=OFF
# Do not build docs/examples
-DBUILD_DOCS=OFF
-DBUILD_EXAMPLES=OFF
-Dade_DIR=${ADE_DIR}
###### Disable build 3rd party libs
-DBUILD_JASPER=OFF
@ -270,11 +284,10 @@ vcpkg_configure_cmake(
-DBUILD_PROTOBUF=OFF
###### OpenCV Build components
-DBUILD_opencv_apps=OFF
-DBUILD_opencv_java=OFF
-DBUILD_opencv_js=OFF
-DBUILD_ANDROID_PROJECT=OFF
-DBUILD_ANDROID_EXAMPLES=OFF
-DBUILD_DOCS=OFF
-DBUILD_EXAMPLES=OFF
-DBUILD_PACKAGE=OFF
-DBUILD_PERF_TESTS=OFF
-DBUILD_TESTS=OFF
@ -312,6 +325,8 @@ vcpkg_configure_cmake(
-DBUILD_opencv_ovis=${BUILD_opencv_ovis}
###### The following modules are disabled for UWP
-DBUILD_opencv_quality=${BUILD_opencv_quality}
###### Additional build flags
${ADDITIONAL_BUILD_FLAGS}
)
vcpkg_install_cmake()
@ -368,4 +383,4 @@ file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/setup_vars_opencv4.cmd)
file(REMOVE ${CURRENT_PACKAGES_DIR}/LICENSE)
file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/LICENSE)
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/opencv4 RENAME copyright)
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)