diff options
| author | Arkady Shapkin <arkady.shapkin@gmail.com> | 2017-06-30 18:44:23 +0300 |
|---|---|---|
| committer | Arkady Shapkin <arkady.shapkin@gmail.com> | 2017-07-20 13:12:24 +0300 |
| commit | 2ff2c1562a797cc0d43f27ea6e078fb8316073f6 (patch) | |
| tree | fbc1f819952da416e1d367967d563046f8c5b30c | |
| parent | c8e26828e41ca1032dc4d6cb6660d4a5ca588d4c (diff) | |
| download | vcpkg-2ff2c1562a797cc0d43f27ea6e078fb8316073f6.tar.gz vcpkg-2ff2c1562a797cc0d43f27ea6e078fb8316073f6.zip | |
[theia] Initial commit
| -rw-r--r-- | ports/theia/CONTROL | 4 | ||||
| -rw-r--r-- | ports/theia/fix-cmakelists.patch | 310 | ||||
| -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-vlfeat-static.patch | 49 | ||||
| -rw-r--r-- | ports/theia/portfile.cmake | 58 |
6 files changed, 660 insertions, 0 deletions
diff --git a/ports/theia/CONTROL b/ports/theia/CONTROL new file mode 100644 index 000000000..554009d2d --- /dev/null +++ b/ports/theia/CONTROL @@ -0,0 +1,4 @@ +Source: theia +Version: 0.7-d15154a +Build-Depends: flann, cereal, ceres, openimageio, glew, freeglut +Description: An open source library for multiview geometry and structure from motion
\ No newline at end of file diff --git a/ports/theia/fix-cmakelists.patch b/ports/theia/fix-cmakelists.patch new file mode 100644 index 000000000..674543c68 --- /dev/null +++ b/ports/theia/fix-cmakelists.patch @@ -0,0 +1,310 @@ +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-find-suitesparse.patch b/ports/theia/fix-find-suitesparse.patch new file mode 100644 index 000000000..f7de44aa0 --- /dev/null +++ b/ports/theia/fix-find-suitesparse.patch @@ -0,0 +1,227 @@ +--- 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 new file mode 100644 index 000000000..1e72c9f35 --- /dev/null +++ b/ports/theia/fix-glog-error.patch @@ -0,0 +1,12 @@ +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-vlfeat-static.patch b/ports/theia/fix-vlfeat-static.patch new file mode 100644 index 000000000..cbade039f --- /dev/null +++ b/ports/theia/fix-vlfeat-static.patch @@ -0,0 +1,49 @@ +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 new file mode 100644 index 000000000..a45089225 --- /dev/null +++ b/ports/theia/portfile.cmake @@ -0,0 +1,58 @@ +if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) + message(STATUS "Warning: Dynamic building not supported yet. Building static.") + set(VCPKG_LIBRARY_LINKAGE static) +endif() + +include(vcpkg_common_functions) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO sweeneychris/TheiaSfM + REF d15154a6c30ea48e7d135be126e2936802e476ad + SHA512 e3cb29b1806b6d2ed161c28432ad8788f756e03db55f883bfa2c4b389b506aa46909f0de57460e93e38926d8103382c54f51685bb9035688e4c7378f913c2de0 + 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 +) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + OPTIONS + -DBUILD_TESTING=OFF + -DTHEIA_USE_EXTERNAL_CEREAL=ON + -DTHEIA_USE_EXTERNAL_FLANN=ON +) + +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_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}/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(COPY ${SOURCE_PATH}/data/camera_sensor_database_license.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/theia) |
