diff options
Diffstat (limited to 'vcpkg/ports/opencv3')
21 files changed, 1738 insertions, 0 deletions
diff --git a/vcpkg/ports/opencv3/0001-disable-downloading.patch b/vcpkg/ports/opencv3/0001-disable-downloading.patch new file mode 100644 index 0000000..e2c886d --- /dev/null +++ b/vcpkg/ports/opencv3/0001-disable-downloading.patch @@ -0,0 +1,12 @@ +--- a/cmake/OpenCVDownload.cmake ++++ b/cmake/OpenCVDownload.cmake +@@ -157,6 +157,9 @@ 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 )") ++ + foreach(try ${OPENCV_DOWNLOAD_TRIES_LIST}) + ocv_download_log("#try ${try}") + file(DOWNLOAD "${DL_URL}" "${CACHE_CANDIDATE}" diff --git a/vcpkg/ports/opencv3/0002-install-options.patch b/vcpkg/ports/opencv3/0002-install-options.patch new file mode 100644 index 0000000..e47724b --- /dev/null +++ b/vcpkg/ports/opencv3/0002-install-options.patch @@ -0,0 +1,59 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -607,7 +607,7 @@ endif() + ocv_cmake_hook(POST_CMAKE_BUILD_OPTIONS) + + # --- Python Support --- +-if(NOT IOS) ++if(WITH_PYTHON) + include(cmake/OpenCVDetectPython.cmake) + endif() + +--- a/cmake/OpenCVCompilerOptions.cmake ++++ b/cmake/OpenCVCompilerOptions.cmake +@@ -284,7 +284,6 @@ if(MSVC) + #endif() + + if(BUILD_WITH_DEBUG_INFO) +- set(OPENCV_EXTRA_FLAGS_RELEASE "${OPENCV_EXTRA_FLAGS_RELEASE} /Zi") + set(OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE "${OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE} /debug") + set(OPENCV_EXTRA_SHARED_LINKER_FLAGS_RELEASE "${OPENCV_EXTRA_SHARED_LINKER_FLAGS_RELEASE} /debug") + set(OPENCV_EXTRA_MODULE_LINKER_FLAGS_RELEASE "${OPENCV_EXTRA_MODULE_LINKER_FLAGS_RELEASE} /debug") +--- a/cmake/OpenCVGenConfig.cmake ++++ b/cmake/OpenCVGenConfig.cmake +@@ -109,11 +109,11 @@ function(ocv_gen_config TMP_DIR NESTED_PATH ROOT_NAME) + endif() + endfunction() + +-if((CMAKE_HOST_SYSTEM_NAME MATCHES "Linux" OR UNIX) AND NOT ANDROID) ++if(TRUE) + ocv_gen_config("${CMAKE_BINARY_DIR}/unix-install" "" "") + endif() + +-if(ANDROID) ++if(FALSE) + ocv_gen_config("${CMAKE_BINARY_DIR}/unix-install" "abi-${ANDROID_NDK_ABI_NAME}" "OpenCVConfig.root-ANDROID.cmake.in") + install(FILES "${OpenCV_SOURCE_DIR}/platforms/android/android.toolchain.cmake" DESTINATION "${OPENCV_CONFIG_INSTALL_PATH}" COMPONENT dev) + endif() +@@ -121,7 +121,7 @@ endif() + # -------------------------------------------------------------------------------------------- + # Part 3/3: ${BIN_DIR}/win-install/OpenCVConfig.cmake -> For use within binary installers/packages + # -------------------------------------------------------------------------------------------- +-if(WIN32) ++if(FALSE) + if(CMAKE_HOST_SYSTEM_NAME MATCHES Windows AND NOT OPENCV_SKIP_CMAKE_ROOT_CONFIG) + ocv_gen_config("${CMAKE_BINARY_DIR}/win-install" + "${OPENCV_INSTALL_BINARIES_PREFIX}${OPENCV_INSTALL_BINARIES_SUFFIX}" +diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt +index 1f0d720..0bb1ff7 100644 +--- a/data/CMakeLists.txt ++++ b/data/CMakeLists.txt +@@ -1,8 +1,6 @@ + file(GLOB HAAR_CASCADES haarcascades/*.xml) + file(GLOB LBP_CASCADES lbpcascades/*.xml) + +-install(FILES ${HAAR_CASCADES} DESTINATION ${OPENCV_OTHER_INSTALL_PATH}/haarcascades COMPONENT libs) +-install(FILES ${LBP_CASCADES} DESTINATION ${OPENCV_OTHER_INSTALL_PATH}/lbpcascades COMPONENT libs) + + 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/vcpkg/ports/opencv3/0003-force-package-requirements.patch b/vcpkg/ports/opencv3/0003-force-package-requirements.patch new file mode 100644 index 0000000..c29ac06 --- /dev/null +++ b/vcpkg/ports/opencv3/0003-force-package-requirements.patch @@ -0,0 +1,85 @@ +--- a/cmake/OpenCVFindLibsGrfmt.cmake ++++ b/cmake/OpenCVFindLibsGrfmt.cmake +@@ -11,7 +11,7 @@ else() + set(_zlib_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) + set(CMAKE_FIND_LIBRARY_SUFFIXES .so) + endif() +- find_package(ZLIB "${MIN_VER_ZLIB}") ++ find_package(ZLIB "${MIN_VER_ZLIB}" REQUIRED) + if(ANDROID) + set(CMAKE_FIND_LIBRARY_SUFFIXES ${_zlib_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}) + unset(_zlib_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES) +@@ -41,7 +41,7 @@ if(WITH_JPEG) + ocv_clear_vars(JPEG_FOUND) + else() + ocv_clear_internal_cache_vars(JPEG_LIBRARY JPEG_INCLUDE_DIR) +- include(FindJPEG) ++ find_package(JPEG REQUIRED) + endif() + + if(NOT JPEG_FOUND) +@@ -87,7 +87,7 @@ if(WITH_TIFF) + ocv_clear_vars(TIFF_FOUND) + else() + ocv_clear_internal_cache_vars(TIFF_LIBRARY TIFF_INCLUDE_DIR) +- 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() +@@ -131,7 +131,7 @@ if(WITH_WEBP) + ocv_clear_vars(WEBP_FOUND WEBP_LIBRARY WEBP_LIBRARIES WEBP_INCLUDE_DIR) + else() + ocv_clear_internal_cache_vars(WEBP_LIBRARY WEBP_INCLUDE_DIR) +- include(cmake/OpenCVFindWebP.cmake) ++ find_package(WEBP NAMES WebP REQUIRED) + if(WEBP_FOUND) + set(HAVE_WEBP 1) + endif() +@@ -172,7 +172,7 @@ if(WITH_JASPER) + if(BUILD_JASPER) + ocv_clear_vars(JASPER_FOUND) + else() +- include(FindJasper) ++ find_package(Jasper REQUIRED) + endif() + + if(NOT JASPER_FOUND) +@@ -197,7 +197,7 @@ if(WITH_PNG) + ocv_clear_vars(PNG_FOUND) + else() + ocv_clear_internal_cache_vars(PNG_LIBRARY PNG_INCLUDE_DIR) +- 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) +@@ -249,7 +249,7 @@ endif() + + # --- GDAL (optional) --- + if(WITH_GDAL) +- find_package(GDAL QUIET) ++ find_package(GDAL REQUIRED) + + if(NOT GDAL_FOUND) + set(HAVE_GDAL NO) +@@ -261,7 +261,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) +--- a/modules/imgcodecs/CMakeLists.txt ++++ b/modules/imgcodecs/CMakeLists.txt +@@ -20,7 +20,7 @@ endif() + + if(HAVE_WEBP) + add_definitions(-DHAVE_WEBP) +- ocv_include_directories(${WEBP_INCLUDE_DIR}) ++ ocv_include_directories(${WEBP_INCLUDE_DIRS}) + list(APPEND GRFMT_LIBS ${WEBP_LIBRARIES}) + endif() + diff --git a/vcpkg/ports/opencv3/0004-fix-eigen.patch b/vcpkg/ports/opencv3/0004-fix-eigen.patch new file mode 100644 index 0000000..196542d --- /dev/null +++ b/vcpkg/ports/opencv3/0004-fix-eigen.patch @@ -0,0 +1,11 @@ +--- a/cmake/OpenCVFindLibsPerf.cmake ++++ b/cmake/OpenCVFindLibsPerf.cmake +@@ -55,7 +55,7 @@ if(WITH_EIGEN AND NOT HAVE_EIGEN) + OR NOT (CMAKE_VERSION VERSION_LESS "3.0.0") # Eigen3Targets.cmake required CMake 3.0.0+ + ) AND NOT OPENCV_SKIP_EIGEN_FIND_PACKAGE_CONFIG + ) +- find_package(Eigen3 CONFIG QUIET) # Ceres 2.0.0 CMake scripts doesn't work with CMake's FindEigen3.cmake module (due to missing EIGEN3_VERSION_STRING) ++ find_package(Eigen3 CONFIG REQUIRED) # Ceres 2.0.0 CMake scripts doesn't work with CMake's FindEigen3.cmake module (due to missing EIGEN3_VERSION_STRING) + endif() + if(NOT Eigen3_FOUND) + find_package(Eigen3 QUIET) diff --git a/vcpkg/ports/opencv3/0005-fix-vtk9.patch b/vcpkg/ports/opencv3/0005-fix-vtk9.patch new file mode 100644 index 0000000..5976bfe --- /dev/null +++ b/vcpkg/ports/opencv3/0005-fix-vtk9.patch @@ -0,0 +1,470 @@ +--- a/cmake/OpenCVDetectVTK.cmake ++++ b/cmake/OpenCVDetectVTK.cmake +@@ -1,12 +1,30 @@ ++# VTK 9.0 ++if(NOT VTK_FOUND) ++ find_package(VTK 9 QUIET NAMES vtk COMPONENTS ++ FiltersExtraction ++ FiltersSources ++ FiltersTexture ++ IOExport ++ IOGeometry ++ IOPLY ++ InteractionStyle ++ RenderingCore ++ RenderingLOD ++ RenderingOpenGL2 ++ NO_MODULE) ++endif() ++ + # VTK 6.x components +-find_package(VTK QUIET COMPONENTS vtkInteractionStyle vtkRenderingLOD vtkIOPLY vtkFiltersTexture vtkRenderingFreeType vtkIOExport NO_MODULE) +-IF(VTK_FOUND) +- IF(VTK_RENDERING_BACKEND) #in vtk 7, the rendering backend is exported as a var. ++if(NOT VTK_FOUND) ++ find_package(VTK QUIET COMPONENTS vtkInteractionStyle vtkRenderingLOD vtkIOPLY vtkFiltersTexture vtkRenderingFreeType vtkIOExport NO_MODULE) ++ IF(VTK_FOUND) ++ IF(VTK_RENDERING_BACKEND) #in vtk 7, the rendering backend is exported as a var. + find_package(VTK QUIET COMPONENTS vtkRendering${VTK_RENDERING_BACKEND} vtkInteractionStyle vtkRenderingLOD vtkIOPLY vtkFiltersTexture vtkRenderingFreeType vtkIOExport vtkIOGeometry NO_MODULE) +- ELSE(VTK_RENDERING_BACKEND) ++ ELSE(VTK_RENDERING_BACKEND) + find_package(VTK QUIET COMPONENTS vtkRenderingOpenGL vtkInteractionStyle vtkRenderingLOD vtkIOPLY vtkFiltersTexture vtkRenderingFreeType vtkIOExport NO_MODULE) +- ENDIF(VTK_RENDERING_BACKEND) +-ENDIF(VTK_FOUND) ++ ENDIF(VTK_RENDERING_BACKEND) ++ ENDIF(VTK_FOUND) ++endif() + + # VTK 5.x components + if(NOT VTK_FOUND) +--- a/modules/viz/CMakeLists.txt ++++ b/modules/viz/CMakeLists.txt +@@ -3,7 +3,6 @@ if(NOT HAVE_VTK) + endif() + + set(the_description "Viz") +-include(${VTK_USE_FILE}) + + if(NOT BUILD_SHARED_LIBS) + # We observed conflict between builtin 3rdparty libraries and +@@ -27,7 +26,14 @@ endif() + ocv_warnings_disable(CMAKE_CXX_FLAGS -Winconsistent-missing-override -Wsuggest-override) + + ocv_define_module(viz opencv_core WRAP python) +-ocv_target_link_libraries(${the_module} PRIVATE ${VTK_LIBRARIES}) ++ ++if (VTK_VERSION VERSION_LESS "8.90.0") ++ include(${VTK_USE_FILE}) ++ ocv_target_link_libraries(${the_module} PRIVATE ${VTK_LIBRARIES}) ++else () ++ ocv_target_link_libraries(${the_module} PRIVATE ${VTK_LIBRARIES}) ++ vtk_module_autoinit(TARGETS ${the_module} MODULES ${VTK_LIBRARIES}) ++endif() + + if(APPLE AND BUILD_opencv_viz) + ocv_target_link_libraries(${the_module} PRIVATE "-framework Cocoa") +--- a/modules/viz/src/precomp.hpp ++++ b/modules/viz/src/precomp.hpp +@@ -133,7 +133,8 @@ + #include <vtkColorTransferFunction.h> + #include <vtkStreamingDemandDrivenPipeline.h> + #include <vtkLight.h> +-#include "vtkCallbackCommand.h" ++#include <vtkCallbackCommand.h> ++#include <vtkVersion.h> + + #if !defined(_WIN32) || defined(__CYGWIN__) + # include <unistd.h> /* unlink */ +@@ -149,6 +150,11 @@ + #include "vtk/vtkTrajectorySource.h" + #include "vtk/vtkImageMatSource.h" + ++#if VTK_MAJOR_VERSION >= 9 ++typedef vtkIdType const * CellIterT; ++#else ++typedef vtkIdType * CellIterT; ++#endif + + #include <opencv2/core.hpp> + #include <opencv2/viz.hpp> +--- a/modules/viz/src/types.cpp ++++ b/modules/viz/src/types.cpp +@@ -97,10 +97,12 @@ cv::viz::Mesh cv::viz::Mesh::load(const String& file, int type) + // Now handle the polygons + vtkSmartPointer<vtkCellArray> polygons = polydata->GetPolys(); + mesh.polygons.create(1, polygons->GetSize(), CV_32SC1); ++ mesh.polygons = 0; + int* poly_ptr = mesh.polygons.ptr<int>(); + + polygons->InitTraversal(); +- vtkIdType nr_cell_points, *cell_points; ++ vtkIdType nr_cell_points; ++ CellIterT cell_points; + while (polygons->GetNextCell(nr_cell_points, cell_points)) + { + *poly_ptr++ = nr_cell_points; +--- a/modules/viz/src/vizimpl.cpp ++++ b/modules/viz/src/vizimpl.cpp +@@ -55,8 +55,17 @@ cv::viz::Viz3d::VizImpl::VizImpl(const String &name) : spin_once_state_(false), + + // Create render window + window_ = vtkSmartPointer<vtkRenderWindow>::New(); +- cv::Vec2i window_size = cv::Vec2i(window_->GetScreenSize()) / 2; +- window_->SetSize(window_size.val); ++ int * sz = window_->GetScreenSize(); ++ if (sz) ++ { ++ cv::Vec2i window_size = cv::Vec2i(sz) / 2; ++ window_->SetSize(window_size.val); ++ } ++ else ++ { ++ int new_sz[2] = { 640, 480 }; ++ window_->SetSize(new_sz); ++ } + window_->AddRenderer(renderer_); + + // Create the interactor style +--- a/modules/viz/src/vtk/vtkCocoaInteractorFix.mm ++++ b/modules/viz/src/vtk/vtkCocoaInteractorFix.mm +@@ -49,6 +49,7 @@ + #include <vtkCocoaRenderWindowInteractor.h> + #include <vtkObjectFactory.h> + #include <vtkSmartPointer.h> ++#include <vtkVersion.h> + + namespace cv { namespace viz { + vtkSmartPointer<vtkRenderWindowInteractor> vtkCocoaRenderWindowInteractorNew(); +--- a/modules/viz/src/vtk/vtkOBJWriter.cpp ++++ b/modules/viz/src/vtk/vtkOBJWriter.cpp +@@ -72,7 +72,7 @@ void cv::viz::vtkOBJWriter::WriteData() + } + + vtkDebugMacro(<<"Opening vtk file for writing..."); +- ostream *outfilep = new ofstream(this->FileName, ios::out); ++ std::ostream *outfilep = new std::ofstream(this->FileName, ios::out); + if (outfilep->fail()) + { + vtkErrorMacro(<< "Unable to open file: "<< this->FileName); +@@ -127,7 +127,8 @@ void cv::viz::vtkOBJWriter::WriteData() + // write out verts if any + if (input->GetNumberOfVerts() > 0) + { +- vtkIdType npts = 0, *index = 0; ++ vtkIdType npts = 0; ++ CellIterT index = 0; + vtkCellArray *cells = input->GetVerts(); + for (cells->InitTraversal(); cells->GetNextCell(npts, index); ) + { +@@ -141,7 +142,8 @@ void cv::viz::vtkOBJWriter::WriteData() + // write out lines if any + if (input->GetNumberOfLines() > 0) + { +- vtkIdType npts = 0, *index = 0; ++ vtkIdType npts = 0; ++ CellIterT index = 0; + vtkCellArray *cells = input->GetLines(); + for (cells->InitTraversal(); cells->GetNextCell(npts, index); ) + { +@@ -162,7 +164,8 @@ void cv::viz::vtkOBJWriter::WriteData() + // write out polys if any + if (input->GetNumberOfPolys() > 0) + { +- vtkIdType npts = 0, *index = 0; ++ vtkIdType npts = 0; ++ CellIterT index = 0; + vtkCellArray *cells = input->GetPolys(); + for (cells->InitTraversal(); cells->GetNextCell(npts, index); ) + { +@@ -191,7 +194,8 @@ void cv::viz::vtkOBJWriter::WriteData() + // write out tstrips if any + if (input->GetNumberOfStrips() > 0) + { +- vtkIdType npts = 0, *index = 0; ++ vtkIdType npts = 0; ++ CellIterT index = 0; + vtkCellArray *cells = input->GetStrips(); + for (cells->InitTraversal(); cells->GetNextCell(npts, index); ) + { +--- a/modules/viz/src/vtk/vtkXYZReader.cpp ++++ b/modules/viz/src/vtk/vtkXYZReader.cpp +@@ -77,7 +77,7 @@ int cv::viz::vtkXYZReader::RequestData(vtkInformation*, vtkInformationVector**, + } + + // Open the input file. +- ifstream fin(this->FileName); ++ std::ifstream fin(this->FileName); + if(!fin) + { + vtkErrorMacro("Error opening file " << this->FileName); +--- a/modules/viz/src/vtk/vtkXYZWriter.cpp ++++ b/modules/viz/src/vtk/vtkXYZWriter.cpp +@@ -69,7 +69,7 @@ void cv::viz::vtkXYZWriter::WriteData() + } + + vtkDebugMacro(<<"Opening vtk file for writing..."); +- ostream *outfilep = new ofstream(this->FileName, ios::out); ++ std::ostream *outfilep = new std::ofstream(this->FileName, ios::out); + if (outfilep->fail()) + { + vtkErrorMacro(<< "Unable to open file: "<< this->FileName); +--- a/modules/viz/test/test_tutorial2.cpp ++++ b/modules/viz/test/test_tutorial2.cpp +@@ -28,7 +28,7 @@ static void tutorial2() + /// Rodrigues vector + Vec3d rot_vec = Vec3d::all(0); + double translation_phase = 0.0, translation = 0.0; +- while(!myWindow.wasStopped()) ++ for(unsigned num = 0; num < 50; ++num) + { + /* Rotation using rodrigues */ + /// Rotate around (1,1,1) +@@ -45,7 +45,7 @@ static void tutorial2() + + myWindow.setWidgetPose("Cube Widget", pose); + +- myWindow.spinOnce(1, true); ++ myWindow.spinOnce(100, true); + } + } + +--- a/modules/viz/test/test_tutorial3.cpp ++++ b/modules/viz/test/test_tutorial3.cpp +@@ -48,7 +48,7 @@ static void tutorial3(bool camera_pov) + myWindow.setViewerPose(camera_pose); + + /// Start event loop. +- myWindow.spin(); ++ myWindow.spinOnce(500, true); + } + + TEST(Viz, tutorial3_global_view) +--- a/modules/viz/test/test_viz3d.cpp ++++ b/modules/viz/test/test_viz3d.cpp +@@ -59,7 +59,7 @@ TEST(Viz_viz3d, DISABLED_develop) + //cv::Mat cloud = cv::viz::readCloud(get_dragon_ply_file_path()); + //---->>>>> </to_test_in_future> + +- viz.spin(); ++ viz.spinOnce(500, true); + } + + }} // namespace +--- a/modules/viz/test/tests_simple.cpp ++++ b/modules/viz/test/tests_simple.cpp +@@ -56,7 +56,7 @@ TEST(Viz, show_cloud_bluberry) + viz.showWidget("dragon", WCloud(dragon_cloud, Color::bluberry()), pose); + + viz.showWidget("text2d", WText("Bluberry cloud", Point(20, 20), 20, Color::green())); +- viz.spin(); ++ viz.spinOnce(500, true); + } + + TEST(Viz, show_cloud_random_color) +@@ -73,7 +73,7 @@ TEST(Viz, show_cloud_random_color) + viz.showWidget("coosys", WCoordinateSystem()); + viz.showWidget("dragon", WCloud(dragon_cloud, colors), pose); + viz.showWidget("text2d", WText("Random color cloud", Point(20, 20), 20, Color::green())); +- viz.spin(); ++ viz.spinOnce(500, true); + } + + TEST(Viz, show_cloud_masked) +@@ -91,7 +91,7 @@ TEST(Viz, show_cloud_masked) + viz.showWidget("coosys", WCoordinateSystem()); + viz.showWidget("dragon", WCloud(dragon_cloud), pose); + viz.showWidget("text2d", WText("Nan masked cloud", Point(20, 20), 20, Color::green())); +- viz.spin(); ++ viz.spinOnce(500, true); + } + + TEST(Viz, show_cloud_collection) +@@ -109,7 +109,7 @@ TEST(Viz, show_cloud_collection) + viz.showWidget("coosys", WCoordinateSystem()); + viz.showWidget("ccol", ccol); + viz.showWidget("text2d", WText("Cloud collection", Point(20, 20), 20, Color::green())); +- viz.spin(); ++ viz.spinOnce(500, true); + } + + TEST(Viz, show_painted_clouds) +@@ -124,7 +124,7 @@ TEST(Viz, show_painted_clouds) + viz.showWidget("cloud3", WPaintedCloud(cloud, Vec3d(0.0, 0.0, -1.0), Vec3d(0.0, 0.0, 1.0), Color::blue(), Color::red())); + viz.showWidget("arrow", WArrow(Vec3d(0.0, 1.0, -1.0), Vec3d(0.0, 1.0, 1.0), 0.009, Color::raspberry())); + viz.showWidget("text2d", WText("Painted clouds", Point(20, 20), 20, Color::green())); +- viz.spin(); ++ viz.spinOnce(500, true); + } + + TEST(Viz, show_mesh) +@@ -137,7 +137,7 @@ TEST(Viz, show_mesh) + viz.showWidget("coosys", WCoordinateSystem()); + viz.showWidget("mesh", WMesh(mesh), pose); + viz.showWidget("text2d", WText("Just mesh", Point(20, 20), 20, Color::green())); +- viz.spin(); ++ viz.spinOnce(500, true); + } + + TEST(Viz, show_mesh_random_colors) +@@ -152,7 +152,7 @@ TEST(Viz, show_mesh_random_colors) + viz.showWidget("mesh", WMesh(mesh), pose); + viz.setRenderingProperty("mesh", SHADING, SHADING_PHONG); + viz.showWidget("text2d", WText("Random color mesh", Point(20, 20), 20, Color::green())); +- viz.spin(); ++ viz.spinOnce(500, true); + } + + TEST(Viz, show_widget_merger) +@@ -173,7 +173,7 @@ TEST(Viz, show_widget_merger) + viz.showWidget("coo", WCoordinateSystem()); + viz.showWidget("merger", merger); + viz.showWidget("text2d", WText("Widget merger", Point(20, 20), 20, Color::green())); +- viz.spin(); ++ viz.spinOnce(500, true); + } + + TEST(Viz, show_textured_mesh) +@@ -210,7 +210,7 @@ TEST(Viz, show_textured_mesh) + viz.showWidget("mesh", WMesh(mesh)); + viz.setRenderingProperty("mesh", SHADING, SHADING_PHONG); + viz.showWidget("text2d", WText("Textured mesh", Point(20, 20), 20, Color::green())); +- viz.spin(); ++ viz.spinOnce(500, true); + } + + TEST(Viz, show_polyline) +@@ -229,7 +229,7 @@ TEST(Viz, show_polyline) + viz.showWidget("polyline", WPolyLine(polyline, colors)); + viz.showWidget("coosys", WCoordinateSystem()); + viz.showWidget("text2d", WText("Polyline", Point(20, 20), 20, Color::green())); +- viz.spin(); ++ viz.spinOnce(500, true); + } + + TEST(Viz, show_sampled_normals) +@@ -244,7 +244,7 @@ TEST(Viz, show_sampled_normals) + viz.showWidget("normals", WCloudNormals(mesh.cloud, mesh.normals, 30, 0.1f, Color::green()), pose); + viz.setRenderingProperty("normals", LINE_WIDTH, 2.0); + viz.showWidget("text2d", WText("Cloud or mesh normals", Point(20, 20), 20, Color::green())); +- viz.spin(); ++ viz.spinOnce(500, true); + } + + TEST(Viz, show_cloud_shaded_by_normals) +@@ -260,7 +260,7 @@ TEST(Viz, show_cloud_shaded_by_normals) + Viz3d viz("show_cloud_shaded_by_normals"); + viz.showWidget("cloud", cloud, pose); + viz.showWidget("text2d", WText("Cloud shaded by normals", Point(20, 20), 20, Color::green())); +- viz.spin(); ++ viz.spinOnce(500, true); + } + + TEST(Viz, show_trajectories) +@@ -287,15 +287,15 @@ TEST(Viz, show_trajectories) + viz.showWidget("text2d", WText("Different kinds of supported trajectories", Point(20, 20), 20, Color::green())); + + int i = 0; +- while(!viz.wasStopped()) ++ for(unsigned num = 0; num < 50; ++num) + { + double a = --i % 360; + Vec3d pose(sin(a * CV_PI/180), 0.7, cos(a * CV_PI/180)); + viz.setViewerPose(makeCameraPose(pose * 7.5, Vec3d(0.0, 0.5, 0.0), Vec3d(0.0, 0.1, 0.0))); +- viz.spinOnce(20, true); ++ viz.spinOnce(100, true); + } + viz.resetCamera(); +- viz.spin(); ++ viz.spinOnce(500, true); + } + + TEST(Viz, show_trajectory_reposition) +@@ -306,7 +306,7 @@ TEST(Viz, show_trajectory_reposition) + viz.showWidget("coos", WCoordinateSystem()); + viz.showWidget("sub3", WTrajectory(Mat(path).rowRange(0, (int)path.size()/3), WTrajectory::BOTH, 0.2, Color::brown()), path.front().inv()); + viz.showWidget("text2d", WText("Trajectory resposition to origin", Point(20, 20), 20, Color::green())); +- viz.spin(); ++ viz.spinOnce(500, true); + } + + TEST(Viz, show_camera_positions) +@@ -330,7 +330,7 @@ TEST(Viz, show_camera_positions) + viz.showWidget("pos3", WCameraPosition(0.75), poses[1]); + viz.showWidget("pos4", WCameraPosition(K, gray, 3, Color::indigo()), poses[1]); + viz.showWidget("text2d", WText("Camera positions with images", Point(20, 20), 20, Color::green())); +- viz.spin(); ++ viz.spinOnce(500, true); + } + + TEST(Viz, show_overlay_image) +@@ -353,16 +353,16 @@ TEST(Viz, show_overlay_image) + viz.showWidget("text2d", WText("Overlay images", Point(20, 20), 20, Color::green())); + + int i = 0; +- while(!viz.wasStopped()) ++ for(unsigned num = 0; num < 50; ++num) + { + double a = ++i % 360; + Vec3d pose(sin(a * CV_PI/180), 0.7, cos(a * CV_PI/180)); + viz.setViewerPose(makeCameraPose(pose * 3, Vec3d(0.0, 0.5, 0.0), Vec3d(0.0, 0.1, 0.0))); + viz.getWidget("img1").cast<WImageOverlay>().setImage(lena * pow(sin(i*10*CV_PI/180) * 0.5 + 0.5, 1.0)); +- viz.spinOnce(1, true); ++ viz.spinOnce(100, true); + } + viz.showWidget("text2d", WText("Overlay images (stopped)", Point(20, 20), 20, Color::green())); +- viz.spin(); ++ viz.spinOnce(500, true); + } + + +@@ -376,7 +376,7 @@ TEST(Viz, show_image_method) + viz.showImage(lena, lena.size()); + viz.spinOnce(1500, true); + +- cv::viz::imshow("show_image_method", make_gray(lena)).spin(); ++ cv::viz::imshow("show_image_method", make_gray(lena)).spinOnce(500, true); + } + + TEST(Viz, show_image_3d) +@@ -398,13 +398,13 @@ TEST(Viz, show_image_3d) + viz.showWidget("text2d", WText("Images in 3D", Point(20, 20), 20, Color::green())); + + int i = 0; +- while(!viz.wasStopped()) ++ for(unsigned num = 0; num < 50; ++num) + { + viz.getWidget("img0").cast<WImage3D>().setImage(lena * pow(sin(i++*7.5*CV_PI/180) * 0.5 + 0.5, 1.0)); +- viz.spinOnce(1, true); ++ viz.spinOnce(100, true); + } + viz.showWidget("text2d", WText("Images in 3D (stopped)", Point(20, 20), 20, Color::green())); +- viz.spin(); ++ viz.spinOnce(500, true); + } + + TEST(Viz, show_simple_widgets) +@@ -431,10 +431,10 @@ TEST(Viz, show_simple_widgets) + + viz.showWidget("grid1", WGrid(Vec2i(7,7), Vec2d::all(0.75), Color::gray()), Affine3d().translate(Vec3d(0.0, 0.0, -1.0))); + +- viz.spin(); ++ viz.spinOnce(500, true); + viz.getWidget("text2d").cast<WText>().setText("Different simple widgets (updated)"); + viz.getWidget("text3d").cast<WText3D>().setText("Updated text 3D"); +- viz.spin(); ++ viz.spinOnce(500, true); + } + + TEST(Viz, show_follower) +@@ -446,9 +446,9 @@ TEST(Viz, show_follower) + viz.showWidget("t3d_2", WText3D("Simple 3D follower", Point3d(-0.5, -0.5, 0.5), 0.125, true, Color::green())); + viz.showWidget("text2d", WText("Follower: text always facing camera", Point(20, 20), 20, Color::green())); + viz.setBackgroundMeshLab(); +- viz.spin(); ++ viz.spinOnce(500, true); + viz.getWidget("t3d_2").cast<WText3D>().setText("Updated follower 3D"); +- viz.spin(); ++ viz.spinOnce(500, true); + } + + }} // namespace diff --git a/vcpkg/ports/opencv3/0006-fix-uwp.patch b/vcpkg/ports/opencv3/0006-fix-uwp.patch new file mode 100644 index 0000000..cc0216b --- /dev/null +++ b/vcpkg/ports/opencv3/0006-fix-uwp.patch @@ -0,0 +1,11 @@ +--- a/cmake/OpenCVModule.cmake ++++ b/cmake/OpenCVModule.cmake +@@ -1188,7 +1188,7 @@ function(ocv_add_perf_tests) + set_target_properties(${the_target} PROPERTIES FOLDER "tests performance") + endif() + +- if(WINRT) ++ if(WINRT AND BUILD_TESTS) + # removing APPCONTAINER from tests to run from console + # look for detailed description inside of ocv_create_module macro above + add_custom_command(TARGET "opencv_perf_${name}" diff --git a/vcpkg/ports/opencv3/0007-contrib-fix-hdf5.patch b/vcpkg/ports/opencv3/0007-contrib-fix-hdf5.patch new file mode 100644 index 0000000..8e7e154 --- /dev/null +++ b/vcpkg/ports/opencv3/0007-contrib-fix-hdf5.patch @@ -0,0 +1,28 @@ +--- a/modules/hdf/CMakeLists.txt ++++ b/modules/hdf/CMakeLists.txt +@@ -1,25 +1,8 @@ + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}) + +-if(WIN32) +- # windows cmake internal lookups are broken for now +- # will lookup for headers and shared libs given HDF_DIR env +- find_path(HDF5_INCLUDE_DIRS hdf5.h HINTS "$ENV{HDF5_DIR}\\..\\include") +- find_library(HDF5_C_LIBRARY NAMES hdf5 HINTS "$ENV{HDF5_DIR}\\..\\lib") +- if(HDF5_INCLUDE_DIRS AND HDF5_C_LIBRARY) +- set(HDF5_FOUND "YES") +- set(HDF5_LIBRARIES ${HDF5_C_LIBRARY}) +- mark_as_advanced(HDF5_LIBRARIES) +- mark_as_advanced(HDF5_C_LIBRARY) +- mark_as_advanced(HDF5_INCLUDE_DIRS) +- add_definitions(-DH5_BUILT_AS_DYNAMIC_LIB -D_HDF5USEDLL_) +- else() +- set(HDF5_FOUND "NO") +- endif() +-else() + if(NOT CMAKE_CROSSCOMPILING) # iOS build should not reuse OSX package + find_package(HDF5) + endif() +-endif() + + if(NOT HDF5_FOUND) + ocv_module_disable(hdf) # no return diff --git a/vcpkg/ports/opencv3/0008-devendor-quirc.patch b/vcpkg/ports/opencv3/0008-devendor-quirc.patch new file mode 100644 index 0000000..3f5413d --- /dev/null +++ b/vcpkg/ports/opencv3/0008-devendor-quirc.patch @@ -0,0 +1,22 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -780,7 +780,7 @@ if(WITH_OPENVX) + endif() + + if(WITH_QUIRC) +- add_subdirectory(3rdparty/quirc) ++ find_package(quirc CONFIG REQUIRED) + set(HAVE_QUIRC TRUE) + endif() + # ---------------------------------------------------------------------------- +--- a/modules/objdetect/CMakeLists.txt ++++ b/modules/objdetect/CMakeLists.txt +@@ -2,7 +2,5 @@ set(the_description "Object Detection") + ocv_define_module(objdetect opencv_core opencv_imgproc opencv_calib3d WRAP java python js) + + if(HAVE_QUIRC) +- get_property(QUIRC_INCLUDE GLOBAL PROPERTY QUIRC_INCLUDE_DIR) +- ocv_include_directories(${QUIRC_INCLUDE}) +- ocv_target_link_libraries(${the_module} quirc) ++ ocv_target_link_libraries(${the_module} quirc::quirc) + endif() diff --git a/vcpkg/ports/opencv3/0009-fix-protobuf.patch b/vcpkg/ports/opencv3/0009-fix-protobuf.patch new file mode 100644 index 0000000..c3b5842 --- /dev/null +++ b/vcpkg/ports/opencv3/0009-fix-protobuf.patch @@ -0,0 +1,26 @@ +--- a/cmake/OpenCVFindProtobuf.cmake ++++ b/cmake/OpenCVFindProtobuf.cmake +@@ -31,7 +31,7 @@ if(BUILD_PROTOBUF) + set(HAVE_PROTOBUF TRUE) + else() + unset(Protobuf_VERSION CACHE) +- find_package(Protobuf QUIET) ++ find_package(Protobuf CONFIG REQUIRED) + + # Backwards compatibility + # Define camel case versions of input variables +@@ -76,6 +76,7 @@ if(HAVE_PROTOBUF) + if(NOT BUILD_PROTOBUF) + if(TARGET "${Protobuf_LIBRARIES}") + get_target_property(__location "${Protobuf_LIBRARIES}" IMPORTED_LOCATION_RELEASE) ++ get_target_property(__location_debug "${Protobuf_LIBRARIES}" IMPORTED_LOCATION_DEBUG) + if(NOT __location) + get_target_property(__location "${Protobuf_LIBRARIES}" IMPORTED_LOCATION) + endif() +@@ -87,5 +88,5 @@ if(HAVE_PROTOBUF) + endif() + list(APPEND CUSTOM_STATUS_protobuf " Protobuf:" + BUILD_PROTOBUF THEN "build (${Protobuf_VERSION})" +- ELSE "${__location} (${Protobuf_VERSION})") ++ ELSE "optimized ${__location} debug ${__location_debug} ; version (${Protobuf_VERSION})") + endif() diff --git a/vcpkg/ports/opencv3/0010-fix-uwp-tiff-imgcodecs.patch b/vcpkg/ports/opencv3/0010-fix-uwp-tiff-imgcodecs.patch new file mode 100644 index 0000000..e149e3b --- /dev/null +++ b/vcpkg/ports/opencv3/0010-fix-uwp-tiff-imgcodecs.patch @@ -0,0 +1,13 @@ +--- a/modules/imgcodecs/CMakeLists.txt ++++ b/modules/imgcodecs/CMakeLists.txt +@@ -9,6 +9,10 @@ ocv_add_module(imgcodecs opencv_imgproc WRAP java python) + + ocv_clear_vars(GRFMT_LIBS) + ++if(MSVC) ++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4996") ++endif() ++ + if(HAVE_WINRT_CX AND NOT WINRT) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /ZW") + endif() diff --git a/vcpkg/ports/opencv3/0011-remove-python2.patch b/vcpkg/ports/opencv3/0011-remove-python2.patch new file mode 100644 index 0000000..1d55c84 --- /dev/null +++ b/vcpkg/ports/opencv3/0011-remove-python2.patch @@ -0,0 +1,18 @@ +--- a/cmake/OpenCVDetectPython.cmake ++++ b/cmake/OpenCVDetectPython.cmake +@@ -268,15 +268,6 @@ if(OPENCV_PYTHON_SKIP_DETECTION) + return() + endif() + +-find_python("" "${MIN_VER_PYTHON2}" PYTHON2_LIBRARY PYTHON2_INCLUDE_DIR +- PYTHON2INTERP_FOUND PYTHON2_EXECUTABLE PYTHON2_VERSION_STRING +- PYTHON2_VERSION_MAJOR PYTHON2_VERSION_MINOR PYTHON2LIBS_FOUND +- PYTHON2LIBS_VERSION_STRING PYTHON2_LIBRARIES PYTHON2_LIBRARY +- PYTHON2_DEBUG_LIBRARIES PYTHON2_LIBRARY_DEBUG PYTHON2_INCLUDE_PATH +- PYTHON2_INCLUDE_DIR PYTHON2_INCLUDE_DIR2 PYTHON2_PACKAGES_PATH +- PYTHON2_NUMPY_INCLUDE_DIRS PYTHON2_NUMPY_VERSION) +- +-option(OPENCV_PYTHON3_VERSION "Python3 version" "") + find_python("${OPENCV_PYTHON3_VERSION}" "${MIN_VER_PYTHON3}" PYTHON3_LIBRARY PYTHON3_INCLUDE_DIR + PYTHON3INTERP_FOUND PYTHON3_EXECUTABLE PYTHON3_VERSION_STRING + PYTHON3_VERSION_MAJOR PYTHON3_VERSION_MINOR PYTHON3LIBS_FOUND diff --git a/vcpkg/ports/opencv3/0012-fix-zlib.patch b/vcpkg/ports/opencv3/0012-fix-zlib.patch new file mode 100644 index 0000000..b82b9b0 --- /dev/null +++ b/vcpkg/ports/opencv3/0012-fix-zlib.patch @@ -0,0 +1,12 @@ +--- a/cmake/OpenCVFindLibsGrfmt.cmake ++++ b/cmake/OpenCVFindLibsGrfmt.cmake +@@ -5,6 +5,9 @@ + # --- zlib (required) --- + if(BUILD_ZLIB) + ocv_clear_vars(ZLIB_FOUND) ++elseif(1) ++ ocv_clear_internal_cache_vars(ZLIB_LIBRARY ZLIB_INCLUDE_DIR) ++ find_package(ZLIB "${MIN_VER_ZLIB}" REQUIRED) + else() + ocv_clear_internal_cache_vars(ZLIB_LIBRARY ZLIB_INCLUDE_DIR) + if(ANDROID) diff --git a/vcpkg/ports/opencv3/0013-contrib-fix-tesseract.patch b/vcpkg/ports/opencv3/0013-contrib-fix-tesseract.patch new file mode 100644 index 0000000..6a8bc7a --- /dev/null +++ b/vcpkg/ports/opencv3/0013-contrib-fix-tesseract.patch @@ -0,0 +1,11 @@ +--- a/modules/text/cmake/init.cmake ++++ b/modules/text/cmake/init.cmake +@@ -4,6 +4,8 @@ OCV_OPTION(WITH_TESSERACT "Include Tesseract OCR library support" (NOT CMAKE_CRO + if(NOT HAVE_TESSERACT + AND (WITH_TESSERACT OR OPENCV_FIND_TESSERACT) + ) ++ find_package(Tesseract CONFIG REQUIRED) ++ set(Tesseract_LIBRARIES Tesseract::libtesseract) + if(NOT Tesseract_FOUND) + find_package(Tesseract QUIET) # Prefer CMake's standard locations (including Tesseract_DIR) + endif() diff --git a/vcpkg/ports/opencv3/0014-fix-pkgconf-name.patch b/vcpkg/ports/opencv3/0014-fix-pkgconf-name.patch new file mode 100644 index 0000000..cf88d32 --- /dev/null +++ b/vcpkg/ports/opencv3/0014-fix-pkgconf-name.patch @@ -0,0 +1,11 @@ +--- a/cmake/OpenCVGenPkgconfig.cmake ++++ b/cmake/OpenCVGenPkgconfig.cmake +@@ -45,7 +45,7 @@ if(NOT DEFINED CMAKE_HELPER_SCRIPT) + if(INSTALL_TO_MANGLED_PATHS) + set(OPENCV_PC_FILE_NAME "opencv-${OPENCV_VERSION}.pc") + else() +- set(OPENCV_PC_FILE_NAME opencv.pc) ++ set(OPENCV_PC_FILE_NAME opencv3.pc) + endif() + + # build the list of opencv libs and dependencies for all modules diff --git a/vcpkg/ports/opencv3/0015-fix-supportqnx.patch b/vcpkg/ports/opencv3/0015-fix-supportqnx.patch new file mode 100644 index 0000000..53f614e --- /dev/null +++ b/vcpkg/ports/opencv3/0015-fix-supportqnx.patch @@ -0,0 +1,19 @@ +--- a/modules/core/src/system.cpp ++++ b/modules/core/src/system.cpp +@@ -129,11 +129,15 @@ void* allocSingletonNewBuffer(size_t size) { return malloc(size); } + #include <cstdlib> // std::abort + #endif + +-#if defined __ANDROID__ || defined __unix__ || defined __FreeBSD__ || defined __OpenBSD__ || defined __HAIKU__ ++#if defined __ANDROID__ || defined __unix__ || defined __FreeBSD__ || defined __OpenBSD__ || defined __HAIKU__ || defined __QNX__ + # include <unistd.h> + # include <fcntl.h> + #if defined __QNX__ + # include <sys/elf.h> ++# include <sys/auxv.h> ++using Elf64_auxv_t = auxv64_t; ++# include <elfdefinitions.h> ++constexpr decltype(auto) AT_HWCAP = NT_GNU_HWCAP; + #else + # include <elf.h> + #endif diff --git a/vcpkg/ports/opencv3/0016-contrib-fix-freetype.patch b/vcpkg/ports/opencv3/0016-contrib-fix-freetype.patch new file mode 100644 index 0000000..aa77082 --- /dev/null +++ b/vcpkg/ports/opencv3/0016-contrib-fix-freetype.patch @@ -0,0 +1,15 @@ +--- a/modules/freetype/CMakeLists.txt ++++ b/modules/freetype/CMakeLists.txt +@@ -3,8 +3,10 @@ if(APPLE_FRAMEWORK) + ocv_module_disable(freetype) + endif() + +-ocv_check_modules(FREETYPE freetype2) +-ocv_check_modules(HARFBUZZ harfbuzz) ++if(WITH_FREETYPE) ++find_package(freetype CONFIG REQUIRED) ++find_package(harfbuzz CONFIG REQUIRED) ++endif() + + if(OPENCV_INITIAL_PASS) + if(NOT FREETYPE_FOUND) diff --git a/vcpkg/ports/opencv3/0017-enable-gtk.patch b/vcpkg/ports/opencv3/0017-enable-gtk.patch new file mode 100644 index 0000000..1a70098 --- /dev/null +++ b/vcpkg/ports/opencv3/0017-enable-gtk.patch @@ -0,0 +1,11 @@ +--- a/cmake/OpenCVFindLibsGUI.cmake ++++ b/cmake/OpenCVFindLibsGUI.cmake +@@ -61,7 +61,7 @@ endif() + + # --- GTK --- + ocv_clear_vars(HAVE_GTK HAVE_GTK3 HAVE_GTHREAD HAVE_GTKGLEXT) +-if(WITH_GTK AND NOT HAVE_QT) ++if(WITH_GTK) + if(NOT WITH_GTK_2_X) + ocv_check_modules(GTK3 gtk+-3.0) + if(HAVE_GTK3) diff --git a/vcpkg/ports/opencv3/0019-enable-pkgconf.patch b/vcpkg/ports/opencv3/0019-enable-pkgconf.patch new file mode 100644 index 0000000..c9e142f --- /dev/null +++ b/vcpkg/ports/opencv3/0019-enable-pkgconf.patch @@ -0,0 +1,10 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -618,6 +618,7 @@ ocv_cmake_hook(POST_COMPILER_OPTIONS) + # ---------------------------------------------------------------------------- + # CHECK FOR SYSTEM LIBRARIES, OPTIONS, ETC.. + # ---------------------------------------------------------------------------- ++find_package(PkgConfig REQUIRED) + if(UNIX) + if(NOT APPLE_FRAMEWORK OR OPENCV_ENABLE_PKG_CONFIG) + if(CMAKE_CROSSCOMPILING AND NOT DEFINED ENV{PKG_CONFIG_LIBDIR} AND NOT DEFINED ENV{PKG_CONFIG_SYSROOT_DIR} diff --git a/vcpkg/ports/opencv3/portfile.cmake b/vcpkg/ports/opencv3/portfile.cmake new file mode 100644 index 0000000..e575f3a --- /dev/null +++ b/vcpkg/ports/opencv3/portfile.cmake @@ -0,0 +1,567 @@ +set(USE_QT_VERSION "5") + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO opencv/opencv + REF af32659937b6a23af04954a23a4a31ea520ceabc #3.4.20 + SHA512 e7efc912113f27428fb85f033e8b18146c9a5899bf10e687f8c279ed736ee3006ac330e843979df7572f046f41cb8820e291b4303dcfdc4f12deb6df0e0be27b + HEAD_REF master + PATCHES + 0001-disable-downloading.patch + 0002-install-options.patch + 0003-force-package-requirements.patch + 0004-fix-eigen.patch + 0005-fix-vtk9.patch + 0006-fix-uwp.patch + 0008-devendor-quirc.patch + 0009-fix-protobuf.patch + 0010-fix-uwp-tiff-imgcodecs.patch + 0011-remove-python2.patch + 0012-fix-zlib.patch + 0014-fix-pkgconf-name.patch + 0015-fix-supportqnx.patch + 0017-enable-gtk.patch + 0019-enable-pkgconf.patch +) + +vcpkg_find_acquire_program(PKGCONFIG) +set(ENV{PKG_CONFIG} "${PKGCONFIG}") +vcpkg_host_path_list(APPEND ENV{PKG_CONFIG_PATH} "${CURRENT_INSTALLED_DIR}/lib/pkgconfig") + +# Disallow accidental build of vendored copies +file(REMOVE_RECURSE "${SOURCE_PATH}/3rdparty/openexr") +file(REMOVE "${SOURCE_PATH}/cmake/FindCUDNN.cmake") + +if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(TARGET_IS_AARCH64 1) +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") + set(TARGET_IS_ARM 1) +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(TARGET_IS_X86_64 1) +else() + set(TARGET_IS_X86 1) +endif() + +if (USE_QT_VERSION STREQUAL "6") + set(QT_CORE5COMPAT "Core5Compat") + set(QT_OPENGLWIDGETS "OpenGLWidgets") +endif() + +string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" BUILD_WITH_STATIC_CRT) + +# Cannot use vcpkg_check_features() for "qt" because it requires the QT version number passed, not just a boolean +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + "bgsegm" BUILD_opencv_bgsegm + "contrib" WITH_CONTRIB + "dc1394" WITH_1394 + "dnn" BUILD_opencv_dnn + "eigen" WITH_EIGEN + "flann" BUILD_opencv_flann + "flann" PROTOBUF_UPDATE_FILES + "flann" UPDATE_PROTO_FILES + "flann" WITH_PROTOBUF + "freetype" WITH_FREETYPE + "gdcm" WITH_GDCM + "gstreamer" WITH_GSTREAMER + "gtk" WITH_GTK + "halide" WITH_HALIDE + "ipp" WITH_IPP + "ipp" BUILD_IPP_IW + "jasper" WITH_JASPER + "jpeg" WITH_JPEG + "line-descriptor" BUILD_opencv_line_descriptor + "msmf" WITH_MSMF + "nonfree" OPENCV_ENABLE_NONFREE + "openexr" WITH_OPENEXR + "opengl" WITH_OPENGL + "openmp" WITH_OPENMP + "ovis" BUILD_opencv_ovis + "png" WITH_PNG + "python" BUILD_opencv_python3 + "python" WITH_PYTHON + "quality" BUILD_opencv_quality + "quirc" WITH_QUIRC + "saliency" BUILD_opencv_saliency + "sfm" BUILD_opencv_sfm + "tbb" WITH_TBB + "tiff" WITH_TIFF + "vtk" WITH_VTK + "webp" WITH_WEBP + "world" BUILD_opencv_world +) + +# Cannot use vcpkg_check_features() for "python", "qt" +set(WITH_QT OFF) +if("qt" IN_LIST FEATURES) + set(WITH_QT ${USE_QT_VERSION}) +endif() + +if("python" IN_LIST FEATURES) + x_vcpkg_get_python_packages(PYTHON_VERSION "3" PACKAGES numpy OUT_PYTHON_VAR "PYTHON3") + set(ENV{PYTHON} "${PYTHON3}") + file(GLOB _py3_include_path "${CURRENT_INSTALLED_DIR}/include/python3*") + string(REGEX MATCH "python3\\.([0-9]+)" _python_version_tmp ${_py3_include_path}) + set(PYTHON_VERSION_MINOR "${CMAKE_MATCH_1}") + set(python_ver "3.${PYTHON_VERSION_MINOR}") + list(APPEND PYTHON_EXTRA_DEFINES_RELEASE + "-D__INSTALL_PATH_PYTHON3=${CURRENT_PACKAGES_DIR}/${PYTHON3_SITE}/cv2" + "-DOPENCV_PYTHON_INSTALL_PATH=${CURRENT_PACKAGES_DIR}/${PYTHON3_SITE}" + ) + list(APPEND PYTHON_EXTRA_DEFINES_DEBUG + "-D__INSTALL_PATH_PYTHON3=${CURRENT_PACKAGES_DIR}/debug/${PYTHON3_SITE}/cv2" + "-DOPENCV_PYTHON_INSTALL_PATH=${CURRENT_PACKAGES_DIR}/debug/${PYTHON3_SITE}" + ) + if(EXISTS "${CURRENT_INSTALLED_DIR}/${PYTHON3_SITE}/cv2") + message(FATAL_ERROR "You cannot install opencv3[python] if opencv4[python] is already present.") + endif() +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("contrib" IN_LIST FEATURES) + vcpkg_from_github( + OUT_SOURCE_PATH CONTRIB_SOURCE_PATH + REPO opencv/opencv_contrib + REF ae9a95ecdd8b4014a45b38c5576adf73c5d96f35 + SHA512 98f4e3113fb65b6d52d39388ae616d3107969040dc70248be194566904cf8a4f165a61fd5e88b1d799d7bc8107f1a3c3951365de45f3b19cb8b888a63c6d8f2d + HEAD_REF master + PATCHES + 0007-contrib-fix-hdf5.patch + 0013-contrib-fix-tesseract.patch + 0016-contrib-fix-freetype.patch + ) + 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/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(extracted_ocv ARCHIVE "${OCV_DOWNLOAD}") + file(MAKE_DIRECTORY "${DOWNLOADS}/opencv-cache/${ID}") + file(GLOB XFEATURES2D_I "${extracted_ocv}/*") + 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() + +if("ipp" IN_LIST FEATURES) + if(VCPKG_TARGET_IS_OSX) + vcpkg_download_distfile(OCV_DOWNLOAD + URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/0cc4aa06bf2bef4b05d237c69a5a96b9cd0cb85a/ippicv/ippicv_2021.9.1_mac_intel64_20230919_general.tgz" + FILENAME "opencv-cache/ippicv/14f01c5a4780bfae9dde9b0aaf5e56fc-ippicv_2021.9.1_mac_intel64_20230919_general.tgz" + SHA512 e53aa1bf4336a94554bf40c29a74c85f595c0aec8d9102a158db7ae075db048c1ff7f50ed81eda3ac8e07b1460862970abc820073a53c0f237e584708c5295da + ) + elseif(VCPKG_TARGET_IS_LINUX) + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + vcpkg_download_distfile(OCV_DOWNLOAD + URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/fd27188235d85e552de31425e7ea0f53ba73ba53/ippicv/ippicv_2021.11.0_lnx_intel64_20240201_general.tgz" + FILENAME "opencv-cache/ippicv/0f2745ff705ecae31176dad437608f6f-ippicv_2021.11.0_lnx_intel64_20240201_general.tgz" + SHA512 74cba99a1d2c40a125b23d42de555548fecd22c8fea5ed68ab7f887b1f208bd7f2906a64d40bac71ea82190e5389fb92d3c72b6d47c8c05a2e9b9b909a82ce47 + ) + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + vcpkg_download_distfile(OCV_DOWNLOAD + URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/fd27188235d85e552de31425e7ea0f53ba73ba53/ippicv/ippicv_2021.11.0_lnx_ia32_20240201_general.tgz" + FILENAME "opencv-cache/ippicv/63e381bf08076ca34fd5264203043a45-ippicv_2021.11.0_lnx_ia32_20240201_general.tgz" + SHA512 37484704754f9553b04c8da23864af3217919a11a9dbc92427e6326d6104bab7f1983c98c78ec52cda2d3eb93dc1fd98d0b780e3b7a98e703010c5ee1b421426 + ) + endif() + elseif(VCPKG_TARGET_IS_WINDOWS) + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + vcpkg_download_distfile(OCV_DOWNLOAD + URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/fd27188235d85e552de31425e7ea0f53ba73ba53/ippicv/ippicv_2021.11.0_win_intel64_20240201_general.zip" + FILENAME "opencv-cache/ippicv/59d154bf54a1e3eea20d7248f81a2a8e-ippicv_2021.11.0_win_intel64_20240201_general.zip" + SHA512 686ddbafa3f24c598d94589fca6937f90a4fb25e3dabea3b276709e55cbc2636aba8d73fadd336775f8514ff8e2e1b20e749264a7f11243190d54467f9a3f895 + ) + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + vcpkg_download_distfile(OCV_DOWNLOAD + URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/fd27188235d85e552de31425e7ea0f53ba73ba53/ippicv/ippicv_2021.11.0_win_ia32_20240201_general.zip" + FILENAME "opencv-cache/ippicv/7a6d8ac5825c02fea6cbfc1201b521b5-ippicv_2021.11.0_win_ia32_20240201_general.zip" + SHA512 0e151e34cee01a3684d3be3c2c75b0fac5f303bfd8c08685981a3d4a25a19a9bb454da26d2965aab915adc209accca17b6a4b6d7726c004cd7841daf180bbd3a + ) + endif() + endif() +endif() + +if("halide" IN_LIST FEATURES) + list(APPEND ADDITIONAL_BUILD_FLAGS + # Halide 13 requires C++17 + "-DCMAKE_CXX_STANDARD_REQUIRED=ON" + "-DCMAKE_DISABLE_FIND_PACKAGE_Halide=ON" + "-DHALIDE_ROOT_DIR=${CURRENT_INSTALLED_DIR}" + ) +endif() + +if("qt" IN_LIST FEATURES) + list(APPEND ADDITIONAL_BUILD_FLAGS "-DCMAKE_AUTOMOC=ON") +endif() + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + ###### Verify that required components and only those are enabled + -DENABLE_CONFIG_VERIFICATION=ON + ###### opencv cpu recognition is broken, always using host and not target: here we bypass that + -DOPENCV_SKIP_SYSTEM_PROCESSOR_DETECTION=TRUE + -DAARCH64=${TARGET_IS_AARCH64} + -DX86_64=${TARGET_IS_X86_64} + -DX86=${TARGET_IS_X86} + -DARM=${TARGET_IS_ARM} + ###### use c++17 to enable features that fail with c++11 (halide, protobuf, etc.) + -DCMAKE_CXX_STANDARD=17 + ###### ocv_options + -DINSTALL_TO_MANGLED_PATHS=OFF + -DOpenCV_INSTALL_BINARIES_PREFIX= + -DOPENCV_BIN_INSTALL_PATH=bin + -DOPENCV_INCLUDE_INSTALL_PATH=include/opencv3 + -DOPENCV_LIB_INSTALL_PATH=lib + -DOPENCV_3P_LIB_INSTALL_PATH=lib/manual-link/opencv3_thirdparty + -DOPENCV_CONFIG_INSTALL_PATH=share/opencv3 + -DOPENCV_FFMPEG_USE_FIND_PACKAGE=FFMPEG + -DOPENCV_FFMPEG_SKIP_BUILD_CHECK=TRUE + -DCMAKE_DEBUG_POSTFIX=d + -DOPENCV_DLLVERSION=3 + -DOPENCV_DEBUG_POSTFIX=d + -DOPENCV_GENERATE_SETUPVARS=OFF + -DOPENCV_GENERATE_PKGCONFIG=ON + # Do not build docs/examples + -DBUILD_DOCS=OFF + -DBUILD_EXAMPLES=OFF + -DBUILD_PERF_TESTS=OFF + -DBUILD_TESTS=OFF + ###### Disable build 3rd party libs + -DBUILD_IPP_IW=OFF + -DBUILD_ITT=OFF + -DBUILD_JASPER=OFF + -DBUILD_JPEG=OFF + -DBUILD_OPENEXR=OFF + -DBUILD_OPENJPEG=OFF + -DBUILD_PNG=OFF + -DBUILD_PROTOBUF=OFF + -DBUILD_TBB=OFF + -DBUILD_TIFF=OFF + -DBUILD_WEBP=OFF + -DBUILD_ZLIB=OFF + ###### OpenCV Build components + -DBUILD_opencv_apps=OFF + -DBUILD_opencv_java=OFF + -DBUILD_opencv_js=OFF + -DBUILD_JAVA=OFF + -DBUILD_ANDROID_PROJECT=OFF + -DBUILD_ANDROID_EXAMPLES=OFF + -DBUILD_PACKAGE=OFF + -DBUILD_WITH_DEBUG_INFO=ON + -DBUILD_WITH_STATIC_CRT=${BUILD_WITH_STATIC_CRT} + -DCURRENT_INSTALLED_DIR=${CURRENT_INSTALLED_DIR} + ###### PROTOBUF + ###### PYLINT/FLAKE8 + -DENABLE_PYLINT=OFF + -DENABLE_FLAKE8=OFF + # CMAKE + -DCMAKE_DISABLE_FIND_PACKAGE_Git=ON + -DCMAKE_DISABLE_FIND_PACKAGE_JNI=ON + # ENABLE + -DENABLE_CXX11=ON + ###### OPENCV vars + "-DOPENCV_DOWNLOAD_PATH=${DOWNLOADS}/opencv-cache" + ${BUILD_WITH_CONTRIB_FLAG} + -DOPENCV_OTHER_INSTALL_PATH=share/opencv3 + ###### customized properties + ## Options from vcpkg_check_features() + ${FEATURE_OPTIONS} + -DWITH_QT=${WITH_QT} + -DWITH_MATLAB=OFF + -DWITH_OPENJPEG=OFF + -DWITH_CPUFEATURES=OFF + -DWITH_SPNG=OFF + -DWITH_OPENCLAMDFFT=OFF + -DWITH_OPENCLAMDBLAS=OFF + -DWITH_OPENCL_D3D11_NV=OFF + -DWITH_ITT=OFF + -DWITH_NVCUVID=OFF + -DWITH_NVCUVENC=OFF + -DWITH_AVIF=OFF + -DWITH_VA=OFF + -DWITH_VA_INTEL=OFF + -DWITH_FFMPEG=OFF + -DWITH_CUDA=OFF + -DWITH_CUBLAS=OFF + -DWITH_LAPACK=OFF + ###### Additional build flags + ${ADDITIONAL_BUILD_FLAGS} + OPTIONS_RELEASE + ###### Python install path + ${PYTHON_EXTRA_DEFINES_RELEASE} + OPTIONS_DEBUG + ###### Python install path + ${PYTHON_EXTRA_DEFINES_DEBUG} +) + +vcpkg_cmake_install() +vcpkg_cmake_config_fixup() +vcpkg_copy_pdbs() + +if (NOT VCPKG_BUILD_TYPE) + # Update debug paths for libs in Android builds (e.g. sdk/native/staticlibs/armeabi-v7a) + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/opencv3/OpenCVModules-debug.cmake" + "\${_IMPORT_PREFIX}/sdk" + "\${_IMPORT_PREFIX}/debug/sdk" + IGNORE_UNCHANGED + ) +endif() + +file(READ "${CURRENT_PACKAGES_DIR}/share/opencv3/OpenCVModules.cmake" OPENCV_MODULES) +set(DEPS_STRING "include(CMakeFindDependencyMacro) +if(${BUILD_opencv_flann} AND NOT TARGET libprotobuf) #Check if the CMake target libprotobuf is already defined + find_dependency(Protobuf CONFIG REQUIRED) + if(TARGET protobuf::libprotobuf) + add_library (libprotobuf INTERFACE IMPORTED) + set_target_properties(libprotobuf PROPERTIES + INTERFACE_LINK_LIBRARIES protobuf::libprotobuf + ) + else() + add_library (libprotobuf UNKNOWN IMPORTED) + set_target_properties(libprotobuf PROPERTIES + IMPORTED_LOCATION \"${Protobuf_LIBRARY}\" + INTERFACE_INCLUDE_DIRECTORIES \"${Protobuf_INCLUDE_DIR}\" + INTERFACE_SYSTEM_INCLUDE_DIRECTORIES \"${Protobuf_INCLUDE_DIR}\" + ) + endif() +endif() +find_dependency(Threads)") +if("tiff" IN_LIST FEATURES) + string(APPEND DEPS_STRING "\nfind_dependency(TIFF)") +endif() +if("cuda" IN_LIST FEATURES) + string(APPEND DEPS_STRING "\nfind_dependency(CUDA)") +endif() +if("ffmpeg" IN_LIST FEATURES) + string(APPEND DEPS_STRING "\nfind_dependency(FFMPEG)") +endif() +if("contrib" IN_LIST FEATURES AND NOT VCPKG_TARGET_IS_UWP AND NOT VCPKG_TARGET_IS_IOS AND NOT (VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE MATCHES "^arm")) + string(APPEND DEPS_STRING " +# C language is required for try_compile tests in FindHDF5 +enable_language(C) +find_dependency(HDF5) +find_dependency(Tesseract)") +endif() +if("freetype" IN_LIST FEATURES) + string(APPEND DEPS_STRING "\nfind_dependency(harfbuzz)") +endif() +if("tbb" IN_LIST FEATURES) + string(APPEND DEPS_STRING "\nfind_dependency(TBB)") +endif() +if("vtk" IN_LIST FEATURES) + string(APPEND DEPS_STRING "\nfind_dependency(VTK)") +endif() +if("sfm" IN_LIST FEATURES) + string(APPEND DEPS_STRING "\nfind_dependency(gflags CONFIG)\nfind_dependency(Ceres CONFIG)") +endif() +if("eigen" IN_LIST FEATURES) + string(APPEND DEPS_STRING "\nfind_dependency(Eigen3 CONFIG)") +endif() +if("openvino" IN_LIST FEATURES) + string(APPEND DEPS_STRING "\nfind_dependency(OpenVINO CONFIG)") +endif() +if("openexr" IN_LIST FEATURES) + string(APPEND DEPS_STRING "\nfind_dependency(OpenEXR CONFIG)") +endif() +if("omp" IN_LIST FEATURES) + string(APPEND DEPS_STRING "\nfind_dependency(OpenMP)") +endif() +if("ovis" IN_LIST FEATURES) + string(APPEND DEPS_STRING "\nfind_dependency(OGRE)") +endif() +if("quirc" IN_LIST FEATURES) + string(APPEND DEPS_STRING "\nfind_dependency(quirc)") +endif() +if("qt" IN_LIST FEATURES) + string(APPEND DEPS_STRING " +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON)") + if("opengl" IN_LIST FEATURES) + string(APPEND DEPS_STRING " +find_dependency(Qt${USE_QT_VERSION} COMPONENTS Core Gui Widgets Test Concurrent ${QT_CORE5COMPAT} OpenGL ${QT_OPENGLWIDGETS})") + else() + string(APPEND DEPS_STRING " +find_dependency(Qt${USE_QT_VERSION} COMPONENTS Core Gui Widgets Test Concurrent ${QT_CORE5COMPAT})") + endif() +endif() +if("ade" IN_LIST FEATURES) + string(APPEND DEPS_STRING "\nfind_dependency(ade)") +endif() +if("gdcm" IN_LIST FEATURES) + string(APPEND DEPS_STRING "\nfind_dependency(GDCM)") +endif() + +string(REPLACE "set(CMAKE_IMPORT_FILE_VERSION 1)" + "set(CMAKE_IMPORT_FILE_VERSION 1)\n${DEPS_STRING}" OPENCV_MODULES "${OPENCV_MODULES}") + +if("openmp" IN_LIST FEATURES) + string(REPLACE "set_target_properties(opencv_core PROPERTIES +INTERFACE_LINK_LIBRARIES \"" + "set_target_properties(opencv_core PROPERTIES +INTERFACE_LINK_LIBRARIES \"\$<LINK_ONLY:OpenMP::OpenMP_CXX>;" OPENCV_MODULES "${OPENCV_MODULES}") +endif() + +if("ovis" IN_LIST FEATURES) + string(REPLACE "OgreGLSupportStatic" + "OgreGLSupport" OPENCV_MODULES "${OPENCV_MODULES}") +endif() + +file(WRITE "${CURRENT_PACKAGES_DIR}/share/opencv3/OpenCVModules.cmake" "${OPENCV_MODULES}") + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin") +endif() + +if(VCPKG_TARGET_IS_ANDROID) + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/README.android") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/README.android") +endif() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/${PYTHON3_SITE}/cv2/typing") +file(GLOB PYTHON3_SITE_FILES "${CURRENT_PACKAGES_DIR}/${PYTHON3_SITE}/cv2/*.py") +foreach(PYTHON3_SITE_FILE ${PYTHON3_SITE_FILES}) + vcpkg_replace_string("${PYTHON3_SITE_FILE}" + "os.path.join('${CURRENT_PACKAGES_DIR}'" + "os.path.join('.'" + IGNORE_UNCHANGED + ) + vcpkg_replace_string("${PYTHON3_SITE_FILE}" + "os.path.join('${CURRENT_PACKAGES_DIR}/${PYTHON3_SITE}/cv2'" + "os.path.join('.'" + IGNORE_UNCHANGED + ) +endforeach() +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/${PYTHON3_SITE}/cv2/typing") +file(GLOB PYTHON3_SITE_FILES_DEBUG "${CURRENT_PACKAGES_DIR}/debug/${PYTHON3_SITE}/cv2/*.py") +foreach(PYTHON3_SITE_FILE_DEBUG ${PYTHON3_SITE_FILES_DEBUG}) + vcpkg_replace_string("${PYTHON3_SITE_FILE_DEBUG}" + "os.path.join('${CURRENT_PACKAGES_DIR}/debug'" + "os.path.join('.'" + IGNORE_UNCHANGED + ) + vcpkg_replace_string("${PYTHON3_SITE_FILE_DEBUG}" + "os.path.join('${CURRENT_PACKAGES_DIR}/debug/${PYTHON3_SITE}/cv2'" + "os.path.join('.'" + IGNORE_UNCHANGED + ) +endforeach() + +if (EXISTS "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/opencv3.pc") + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/opencv3.pc" + "-lQt6::Core5Compat" + "-lQt6Core5Compat" + IGNORE_UNCHANGED + ) + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/opencv3.pc" + "-lhdf5::hdf5-static" + "-lhdf5" + IGNORE_UNCHANGED + ) + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/opencv3.pc" + "-lglog::glog" + "-lglog" + IGNORE_UNCHANGED + ) + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/opencv3.pc" + "-lgflags::gflags_static" + "-lgflags" + IGNORE_UNCHANGED + ) + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/opencv3.pc" + "-lTesseract::libtesseract" + "-ltesseract" + IGNORE_UNCHANGED + ) + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/opencv3.pc" + "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/" + "\${prefix}" + IGNORE_UNCHANGED + ) +endif() + +if (EXISTS "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/opencv3.pc") + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/opencv3.pc" + "-lQt6::Core5Compat" + "-lQt6Core5Compat" + IGNORE_UNCHANGED + ) + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/opencv3.pc" + "-lhdf5::hdf5-static" + "-lhdf5" + IGNORE_UNCHANGED + ) + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/opencv3.pc" + "-lglog::glog" + "-lglog" + IGNORE_UNCHANGED + ) + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/opencv3.pc" + "-lgflags::gflags_static" + "-lgflags" + IGNORE_UNCHANGED + ) + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/opencv3.pc" + "-lTesseract::libtesseract" + "-ltesseract" + IGNORE_UNCHANGED + ) + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/opencv3.pc" + "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/" + "\${prefix}" + IGNORE_UNCHANGED + ) +endif() + +vcpkg_fixup_pkgconfig() + +configure_file("${CURRENT_PORT_DIR}/usage.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/usage" @ONLY) + +file(REMOVE "${CURRENT_PACKAGES_DIR}/LICENSE") +file(REMOVE "${CURRENT_PACKAGES_DIR}/debug/LICENSE") +file(GLOB_RECURSE extra1_license_files "${CURRENT_PACKAGES_DIR}/share/licenses/*") +file(GLOB_RECURSE extra2_license_files "${CURRENT_PACKAGES_DIR}/share/opencv3/licenses/*") +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE" ${extra1_license_files} ${extra2_license_files}) +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/opencv3/licenses") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/licenses") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/opencv") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") diff --git a/vcpkg/ports/opencv3/usage.in b/vcpkg/ports/opencv3/usage.in new file mode 100644 index 0000000..217ce72 --- /dev/null +++ b/vcpkg/ports/opencv3/usage.in @@ -0,0 +1,4 @@ +@PORT@ is compatible with built-in CMake variables. In case of multiple OpenCV version installed, set OpenCV_ROOT *before* the find_package call: + + set(OpenCV_ROOT "${VCPKG_INSTALLED_DIR}/@TARGET_TRIPLET@/share/@PORT@") + find_package(OpenCV REQUIRED) diff --git a/vcpkg/ports/opencv3/vcpkg.json b/vcpkg/ports/opencv3/vcpkg.json new file mode 100644 index 0000000..bed2855 --- /dev/null +++ b/vcpkg/ports/opencv3/vcpkg.json @@ -0,0 +1,323 @@ +{ + "name": "opencv3", + "version": "3.4.20", + "description": "Open Source Computer Vision Library", + "homepage": "https://github.com/opencv/opencv", + "license": "BSD-3-Clause", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + }, + { + "name": "vcpkg-get-python-packages", + "host": true + }, + "zlib" + ], + "default-features": [ + { + "name": "dnn", + "platform": "!android" + }, + { + "name": "gapi", + "platform": "!uwp" + }, + { + "name": "gtk", + "platform": "linux" + }, + "jpeg", + { + "name": "msmf", + "platform": "windows & !uwp & !mingw" + }, + "png", + "quirc", + "tiff", + "webp" + ], + "features": { + "bgsegm": { + "description": "opencv_bgsegm module", + "supports": "!arm" + }, + "contrib": { + "description": "opencv_contrib module", + "dependencies": [ + { + "name": "hdf5", + "platform": "!uwp & !(windows & (arm | arm64))" + }, + { + "name": "opencv3", + "features": [ + "dnn" + ], + "platform": "!android" + }, + { + "name": "tesseract", + "platform": "!uwp & !(windows & (arm | arm64))" + } + ] + }, + "dc1394": { + "description": "Dc1394 support for opencv", + "dependencies": [ + "libdc1394" + ] + }, + "dnn": { + "description": "Enable dnn module", + "supports": "!android", + "dependencies": [ + { + "name": "opencv3", + "features": [ + "flann" + ] + } + ] + }, + "eigen": { + "description": "Eigen support for opencv", + "dependencies": [ + "eigen3" + ] + }, + "flann": { + "description": "opencv_flann module", + "dependencies": [ + "protobuf" + ] + }, + "freetype": { + "description": "Freetype support for opencv", + "dependencies": [ + "freetype", + "harfbuzz" + ] + }, + "gapi": { + "description": "Enable gapi module", + "supports": "!uwp" + }, + "gdcm": { + "description": "GDCM support for opencv", + "dependencies": [ + "gdcm" + ] + }, + "gstreamer": { + "description": "gstreamer support for opencv", + "dependencies": [ + "gstreamer" + ] + }, + "gtk": { + "description": "GTK support for opencv", + "supports": "linux", + "dependencies": [ + "gtk3" + ] + }, + "halide": { + "description": "Halide support for opencv", + "dependencies": [ + "halide", + { + "name": "opencv3", + "default-features": false + }, + { + "name": "opencv3", + "features": [ + "dnn" + ] + } + ] + }, + "ipp": { + "description": "Enable Intel Integrated Performance Primitives", + "supports": "(osx & x64) | (windows & (x64 | x86)) | (linux & (x64 | x86))" + }, + "jasper": { + "description": "JPEG 2000 support for opencv", + "dependencies": [ + "jasper" + ] + }, + "jpeg": { + "description": "JPEG support for opencv", + "dependencies": [ + "libjpeg-turbo" + ] + }, + "line-descriptor": { + "description": "opencv_line_descriptor module", + "supports": "!arm" + }, + "msmf": { + "description": "Microsoft Media Foundation support for opencv", + "supports": "windows & !uwp & !mingw" + }, + "nonfree": { + "description": "allow nonfree and unredistributable libraries" + }, + "openexr": { + "description": "OpenEXR support for opencv", + "dependencies": [ + "openexr" + ] + }, + "opengl": { + "description": "opengl support for opencv", + "dependencies": [ + "opengl" + ] + }, + "openmp": { + "description": "Enable openmp support for opencv", + "supports": "!osx" + }, + "ovis": { + "description": "opencv_ovis module", + "supports": "!(windows & static) & !android", + "dependencies": [ + "ogre", + { + "name": "opencv3", + "default-features": false, + "features": [ + "contrib" + ] + } + ] + }, + "png": { + "description": "PNG support for opencv", + "dependencies": [ + "libpng" + ] + }, + "python": { + "description": "Python wrapper support for opencv", + "dependencies": [ + { + "name": "opencv3", + "default-features": false, + "features": [ + "flann" + ] + }, + { + "name": "python3", + "default-features": false, + "features": [ + "extensions" + ] + } + ] + }, + "qt": { + "description": "Qt GUI support for opencv", + "dependencies": [ + { + "name": "qt5-base", + "default-features": false + } + ] + }, + "quality": { + "description": "Build opencv_quality module", + "supports": "!uwp", + "dependencies": [ + { + "name": "opencv3", + "default-features": false, + "features": [ + "contrib" + ] + } + ] + }, + "quirc": { + "description": "Enable QR code module", + "dependencies": [ + "quirc" + ] + }, + "salicency": { + "description": "opencv_salicency module", + "supports": "!arm" + }, + "sfm": { + "description": "opencv_sfm module", + "dependencies": [ + "ceres", + "gflags", + "glog", + { + "name": "opencv3", + "default-features": false, + "features": [ + "contrib" + ] + }, + { + "name": "opencv3", + "default-features": false, + "features": [ + "eigen" + ] + } + ] + }, + "tbb": { + "description": "Enable Intel Threading Building Blocks", + "supports": "!static", + "dependencies": [ + "tbb" + ] + }, + "tiff": { + "description": "TIFF support for opencv", + "dependencies": [ + { + "name": "tiff", + "default-features": false + } + ] + }, + "vtk": { + "description": "vtk support for opencv", + "dependencies": [ + { + "name": "opencv3", + "features": [ + "contrib" + ] + }, + { + "name": "vtk", + "default-features": false + } + ] + }, + "webp": { + "description": "WebP support for opencv", + "dependencies": [ + "libwebp" + ] + }, + "world": { + "description": "Compile to a single package support for opencv" + } + } +} |