diff options
| author | Stefano Sinigardi <stesinigardi@hotmail.com> | 2019-06-01 00:48:17 +0200 |
|---|---|---|
| committer | Victor Romero <romerosanchezv@gmail.com> | 2019-05-31 15:48:17 -0700 |
| commit | 5898891125b00a3ec2b698bc496735ab997669f5 (patch) | |
| tree | ea6f52bc69dec26f7c88d6766234a7c507607a06 /ports/theia | |
| parent | 26a9338c5055193915290527eacb37f2ac7fdcb8 (diff) | |
| download | vcpkg-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/CONTROL | 8 | ||||
| -rw-r--r-- | ports/theia/fix-cmakelists.patch | 310 | ||||
| -rw-r--r-- | ports/theia/fix-external-dependencies.patch | 405 | ||||
| -rw-r--r-- | ports/theia/fix-find-suitesparse.patch | 227 | ||||
| -rw-r--r-- | ports/theia/fix-glog-error.patch | 12 | ||||
| -rw-r--r-- | ports/theia/fix-oiio.patch | 391 | ||||
| -rw-r--r-- | ports/theia/fix-vlfeat-static.patch | 49 | ||||
| -rw-r--r-- | ports/theia/portfile.cmake | 35 |
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) |
