aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/openmvs
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/openmvs')
-rw-r--r--vcpkg/ports/openmvs/fix-build.patch166
-rw-r--r--vcpkg/ports/openmvs/fix-lib-name-conflict.patch12
-rw-r--r--vcpkg/ports/openmvs/fix-static-build.patch19
-rw-r--r--vcpkg/ports/openmvs/fix_no_zstd.patch17
-rw-r--r--vcpkg/ports/openmvs/no-absolute-paths.patch42
-rw-r--r--vcpkg/ports/openmvs/portfile.cmake87
-rw-r--r--vcpkg/ports/openmvs/vcpkg.json69
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"
+ }
+ }
+}