aboutsummaryrefslogtreecommitdiff
path: root/ports/theia
diff options
context:
space:
mode:
authorStefano Sinigardi <stesinigardi@hotmail.com>2019-06-01 00:48:17 +0200
committerVictor Romero <romerosanchezv@gmail.com>2019-05-31 15:48:17 -0700
commit5898891125b00a3ec2b698bc496735ab997669f5 (patch)
treeea6f52bc69dec26f7c88d6766234a7c507607a06 /ports/theia
parent26a9338c5055193915290527eacb37f2ac7fdcb8 (diff)
downloadvcpkg-5898891125b00a3ec2b698bc496735ab997669f5.tar.gz
vcpkg-5898891125b00a3ec2b698bc496735ab997669f5.zip
[openexr,openimageio,suitesparse,theia] updates for non-win32 (#6371)
* [openexr,openimageio,suitesparse,theia] updates for non-win32 * [theia] use only valid cmake symbols * [suitesparse] Fix build * [lapack] still not properly integrating with other ports * [lapack] intercept cmake module calls and substitute them with our defs * [suitesparse,clapack] fixes for proper integration * [ceres,clapack] bump CONTROL * [suitesparse] remove unnecessary defs * [clapack] improve wrapper logic * [WIN32] remove wrong symbol * [clapack] fix wrapper integration * [Accelerate] use best framework when available * [clapack] separate config from wrapper * [clapack] fix paths and filenames * [mlpack,armadillo,clapack] improve library handling * [mlpack] remove unnecessary cmake option * [clp,coinutils,osi,liblemon] dependencies of openmvg, improve compatibility with non-win32 * [openmvg] fix for case-sensitive filesystems * [clp,coinutils,osi] simplify CMakeLists removing many unnecessary steps * [sophus] Force rebuild * [theia] fixes for linux, part1 * [io2d] remove broken sintax * [fontconfig] bump version to remove CI cached failure * [theia] fixes for linux, part2 * [theia] remove unnecessary empty folders and comments from portfile * [theia] use correct build type removing forced vars in cmakelists.txt * [openmvg] add missing suitesparse target detection * [sophus] fix Suitesparse dependency * [sophus,openmvg] use suitesparse lowercase for module compatibility on case-sensitive filesystems * [suitesparse] fixes for case-sensitive filesystems * [openmvg] use correct Eigen3 name for case-sensitive filesystems * [sophus] trigger rebuild * [shogun] use modern vcpkg style * [shogun] add missing cmake system processor symbol
Diffstat (limited to 'ports/theia')
-rw-r--r--ports/theia/CONTROL8
-rw-r--r--ports/theia/fix-cmakelists.patch310
-rw-r--r--ports/theia/fix-external-dependencies.patch405
-rw-r--r--ports/theia/fix-find-suitesparse.patch227
-rw-r--r--ports/theia/fix-glog-error.patch12
-rw-r--r--ports/theia/fix-oiio.patch391
-rw-r--r--ports/theia/fix-vlfeat-static.patch49
-rw-r--r--ports/theia/portfile.cmake35
8 files changed, 418 insertions, 1019 deletions
diff --git a/ports/theia/CONTROL b/ports/theia/CONTROL
index 070ed0a81..d29e6b3fe 100644
--- a/ports/theia/CONTROL
+++ b/ports/theia/CONTROL
@@ -1,4 +1,4 @@
-Source: theia
-Version: 0.8
-Build-Depends: flann, cereal, ceres[suitesparse] (!x86&!uwp&!arm&!linux&!osx), openimageio, glew, freeglut
-Description: An open source library for multiview geometry and structure from motion
+Source: theia
+Version: 0.8-2
+Build-Depends: flann, cereal, ceres[suitesparse], openimageio, glew, freeglut (!osx)
+Description: An open source library for multiview geometry and structure from motion
diff --git a/ports/theia/fix-cmakelists.patch b/ports/theia/fix-cmakelists.patch
deleted file mode 100644
index 674543c68..000000000
--- a/ports/theia/fix-cmakelists.patch
+++ /dev/null
@@ -1,310 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 9c1b150..367fbbc 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -218,24 +218,71 @@ include_directories(
- # as system headers.
- include_directories(SYSTEM ${EIGEN_INCLUDE_DIRS})
-
-+
-+set(THEIA_USE_EXTERNAL_CEREAL OFF CACHE BOOL "Use a system Cereal library")
-+set(THEIA_USE_EXTERNAL_FLANN OFF CACHE BOOL "Use a system Flann library")
-+
- # build Third party libraries included in distro.
--add_subdirectory(libraries)
--include_directories(
-- libraries
-- libraries/spectra
-- ${akaze_SOURCE_DIR}
-- ${akaze_INCLUDE_DIR}
-- ${cereal_SOURCE_DIR}
-- ${cereal_SOURCE_DIR}/include
-- ${flann_SOURCE_DIR}
-- ${flann_SOURCE_DIR}/src/cpp
-- ${gtest_SOURCE_DIR}/include
-- ${gtest_SOURCE_DIR}
-- ${optimo_SOURCE_DIR}
-- ${statx_SOURCE_DIR}
-- ${stlplus3_SOURCE_DIR}
-- ${vlfeat_SOURCE_DIR}
-- ${visual_sfm_SOURCE_DIR})
-+if (BUILD_TESTING)
-+ add_subdirectory(libraries/gtest)
-+endif (BUILD_TESTING)
-+
-+# AKAZE feature extractor.
-+add_subdirectory(libraries/akaze)
-+
-+include_directories(${akaze_SOURCE_DIR} ${akaze_INCLUDE_DIR})
-+
-+# Cereal for portable IO.
-+if(NOT THEIA_USE_EXTERNAL_CEREAL)
-+ add_subdirectory(libraries/cereal)
-+
-+ include_directories(${cereal_SOURCE_DIR} ${cereal_SOURCE_DIR}/include)
-+ set(THEIA_INTERNAL_CEREAL_LIB ${THEIA_INTERNAL_LIB_PREFIX}/cereal ${THEIA_INTERNAL_LIB_PREFIX}/cereal/include)
-+else()
-+ find_package(cereal REQUIRED)
-+
-+ set(_THEIA_CEREAL_LIBRARIES cereal)
-+endif()
-+
-+# Flann for fast approximate nearest neighbor searches.
-+if(NOT THEIA_USE_EXTERNAL_FLANN)
-+ add_subdirectory(libraries/flann)
-+
-+ include_directories(${flann_SOURCE_DIR} ${flann_SOURCE_DIR}/src/cpp)
-+ set(_THEIA_FLANN_LIBRARIES flann_cpp)
-+ set(THEIA_INTERNAL_FLANN_LIB ${THEIA_INTERNAL_LIB_PREFIX}/flann)
-+else()
-+ find_package(Flann REQUIRED)
-+
-+ include_directories(${FLANN_INCLUDE_DIR})
-+ set(_THEIA_FLANN_LIBRARIES ${FLANN_LIBRARY})
-+endif()
-+
-+# Add Optimo.
-+add_subdirectory(libraries/optimo)
-+include_directories(${optimo_SOURCE_DIR})
-+
-+# Add Spectra.
-+include_directories(libraries/spectra)
-+
-+# Add Statx.
-+add_subdirectory(libraries/statx)
-+include_directories(${statx_SOURCE_DIR})
-+
-+# STLPlus for filepath tools.
-+add_subdirectory(libraries/stlplus3)
-+include_directories(${stlplus3_SOURCE_DIR})
-+
-+# Add VLFeat.
-+add_subdirectory(libraries/vlfeat)
-+include_directories(${vlfeat_SOURCE_DIR})
-+
-+# Add VisualSfM files.
-+add_subdirectory(libraries/visual_sfm)
-+include_directories(${visual_sfm_SOURCE_DIR})
-+
-+include_directories(libraries)
-+
-
- list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
- include(OptimizeTheiaCompilerFlags)
-@@ -260,7 +307,19 @@ install(FILES ${THEIA_HDRS} DESTINATION include/theia)
- file(GLOB_RECURSE THEIA_INTERNAL_HDRS ${CMAKE_SOURCE_DIR}/src/theia/*.h)
- install(DIRECTORY src/theia/ DESTINATION include/theia FILES_MATCHING PATTERN "*.h")
-
--install(DIRECTORY libraries/ DESTINATION include/theia/libraries FILES_MATCHING PATTERN "*.h*")
-+install(DIRECTORY libraries/akaze/ DESTINATION include/theia/libraries/akaze FILES_MATCHING PATTERN "*.h*")
-+if(NOT THEIA_USE_EXTERNAL_CEREAL)
-+ install(DIRECTORY libraries/cereal/ DESTINATION include/theia/libraries/cereal FILES_MATCHING PATTERN "*.h*")
-+endif()
-+if(NOT THEIA_USE_EXTERNAL_FLANN)
-+ install(DIRECTORY libraries/flann/ DESTINATION include/theia/libraries/flann FILES_MATCHING PATTERN "*.h*")
-+endif()
-+install(DIRECTORY libraries/optimo/ DESTINATION include/theia/libraries/optimo FILES_MATCHING PATTERN "*.h*")
-+install(DIRECTORY libraries/spectra/ DESTINATION include/theia/libraries/spectra FILES_MATCHING PATTERN "*.h*")
-+install(DIRECTORY libraries/statx/ DESTINATION include/theia/libraries/statx FILES_MATCHING PATTERN "*.h*")
-+install(DIRECTORY libraries/stlplus3/ DESTINATION include/theia/libraries/stlplus3 FILES_MATCHING PATTERN "*.h*")
-+install(DIRECTORY libraries/visual_sfm/ DESTINATION include/theia/libraries/visual_sfm FILES_MATCHING PATTERN "*.h*")
-+install(DIRECTORY libraries/vlfeat/ DESTINATION include/theia/libraries/vlfeat FILES_MATCHING PATTERN "*.h*")
-
- # Add an uninstall target to remove all installed files.
- configure_file("${CMAKE_SOURCE_DIR}/cmake/uninstall.cmake.in"
-@@ -320,8 +379,9 @@ configure_file("${CMAKE_SOURCE_DIR}/cmake/TheiaConfigVersion.cmake.in"
- install(FILES "${CMAKE_CURRENT_BINARY_DIR}/TheiaConfig.cmake"
- "${CMAKE_CURRENT_BINARY_DIR}/TheiaConfigVersion.cmake"
- "${CMAKE_SOURCE_DIR}/cmake/FindEigen.cmake"
-- "${CMAKE_SOURCE_DIR}/cmake/FindGlog.cmake"
-+ "${CMAKE_SOURCE_DIR}/cmake/FindFlann.cmake"
- "${CMAKE_SOURCE_DIR}/cmake/FindGflags.cmake"
-- "${CMAKE_SOURCE_DIR}/cmake/FindOpenImageIO.cmake"
-+ "${CMAKE_SOURCE_DIR}/cmake/FindGlog.cmake"
-+ "${CMAKE_SOURCE_DIR}/cmake/FindOpenImageIO.cmake"
- "${CMAKE_SOURCE_DIR}/cmake/FindSuiteSparse.cmake"
- DESTINATION ${CMAKECONFIG_INSTALL_DIR})
-diff --git a/cmake/FindFlann.cmake b/cmake/FindFlann.cmake
-new file mode 100644
-index 0000000..5d19ef7
---- /dev/null
-+++ b/cmake/FindFlann.cmake
-@@ -0,0 +1,63 @@
-+###############################################################################
-+# Find FLANN
-+#
-+# This sets the following variables:
-+# FLANN_FOUND - True if FLANN was found.
-+# FLANN_INCLUDE_DIRS - Directories containing the FLANN include files.
-+# FLANN_LIBRARIES - Libraries needed to use FLANN.
-+# FLANN_DEFINITIONS - Compiler flags for FLANN.
-+# If FLANN_USE_STATIC is specified and then look for static libraries ONLY else
-+# look for shared ones
-+
-+if(FLANN_USE_STATIC)
-+ set(FLANN_RELEASE_NAME flann_cpp_s flann_cpp)
-+ set(FLANN_DEBUG_NAME flann_cpp_s-gd flann_cpp-gd)
-+else(FLANN_USE_STATIC)
-+ set(FLANN_RELEASE_NAME flann_cpp)
-+ set(FLANN_DEBUG_NAME flann_cpp-gd)
-+endif(FLANN_USE_STATIC)
-+
-+find_package(PkgConfig QUIET)
-+if (FLANN_FIND_VERSION)
-+ pkg_check_modules(PC_FLANN flann>=${FLANN_FIND_VERSION})
-+else(FLANN_FIND_VERSION)
-+ pkg_check_modules(PC_FLANN flann)
-+endif(FLANN_FIND_VERSION)
-+
-+set(FLANN_DEFINITIONS ${PC_FLANN_CFLAGS_OTHER})
-+
-+find_path(FLANN_INCLUDE_DIR flann/flann.hpp
-+ HINTS ${PC_FLANN_INCLUDEDIR} ${PC_FLANN_INCLUDE_DIRS} "${FLANN_ROOT}" "$ENV{FLANN_ROOT}"
-+ PATHS "$ENV{PROGRAMFILES}/Flann" "$ENV{PROGRAMW6432}/Flann"
-+ PATH_SUFFIXES include)
-+
-+find_library(FLANN_LIBRARY
-+ NAMES ${FLANN_RELEASE_NAME}
-+ HINTS ${PC_FLANN_LIBDIR} ${PC_FLANN_LIBRARY_DIRS} "${FLANN_ROOT}" "$ENV{FLANN_ROOT}"
-+ PATHS "$ENV{PROGRAMFILES}/Flann" "$ENV{PROGRAMW6432}/Flann"
-+ PATH_SUFFIXES lib)
-+
-+find_library(FLANN_LIBRARY_DEBUG
-+ NAMES ${FLANN_DEBUG_NAME} ${FLANN_RELEASE_NAME}
-+ HINTS ${PC_FLANN_LIBDIR} ${PC_FLANN_LIBRARY_DIRS} "${FLANN_ROOT}" "$ENV{FLANN_ROOT}"
-+ PATHS "$ENV{PROGRAMFILES}/Flann" "$ENV{PROGRAMW6432}/Flann"
-+ PATH_SUFFIXES lib)
-+
-+if(NOT FLANN_LIBRARY_DEBUG)
-+ set(FLANN_LIBRARY_DEBUG ${FLANN_LIBRARY})
-+endif(NOT FLANN_LIBRARY_DEBUG)
-+
-+set(FLANN_INCLUDE_DIRS ${FLANN_INCLUDE_DIR})
-+set(FLANN_LIBRARIES optimized ${FLANN_LIBRARY} debug ${FLANN_LIBRARY_DEBUG})
-+
-+include(FindPackageHandleStandardArgs)
-+find_package_handle_standard_args(FLANN DEFAULT_MSG FLANN_LIBRARY FLANN_INCLUDE_DIR)
-+
-+mark_as_advanced(FLANN_LIBRARY FLANN_LIBRARY_DEBUG FLANN_INCLUDE_DIR)
-+
-+if(FLANN_FOUND)
-+ message(STATUS "Flann found (include: ${FLANN_INCLUDE_DIRS}, lib: ${FLANN_LIBRARIES})")
-+ if(FLANN_USE_STATIC)
-+ add_definitions(-DFLANN_STATIC)
-+ endif(FLANN_USE_STATIC)
-+endif(FLANN_FOUND)
-diff --git a/cmake/TheiaConfig.cmake.in b/cmake/TheiaConfig.cmake.in
-index a3ea187..9195da1 100644
---- a/cmake/TheiaConfig.cmake.in
-+++ b/cmake/TheiaConfig.cmake.in
-@@ -207,22 +207,47 @@ endif (NOT TARGET theia AND NOT Theia_BINARY_DIR)
- # Set the expected XX_LIBRARIES variable for FindPackage().
- set(THEIA_LIBRARIES theia)
-
-+set(THEIA_USE_EXTERNAL_CEREAL @THEIA_USE_EXTERNAL_CEREAL@)
-+set(THEIA_USE_EXTERNAL_FLANN @THEIA_USE_EXTERNAL_FLANN@)
-+
-+# Cereal.
-+if (THEIA_USE_EXTERNAL_CEREAL)
-+ find_package(cereal QUIET)
-+ if (TARGET cereal)
-+ message(STATUS "Found required Theia dependency: Cereal")
-+ else (TARGET cereal)
-+ theia_report_not_found("Missing required Theia dependency: Cereal.")
-+ endif (TARGET cereal)
-+ list(APPEND THEIA_LIBRARIES cereal)
-+endif (THEIA_USE_EXTERNAL_CEREAL)
-+
-+# Flann.
-+if (THEIA_USE_EXTERNAL_FLANN)
-+ find_package(Flann QUIET)
-+ if (FLANN_FOUND)
-+ message(STATUS "Found required Theia dependency: Flann")
-+ else (FLANN_FOUND)
-+ theia_report_not_found("Missing required Theia dependency: Flann.")
-+ endif (FLANN_FOUND)
-+ list(APPEND THEIA_INCLUDE_DIRS ${FLANN_INCLUDE_DIR})
-+ list(APPEND THEIA_LIBRARIES ${FLANN_LIBRARY})
-+endif (THEIA_USE_EXTERNAL_FLANN)
-+
- # Add the libraries included with the distribution.
- set(THEIA_INTERNAL_LIB_PREFIX ${THEIA_INCLUDE_DIR}/theia/libraries)
- set(THEIA_INTERNAL_LIBS_INCLUDES
- ${THEIA_INTERNAL_LIB_PREFIX}
- ${THEIA_INTERNAL_LIB_PREFIX}/akaze
-- ${THEIA_INTERNAL_LIB_PREFIX}/cereal
-- ${THEIA_INTERNAL_LIB_PREFIX}/cereal/include
-- ${THEIA_INTERNAL_LIB_PREFIX}/flann
-+ @THEIA_INTERNAL_CEREAL_LIB@
-+ @THEIA_INTERNAL_FLANN_LIB@
- ${THEIA_INTERNAL_LIB_PREFIX}/gtest
- ${THEIA_INTERNAL_LIB_PREFIX}/gtest/include
- ${THEIA_INTERNAL_LIB_PREFIX}/optimo
- ${THEIA_INTERNAL_LIB_PREFIX}/spectra
- ${THEIA_INTERNAL_LIB_PREFIX}/statx
- ${THEIA_INTERNAL_LIB_PREFIX}/stlplus3
-- ${THEIA_INTERNAL_LIB_PREFIX}/vlfeat
-- ${THEIA_INTERNAL_LIB_PREFIX}/visual_sfm)
-+ ${THEIA_INTERNAL_LIB_PREFIX}/visual_sfm
-+ ${THEIA_INTERNAL_LIB_PREFIX}/vlfeat)
-
- list(APPEND THEIA_INCLUDE_DIRS ${THEIA_INTERNAL_LIBS_INCLUDES})
-
-diff --git a/libraries/CMakeLists.txt b/libraries/CMakeLists.txt
-deleted file mode 100644
-index 84f3829..0000000
---- a/libraries/CMakeLists.txt
-+++ /dev/null
-@@ -1,27 +0,0 @@
--if (${BUILD_TESTING})
-- add_subdirectory(gtest)
--endif (${BUILD_TESTING})
--
--# AKAZE feature extractor.
--add_subdirectory(akaze)
--
--# Cereal for portable IO.
--add_subdirectory(cereal)
--
--# Flann for fast approximate nearest neighbor searches.
--add_subdirectory(flann)
--
--# Add Optimo.
--add_subdirectory(optimo)
--
--# Add Statx.
--add_subdirectory(statx)
--
--# STLPlus for filepath tools.
--add_subdirectory(stlplus3)
--
--# Add VLFeat.
--add_subdirectory(vlfeat)
--
--# Add VisualSfM files.
--add_subdirectory(visual_sfm)
-\ No newline at end of file
-diff --git a/src/theia/CMakeLists.txt b/src/theia/CMakeLists.txt
-index 65787eb..07c54a4 100644
---- a/src/theia/CMakeLists.txt
-+++ b/src/theia/CMakeLists.txt
-@@ -174,14 +174,15 @@ set(THEIA_LIBRARY_DEPENDENCIES
- ${CERES_LIBRARIES}
- ${GFLAGS_LIBRARIES}
- ${GLOG_LIBRARIES}
-- ${SUITESPARSE_LIBRARIES}
- ${OPENIMAGEIO_LIBRARIES}
-+ ${SUITESPARSE_LIBRARIES}
-+ ${_THEIA_CEREAL_LIBRARIES}
-+ ${_THEIA_FLANN_LIBRARIES}
- akaze
-- flann_cpp
- statx
- stlplus3
-- vlfeat
-- visual_sfm)
-+ visual_sfm
-+ vlfeat)
-
- set(THEIA_LIBRARY_SOURCE
- ${THEIA_SRC}
diff --git a/ports/theia/fix-external-dependencies.patch b/ports/theia/fix-external-dependencies.patch
new file mode 100644
index 000000000..7a4b00961
--- /dev/null
+++ b/ports/theia/fix-external-dependencies.patch
@@ -0,0 +1,405 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 9c1b150..5810156 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -129,70 +129,27 @@ endif ()
+
+ # GFlags. The namespace patch is borrow from Ceres Solver (see license in
+ # FindGflags.cmake)
++message("-- Check for Google Flags")
+ find_package(Gflags REQUIRED)
+-if (GFLAGS_FOUND)
+- message("-- Found Google Flags: ${GFLAGS_INCLUDE_DIRS} in namespace: ${GFLAGS_NAMESPACE}")
+- add_definitions(-DTHEIA_GFLAGS_NAMESPACE=${GFLAGS_NAMESPACE})
+-else (GFLAGS_FOUND)
+- message(FATAL_ERROR "Can't find Google FLAGS.")
+-endif (GFLAGS_FOUND)
+
+ # Google Logging
+ message("-- Check for Google Log")
+ find_package(Glog REQUIRED)
+-if (GLOG_FOUND)
+- message("-- Found Google Logging: ${GLOG_INCLUDE_DIRS}")
+-else (GLOG_FOUND)
+- message(FATAL_ERROR "Can't find Google Logging. Please set GLOG_INCLUDE_DIR & "
+- "GLOG_LIBRARY")
+-endif (GLOG_FOUND)
++
++# Flann
++message("-- Check for Flann")
++find_package(Flann REQUIRED)
+
+ # Ceres
+ message("-- Check for Ceres")
+ find_package(Ceres REQUIRED SuiteSparse)
+-if (CERES_FOUND)
+- message("-- Found Ceres: ${CERES_INCLUDE_DIRS}")
+-else (CERES_FOUND)
+- message(FATAL_ERROR "Can't find Ceres. Please set CERES_INCLUDE_DIR & "
+- "CERES_LIBRARY")
+-endif (CERES_FOUND)
+
+ # OpenImageIO
+ message("-- Check for OpenImageIO")
+ find_package(OpenImageIO REQUIRED)
+-if (OPENIMAGEIO_FOUND)
+- message("-- Found OpenImageIO: ${OPENIMAGEIO_INCLUDE_DIRS}")
+-else (OPENIMAGEIO_FOUND)
+- message(FATAL_ERROR "Can't find OpenImageIO. Please set OPENIMAGEIO_INCLUDE_DIR & "
+- "OPENIMAGEIO_LIBRARY")
+-endif (OPENIMAGEIO_FOUND)
+
+ # Suitesparse
+ find_package(SuiteSparse REQUIRED)
+-if (SUITESPARSE_FOUND)
+- # On Ubuntu the system install of SuiteSparse (v3.4.0) up to at least
+- # Ubuntu 13.10 cannot be used to link shared libraries.
+- if (BUILD_SHARED_LIBS AND
+- SUITESPARSE_IS_BROKEN_SHARED_LINKING_UBUNTU_SYSTEM_VERSION)
+- message(FATAL_ERROR "You are attempting to build Theia as a shared "
+- "library on Ubuntu using a system package install of SuiteSparse "
+- "3.4.0. This package is broken and does not support the "
+- "construction of shared libraries (you can still build Theia as "
+- "a static library). If you wish to build a shared version of Theia "
+- "you should uninstall the system install of SuiteSparse "
+- "(libsuitesparse-dev) and perform a source install of SuiteSparse "
+- "(we recommend that you use the latest version), "
+- "see http://theia-solver.org/building.html for more information.")
+- endif (BUILD_SHARED_LIBS AND
+- SUITESPARSE_IS_BROKEN_SHARED_LINKING_UBUNTU_SYSTEM_VERSION)
+- message("-- Found SuiteSparse ${SUITESPARSE_VERSION}")
+- add_definitions(-DTHEIA_SUITESPARSE_VERSION="${SUITESPARSE_VERSION}")
+-else (SUITESPARSE_FOUND)
+- # Disable use of SuiteSparse if it cannot be found and continue.
+- message(FATAL ERROR "Can't find SuiteSparse. This library is required "
+- "for bundle adjustment and for solving convex optimization problems. "
+- "Please set SUITESPARSE_INCLUDE_DIR & SUITESPARSE_LIBRARY")
+-endif (SUITESPARSE_FOUND)
+
+ include_directories(
+ include
+@@ -225,24 +182,19 @@ include_directories(
+ libraries/spectra
+ ${akaze_SOURCE_DIR}
+ ${akaze_INCLUDE_DIR}
+- ${cereal_SOURCE_DIR}
+- ${cereal_SOURCE_DIR}/include
+- ${flann_SOURCE_DIR}
+- ${flann_SOURCE_DIR}/src/cpp
+- ${gtest_SOURCE_DIR}/include
+- ${gtest_SOURCE_DIR}
+ ${optimo_SOURCE_DIR}
+ ${statx_SOURCE_DIR}
+ ${stlplus3_SOURCE_DIR}
+ ${vlfeat_SOURCE_DIR}
+- ${visual_sfm_SOURCE_DIR})
++ ${visual_sfm_SOURCE_DIR}
++)
+
+ list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
+ include(OptimizeTheiaCompilerFlags)
+ optimizetheiacompilerflags()
+
+ add_subdirectory(src/theia)
+-add_subdirectory(applications)
++#add_subdirectory(applications)
+
+ if (BUILD_DOCUMENTATION)
+ message("-- Documentation building is enabled")
+@@ -260,7 +212,13 @@ install(FILES ${THEIA_HDRS} DESTINATION include/theia)
+ file(GLOB_RECURSE THEIA_INTERNAL_HDRS ${CMAKE_SOURCE_DIR}/src/theia/*.h)
+ install(DIRECTORY src/theia/ DESTINATION include/theia FILES_MATCHING PATTERN "*.h")
+
+-install(DIRECTORY libraries/ DESTINATION include/theia/libraries FILES_MATCHING PATTERN "*.h*")
++install(DIRECTORY libraries/akaze/ DESTINATION include/theia/libraries/akaze FILES_MATCHING PATTERN "*.h*")
++install(DIRECTORY libraries/optimo/ DESTINATION include/theia/libraries/optimo FILES_MATCHING PATTERN "*.h*")
++install(DIRECTORY libraries/spectra/ DESTINATION include/theia/libraries/spectra FILES_MATCHING PATTERN "*.h*")
++install(DIRECTORY libraries/statx/ DESTINATION include/theia/libraries/statx FILES_MATCHING PATTERN "*.h*")
++install(DIRECTORY libraries/stlplus3/ DESTINATION include/theia/libraries/stlplus3 FILES_MATCHING PATTERN "*.h*")
++install(DIRECTORY libraries/visual_sfm/ DESTINATION include/theia/libraries/visual_sfm FILES_MATCHING PATTERN "*.h*")
++install(DIRECTORY libraries/vlfeat/ DESTINATION include/theia/libraries/vlfeat FILES_MATCHING PATTERN "*.h*")
+
+ # Add an uninstall target to remove all installed files.
+ configure_file("${CMAKE_SOURCE_DIR}/cmake/uninstall.cmake.in"
+@@ -272,17 +230,10 @@ add_custom_target(uninstall
+
+ # Set up install directories. INCLUDE_INSTALL_DIR, LIB_INSTALL_DIR and
+ # CMAKECONFIG_INSTALL_DIR must not be absolute paths.
+-if (WIN32)
+- set(INCLUDE_INSTALL_DIR Include)
+- set(LIB_INSTALL_DIR Lib)
+- set(CMAKECONFIG_INSTALL_DIR CMake)
+- set(RELATIVE_CMAKECONFIG_INSTALL_DIR CMake)
+-else ()
+- set(INCLUDE_INSTALL_DIR include)
+- set(LIB_INSTALL_DIR lib)
+- set(CMAKECONFIG_INSTALL_DIR share/Theia)
+- set(RELATIVE_CMAKECONFIG_INSTALL_DIR share/Theia)
+-endif ()
++set(INCLUDE_INSTALL_DIR include)
++set(LIB_INSTALL_DIR lib)
++set(CMAKECONFIG_INSTALL_DIR share/theia)
++set(RELATIVE_CMAKECONFIG_INSTALL_DIR share/theia)
+
+ # This "exports" all targets which have been put into the export set
+ # "TheiaExport". This means that CMake generates a file with the given
+@@ -319,9 +270,5 @@ configure_file("${CMAKE_SOURCE_DIR}/cmake/TheiaConfigVersion.cmake.in"
+ # in the public API of Theia and should thus be present in THEIA_INCLUDE_DIRS.
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/TheiaConfig.cmake"
+ "${CMAKE_CURRENT_BINARY_DIR}/TheiaConfigVersion.cmake"
+- "${CMAKE_SOURCE_DIR}/cmake/FindEigen.cmake"
+- "${CMAKE_SOURCE_DIR}/cmake/FindGlog.cmake"
+- "${CMAKE_SOURCE_DIR}/cmake/FindGflags.cmake"
+- "${CMAKE_SOURCE_DIR}/cmake/FindOpenImageIO.cmake"
+- "${CMAKE_SOURCE_DIR}/cmake/FindSuiteSparse.cmake"
++ "${CMAKE_SOURCE_DIR}/cmake/FindOpenImageIO.cmake"
+ DESTINATION ${CMAKECONFIG_INSTALL_DIR})
+diff --git a/cmake/TheiaConfig.cmake.in b/cmake/TheiaConfig.cmake.in
+index a3ea187..7e9d912 100644
+--- a/cmake/TheiaConfig.cmake.in
++++ b/cmake/TheiaConfig.cmake.in
+@@ -124,14 +124,7 @@ list(APPEND CERES_INCLUDE_DIR_HINTS @CERES_INCLUDE_DIR@)
+ get_filename_component(THEIA_BUILD_CERES_LIBRARY_DIR @CERES_LIBRARIES@ PATH)
+ list(APPEND CERES_LIBRARY_DIR_HINTS ${THEIA_BUILD_CERES_LIBRARY_DIR})
+ # Search quietly s/t we control the timing of the error message if not found.
+-find_package(Ceres QUIET)
+-if (CERES_FOUND)
+- message(STATUS "Found required Theia dependency: "
+- "Ceres in ${CERES_INCLUDE_DIRS}")
+-else (CERES_FOUND)
+- theia_report_not_found("Missing required Theia "
+- "dependency: Ceres, please set CERES_INCLUDE_DIR.")
+-endif (CERES_FOUND)
++find_package(Ceres REQUIRED)
+ list(APPEND THEIA_INCLUDE_DIRS ${CERES_INCLUDE_DIRS})
+
+ # Glog.
+@@ -140,64 +133,19 @@ list(APPEND GLOG_INCLUDE_DIR_HINTS @GLOG_INCLUDE_DIR@)
+ get_filename_component(THEIA_BUILD_GLOG_LIBRARY_DIR @GLOG_LIBRARY@ PATH)
+ list(APPEND GLOG_LIBRARY_DIR_HINTS ${THEIA_BUILD_GLOG_LIBRARY_DIR})
+ # Search quietly s/t we control the timing of the error message if not found.
+-find_package(Glog QUIET)
+-if (GLOG_FOUND)
+- message(STATUS "Found required Theia dependency: "
+- "Glog in ${GLOG_INCLUDE_DIRS}")
+-else (GLOG_FOUND)
+- theia_report_not_found("Missing required Theia "
+- "dependency: Glog, please set GLOG_INCLUDE_DIR.")
+-endif (GLOG_FOUND)
++find_package(Glog REQUIRED)
+ list(APPEND THEIA_INCLUDE_DIRS ${GLOG_INCLUDE_DIRS})
+
+ # GFlags. The namespace patch is borrow from Ceres Solver (see license in
+ # FindGflags.cmake)
+-find_package(Gflags QUIET)
+-if (GFLAGS_FOUND)
+- message(STATUS "Found required Theia dependency: Google Flags in "
+- "${GFLAGS_INCLUDE_DIRS} in namespace: ${GFLAGS_NAMESPACE}")
+- add_definitions(-DTHEIA_GFLAGS_NAMESPACE=${GFLAGS_NAMESPACE})
+-else (GFLAGS_FOUND)
+- theia_report_not_found("Missing required Theia dependency: Google Flags, please set "
+- "GFLAGS_INCLUDE_DIR.")
+-endif (GFLAGS_FOUND)
++find_package(Gflags REQUIRED)
+ list(APPEND THEIA_INCLUDE_DIRS ${GFLAGS_INCLUDE_DIRS})
+
+ # OpenImageIO
+-find_package(OpenImageIO QUIET)
+-if (OPENIMAGEIO_FOUND)
+- message(STATUS "Found Theia dependency: OpenImageIO in ${OPENIMAGEIO_INCLUDE_DIRS}")
+-else (OPENIMAGEIO_FOUND)
+- theia_report_not_found("Missing required Theia dependency: OpenImageIO. Please set "
+- "OPENIMAGEIO_INCLUDE_DIR & OPENIMAGEIO_LIBRARY")
+-endif (OPENIMAGEIO_FOUND)
++find_package(OpenImageIO REQUIRED)
+ list(APPEND THEIA_INCLUDE_DIRS ${OPENIMAGEIO_INCLUDE_DIRS})
+
+-find_package(SuiteSparse QUIET)
+-if (SUITESPARSE_FOUND)
+- # On Ubuntu the system install of SuiteSparse (v3.4.0) up to at least
+- # Ubuntu 13.10 cannot be used to link shared libraries.
+- if (BUILD_SHARED_LIBS AND
+- SUITESPARSE_IS_BROKEN_SHARED_LINKING_UBUNTU_SYSTEM_VERSION)
+- theia_report_not_found("You are attempting to build Theia as a shared "
+- "library on Ubuntu using a system package install of SuiteSparse "
+- "3.4.0. This package is broken and does not support the "
+- "construction of shared libraries (you can still build Theia as "
+- "a static library). If you wish to build a shared version of Theia "
+- "you should uninstall the system install of SuiteSparse "
+- "(libsuitesparse-dev) and perform a source install of SuiteSparse "
+- "(we recommend that you use the latest version), "
+- "see http://theia-solver.org/building.html for more information.")
+- endif (BUILD_SHARED_LIBS AND
+- SUITESPARSE_IS_BROKEN_SHARED_LINKING_UBUNTU_SYSTEM_VERSION)
+- message("-- Found SuiteSparse ${SUITESPARSE_VERSION}")
+- add_definitions(-DTHEIA_SUITESPARSE_VERSION="${SUITESPARSE_VERSION}")
+-else (SUITESPARSE_FOUND)
+- # Disable use of SuiteSparse if it cannot be found and continue.
+- theia_report_not_found("Can't find SuiteSparse. This library is required "
+- "for bundle adjustment and for solving convex optimization problems. "
+- "Please set SUITESPARSE_INCLUDE_DIR & SUITESPARSE_LIBRARY")
+-endif (SUITESPARSE_FOUND)
++find_package(SuiteSparse REQUIRED)
+ list(APPEND THEIA_INCLUDE_DIRS ${SUITESPARSE_INCLUDE_DIRS})
+
+ # Import exported Theia targets.
+@@ -207,22 +155,24 @@ endif (NOT TARGET theia AND NOT Theia_BINARY_DIR)
+ # Set the expected XX_LIBRARIES variable for FindPackage().
+ set(THEIA_LIBRARIES theia)
+
++find_package(cereal REQUIRED)
++list(APPEND THEIA_LIBRARIES cereal)
++
++find_package(Flann REQUIRED)
++list(APPEND THEIA_INCLUDE_DIRS ${FLANN_INCLUDE_DIR})
++list(APPEND THEIA_LIBRARIES ${FLANN_LIBRARY})
++
+ # Add the libraries included with the distribution.
+ set(THEIA_INTERNAL_LIB_PREFIX ${THEIA_INCLUDE_DIR}/theia/libraries)
+ set(THEIA_INTERNAL_LIBS_INCLUDES
+ ${THEIA_INTERNAL_LIB_PREFIX}
+ ${THEIA_INTERNAL_LIB_PREFIX}/akaze
+- ${THEIA_INTERNAL_LIB_PREFIX}/cereal
+- ${THEIA_INTERNAL_LIB_PREFIX}/cereal/include
+- ${THEIA_INTERNAL_LIB_PREFIX}/flann
+- ${THEIA_INTERNAL_LIB_PREFIX}/gtest
+- ${THEIA_INTERNAL_LIB_PREFIX}/gtest/include
+ ${THEIA_INTERNAL_LIB_PREFIX}/optimo
+ ${THEIA_INTERNAL_LIB_PREFIX}/spectra
+ ${THEIA_INTERNAL_LIB_PREFIX}/statx
+ ${THEIA_INTERNAL_LIB_PREFIX}/stlplus3
+- ${THEIA_INTERNAL_LIB_PREFIX}/vlfeat
+- ${THEIA_INTERNAL_LIB_PREFIX}/visual_sfm)
++ ${THEIA_INTERNAL_LIB_PREFIX}/visual_sfm
++ ${THEIA_INTERNAL_LIB_PREFIX}/vlfeat)
+
+ list(APPEND THEIA_INCLUDE_DIRS ${THEIA_INTERNAL_LIBS_INCLUDES})
+
+diff --git a/libraries/CMakeLists.txt b/libraries/CMakeLists.txt
+index 84f3829..f88d75a 100644
+--- a/libraries/CMakeLists.txt
++++ b/libraries/CMakeLists.txt
+@@ -5,12 +5,6 @@ endif (${BUILD_TESTING})
+ # AKAZE feature extractor.
+ add_subdirectory(akaze)
+
+-# Cereal for portable IO.
+-add_subdirectory(cereal)
+-
+-# Flann for fast approximate nearest neighbor searches.
+-add_subdirectory(flann)
+-
+ # Add Optimo.
+ add_subdirectory(optimo)
+
+@@ -24,4 +18,4 @@ add_subdirectory(stlplus3)
+ add_subdirectory(vlfeat)
+
+ # Add VisualSfM files.
+-add_subdirectory(visual_sfm)
+\ No newline at end of file
++add_subdirectory(visual_sfm)
+diff --git a/libraries/statx/CMakeLists.txt b/libraries/statx/CMakeLists.txt
+index 23b9e49..af236a3 100644
+--- a/libraries/statx/CMakeLists.txt
++++ b/libraries/statx/CMakeLists.txt
+@@ -103,7 +103,11 @@ if(STATX_WITH_CERES)
+ endif(CERES_FOUND)
+
+ # BLAS
+- find_package(BLAS REQUIRED)
++ if(UNIX AND NOT APPLE)
++ find_package(OpenBLAS REQUIRED)
++ else()
++ find_package(BLAS REQUIRED)
++ endif()
+
+ # LAPACK
+ find_package(LAPACK REQUIRED)
+@@ -129,7 +133,6 @@ set(XGAMMA_FILES ${XGAMMA_FUNCS}/asa121.cpp ${XGAMMA_FUNCS}/asa103.cpp)
+
+ # Setting CXX FLAGS appropriately. The code below was inspired from
+ # Google CERES and modified for this library.
+-set (CMAKE_BUILD_TYPE Release)
+ set (STATX_CXX_FLAGS)
+
+ if (CMAKE_BUILD_TYPE STREQUAL "Release")
+diff --git a/libraries/vlfeat/CMakeLists.txt b/libraries/vlfeat/CMakeLists.txt
+index 7f4ffc7..15bca12 100644
+--- a/libraries/vlfeat/CMakeLists.txt
++++ b/libraries/vlfeat/CMakeLists.txt
+@@ -18,14 +18,19 @@ set(vl_sources
+ vl/random.c
+ vl/sift.c
+ vl/vlad.c)
++
+ set_source_files_properties(${vl_sources} PROPERTIES LANGUAGE C)
+
++add_library(vlfeat ${vl_sources})
++
+ if (MSVC)
+- add_definitions(-DVL_BUILD_DLL)
+- add_definitions(-DVL_DISABLE_SSE2)
++ if(BUILD_SHARED_LIBS)
++ target_compile_definitions(vlfeat PRIVATE VL_BUILD_DLL)
++ target_compile_definitions(vlfeat INTERFACE BUILD_DLL)
++ endif()
++ target_compile_definitions(vlfeat PUBLIC VL_DISABLE_SSE2)
+ endif (MSVC)
+
+-add_library(vlfeat SHARED ${vl_sources})
+ install(TARGETS vlfeat
+ EXPORT TheiaExport
+ RUNTIME DESTINATION bin
+diff --git a/libraries/vlfeat/vl/host.h b/libraries/vlfeat/vl/host.h
+index 293fe1f..0ea3d42 100644
+--- a/libraries/vlfeat/vl/host.h
++++ b/libraries/vlfeat/vl/host.h
+@@ -312,27 +312,31 @@ defined(__DOXYGEN__)
+ #if defined(VL_COMPILER_MSC) & ! defined(__DOXYGEN__)
+ # define VL_UNUSED
+ # define VL_INLINE static __inline
+-# define snprintf _snprintf
+ # define isnan _isnan
+-# ifdef VL_BUILD_DLL
++# if defined(VL_BUILD_DLL)
+ # ifdef __cplusplus
+ # define VL_EXPORT extern "C" __declspec(dllexport)
+ # else
+ # define VL_EXPORT extern __declspec(dllexport)
+ # endif
+-# else
++# elif defined(VL_DLL)
+ # ifdef __cplusplus
+ # define VL_EXPORT extern "C" __declspec(dllimport)
+ # else
+ # define VL_EXPORT extern __declspec(dllimport)
+ # endif
++# else
++# ifdef __cplusplus
++# define VL_EXPORT extern "C"
++# else
++# define VL_EXPORT extern
++# endif
+ # endif
+ #endif
+
+ #if defined(VL_COMPILER_LCC) & ! defined(__DOXYGEN__)
+ # define VL_UNUSED
+ # define VL_INLINE static __inline
+-# define snprintf _snprintf
+ # define isnan _isnan
+ VL_INLINE float fabsf(float x) { return (float) fabs((double) x) ; }
+ # ifdef VL_BUILD_DLL
+diff --git a/src/theia/CMakeLists.txt b/src/theia/CMakeLists.txt
+index 6830f71..768586d 100644
+--- a/src/theia/CMakeLists.txt
++++ b/src/theia/CMakeLists.txt
+@@ -209,7 +209,6 @@ set(THEIA_LIBRARY_DEPENDENCIES
+ ${SUITESPARSE_LIBRARIES}
+ ${OPENIMAGEIO_LIBRARIES}
+ akaze
+- flann_cpp
+ statx
+ stlplus3
+ vlfeat
diff --git a/ports/theia/fix-find-suitesparse.patch b/ports/theia/fix-find-suitesparse.patch
deleted file mode 100644
index f7de44aa0..000000000
--- a/ports/theia/fix-find-suitesparse.patch
+++ /dev/null
@@ -1,227 +0,0 @@
---- a/cmake/FindSuiteSparse.cmake Mon Feb 06 18:05:05 2017
-+++ b/cmake/FindSuiteSparse.cmake Fri Jul 07 02:13:31 2017
-@@ -152,6 +152,12 @@
- # the first.
- endmacro(SUITESPARSE_REPORT_NOT_FOUND)
-
-+# Protect against any alternative find_package scripts for this library having
-+# been called previously (in a client project) which set SUITESPARSE_FOUND, but
-+# not the other variables we require / set here which could cause the search
-+# logic here to fail.
-+unset(SUITESPARSE_FOUND)
-+
- # Handle possible presence of lib prefix for libraries on MSVC, see
- # also SUITESPARSE_RESET_FIND_LIBRARY_PREFIX().
- if (MSVC)
-@@ -173,8 +179,6 @@
- /opt/local/include/ufsparse # Mac OS X
- /usr/local/homebrew/include # Mac OS X
- /usr/local/include
-- /usr/local/include/suitesparse
-- /usr/include/suitesparse # Ubuntu
- /usr/include)
- list(APPEND SUITESPARSE_CHECK_LIBRARY_DIRS
- ${SUITESPARSE_LIBRARY_DIR_HINTS}
-@@ -182,9 +186,10 @@
- /opt/local/lib/ufsparse # Mac OS X
- /usr/local/homebrew/lib # Mac OS X
- /usr/local/lib
-- /usr/local/lib/suitesparse
-- /usr/lib/suitesparse # Ubuntu
- /usr/lib)
-+# Additional suffixes to try appending to each search path.
-+list(APPEND SUITESPARSE_CHECK_PATH_SUFFIXES
-+ suitesparse) # Windows/Ubuntu
-
- # Given the number of components of SuiteSparse, and to ensure that the
- # automatic failure message generated by FindPackageHandleStandardArgs()
-@@ -212,7 +217,8 @@
- set(AMD_FOUND TRUE)
- list(APPEND SUITESPARSE_FOUND_REQUIRED_VARS AMD_FOUND)
- find_library(AMD_LIBRARY NAMES amd
-- PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS})
-+ PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS}
-+ PATH_SUFFIXES ${SUITESPARSE_CHECK_PATH_SUFFIXES})
- if (EXISTS ${AMD_LIBRARY})
- message(STATUS "Found AMD library: ${AMD_LIBRARY}")
- else (EXISTS ${AMD_LIBRARY})
-@@ -223,7 +229,8 @@
- mark_as_advanced(AMD_LIBRARY)
-
- find_path(AMD_INCLUDE_DIR NAMES amd.h
-- PATHS ${SUITESPARSE_CHECK_INCLUDE_DIRS})
-+ PATHS ${SUITESPARSE_CHECK_INCLUDE_DIRS}
-+ PATH_SUFFIXES ${SUITESPARSE_CHECK_PATH_SUFFIXES})
- if (EXISTS ${AMD_INCLUDE_DIR})
- message(STATUS "Found AMD header in: ${AMD_INCLUDE_DIR}")
- else (EXISTS ${AMD_INCLUDE_DIR})
-@@ -237,7 +244,8 @@
- set(CAMD_FOUND TRUE)
- list(APPEND SUITESPARSE_FOUND_REQUIRED_VARS CAMD_FOUND)
- find_library(CAMD_LIBRARY NAMES camd
-- PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS})
-+ PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS}
-+ PATH_SUFFIXES ${SUITESPARSE_CHECK_PATH_SUFFIXES})
- if (EXISTS ${CAMD_LIBRARY})
- message(STATUS "Found CAMD library: ${CAMD_LIBRARY}")
- else (EXISTS ${CAMD_LIBRARY})
-@@ -248,7 +256,8 @@
- mark_as_advanced(CAMD_LIBRARY)
-
- find_path(CAMD_INCLUDE_DIR NAMES camd.h
-- PATHS ${SUITESPARSE_CHECK_INCLUDE_DIRS})
-+ PATHS ${SUITESPARSE_CHECK_INCLUDE_DIRS}
-+ PATH_SUFFIXES ${SUITESPARSE_CHECK_PATH_SUFFIXES})
- if (EXISTS ${CAMD_INCLUDE_DIR})
- message(STATUS "Found CAMD header in: ${CAMD_INCLUDE_DIR}")
- else (EXISTS ${CAMD_INCLUDE_DIR})
-@@ -262,7 +271,8 @@
- set(COLAMD_FOUND TRUE)
- list(APPEND SUITESPARSE_FOUND_REQUIRED_VARS COLAMD_FOUND)
- find_library(COLAMD_LIBRARY NAMES colamd
-- PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS})
-+ PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS}
-+ PATH_SUFFIXES ${SUITESPARSE_CHECK_PATH_SUFFIXES})
- if (EXISTS ${COLAMD_LIBRARY})
- message(STATUS "Found COLAMD library: ${COLAMD_LIBRARY}")
- else (EXISTS ${COLAMD_LIBRARY})
-@@ -273,7 +283,8 @@
- mark_as_advanced(COLAMD_LIBRARY)
-
- find_path(COLAMD_INCLUDE_DIR NAMES colamd.h
-- PATHS ${SUITESPARSE_CHECK_INCLUDE_DIRS})
-+ PATHS ${SUITESPARSE_CHECK_INCLUDE_DIRS}
-+ PATH_SUFFIXES ${SUITESPARSE_CHECK_PATH_SUFFIXES})
- if (EXISTS ${COLAMD_INCLUDE_DIR})
- message(STATUS "Found COLAMD header in: ${COLAMD_INCLUDE_DIR}")
- else (EXISTS ${COLAMD_INCLUDE_DIR})
-@@ -287,7 +298,8 @@
- set(CCOLAMD_FOUND TRUE)
- list(APPEND SUITESPARSE_FOUND_REQUIRED_VARS CCOLAMD_FOUND)
- find_library(CCOLAMD_LIBRARY NAMES ccolamd
-- PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS})
-+ PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS}
-+ PATH_SUFFIXES ${SUITESPARSE_CHECK_PATH_SUFFIXES})
- if (EXISTS ${CCOLAMD_LIBRARY})
- message(STATUS "Found CCOLAMD library: ${CCOLAMD_LIBRARY}")
- else (EXISTS ${CCOLAMD_LIBRARY})
-@@ -298,7 +310,8 @@
- mark_as_advanced(CCOLAMD_LIBRARY)
-
- find_path(CCOLAMD_INCLUDE_DIR NAMES ccolamd.h
-- PATHS ${SUITESPARSE_CHECK_INCLUDE_DIRS})
-+ PATHS ${SUITESPARSE_CHECK_INCLUDE_DIRS}
-+ PATH_SUFFIXES ${SUITESPARSE_CHECK_PATH_SUFFIXES})
- if (EXISTS ${CCOLAMD_INCLUDE_DIR})
- message(STATUS "Found CCOLAMD header in: ${CCOLAMD_INCLUDE_DIR}")
- else (EXISTS ${CCOLAMD_INCLUDE_DIR})
-@@ -312,7 +325,8 @@
- set(CHOLMOD_FOUND TRUE)
- list(APPEND SUITESPARSE_FOUND_REQUIRED_VARS CHOLMOD_FOUND)
- find_library(CHOLMOD_LIBRARY NAMES cholmod
-- PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS})
-+ PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS}
-+ PATH_SUFFIXES ${SUITESPARSE_CHECK_PATH_SUFFIXES})
- if (EXISTS ${CHOLMOD_LIBRARY})
- message(STATUS "Found CHOLMOD library: ${CHOLMOD_LIBRARY}")
- else (EXISTS ${CHOLMOD_LIBRARY})
-@@ -323,7 +337,8 @@
- mark_as_advanced(CHOLMOD_LIBRARY)
-
- find_path(CHOLMOD_INCLUDE_DIR NAMES cholmod.h
-- PATHS ${SUITESPARSE_CHECK_INCLUDE_DIRS})
-+ PATHS ${SUITESPARSE_CHECK_INCLUDE_DIRS}
-+ PATH_SUFFIXES ${SUITESPARSE_CHECK_PATH_SUFFIXES})
- if (EXISTS ${CHOLMOD_INCLUDE_DIR})
- message(STATUS "Found CHOLMOD header in: ${CHOLMOD_INCLUDE_DIR}")
- else (EXISTS ${CHOLMOD_INCLUDE_DIR})
-@@ -337,7 +352,8 @@
- set(SUITESPARSEQR_FOUND TRUE)
- list(APPEND SUITESPARSE_FOUND_REQUIRED_VARS SUITESPARSEQR_FOUND)
- find_library(SUITESPARSEQR_LIBRARY NAMES spqr
-- PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS})
-+ PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS}
-+ PATH_SUFFIXES ${SUITESPARSE_CHECK_PATH_SUFFIXES})
- if (EXISTS ${SUITESPARSEQR_LIBRARY})
- message(STATUS "Found SuiteSparseQR library: ${SUITESPARSEQR_LIBRARY}")
- else (EXISTS ${SUITESPARSEQR_LIBRARY})
-@@ -348,7 +364,8 @@
- mark_as_advanced(SUITESPARSEQR_LIBRARY)
-
- find_path(SUITESPARSEQR_INCLUDE_DIR NAMES SuiteSparseQR.hpp
-- PATHS ${SUITESPARSE_CHECK_INCLUDE_DIRS})
-+ PATHS ${SUITESPARSE_CHECK_INCLUDE_DIRS}
-+ PATH_SUFFIXES ${SUITESPARSE_CHECK_PATH_SUFFIXES})
- if (EXISTS ${SUITESPARSEQR_INCLUDE_DIR})
- message(STATUS "Found SuiteSparseQR header in: ${SUITESPARSEQR_INCLUDE_DIR}")
- else (EXISTS ${SUITESPARSEQR_INCLUDE_DIR})
-@@ -364,7 +381,8 @@
- # support for it, this will do no harm if it wasn't.
- set(TBB_FOUND TRUE)
- find_library(TBB_LIBRARIES NAMES tbb
-- PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS})
-+ PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS}
-+ PATH_SUFFIXES ${SUITESPARSE_CHECK_PATH_SUFFIXES})
- if (EXISTS ${TBB_LIBRARIES})
- message(STATUS "Found Intel Thread Building Blocks (TBB) library: "
- "${TBB_LIBRARIES}, assuming SuiteSparseQR was compiled with TBB.")
-@@ -377,7 +395,8 @@
-
- if (TBB_FOUND)
- find_library(TBB_MALLOC_LIB NAMES tbbmalloc
-- PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS})
-+ PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS}
-+ PATH_SUFFIXES ${SUITESPARSE_CHECK_PATH_SUFFIXES})
- if (EXISTS ${TBB_MALLOC_LIB})
- message(STATUS "Found Intel Thread Building Blocks (TBB) Malloc library: "
- "${TBB_MALLOC_LIB}")
-@@ -407,7 +426,8 @@
- # If SuiteSparse version is >= 4 then SuiteSparse_config is required.
- # For SuiteSparse 3, UFconfig.h is required.
- find_library(SUITESPARSE_CONFIG_LIBRARY NAMES suitesparseconfig
-- PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS})
-+ PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS}
-+ PATH_SUFFIXES ${SUITESPARSE_CHECK_PATH_SUFFIXES})
- if (EXISTS ${SUITESPARSE_CONFIG_LIBRARY})
- message(STATUS "Found SuiteSparse_config library: "
- "${SUITESPARSE_CONFIG_LIBRARY}")
-@@ -415,7 +435,8 @@
- mark_as_advanced(SUITESPARSE_CONFIG_LIBRARY)
-
- find_path(SUITESPARSE_CONFIG_INCLUDE_DIR NAMES SuiteSparse_config.h
-- PATHS ${SUITESPARSE_CHECK_INCLUDE_DIRS})
-+ PATHS ${SUITESPARSE_CHECK_INCLUDE_DIRS}
-+ PATH_SUFFIXES ${SUITESPARSE_CHECK_PATH_SUFFIXES})
- if (EXISTS ${SUITESPARSE_CONFIG_INCLUDE_DIR})
- message(STATUS "Found SuiteSparse_config header in: "
- "${SUITESPARSE_CONFIG_INCLUDE_DIR}")
-@@ -433,7 +454,8 @@
- # does not have librt).
- if (CMAKE_SYSTEM_NAME MATCHES "Linux" OR UNIX AND NOT APPLE)
- find_library(LIBRT_LIBRARY NAMES rt
-- PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS})
-+ PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS}
-+ PATH_SUFFIXES ${SUITESPARSE_CHECK_PATH_SUFFIXES})
- if (LIBRT_LIBRARY)
- message(STATUS "Adding librt: ${LIBRT_LIBRARY} to "
- "SuiteSparse_config libraries (required on Linux & Unix [not OSX] if "
-@@ -452,7 +474,8 @@
- # UFconfig header which should be present in < v4 installs.
- set(SUITESPARSE_CONFIG_FOUND FALSE)
- find_path(UFCONFIG_INCLUDE_DIR NAMES UFconfig.h
-- PATHS ${SUITESPARSE_CHECK_INCLUDE_DIRS})
-+ PATHS ${SUITESPARSE_CHECK_INCLUDE_DIRS}
-+ PATH_SUFFIXES ${SUITESPARSE_CHECK_PATH_SUFFIXES})
- if (EXISTS ${UFCONFIG_INCLUDE_DIR})
- message(STATUS "Found UFconfig header in: ${UFCONFIG_INCLUDE_DIR}")
- set(UFCONFIG_FOUND TRUE)
-@@ -543,7 +566,8 @@
-
- # METIS (Optional dependency).
- find_library(METIS_LIBRARY NAMES metis
-- PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS})
-+ PATHS ${SUITESPARSE_CHECK_LIBRARY_DIRS}
-+ PATH_SUFFIXES ${SUITESPARSE_CHECK_PATH_SUFFIXES})
- if (EXISTS ${METIS_LIBRARY})
- message(STATUS "Found METIS library: ${METIS_LIBRARY}.")
- set(METIS_FOUND TRUE)
diff --git a/ports/theia/fix-glog-error.patch b/ports/theia/fix-glog-error.patch
deleted file mode 100644
index 1e72c9f35..000000000
--- a/ports/theia/fix-glog-error.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 9c1b150..6518e6a 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -146,6 +146,7 @@ else (GLOG_FOUND)
- message(FATAL_ERROR "Can't find Google Logging. Please set GLOG_INCLUDE_DIR & "
- "GLOG_LIBRARY")
- endif (GLOG_FOUND)
-+add_definitions(-DGLOG_NO_ABBREVIATED_SEVERITIES)
-
- # Ceres
- message("-- Check for Ceres")
diff --git a/ports/theia/fix-oiio.patch b/ports/theia/fix-oiio.patch
deleted file mode 100644
index 7cba45db7..000000000
--- a/ports/theia/fix-oiio.patch
+++ /dev/null
@@ -1,391 +0,0 @@
-diff --git a/src/theia/image/image.cc b/src/theia/image/image.cc
-index df6aba4..5e2b8dc 100644
---- a/src/theia/image/image.cc
-+++ b/src/theia/image/image.cc
-@@ -60,18 +60,18 @@ FloatImage::FloatImage(const FloatImage& image_to_copy) {
- }
-
- FloatImage::FloatImage(const int width, const int height, const int channels) {
-- OpenImageIO::ImageSpec image_spec(width, height, channels,
-- OpenImageIO::TypeDesc::FLOAT);
-+ OIIO_NAMESPACE::ImageSpec image_spec(width, height, channels,
-+ OIIO_NAMESPACE::TypeDesc::FLOAT);
- image_.reset(image_spec);
- }
-
- FloatImage::FloatImage(const int width, const int height, const int channels,
- float* buffer)
-- : image_(OpenImageIO::ImageSpec(width, height, channels,
-- OpenImageIO::TypeDesc::FLOAT),
-+ : image_(OIIO_NAMESPACE::ImageSpec(width, height, channels,
-+ OIIO_NAMESPACE::TypeDesc::FLOAT),
- reinterpret_cast<void*>(buffer)) {}
-
--FloatImage::FloatImage(const OpenImageIO::ImageBuf& image) {
-+FloatImage::FloatImage(const OIIO_NAMESPACE::ImageBuf& image) {
- image_.copy(image);
- }
-
-@@ -80,11 +80,11 @@ FloatImage& FloatImage::operator=(const FloatImage& image2) {
- return *this;
- }
-
--OpenImageIO::ImageBuf& FloatImage::GetOpenImageIOImageBuf() {
-+OIIO_NAMESPACE::ImageBuf& FloatImage::GetOpenImageIOImageBuf() {
- return image_;
- }
-
--const OpenImageIO::ImageBuf& FloatImage::GetOpenImageIOImageBuf() const {
-+const OIIO_NAMESPACE::ImageBuf& FloatImage::GetOpenImageIOImageBuf() const {
- return image_;
- }
-
-@@ -110,7 +110,7 @@ void FloatImage::SetXY(const int x,
- DCHECK_LT(c, Channels());
-
- // Set the ROI to be the precise pixel location in the correct channel.
-- OpenImageIO::ImageBuf::Iterator<float> it(image_, x, y, 0);
-+ OIIO_NAMESPACE::ImageBuf::Iterator<float> it(image_, x, y, 0);
- it[c] = value;
- }
-
-@@ -195,9 +195,9 @@ void FloatImage::ConvertToGrayscaleImage() {
- // Compute luminance via a weighted sum of R,G,B (assuming Rec709 primaries
- // and a linear scale)
- const float luma_weights[3] = {.2126, .7152, .0722};
-- OpenImageIO::ImageBuf source = image_;
-+ OIIO_NAMESPACE::ImageBuf source = image_;
- image_.clear();
-- OpenImageIO::ImageBufAlgo::channel_sum(image_, source, luma_weights);
-+ OIIO_NAMESPACE::ImageBufAlgo::channel_sum(image_, source, luma_weights);
- }
-
- void FloatImage::ConvertToRGBImage() {
-@@ -207,13 +207,13 @@ void FloatImage::ConvertToRGBImage() {
- }
-
- // Copy the single grayscale channel into r, g, and b.
-- const OpenImageIO::ImageBuf source(image_);
-- OpenImageIO::ImageSpec image_spec(Width(), Height(), 3,
-- OpenImageIO::TypeDesc::FLOAT);
-+ const OIIO_NAMESPACE::ImageBuf source(image_);
-+ OIIO_NAMESPACE::ImageSpec image_spec(Width(), Height(), 3,
-+ OIIO_NAMESPACE::TypeDesc::FLOAT);
- image_.reset(image_spec);
-- OpenImageIO::ImageBufAlgo::paste(image_, 0, 0, 0, 0, source);
-- OpenImageIO::ImageBufAlgo::paste(image_, 0, 0, 0, 1, source);
-- OpenImageIO::ImageBufAlgo::paste(image_, 0, 0, 0, 2, source);
-+ OIIO_NAMESPACE::ImageBufAlgo::paste(image_, 0, 0, 0, 0, source);
-+ OIIO_NAMESPACE::ImageBufAlgo::paste(image_, 0, 0, 0, 1, source);
-+ OIIO_NAMESPACE::ImageBufAlgo::paste(image_, 0, 0, 0, 2, source);
- }
-
- FloatImage FloatImage::AsGrayscaleImage() const {
-@@ -238,12 +238,12 @@ FloatImage FloatImage::AsRGBImage() const {
- }
-
- void FloatImage::ScalePixels(float scale) {
-- OpenImageIO::ImageBufAlgo::mul(image_, image_, scale);
-+ OIIO_NAMESPACE::ImageBufAlgo::mul(image_, image_, scale);
- }
-
- void FloatImage::Read(const std::string& filename) {
- image_.reset(filename);
-- image_.read(0, 0, true, OpenImageIO::TypeDesc::FLOAT);
-+ image_.read(0, 0, true, OIIO_NAMESPACE::TypeDesc::FLOAT);
- }
-
- void FloatImage::Write(const std::string& filename) const {
-@@ -259,19 +259,19 @@ const float* FloatImage::Data() const {
-
- FloatImage FloatImage::ComputeGradientX() const {
- float sobel_filter_x[9] = {-.125, 0, .125, -.25, 0, .25, -.125, 0, .125};
-- OpenImageIO::ImageSpec spec(3, 3, 1, OpenImageIO::TypeDesc::FLOAT);
-- OpenImageIO::ImageBuf kernel_x(spec, sobel_filter_x);
-- OpenImageIO::ImageBuf gradient_x;
-- OpenImageIO::ImageBufAlgo::convolve(gradient_x, image_, kernel_x, false);
-+ OIIO_NAMESPACE::ImageSpec spec(3, 3, 1, OIIO_NAMESPACE::TypeDesc::FLOAT);
-+ OIIO_NAMESPACE::ImageBuf kernel_x(spec, sobel_filter_x);
-+ OIIO_NAMESPACE::ImageBuf gradient_x;
-+ OIIO_NAMESPACE::ImageBufAlgo::convolve(gradient_x, image_, kernel_x, false);
- return FloatImage(gradient_x);
- }
-
- FloatImage FloatImage::ComputeGradientY() const {
- float sobel_filter_y[9] = {-.125, -.25, -.125, 0, 0, 0, .125, .25, .125};
-- OpenImageIO::ImageSpec spec(3, 3, 1, OpenImageIO::TypeDesc::FLOAT);
-- OpenImageIO::ImageBuf kernel_y(spec, sobel_filter_y);
-- OpenImageIO::ImageBuf gradient_y;
-- OpenImageIO::ImageBufAlgo::convolve(gradient_y, image_, kernel_y, false);
-+ OIIO_NAMESPACE::ImageSpec spec(3, 3, 1, OIIO_NAMESPACE::TypeDesc::FLOAT);
-+ OIIO_NAMESPACE::ImageBuf kernel_y(spec, sobel_filter_y);
-+ OIIO_NAMESPACE::ImageBuf gradient_y;
-+ OIIO_NAMESPACE::ImageBufAlgo::convolve(gradient_y, image_, kernel_y, false);
- return FloatImage(gradient_y);
- }
-
-@@ -280,28 +280,28 @@ FloatImage FloatImage::ComputeGradient() const {
- float sobel_filter_x[9] = {-.125, 0, .125, -.25, 0, .25, -.125, 0, .125};
- float sobel_filter_y[9] = {-.125, -.25, -.125, 0, 0, 0, .125, .25, .125};
-
-- OpenImageIO::ImageSpec spec(3, 3, 1, OpenImageIO::TypeDesc::FLOAT);
-- OpenImageIO::ImageBuf kernel_x(spec, sobel_filter_x);
-- OpenImageIO::ImageBuf kernel_y(spec, sobel_filter_y);
-+ OIIO_NAMESPACE::ImageSpec spec(3, 3, 1, OIIO_NAMESPACE::TypeDesc::FLOAT);
-+ OIIO_NAMESPACE::ImageBuf kernel_x(spec, sobel_filter_x);
-+ OIIO_NAMESPACE::ImageBuf kernel_y(spec, sobel_filter_y);
-
-- OpenImageIO::ImageBuf gradient, gradient_x, gradient_y;
-- OpenImageIO::ImageBufAlgo::convolve(gradient_x, image_, kernel_x, false);
-- OpenImageIO::ImageBufAlgo::abs(gradient_x, gradient_x);
-- OpenImageIO::ImageBufAlgo::convolve(gradient_y, image_, kernel_y, false);
-- OpenImageIO::ImageBufAlgo::abs(gradient_y, gradient_y);
-- OpenImageIO::ImageBufAlgo::add(gradient, gradient_x, gradient_y);
-+ OIIO_NAMESPACE::ImageBuf gradient, gradient_x, gradient_y;
-+ OIIO_NAMESPACE::ImageBufAlgo::convolve(gradient_x, image_, kernel_x, false);
-+ OIIO_NAMESPACE::ImageBufAlgo::abs(gradient_x, gradient_x);
-+ OIIO_NAMESPACE::ImageBufAlgo::convolve(gradient_y, image_, kernel_y, false);
-+ OIIO_NAMESPACE::ImageBufAlgo::abs(gradient_y, gradient_y);
-+ OIIO_NAMESPACE::ImageBufAlgo::add(gradient, gradient_x, gradient_y);
-
- return FloatImage(gradient);
- }
-
- void FloatImage::ApproximateGaussianBlur(const double sigma) {
-- OpenImageIO::ImageBuf kernel;
-- OpenImageIO::ImageBufAlgo::make_kernel(kernel, "gaussian", 5.0f, 5.0f);
-- OpenImageIO::ImageBufAlgo::convolve(image_, image_, kernel);
-+ OIIO_NAMESPACE::ImageBuf kernel;
-+ OIIO_NAMESPACE::ImageBufAlgo::make_kernel(kernel, "gaussian", 5.0f, 5.0f);
-+ OIIO_NAMESPACE::ImageBufAlgo::convolve(image_, image_, kernel);
- }
-
- void FloatImage::MedianFilter(const int patch_width) {
-- CHECK(OpenImageIO::ImageBufAlgo::median_filter(image_, image_, patch_width));
-+ CHECK(OIIO_NAMESPACE::ImageBufAlgo::median_filter(image_, image_, patch_width));
- }
-
- void FloatImage::Integrate(FloatImage* integral) const {
-@@ -327,14 +327,14 @@ void FloatImage::Resize(int new_width, int new_height) {
- // If the image has not been initialized then initialize it with the image
- // spec. Otherwise resize the image and interpolate pixels accordingly.
- if (!image_.initialized()) {
-- OpenImageIO::ImageSpec image_spec(new_width, new_height, Channels(),
-- OpenImageIO::TypeDesc::FLOAT);
-+ OIIO_NAMESPACE::ImageSpec image_spec(new_width, new_height, Channels(),
-+ OIIO_NAMESPACE::TypeDesc::FLOAT);
- image_.reset(image_spec);
- } else {
-- OpenImageIO::ROI roi(0, new_width, 0, new_height, 0, 1, 0, Channels());
-- OpenImageIO::ImageBuf dst;
-- CHECK(OpenImageIO::ImageBufAlgo::resize(dst, image_, nullptr, roi))
-- << OpenImageIO::geterror();
-+ OIIO_NAMESPACE::ROI roi(0, new_width, 0, new_height, 0, 1, 0, Channels());
-+ OIIO_NAMESPACE::ImageBuf dst;
-+ CHECK(OIIO_NAMESPACE::ImageBufAlgo::resize(dst, image_, nullptr, roi))
-+ << OIIO_NAMESPACE::geterror();
- image_.copy(dst);
- }
- }
-diff --git a/src/theia/image/image.h b/src/theia/image/image.h
-index e4f22cc..29122d2 100644
---- a/src/theia/image/image.h
-+++ b/src/theia/image/image.h
-@@ -64,7 +64,7 @@ class FloatImage {
-
- // Copy function. This is a deep copy of the image.
- FloatImage(const FloatImage& image_to_copy);
-- explicit FloatImage(const OpenImageIO::ImageBuf& image);
-+ explicit FloatImage(const OIIO_NAMESPACE::ImageBuf& image);
- FloatImage& operator=(const FloatImage& image2);
- ~FloatImage() {}
-
-@@ -74,8 +74,8 @@ class FloatImage {
- // wrapper for all algorithms. Getting a reference to the ImageBuf provides
- // efficient access to the image data so that the image processing algorithms
- // or other manipulations may be executed on the pixels.
-- OpenImageIO::ImageBuf& GetOpenImageIOImageBuf();
-- const OpenImageIO::ImageBuf& GetOpenImageIOImageBuf() const;
-+ OIIO_NAMESPACE::ImageBuf& GetOpenImageIOImageBuf();
-+ const OIIO_NAMESPACE::ImageBuf& GetOpenImageIOImageBuf() const;
-
- // Image information
- int Rows() const;
-@@ -171,7 +171,7 @@ class FloatImage {
- void Resize(double scale);
-
- protected:
-- OpenImageIO::ImageBuf image_;
-+ OIIO_NAMESPACE::ImageBuf image_;
- };
- } // namespace theia
-
-diff --git a/src/theia/image/image_test.cc b/src/theia/image/image_test.cc
-index 894dc30..340488d 100644
---- a/src/theia/image/image_test.cc
-+++ b/src/theia/image/image_test.cc
-@@ -53,11 +53,11 @@ RandomNumberGenerator rng(51);
- std::string img_filename = THEIA_DATA_DIR + std::string("/") + FLAGS_test_img;
-
- #define ASSERT_IMG_EQ(oiio_img, theia_img, rows, cols) \
-- oiio_img.read(0, 0, true, OpenImageIO::TypeDesc::FLOAT); \
-+ oiio_img.read(0, 0, true, OIIO_NAMESPACE::TypeDesc::FLOAT); \
- ASSERT_EQ(oiio_img.oriented_width(), theia_img.Cols()); \
- ASSERT_EQ(oiio_img.oriented_height(), theia_img.Rows()); \
- ASSERT_EQ(oiio_img.nchannels(), theia_img.Channels()); \
-- OpenImageIO::ImageBuf::ConstIterator<float> it(oiio_img); \
-+ OIIO_NAMESPACE::ImageBuf::ConstIterator<float> it(oiio_img); \
- for (; !it.done(); ++it) { \
- for (int c = 0; c < oiio_img.nchannels(); c++) { \
- ASSERT_EQ(it[c], theia_img.GetXY(it.x(), it.y(), c)); \
-@@ -89,7 +89,7 @@ float Interpolate(const FloatImage& image,
-
- // Test that inputting the old fashioned way is the same as through our class.
- TEST(Image, RGBInput) {
-- OpenImageIO::ImageBuf oiio_img(img_filename.c_str());
-+ OIIO_NAMESPACE::ImageBuf oiio_img(img_filename.c_str());
- oiio_img.read();
- FloatImage theia_img(img_filename);
-
-@@ -102,7 +102,7 @@ TEST(Image, RGBInput) {
-
- // Test that width and height methods work.
- TEST(Image, RGBColsRows) {
-- OpenImageIO::ImageBuf oiio_img(img_filename.c_str());
-+ OIIO_NAMESPACE::ImageBuf oiio_img(img_filename.c_str());
- FloatImage theia_img(img_filename);
-
- int true_height = oiio_img.oriented_height();
-@@ -114,10 +114,10 @@ TEST(Image, RGBColsRows) {
-
- // Test that inputting the old fashioned way is the same as through our class.
- TEST(Image, ConvertToGrayscaleImage) {
-- OpenImageIO::ImageBuf oiio_img(img_filename.c_str());
-- OpenImageIO::ImageBuf gray_img;
-+ OIIO_NAMESPACE::ImageBuf oiio_img(img_filename.c_str());
-+ OIIO_NAMESPACE::ImageBuf gray_img;
- const float luma_weights[3] = {.2126, .7152, .0722};
-- OpenImageIO::ImageBufAlgo::channel_sum(gray_img, oiio_img, luma_weights);
-+ OIIO_NAMESPACE::ImageBufAlgo::channel_sum(gray_img, oiio_img, luma_weights);
-
- FloatImage theia_img(img_filename);
- theia_img.ConvertToGrayscaleImage();
-@@ -131,10 +131,10 @@ TEST(Image, ConvertToGrayscaleImage) {
- }
-
- TEST(Image, ConvertToRGBImage) {
-- OpenImageIO::ImageBuf oiio_img(img_filename.c_str());
-- OpenImageIO::ImageBuf gray_img;
-+ OIIO_NAMESPACE::ImageBuf oiio_img(img_filename.c_str());
-+ OIIO_NAMESPACE::ImageBuf gray_img;
- const float luma_weights[3] = {.2126, .7152, .0722};
-- OpenImageIO::ImageBufAlgo::channel_sum(gray_img, oiio_img, luma_weights);
-+ OIIO_NAMESPACE::ImageBufAlgo::channel_sum(gray_img, oiio_img, luma_weights);
-
- // This should result in an image with the grayscale image copied in each
- // channel.
-@@ -148,7 +148,7 @@ TEST(Image, ConvertToRGBImage) {
-
- // Check that all channels have equal value and that the value is equal to the
- // grayscale image.
-- for (OpenImageIO::ImageBuf::ConstIterator<float> it(gray_img);
-+ for (OIIO_NAMESPACE::ImageBuf::ConstIterator<float> it(gray_img);
- !it.done();
- ++it) {
- ASSERT_EQ(it[0], rgb_img.GetXY(it.x(), it.y(), 0));
-diff --git a/src/theia/sfm/exif_reader.cc b/src/theia/sfm/exif_reader.cc
-index 48c049a..fea884d 100644
---- a/src/theia/sfm/exif_reader.cc
-+++ b/src/theia/sfm/exif_reader.cc
-@@ -127,8 +127,8 @@ bool ExifReader::ExtractEXIFMetadata(
- CameraIntrinsicsPrior* camera_intrinsics_prior) const {
- CHECK_NOTNULL(camera_intrinsics_prior);
-
-- OpenImageIO::ImageBuf image(image_file);
-- OpenImageIO::ImageSpec image_spec = image.spec();
-+ OIIO_NAMESPACE::ImageBuf image(image_file);
-+ OIIO_NAMESPACE::ImageSpec image_spec = image.spec();
-
- // Set the image dimensions.
- camera_intrinsics_prior->image_width = image_spec.width;
-@@ -154,7 +154,7 @@ bool ExifReader::ExtractEXIFMetadata(
- camera_intrinsics_prior->focal_length.is_set = true;
-
- // Set GPS latitude.
-- const OpenImageIO::ImageIOParameter* latitude =
-+ const OIIO_NAMESPACE::ImageIOParameter* latitude =
- image_spec.find_attribute("GPS:Latitude");
- if (latitude != nullptr) {
- camera_intrinsics_prior->latitude.is_set = true;
-@@ -173,7 +173,7 @@ bool ExifReader::ExtractEXIFMetadata(
- }
-
- // Set GPS longitude.
-- const OpenImageIO::ImageIOParameter* longitude =
-+ const OIIO_NAMESPACE::ImageIOParameter* longitude =
- image_spec.find_attribute("GPS:Longitude");
- if (longitude != nullptr) {
- camera_intrinsics_prior->longitude.is_set = true;
-@@ -193,7 +193,7 @@ bool ExifReader::ExtractEXIFMetadata(
-
-
- // Set GSP altitude.
-- const OpenImageIO::ImageIOParameter* altitude =
-+ const OIIO_NAMESPACE::ImageIOParameter* altitude =
- image_spec.find_attribute("GPS:Altitude");
- if (altitude != nullptr) {
- camera_intrinsics_prior->altitude.is_set = true;
-@@ -205,7 +205,7 @@ bool ExifReader::ExtractEXIFMetadata(
- }
-
- bool ExifReader::SetFocalLengthFromExif(
-- const OpenImageIO::ImageSpec& image_spec,
-+ const OIIO_NAMESPACE::ImageSpec& image_spec,
- CameraIntrinsicsPrior* camera_intrinsics_prior) const {
- static const float kMinFocalLength = 1e-2;
-
-@@ -268,7 +268,7 @@ bool ExifReader::SetFocalLengthFromExif(
- }
-
- bool ExifReader::SetFocalLengthFromSensorDatabase(
-- const OpenImageIO::ImageSpec& image_spec,
-+ const OIIO_NAMESPACE::ImageSpec& image_spec,
- CameraIntrinsicsPrior* camera_intrinsics_prior) const {
- const int max_image_dimension = std::max(image_spec.width, image_spec.height);
- const float exif_focal_length =
-diff --git a/src/theia/sfm/exif_reader.h b/src/theia/sfm/exif_reader.h
-index 3049cf4..d9d3108 100644
---- a/src/theia/sfm/exif_reader.h
-+++ b/src/theia/sfm/exif_reader.h
-@@ -74,13 +74,13 @@ class ExifReader {
- // Sets the focal length from the focal plane resolution. Returns true if a
- // valid focal length is found and false otherwise.
- bool SetFocalLengthFromExif(
-- const OpenImageIO::ImageSpec& image_spec,
-+ const OIIO_NAMESPACE::ImageSpec& image_spec,
- CameraIntrinsicsPrior* camera_intrinsics_prior) const;
-
- // Sets the focal length from a look up in the sensor width database. Returns
- // true if a valid focal length is found and false otherwise.
- bool SetFocalLengthFromSensorDatabase(
-- const OpenImageIO::ImageSpec& image_spec,
-+ const OIIO_NAMESPACE::ImageSpec& image_spec,
- CameraIntrinsicsPrior* camera_intrinsics_prior) const;
-
- std::unordered_map<std::string, double> sensor_width_database_;
-diff --git a/src/theia/sfm/undistort_image.cc b/src/theia/sfm/undistort_image.cc
-index 95a061d..ae0690e 100644
---- a/src/theia/sfm/undistort_image.cc
-+++ b/src/theia/sfm/undistort_image.cc
-@@ -160,9 +160,9 @@ void RemoveImageLensDistortion(const Camera& distorted_camera,
- // For each pixel in the undistorted image, find the coordinate in the
- // distorted image and set the pixel color accordingly.
- const int num_channels = distorted_image.Channels();
-- OpenImageIO::ImageBuf& undistorted_img =
-+ OIIO_NAMESPACE::ImageBuf& undistorted_img =
- undistorted_image->GetOpenImageIOImageBuf();
-- OpenImageIO::ImageBuf::Iterator<float> undistorted_it(undistorted_img);
-+ OIIO_NAMESPACE::ImageBuf::Iterator<float> undistorted_it(undistorted_img);
- for (; !undistorted_it.done(); ++undistorted_it) {
- Eigen::Vector2d image_point(undistorted_it.x() + 0.5,
- undistorted_it.y() + 0.5);
diff --git a/ports/theia/fix-vlfeat-static.patch b/ports/theia/fix-vlfeat-static.patch
deleted file mode 100644
index cbade039f..000000000
--- a/ports/theia/fix-vlfeat-static.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-diff --git a/libraries/vlfeat/CMakeLists.txt b/libraries/vlfeat/CMakeLists.txt
-index d248bcf..24469c9 100644
---- a/libraries/vlfeat/CMakeLists.txt
-+++ b/libraries/vlfeat/CMakeLists.txt
-@@ -16,11 +16,11 @@ set(vl_sources
- set_source_files_properties(${vl_sources} PROPERTIES LANGUAGE C)
-
- if (MSVC)
-- add_definitions(-DVL_BUILD_DLL)
-+ #add_definitions(-DVL_BUILD_DLL)
- add_definitions(-DVL_DISABLE_SSE2)
- endif (MSVC)
-
--add_library(vlfeat SHARED ${vl_sources})
-+add_library(vlfeat ${vl_sources})
- install(TARGETS vlfeat
- EXPORT TheiaExport
- RUNTIME DESTINATION bin
-diff --git a/libraries/vlfeat/vl/host.h b/libraries/vlfeat/vl/host.h
-index 4fdb86c..01c1134 100644
---- a/libraries/vlfeat/vl/host.h
-+++ b/libraries/vlfeat/vl/host.h
-@@ -316,18 +316,24 @@ defined(__DOXYGEN__)
- # define snprintf _snprintf
- # define isnan _isnan
- #endif
--# ifdef VL_BUILD_DLL
-+# if defined(VL_BUILD_DLL)
- # ifdef __cplusplus
- # define VL_EXPORT extern "C" __declspec(dllexport)
- # else
- # define VL_EXPORT extern __declspec(dllexport)
- # endif
--# else
-+# elif defined(VL_DLL)
- # ifdef __cplusplus
- # define VL_EXPORT extern "C" __declspec(dllimport)
- # else
- # define VL_EXPORT extern __declspec(dllimport)
- # endif
-+# else
-+# ifdef __cplusplus
-+# define VL_EXPORT extern "C"
-+# else
-+# define VL_EXPORT extern
-+# endif
- # endif
- #endif
-
diff --git a/ports/theia/portfile.cmake b/ports/theia/portfile.cmake
index a6dc5d02f..c131ac095 100644
--- a/ports/theia/portfile.cmake
+++ b/ports/theia/portfile.cmake
@@ -2,31 +2,23 @@ include(vcpkg_common_functions)
vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
-if(VCPKG_TARGET_ARCHIECTURE STREQUAL "x86")
- message(FATAL_ERROR "theia requires ceres[suitesparse] which depends on suitesparse which depends on openblas which is unavailable on x86.")
-endif()
-
-
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO sweeneychris/TheiaSfM
REF v0.8
SHA512 2f620389c415badec36f4b44be0378fc62761dd6b2ee4cd7033b13573c372f098e248553575fb2cceb757b1ca00e86a11c67e03b6077e0a4b0f8797065746312
HEAD_REF master
-)
-
-vcpkg_apply_patches(
- SOURCE_PATH ${SOURCE_PATH}
PATCHES
- ${CMAKE_CURRENT_LIST_DIR}/fix-cmakelists.patch
- ${CMAKE_CURRENT_LIST_DIR}/fix-vlfeat-static.patch
- ${CMAKE_CURRENT_LIST_DIR}/fix-glog-error.patch
- ${CMAKE_CURRENT_LIST_DIR}/fix-find-suitesparse.patch
- ${CMAKE_CURRENT_LIST_DIR}/fix-oiio.patch
+ fix-external-dependencies.patch
)
+file(REMOVE ${SOURCE_PATH}/cmake/FindSuiteSparse.cmake)
+file(REMOVE ${SOURCE_PATH}/cmake/FindGflags.cmake)
+file(REMOVE ${SOURCE_PATH}/cmake/FindGlog.cmake)
+
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
OPTIONS
-DBUILD_TESTING=OFF
-DTHEIA_USE_EXTERNAL_CEREAL=ON
@@ -34,28 +26,19 @@ vcpkg_configure_cmake(
)
vcpkg_install_cmake()
-
-vcpkg_fixup_cmake_targets(CONFIG_PATH "CMake")
-
-# Changes target search path
-file(READ ${CURRENT_PACKAGES_DIR}/share/theia/TheiaConfig.cmake THEIA_TARGETS)
-string(REPLACE "get_filename_component(CURRENT_ROOT_INSTALL_DIR\n \${THEIA_CURRENT_CONFIG_INSTALL_DIR}/../ ABSOLUTE)"
- "get_filename_component(CURRENT_ROOT_INSTALL_DIR\n \${THEIA_CURRENT_CONFIG_INSTALL_DIR}/../../ ABSOLUTE)" THEIA_TARGETS "${THEIA_TARGETS}")
-file(WRITE ${CURRENT_PACKAGES_DIR}/share/theia/TheiaConfig.cmake "${THEIA_TARGETS}")
-
+vcpkg_fixup_cmake_targets()
vcpkg_copy_pdbs()
# Clean
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/optimo)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/optimo)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/theia/libraries/akaze/cimg/cmake-modules)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/theia/libraries/akaze/cmake)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/theia/libraries/akaze/datasets)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/theia/libraries/spectra/doxygen)
-file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/optimo)
# Handle copyright
-file(COPY ${SOURCE_PATH}/license.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/theia)
-file(RENAME ${CURRENT_PACKAGES_DIR}/share/theia/license.txt ${CURRENT_PACKAGES_DIR}/share/theia/copyright)
+file(INSTALL ${SOURCE_PATH}/license.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/theia RENAME copyright)
file(COPY ${SOURCE_PATH}/data/camera_sensor_database_license.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/theia)