diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/openmvs | |
Diffstat (limited to 'vcpkg/ports/openmvs')
| -rw-r--r-- | vcpkg/ports/openmvs/fix-build.patch | 166 | ||||
| -rw-r--r-- | vcpkg/ports/openmvs/fix-lib-name-conflict.patch | 12 | ||||
| -rw-r--r-- | vcpkg/ports/openmvs/fix-static-build.patch | 19 | ||||
| -rw-r--r-- | vcpkg/ports/openmvs/fix_no_zstd.patch | 17 | ||||
| -rw-r--r-- | vcpkg/ports/openmvs/no-absolute-paths.patch | 42 | ||||
| -rw-r--r-- | vcpkg/ports/openmvs/portfile.cmake | 87 | ||||
| -rw-r--r-- | vcpkg/ports/openmvs/vcpkg.json | 69 |
7 files changed, 412 insertions, 0 deletions
diff --git a/vcpkg/ports/openmvs/fix-build.patch b/vcpkg/ports/openmvs/fix-build.patch new file mode 100644 index 0000000..26839fc --- /dev/null +++ b/vcpkg/ports/openmvs/fix-build.patch @@ -0,0 +1,166 @@ +diff --git a/build/Templates/OpenMVSConfig.cmake.in b/build/Templates/OpenMVSConfig.cmake.in +index 9747b3e..ed2347e 100644 +--- a/build/Templates/OpenMVSConfig.cmake.in ++++ b/build/Templates/OpenMVSConfig.cmake.in +@@ -15,9 +15,64 @@ set(OpenMVS_INCLUDE_DIRS "@INSTALL_INCLUDE_DIR_IN@") + + set(OpenMVS_DEFINITIONS "@OpenMVS_DEFINITIONS@") + ++list(APPEND CMAKE_MODULE_PATH "${OpenMVS_CMAKE_DIR}") ++ ++if (MSVC) ++ set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /GL") ++ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GL") ++ set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG") ++ set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} /LTCG") ++endif() ++ ++set(CMAKE_CXX_STANDARD 14) ++set(CMAKE_CXX_STANDARD_REQUIRED ON) ++ ++include(CMakeFindDependencyMacro) ++ ++if(@OpenMVS_USE_OPENMP@) ++ find_dependency(OpenMP) ++ add_definitions(-D_USE_OPENMP) ++endif() ++ ++if(@OpenMVS_USE_OPENGL@) ++ find_dependency(OpenGL) ++ add_definitions(${OpenGL_DEFINITIONS} -D_USE_OPENGL) ++endif() ++ ++if(@OpenMVS_USE_CUDA@) ++ find_dependency(CUDA) ++ add_definitions(-D_USE_CUDA) ++ include_directories(${CUDA_INCLUDE_DIRS}) ++endif() ++ ++if(@OpenMVS_USE_BREAKPAD@) ++ find_dependency(BREAKPAD) ++ add_definitions(${BREAKPAD_DEFINITIONS} -D_USE_BREAKPAD) ++endif() ++ ++find_dependency(Boost COMPONENTS iostreams program_options system serialization) ++add_definitions(${Boost_DEFINITIONS} -D_USE_BOOST) ++include_directories(${Boost_INCLUDE_DIRS}) ++find_dependency(Eigen3) ++add_definitions(${EIGEN3_DEFINITIONS} -D_USE_EIGEN) ++include_directories(${EIGEN3_INCLUDE_DIRS}) ++find_dependency(OpenCV) ++add_definitions(${OpenCV_DEFINITIONS}) ++find_dependency(CGAL) ++add_definitions(${CGAL_DEFINITIONS}) ++ ++if(@OpenMVS_USE_CERES@) ++ find_dependency(Ceres) ++ add_definitions(${CERES_DEFINITIONS}) ++endif() ++ ++add_definitions(@OpenMVS_DEFINITIONS@) ++ ++# Our library dependencies (contains definitions for IMPORTED targets) ++if(NOT TARGET MVS AND NOT OpenMVS_BINARY_DIR) ++ include("${OpenMVS_CMAKE_DIR}/OpenMVSTargets.cmake") ++endif() ++ + # These are IMPORTED targets created by OpenMVSTargets.cmake + set(OpenMVS_LIBRARIES MVS) +-set(OpenMVS_BINARIES InterfaceCOLMAP DensifyPointCloud ReconstructMesh RefineMesh TextureMesh) +- +-include("${CMAKE_CURRENT_LIST_DIR}/OpenMVSTargets.cmake") +-check_required_components("OpenMVS") ++set(OpenMVS_BINARIES InterfaceCOLMAP InterfaceMetashape InterfaceMVSNet DensifyPointCloud ReconstructMesh RefineMesh TextureMesh TransformScene Viewer) +diff --git a/build/Utils.cmake b/build/Utils.cmake +index 0cb2d8e1..62e1661f 100644 +--- a/build/Utils.cmake ++++ b/build/Utils.cmake +@@ -173,32 +173,6 @@ macro(ComposePackageLibSuffix) + set(PACKAGE_LIB_SUFFIX "") + set(PACKAGE_LIB_SUFFIX_DBG "") + set(PACKAGE_LIB_SUFFIX_REL "") +- if(MSVC) +- if("${MSVC_VERSION}" STRGREATER "1929") +- set(PACKAGE_LIB_SUFFIX "/vc17") +- elseif("${MSVC_VERSION}" STRGREATER "1916") +- set(PACKAGE_LIB_SUFFIX "/vc16") +- elseif("${MSVC_VERSION}" STRGREATER "1900") +- set(PACKAGE_LIB_SUFFIX "/vc15") +- elseif("${MSVC_VERSION}" STREQUAL "1900") +- set(PACKAGE_LIB_SUFFIX "/vc14") +- elseif("${MSVC_VERSION}" STREQUAL "1800") +- set(PACKAGE_LIB_SUFFIX "/vc12") +- elseif("${MSVC_VERSION}" STREQUAL "1700") +- set(PACKAGE_LIB_SUFFIX "/vc11") +- elseif("${MSVC_VERSION}" STREQUAL "1600") +- set(PACKAGE_LIB_SUFFIX "/vc10") +- elseif("${MSVC_VERSION}" STREQUAL "1500") +- set(PACKAGE_LIB_SUFFIX "/vc9") +- endif() +- if("${SYSTEM_BITNESS}" STREQUAL "64") +- set(PACKAGE_LIB_SUFFIX "${PACKAGE_LIB_SUFFIX}/x64") +- else() +- set(PACKAGE_LIB_SUFFIX "${PACKAGE_LIB_SUFFIX}/x86") +- endif() +- set(PACKAGE_LIB_SUFFIX_DBG "${PACKAGE_LIB_SUFFIX}/Debug") +- set(PACKAGE_LIB_SUFFIX_REL "${PACKAGE_LIB_SUFFIX}/Release") +- endif() + endmacro() + + +@@ -805,12 +779,8 @@ macro(ConfigLibrary) + # Offer the user the choice of overriding the installation directories + set(INSTALL_LIB_DIR "lib" CACHE PATH "Installation directory for libraries") + set(INSTALL_BIN_DIR "bin" CACHE PATH "Installation directory for executables") +- set(INSTALL_INCLUDE_DIR "include" CACHE PATH "Installation directory for header files") +- if(WIN32 AND NOT CYGWIN) +- set(DEF_INSTALL_CMAKE_DIR "CMake") +- else() +- set(DEF_INSTALL_CMAKE_DIR "lib/cmake") +- endif() ++ set(INSTALL_INCLUDE_DIR "include/openmvs" CACHE PATH "Installation directory for header files") ++ set(DEF_INSTALL_CMAKE_DIR "share/openmvs") + set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH "Installation directory for CMake files") + # Make relative paths absolute (needed later on) + foreach(p LIB BIN INCLUDE CMAKE) +@@ -821,7 +791,7 @@ macro(ConfigLibrary) + else() + set(${varp} "${CMAKE_INSTALL_PREFIX}/${${var}}") + endif() +- set(${var} "${${varp}}/${PROJECT_NAME}") ++ set(${var} "${${varp}}") + endforeach() + endmacro() + + +diff --git a/libs/Common/Strings.h b/libs/Common/MVSStrings.h +similarity index 100% +rename from libs/Common/Strings.h +rename to libs/Common/MVSStrings.h +diff --git a/libs/Common/Types.h b/libs/Common/Types.h +index d5dcb27e..04fbfe2f 100644 +--- a/libs/Common/Types.h ++++ b/libs/Common/Types.h +@@ -385,7 +385,7 @@ typedef TAliasCast<double,int32_t> CastD2I; + + // I N C L U D E S ///////////////////////////////////////////////// + +-#include "Strings.h" ++#include "MVSStrings.h" + #include "AutoPtr.h" + #include "List.h" + #include "Thread.h" + +diff --git a/apps/InterfaceMetashape/InterfaceMetashape.cpp b/apps/InterfaceMetashape/InterfaceMetashape.cpp +index 4886973a..c2ab8f98 100644 +--- a/apps/InterfaceMetashape/InterfaceMetashape.cpp ++++ b/apps/InterfaceMetashape/InterfaceMetashape.cpp +@@ -627,7 +627,7 @@ bool ParseSceneXML(Scene& scene, PlatformDistCoeffs& pltDistCoeffs, size_t& nCam + } + const size_t nLen(pStream->getSize()); + String str; str.resize(nLen); +- pStream->read(&str[0], nLen); ++ pStream->read(str.data(), nLen); + doc.Parse(str.c_str(), nLen); + } + if (doc.ErrorID() != tinyxml2::XML_SUCCESS) { diff --git a/vcpkg/ports/openmvs/fix-lib-name-conflict.patch b/vcpkg/ports/openmvs/fix-lib-name-conflict.patch new file mode 100644 index 0000000..240d74d --- /dev/null +++ b/vcpkg/ports/openmvs/fix-lib-name-conflict.patch @@ -0,0 +1,12 @@ +diff --git a/libs/Common/CMakeLists.txt b/libs/Common/CMakeLists.txt +index 18899af..1dd2c8d 100644 +--- a/libs/Common/CMakeLists.txt ++++ b/libs/Common/CMakeLists.txt +@@ -16,6 +16,7 @@ TARGET_LINK_LIBRARIES(Common ${Boost_LIBRARIES} ${OpenCV_LIBS}) + + # Install + SET_TARGET_PROPERTIES(Common PROPERTIES ++ OUTPUT_NAME "OpenMVS_Common" + PUBLIC_HEADER "${LIBRARY_FILES_H}") + INSTALL(TARGETS Common + EXPORT OpenMVSTargets diff --git a/vcpkg/ports/openmvs/fix-static-build.patch b/vcpkg/ports/openmvs/fix-static-build.patch new file mode 100644 index 0000000..47e459f --- /dev/null +++ b/vcpkg/ports/openmvs/fix-static-build.patch @@ -0,0 +1,19 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 39ec359ac3..03225b8940 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -177,10 +177,10 @@ if(Boost_FOUND) + LIST(APPEND OpenMVS_DEFINITIONS -D_USE_BOOST) + ADD_DEFINITIONS(${Boost_DEFINITIONS}) + LINK_DIRECTORIES(${Boost_LIBRARY_DIRS}) +- if(NOT MSVC AND DEFINED CMAKE_TOOLCHAIN_FILE) +- # work around this missing library link in vcpkg +- LIST(APPEND Boost_LIBRARIES zstd) +- endif() ++ LINK_LIBRARIES(${Boost_LIBRARIES}) ++ find_package(zstd CONFIG REQUIRED) ++ LINK_LIBRARIES($<IF:$<TARGET_EXISTS:zstd::libzstd_shared>,zstd::libzstd_shared,zstd::libzstd_static>) ++ + SET(_USE_BOOST TRUE) + endif() + diff --git a/vcpkg/ports/openmvs/fix_no_zstd.patch b/vcpkg/ports/openmvs/fix_no_zstd.patch new file mode 100644 index 0000000..155670e --- /dev/null +++ b/vcpkg/ports/openmvs/fix_no_zstd.patch @@ -0,0 +1,17 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 39ec359..ee90ae6 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -177,10 +177,8 @@ if(Boost_FOUND)
+ LIST(APPEND OpenMVS_DEFINITIONS -D_USE_BOOST)
+ ADD_DEFINITIONS(${Boost_DEFINITIONS})
+ LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
+- if(NOT MSVC AND DEFINED CMAKE_TOOLCHAIN_FILE)
+- # work around this missing library link in vcpkg
+- LIST(APPEND Boost_LIBRARIES zstd)
+- endif()
++ # work around this missing library link in vcpkg
++ LIST(APPEND Boost_LIBRARIES zstd)
+ SET(_USE_BOOST TRUE)
+ endif()
+
diff --git a/vcpkg/ports/openmvs/no-absolute-paths.patch b/vcpkg/ports/openmvs/no-absolute-paths.patch new file mode 100644 index 0000000..9ba0a97 --- /dev/null +++ b/vcpkg/ports/openmvs/no-absolute-paths.patch @@ -0,0 +1,42 @@ +diff --git a/MvgMvsPipeline.py b/MvgMvsPipeline.py.in +index 53a4a5cc..97735396 100644 +--- a/MvgMvsPipeline.py ++++ b/MvgMvsPipeline.py.in +@@ -109,14 +109,14 @@ def find(afile): + return d + return None + +- ++current_dir = os.path.dirname(os.path.abspath(__file__)) + # Try to find openMVG and openMVS binaries in PATH +-OPENMVG_BIN = whereis("openMVG_main_SfMInit_ImageListing") +-OPENMVS_BIN = whereis("ReconstructMesh") ++OPENMVG_BIN = os.path.join(current_dir, '..', 'openmvg') ++OPENMVS_BIN = current_dir + + # Try to find openMVG camera sensor database +-CAMERA_SENSOR_DB_FILE = "sensor_width_camera_database.txt" +-CAMERA_SENSOR_DB_DIRECTORY = find(CAMERA_SENSOR_DB_FILE) ++CAMERA_SENSOR_DB_FILE = os.path.join(OPENMVG_BIN, 'sensor_width_camera_database.txt') ++CAMERA_SENSOR_DB_DIRECTORY = OPENMVS_BIN + + # Ask user for openMVG and openMVS directories if not found + if not OPENMVG_BIN: + +diff --git a/MvgOptimizeSfM.py b/MvgOptimizeSfM.py.in +index 930d6805..6eb672c1 100644 +--- a/MvgOptimizeSfM.py ++++ b/MvgOptimizeSfM.py.in +@@ -56,9 +56,10 @@ def launch(cmdline): + sys.exit('\r\nProcess canceled by user, all files remains') + + ++current_dir = os.path.dirname(os.path.abspath(__file__)) + # Try to find openMVG and openMVS binaries in PATH +-OPENMVG_BIN = whereis("openMVG_main_SfMInit_ImageListing") +-OPENMVS_BIN = whereis("ReconstructMesh") ++OPENMVG_BIN = os.path.join(current_dir, '..', 'openmvg') ++OPENMVS_BIN = current_dir + + # Ask user for openMVG and openMVS directories if not found + if not OPENMVG_BIN: diff --git a/vcpkg/ports/openmvs/portfile.cmake b/vcpkg/ports/openmvs/portfile.cmake new file mode 100644 index 0000000..22d36d5 --- /dev/null +++ b/vcpkg/ports/openmvs/portfile.cmake @@ -0,0 +1,87 @@ +vcpkg_check_linkage(ONLY_STATIC_LIBRARY) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO cdcseacave/openMVS + REF "v${VERSION}" + SHA512 95d83c6694b63b6fd27657c4c5e22ddbc078d26b7324b8f17952a6c7e4547028698aa155077c0cfb916d3497ca31c365e0cbcd81f3cbe959ef40a7ee2e5cd300 + HEAD_REF master + PATCHES + fix-build.patch + no-absolute-paths.patch + fix-static-build.patch + fix-lib-name-conflict.patch +) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + cuda OpenMVS_USE_CUDA + openmp OpenMVS_USE_OPENMP + nonfree OpenMVS_USE_NONFREE + ceres OpenMVS_USE_CERES +) + +file(REMOVE "${SOURCE_PATH}/build/Modules/FindCERES.cmake") +file(REMOVE "${SOURCE_PATH}/build/Modules/FindCGAL.cmake") +file(REMOVE "${SOURCE_PATH}/build/Modules/FindEIGEN.cmake") + +if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(USE_SSE ON) +else() + set(USE_SSE OFF) +endif() + +vcpkg_cmake_configure( + SOURCE_PATH ${SOURCE_PATH} + OPTIONS ${FEATURE_OPTIONS} + -DOpenMVS_USE_FAST_FLOAT2INT=ON + -DOpenMVS_USE_FAST_INVSQRT=OFF + -DOpenMVS_USE_FAST_CBRT=ON + -DOpenMVS_USE_SSE=ON + -DOpenMVS_USE_OPENGL=ON + -DOpenMVS_USE_BREAKPAD=OFF + -DOpenMVS_ENABLE_TESTS=OFF + -DOpenMVS_USE_SSE=${USE_SSE} + OPTIONS_RELEASE + -DOpenMVS_BUILD_TOOLS=ON + OPTIONS_DEBUG + -DOpenMVS_BUILD_TOOLS=OFF +) + +vcpkg_cmake_install() + +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) + +vcpkg_cmake_config_fixup() +file(READ ${CURRENT_PACKAGES_DIR}/share/${PORT}/OpenMVSTargets-release.cmake TARGETS_CMAKE) +string(REPLACE "bin/InterfaceCOLMAP" "tools/${PORT}/InterfaceCOLMAP" TARGETS_CMAKE "${TARGETS_CMAKE}") +string(REPLACE "bin/InterfaceMetashape" "tools/${PORT}/InterfaceMetashape" TARGETS_CMAKE "${TARGETS_CMAKE}") +string(REPLACE "bin/InterfaceMVSNet" "tools/${PORT}/InterfaceMVSNet" TARGETS_CMAKE "${TARGETS_CMAKE}") +string(REPLACE "bin/DensifyPointCloud" "tools/${PORT}/DensifyPointCloud" TARGETS_CMAKE "${TARGETS_CMAKE}") +string(REPLACE "bin/ReconstructMesh" "tools/${PORT}/ReconstructMesh" TARGETS_CMAKE "${TARGETS_CMAKE}") +string(REPLACE "bin/RefineMesh" "tools/${PORT}/RefineMesh" TARGETS_CMAKE "${TARGETS_CMAKE}") +string(REPLACE "bin/TextureMesh" "tools/${PORT}/TextureMesh" TARGETS_CMAKE "${TARGETS_CMAKE}") +string(REPLACE "bin/TransformScene" "tools/${PORT}/TransformScene" TARGETS_CMAKE "${TARGETS_CMAKE}") +string(REPLACE "bin/Viewer" "tools/${PORT}/Viewer" TARGETS_CMAKE "${TARGETS_CMAKE}") +file(WRITE ${CURRENT_PACKAGES_DIR}/share/${PORT}/OpenMVSTargets-release.cmake "${TARGETS_CMAKE}") + +vcpkg_copy_tools(AUTO_CLEAN TOOL_NAMES + DensifyPointCloud + InterfaceCOLMAP + InterfaceMetashape + InterfaceMVSNet + ReconstructMesh + RefineMesh + TextureMesh + TransformScene + Viewer +) + +set(OPENMVG_TOOLS_PATH "${CURRENT_INSTALLED_DIR}/tools/openmvg") +set(OPENMVS_TOOLS_PATH "${CURRENT_INSTALLED_DIR}/tools/${PORT}") +set(SENSOR_WIDTH_CAMERA_DATABASE_TXT_PATH "${OPENMVG_TOOLS_PATH}/sensor_width_camera_database.txt") +configure_file("${SOURCE_PATH}/MvgMvsPipeline.py.in" "${CURRENT_PACKAGES_DIR}/tools/${PORT}/MvgMvsPipeline.py" @ONLY) +configure_file("${SOURCE_PATH}/MvgOptimizeSfM.py.in" "${CURRENT_PACKAGES_DIR}/tools/${PORT}/MvgOptimizeSfM.py" @ONLY) +file(INSTALL "${SOURCE_PATH}/build/Modules/FindVCG.cmake" DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT}) + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/vcpkg/ports/openmvs/vcpkg.json b/vcpkg/ports/openmvs/vcpkg.json new file mode 100644 index 0000000..efaa701 --- /dev/null +++ b/vcpkg/ports/openmvs/vcpkg.json @@ -0,0 +1,69 @@ +{ + "name": "openmvs", + "version": "2.1.0", + "port-version": 6, + "description": "OpenMVS: open Multi-View Stereo reconstruction library", + "homepage": "https://cdcseacave.github.io/openMVS", + "license": "AGPL-3.0-only", + "supports": "!xbox", + "dependencies": [ + "boost-iostreams", + "boost-program-options", + "boost-serialization", + "boost-system", + "boost-throw-exception", + { + "name": "cgal", + "default-features": false + }, + "eigen3", + "glew", + "glfw3", + "libpng", + "opencv", + { + "name": "openmvg", + "features": [ + "software" + ], + "platform": "!(windows & static)" + }, + { + "name": "tiff", + "default-features": false + }, + "vcglib", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + }, + "zlib" + ], + "default-features": [ + "nonfree" + ], + "features": { + "ceres": { + "description": "CERES support for openmvs", + "dependencies": [ + "ceres" + ] + }, + "cuda": { + "description": "CUDA support for openmvs", + "dependencies": [ + "cuda" + ] + }, + "nonfree": { + "description": "nonfree support for openmvs" + }, + "openmp": { + "description": "OpenMP support for openmvs" + } + } +} |