aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefano Sinigardi <stesinigardi@hotmail.com>2020-08-28 07:13:05 +0200
committerGitHub <noreply@github.com>2020-08-27 22:13:05 -0700
commit0a506f7c5e7ecc85893855fcd6bf3ace96d590ae (patch)
treeb7dc536d835684fef12f244df69ede649a357a4e
parent68003004c045c527d1c74c238abd29ae619e60bc (diff)
downloadvcpkg-0a506f7c5e7ecc85893855fcd6bf3ace96d590ae.tar.gz
vcpkg-0a506f7c5e7ecc85893855fcd6bf3ace96d590ae.zip
[OpenMVG/OpenMVS] fix tools (#12229)
-rw-r--r--ports/armadillo/CONTROL4
-rw-r--r--ports/ceres/0001_cmakelists_fixes.patch13
-rw-r--r--ports/ceres/0004_blas_linux_fix.patch22
-rw-r--r--ports/ceres/0004_fix_find_eigen.patch122
-rw-r--r--ports/ceres/CONTROL2
-rw-r--r--ports/ceres/portfile.cmake19
-rw-r--r--ports/dlib/CONTROL4
-rw-r--r--ports/eigen3/CONTROL2
-rw-r--r--ports/eigen3/portfile.cmake11
-rw-r--r--ports/ensmallen/CONTROL5
-rw-r--r--ports/geogram/CONTROL3
-rw-r--r--ports/lapack-reference/FindLAPACK.cmake2
-rw-r--r--ports/lapack/CONTROL4
-rw-r--r--ports/lapack/clapack/FindLAPACK.cmake701
-rw-r--r--ports/lapack/clapack/vcpkg-cmake-wrapper.cmake10
-rw-r--r--ports/mlpack/CONTROL4
-rw-r--r--ports/mlpack/portfile.cmake56
-rw-r--r--ports/nanogui/CONTROL4
-rw-r--r--ports/nanogui/portfile.cmake15
-rw-r--r--ports/openblas/FindBLAS.cmake816
-rw-r--r--ports/openblas/openblas_common.h16
-rw-r--r--ports/openblas/portfile.cmake10
-rw-r--r--ports/openblas/vcpkg-cmake-wrapper.cmake2
-rw-r--r--ports/openmvg/CONTROL7
-rw-r--r--ports/openmvg/build_fixes.patch (renamed from ports/openmvg/fixcmake.patch)1144
-rw-r--r--ports/openmvg/fix-config-cmake.patch13
-rw-r--r--ports/openmvg/portfile.cmake128
-rw-r--r--ports/openmvs/CONTROL12
-rw-r--r--ports/openmvs/fix-build.patch408
-rw-r--r--ports/openmvs/portfile.cmake56
-rw-r--r--ports/shogun/CONTROL5
-rw-r--r--ports/shogun/portfile.cmake11
-rw-r--r--ports/suitesparse/CONTROL11
-rw-r--r--ports/suitesparse/FindCXSparse.cmake75
-rw-r--r--ports/suitesparse/add-find-package-metis.patch46
-rw-r--r--ports/suitesparse/build_fixes.patch281
-rw-r--r--ports/suitesparse/portfile.cmake49
-rw-r--r--ports/suitesparse/suitesparse.patch151
-rw-r--r--ports/suitesparse/vcpkg-cmake-wrapper_cxsparse.cmake10
-rw-r--r--ports/theia/CONTROL3
-rw-r--r--ports/theia/fix-external-dependencies.patch57
-rw-r--r--ports/theia/portfile.cmake7
-rw-r--r--ports/vlfeat/CMakeLists.txt159
-rw-r--r--ports/vlfeat/CONTROL4
-rw-r--r--ports/vlfeat/expose_missing_symbols.patch79
-rw-r--r--ports/vlfeat/portfile.cmake33
-rw-r--r--scripts/ci.baseline.txt3
47 files changed, 2482 insertions, 2117 deletions
diff --git a/ports/armadillo/CONTROL b/ports/armadillo/CONTROL
index c266b9112..850809579 100644
--- a/ports/armadillo/CONTROL
+++ b/ports/armadillo/CONTROL
@@ -1,5 +1,5 @@
Source: armadillo
Version: 2019-04-16
-Port-Version: 9
+Port-Version: 10
Description: Armadillo is a high quality linear algebra library (matrix maths) for the C++ language, aiming towards a good balance between speed and ease of use
-Build-Depends: openblas (!osx), lapack
+Build-Depends: openblas, lapack
diff --git a/ports/ceres/0001_cmakelists_fixes.patch b/ports/ceres/0001_cmakelists_fixes.patch
index f269f05ee..87a3785d5 100644
--- a/ports/ceres/0001_cmakelists_fixes.patch
+++ b/ports/ceres/0001_cmakelists_fixes.patch
@@ -31,19 +31,10 @@ index 02c72b5..62d8c59 100644
endif (MINIGLOG)
if (NOT SCHUR_SPECIALIZATIONS)
-@@ -582,7 +562,7 @@ include_directories(
- # Note that this is *not* propagated to clients, ie CERES_INCLUDE_DIRS
- # used by clients after find_package(Ceres) does not identify Eigen as
- # as system headers.
--include_directories(SYSTEM ${EIGEN_INCLUDE_DIRS})
-+include_directories(SYSTEM ${EIGEN_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS}/Eigen)
-
- if (SUITESPARSE)
- include_directories(${SUITESPARSE_INCLUDE_DIRS})
-@@ -917,8 +897,6 @@ install(FILES "${Ceres_BINARY_DIR}/CeresConfig-install.cmake"
+@@ -917,8 +897,5 @@ install(FILES "${Ceres_BINARY_DIR}/CeresConfig-install.cmake"
DESTINATION ${RELATIVE_CMAKECONFIG_INSTALL_DIR})
install(FILES "${Ceres_BINARY_DIR}/CeresConfigVersion.cmake"
- "${Ceres_SOURCE_DIR}/cmake/FindEigen.cmake"
+- "${Ceres_SOURCE_DIR}/cmake/FindEigen.cmake"
- "${Ceres_SOURCE_DIR}/cmake/FindGlog.cmake"
- "${Ceres_SOURCE_DIR}/cmake/FindGflags.cmake"
DESTINATION ${RELATIVE_CMAKECONFIG_INSTALL_DIR})
diff --git a/ports/ceres/0004_blas_linux_fix.patch b/ports/ceres/0004_blas_linux_fix.patch
deleted file mode 100644
index 5fffee5e2..000000000
--- a/ports/ceres/0004_blas_linux_fix.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff --git a/internal/ceres/blas.cc b/internal/ceres/blas.cc
-index 3ba63bb..071a26e 100644
---- a/internal/ceres/blas.cc
-+++ b/internal/ceres/blas.cc
-@@ -33,7 +33,7 @@
- #include "glog/logging.h"
-
- #ifndef CERES_NO_LAPACK
--extern "C" void dsyrk_(char* uplo,
-+extern "C" void dsyrk(char* uplo,
- char* trans,
- int* n,
- int* k,
-@@ -64,7 +64,7 @@ void BLAS::SymmetricRankKUpdate(int num_rows,
- int k = transpose ? num_rows : num_cols;
- int lda = k;
- int ldc = n;
-- dsyrk_(&uplo,
-+ dsyrk(&uplo,
- &trans,
- &n,
- &k,
diff --git a/ports/ceres/0004_fix_find_eigen.patch b/ports/ceres/0004_fix_find_eigen.patch
new file mode 100644
index 000000000..ad92228c0
--- /dev/null
+++ b/ports/ceres/0004_fix_find_eigen.patch
@@ -0,0 +1,122 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 7033de0..5235baa 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -209,40 +209,40 @@ endif (IOS)
+ unset(CERES_COMPILE_OPTIONS)
+
+ # Eigen.
+-find_package(Eigen REQUIRED)
+-if (EIGEN_FOUND)
+- message("-- Found Eigen version ${EIGEN_VERSION}: ${EIGEN_INCLUDE_DIRS}")
+- if (EIGEN_VERSION VERSION_LESS 3.1.0)
++find_package(Eigen3 REQUIRED)
++if (EIGEN3_FOUND)
++ message(STATUS "Found Eigen version ${EIGEN3_VERSION_STRING}: ${EIGEN3_INCLUDE_DIRS}")
++ if (EIGEN3_VERSION_STRING VERSION_LESS 3.1.0)
+ message(FATAL_ERROR "-- Ceres requires Eigen version >= 3.1.0 in order "
+ "that Eigen/SparseCore be available, detected version of Eigen is: "
+- "${EIGEN_VERSION}")
+- endif (EIGEN_VERSION VERSION_LESS 3.1.0)
++ "${EIGEN3_VERSION_STRING}")
++ endif (EIGEN3_VERSION_STRING VERSION_LESS 3.1.0)
+
+ if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*)" AND
+- EIGEN_VERSION VERSION_LESS 3.3.4)
++ EIGEN3_VERSION_STRING VERSION_LESS 3.3.4)
+ # As per issue #289: https://github.com/ceres-solver/ceres-solver/issues/289
+ # the bundle_adjustment_test will fail for Eigen < 3.3.4 on aarch64.
+ message(FATAL_ERROR "-- Ceres requires Eigen version >= 3.3.4 on aarch64. "
+- "Detected version of Eigen is: ${EIGEN_VERSION}.")
++ "Detected version of Eigen is: ${EIGEN3_VERSION_STRING}.")
+ endif()
+
+ if (EIGENSPARSE)
+- message("-- Enabling use of Eigen as a sparse linear algebra library.")
++ message(STATUS "Enabling use of Eigen as a sparse linear algebra library.")
+ list(APPEND CERES_COMPILE_OPTIONS CERES_USE_EIGEN_SPARSE)
+- if (EIGEN_VERSION VERSION_LESS 3.2.2)
++ if (EIGEN3_VERSION_STRING VERSION_LESS 3.2.2)
+ message(" WARNING:")
+ message("")
+- message(" Your version of Eigen (${EIGEN_VERSION}) is older than ")
++ message(" Your version of Eigen (${EIGEN3_VERSION_STRING}) is older than ")
+ message(" version 3.2.2. The performance of SPARSE_NORMAL_CHOLESKY ")
+ message(" and SPARSE_SCHUR linear solvers will suffer.")
+- endif (EIGEN_VERSION VERSION_LESS 3.2.2)
++ endif (EIGEN3_VERSION_STRING VERSION_LESS 3.2.2)
+ else (EIGENSPARSE)
+ message("-- Disabling use of Eigen as a sparse linear algebra library.")
+ message(" This does not affect the covariance estimation algorithm ")
+ message(" which can still use the EIGEN_SPARSE_QR algorithm.")
+ add_definitions(-DEIGEN_MPL2_ONLY)
+ endif (EIGENSPARSE)
+-endif (EIGEN_FOUND)
++endif (EIGEN3_FOUND)
+
+ if (LAPACK)
+ find_package(LAPACK QUIET)
+@@ -562,7 +562,7 @@ include_directories(
+ # Note that this is *not* propagated to clients, ie CERES_INCLUDE_DIRS
+ # used by clients after find_package(Ceres) does not identify Eigen as
+ # as system headers.
+-include_directories(SYSTEM ${EIGEN_INCLUDE_DIRS})
++include_directories(${EIGEN3_INCLUDE_DIRS})
+
+ if (SUITESPARSE)
+ include_directories(${SUITESPARSE_INCLUDE_DIRS})
+diff --git a/cmake/CeresConfig.cmake.in b/cmake/CeresConfig.cmake.in
+index c4ed71f..b3d6a17 100644
+--- a/cmake/CeresConfig.cmake.in
++++ b/cmake/CeresConfig.cmake.in
+@@ -202,39 +202,39 @@ set(CERES_VERSION @CERES_VERSION@ )
+
+ # Eigen.
+ # Flag set during configuration and build of Ceres.
+-set(CERES_EIGEN_VERSION @EIGEN_VERSION@)
++set(CERES_EIGEN_VERSION @EIGEN3_VERSION_STRING@)
+ set(EIGEN_WAS_BUILT_WITH_CMAKE @FOUND_INSTALLED_EIGEN_CMAKE_CONFIGURATION@)
+ # Append the locations of Eigen when Ceres was built to the search path hints.
+ if (EIGEN_WAS_BUILT_WITH_CMAKE)
+ set(Eigen3_DIR @Eigen3_DIR@)
+ set(EIGEN_PREFER_EXPORTED_EIGEN_CMAKE_CONFIGURATION TRUE)
+ else()
+- list(APPEND EIGEN_INCLUDE_DIR_HINTS @EIGEN_INCLUDE_DIR@)
++ list(APPEND EIGEN_INCLUDE_DIR_HINTS @EIGEN3_INCLUDE_DIR@)
+ endif()
+ # Search quietly to control the timing of the error message if not found. The
+ # search should be for an exact match, but for usability reasons do a soft
+ # match and reject with an explanation below.
+-find_package(Eigen ${CERES_EIGEN_VERSION} QUIET)
+-if (EIGEN_FOUND)
+- if (NOT EIGEN_VERSION VERSION_EQUAL CERES_EIGEN_VERSION)
++find_package(Eigen3 ${CERES_EIGEN_VERSION} QUIET)
++if (EIGEN3_FOUND)
++ if (NOT EIGEN3_VERSION_STRING VERSION_EQUAL CERES_EIGEN_VERSION)
+ # CMake's VERSION check in FIND_PACKAGE() will accept any version >= the
+ # specified version. However, only version = is supported. Improve
+ # usability by explaining why we don't accept non-exact version matching.
+ ceres_report_not_found("Found Eigen dependency, but the version of Eigen "
+- "found (${EIGEN_VERSION}) does not exactly match the version of Eigen "
++ "found (${EIGEN3_VERSION_STRING}) does not exactly match the version of Eigen "
+ "Ceres was compiled with (${CERES_EIGEN_VERSION}). This can cause subtle "
+ "bugs by triggering violations of the One Definition Rule. See the "
+ "Wikipedia article http://en.wikipedia.org/wiki/One_Definition_Rule "
+ "for more details")
+ endif ()
+ message(STATUS "Found required Ceres dependency: "
+- "Eigen version ${CERES_EIGEN_VERSION} in ${EIGEN_INCLUDE_DIRS}")
+-else (EIGEN_FOUND)
++ "Eigen version ${CERES_EIGEN_VERSION} in ${EIGEN3_INCLUDE_DIRS}")
++else (EIGEN3_FOUND)
+ ceres_report_not_found("Missing required Ceres "
+ "dependency: Eigen version ${CERES_EIGEN_VERSION}, please set "
+- "EIGEN_INCLUDE_DIR.")
+-endif (EIGEN_FOUND)
+-list(APPEND CERES_INCLUDE_DIRS ${EIGEN_INCLUDE_DIRS})
++ "EIGEN3_INCLUDE_DIR.")
++endif (EIGEN3_FOUND)
++list(APPEND CERES_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIRS})
+
+ # Glog.
+ include (CMakeFindDependencyMacro)
diff --git a/ports/ceres/CONTROL b/ports/ceres/CONTROL
index ecd8f1de6..5870df378 100644
--- a/ports/ceres/CONTROL
+++ b/ports/ceres/CONTROL
@@ -1,6 +1,6 @@
Source: ceres
Version: 1.14.0
-Port-Version: 8
+Port-Version: 9
Build-Depends: glog, eigen3
Homepage: https://github.com/ceres-solver/ceres-solver
Description: non-linear optimization package
diff --git a/ports/ceres/portfile.cmake b/ports/ceres/portfile.cmake
index d2d781b59..e7c455c56 100644
--- a/ports/ceres/portfile.cmake
+++ b/ports/ceres/portfile.cmake
@@ -6,10 +6,6 @@ if(VCPKG_CRT_LINKAGE STREQUAL "static")
set(MSVC_USE_STATIC_CRT_VALUE ON)
endif()
-if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux")
- set(ADDITIONAL_PATCH "0004_blas_linux_fix.patch")
-endif()
-
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO ceres-solver/ceres-solver
@@ -20,15 +16,14 @@ vcpkg_from_github(
0001_cmakelists_fixes.patch
0002_use_glog_target.patch
0003_fix_exported_ceres_config.patch
- ${ADDITIONAL_PATCH}
+ 0004_fix_find_eigen.patch
)
+file(REMOVE ${SOURCE_PATH}/cmake/FindCXSparse.cmake)
file(REMOVE ${SOURCE_PATH}/cmake/FindGflags.cmake)
file(REMOVE ${SOURCE_PATH}/cmake/FindGlog.cmake)
-#file(REMOVE ${SOURCE_PATH}/cmake/FindEigen.cmake)
+file(REMOVE ${SOURCE_PATH}/cmake/FindEigen.cmake)
file(REMOVE ${SOURCE_PATH}/cmake/FindSuiteSparse.cmake)
-#file(REMOVE ${SOURCE_PATH}/cmake/FindTBB.cmake)
-
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
"suitesparse" SUITESPARSE
@@ -52,7 +47,7 @@ vcpkg_configure_cmake(
vcpkg_install_cmake()
-if(NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+if(VCPKG_TARGET_IS_WINDOWS)
vcpkg_fixup_cmake_targets(CONFIG_PATH CMake)
else()
vcpkg_fixup_cmake_targets(CONFIG_PATH lib${LIB_SUFFIX}/cmake/Ceres)
@@ -61,7 +56,7 @@ endif()
vcpkg_copy_pdbs()
# Changes target search path
-if(NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+if(VCPKG_TARGET_IS_WINDOWS)
file(READ ${CURRENT_PACKAGES_DIR}/share/ceres/CeresConfig.cmake CERES_TARGETS)
string(REPLACE "get_filename_component(CURRENT_ROOT_INSTALL_DIR\n \${CERES_CURRENT_CONFIG_DIR}/../"
"get_filename_component(CURRENT_ROOT_INSTALL_DIR\n \${CERES_CURRENT_CONFIG_DIR}/../../" CERES_TARGETS "${CERES_TARGETS}")
@@ -77,6 +72,4 @@ endif()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
-# Handle copyright of suitesparse and metis
-file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/ceres)
-file(RENAME ${CURRENT_PACKAGES_DIR}/share/ceres/LICENSE ${CURRENT_PACKAGES_DIR}/share/ceres/copyright)
+file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
diff --git a/ports/dlib/CONTROL b/ports/dlib/CONTROL
index 339284327..042b2b791 100644
--- a/ports/dlib/CONTROL
+++ b/ports/dlib/CONTROL
@@ -1,7 +1,7 @@
Source: dlib
Version: 19.21
-Port-Version: 2
-Build-Depends: libjpeg-turbo, libpng, openblas (!osx), lapack
+Port-Version: 3
+Build-Depends: libjpeg-turbo, libpng, openblas, lapack
Homepage: https://github.com/davisking/dlib
Description: Modern C++ toolkit containing machine learning algorithms and tools for creating complex software in C++
Default-Features: fftw3, sqlite3
diff --git a/ports/eigen3/CONTROL b/ports/eigen3/CONTROL
index 9a60167d2..90d0726e2 100644
--- a/ports/eigen3/CONTROL
+++ b/ports/eigen3/CONTROL
@@ -1,5 +1,5 @@
Source: eigen3
Version: 3.3.7
-Port-Version: 6
+Port-Version: 7
Homepage: http://eigen.tuxfamily.org
Description: C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.
diff --git a/ports/eigen3/portfile.cmake b/ports/eigen3/portfile.cmake
index dedfd026b..6d72fdc5e 100644
--- a/ports/eigen3/portfile.cmake
+++ b/ports/eigen3/portfile.cmake
@@ -25,16 +25,9 @@ vcpkg_configure_cmake(
)
vcpkg_install_cmake()
-
-file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include ${CURRENT_PACKAGES_DIR}/debug/share)
-
-vcpkg_replace_string(${CURRENT_PACKAGES_DIR}/share/eigen3/Eigen3Targets.cmake
- "set(_IMPORT_PREFIX " "get_filename_component(_IMPORT_PREFIX \"\${CMAKE_CURRENT_LIST_DIR}/../..\" ABSOLUTE) #"
-)
-
+vcpkg_fixup_cmake_targets()
vcpkg_fixup_pkgconfig()
-file(GLOB INCLUDES ${CURRENT_PACKAGES_DIR}/include/eigen3/*)
-file(COPY ${INCLUDES} DESTINATION ${CURRENT_PACKAGES_DIR}/include)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include ${CURRENT_PACKAGES_DIR}/debug/share)
file(INSTALL ${SOURCE_PATH}/COPYING.README DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
diff --git a/ports/ensmallen/CONTROL b/ports/ensmallen/CONTROL
index bf13812e4..39a63bc91 100644
--- a/ports/ensmallen/CONTROL
+++ b/ports/ensmallen/CONTROL
@@ -1,7 +1,6 @@
Source: ensmallen
Version: 2.11.2
-Port-Version: 1
+Port-Version: 2
Homepage: https://github.com/mlpack/ensmallen
Description: A header-only C++ library for mathematical optimization.
-Build-Depends: openblas (!osx), lapack, armadillo
-
+Build-Depends: openblas, lapack, armadillo
diff --git a/ports/geogram/CONTROL b/ports/geogram/CONTROL
index 8661aa1e4..83b210ac3 100644
--- a/ports/geogram/CONTROL
+++ b/ports/geogram/CONTROL
@@ -1,8 +1,9 @@
Source: geogram
Version: 1.7.5
+Port-Version: 1
Homepage: https://gforge.inria.fr/projects/geogram/
Description: Geogram is a programming library of geometric algorithms.
-Build-Depends: openblas (!osx), lapack
+Build-Depends: openblas, lapack
Feature: graphics
Description: Build viewers and geogram_gfx library.
diff --git a/ports/lapack-reference/FindLAPACK.cmake b/ports/lapack-reference/FindLAPACK.cmake
index 1edaa0f83..b6df00319 100644
--- a/ports/lapack-reference/FindLAPACK.cmake
+++ b/ports/lapack-reference/FindLAPACK.cmake
@@ -482,7 +482,7 @@ if(BLAS_FOUND)
LAPACK
cheev
""
- "lapack;-lm;-lgfortran"
+ "lapack;m;gfortran"
""
""
""
diff --git a/ports/lapack/CONTROL b/ports/lapack/CONTROL
index c4e27f77d..b16436d7f 100644
--- a/ports/lapack/CONTROL
+++ b/ports/lapack/CONTROL
@@ -1,4 +1,4 @@
Source: lapack
-Version: 1
+Version: 2
Description: Metapackage for packages which provide LAPACK
-Build-Depends: clapack ((arm&windows)|uwp), lapack-reference(!uwp&!(arm&windows)) \ No newline at end of file
+Build-Depends: clapack ((arm&windows)|uwp), lapack-reference(!uwp&!(arm&windows))
diff --git a/ports/lapack/clapack/FindLAPACK.cmake b/ports/lapack/clapack/FindLAPACK.cmake
index 0b5924ff4..eff9bae70 100644
--- a/ports/lapack/clapack/FindLAPACK.cmake
+++ b/ports/lapack/clapack/FindLAPACK.cmake
@@ -1,468 +1,233 @@
-# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindLAPACK
-----------
-
-Find LAPACK library
-
-This module finds an installed fortran library that implements the
-LAPACK linear-algebra interface (see http://www.netlib.org/lapack/).
-
-The approach follows that taken for the autoconf macro file,
-acx_lapack.m4 (distributed at
-http://ac-archive.sourceforge.net/ac-archive/acx_lapack.html).
-
-Input Variables
-^^^^^^^^^^^^^^^
-
-The following variables may be set to influence this module's behavior:
-
-``BLA_STATIC``
- if ``ON`` use static linkage
-
-``BLA_VENDOR``
- If set, checks only the specified vendor, if not set checks all the
- possibilities. List of vendors valid in this module:
-
- * ``Intel10_32`` (intel mkl v10 32 bit)
- * ``Intel10_64lp`` (intel mkl v10+ 64 bit, threaded code, lp64 model)
- * ``Intel10_64lp_seq`` (intel mkl v10+ 64 bit, sequential code, lp64 model)
- * ``Intel10_64ilp`` (intel mkl v10+ 64 bit, threaded code, ilp64 model)
- * ``Intel10_64ilp_seq`` (intel mkl v10+ 64 bit, sequential code, ilp64 model)
- * ``Intel`` (obsolete versions of mkl 32 and 64 bit)
- * ``OpenBLAS``
- * ``FLAME``
- * ``ACML``
- * ``Apple``
- * ``NAS``
- * ``Generic``
-
-``BLA_F95``
- if ``ON`` tries to find BLAS95/LAPACK95
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module defines the following variables:
-
-``LAPACK_FOUND``
- library implementing the LAPACK interface is found
-``LAPACK_LINKER_FLAGS``
- uncached list of required linker flags (excluding -l and -L).
-``LAPACK_LIBRARIES``
- uncached list of libraries (using full path name) to link against
- to use LAPACK
-``LAPACK95_LIBRARIES``
- uncached list of libraries (using full path name) to link against
- to use LAPACK95
-``LAPACK95_FOUND``
- library implementing the LAPACK95 interface is found
-
-.. note::
-
- C or CXX must be enabled to use Intel MKL
-
- For example, to use Intel MKL libraries and/or Intel compiler:
-
- .. code-block:: cmake
-
- set(BLA_VENDOR Intel10_64lp)
- find_package(LAPACK)
-#]=======================================================================]
-
-set(_lapack_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
-
-# Check the language being used
-if( NOT (CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED OR CMAKE_Fortran_COMPILER_LOADED) )
- if(LAPACK_FIND_REQUIRED)
- message(FATAL_ERROR "FindLAPACK requires Fortran, C, or C++ to be enabled.")
- else()
- message(STATUS "Looking for LAPACK... - NOT found (Unsupported languages)")
- return()
- endif()
-endif()
-
-if (CMAKE_Fortran_COMPILER_LOADED)
-include(${CMAKE_ROOT}/Modules/CheckFortranFunctionExists.cmake)
-else ()
-include(${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake)
-endif ()
-include(${CMAKE_ROOT}/Modules/CMakePushCheckState.cmake)
-include(${CMAKE_ROOT}/Modules/SelectLibraryConfigurations.cmake)
-
-cmake_push_check_state()
-set(CMAKE_REQUIRED_QUIET ${LAPACK_FIND_QUIETLY})
-
-set(LAPACK_FOUND FALSE)
-set(LAPACK95_FOUND FALSE)
-
-# TODO: move this stuff to separate module
-
-macro(Check_Lapack_Libraries LIBRARIES _prefix _name _flags _list _blas _threads)
-# This macro checks for the existence of the combination of fortran libraries
-# given by _list. If the combination is found, this macro checks (using the
-# Check_Fortran_Function_Exists macro) whether can link against that library
-# combination using the name of a routine given by _name using the linker
-# flags given by _flags. If the combination of libraries is found and passes
-# the link test, LIBRARIES is set to the list of complete library paths that
-# have been found. Otherwise, LIBRARIES is set to FALSE.
-
-# N.B. _prefix is the prefix applied to the names of all cached variables that
-# are generated internally and marked advanced by this macro.
-
-set(_libraries_work TRUE)
-set(${LIBRARIES})
-set(${LIBRARIES}_RELEASE)
-set(_combined_name)
-if (NOT _libdir)
- if (WIN32)
- set(_libdir ENV LIB)
- elseif (APPLE)
- set(_libdir ENV DYLD_LIBRARY_PATH)
- else ()
- set(_libdir ENV LD_LIBRARY_PATH)
- endif ()
-endif ()
-
-list(APPEND _libdir "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}")
-
-foreach(_library ${_list})
- set(_combined_name ${_combined_name}_${_library})
-
- if(_libraries_work)
- if (BLA_STATIC)
- if (WIN32)
- set(CMAKE_FIND_LIBRARY_SUFFIXES .lib ${CMAKE_FIND_LIBRARY_SUFFIXES})
- endif ()
- if (APPLE)
- set(CMAKE_FIND_LIBRARY_SUFFIXES .lib ${CMAKE_FIND_LIBRARY_SUFFIXES})
- else ()
- set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
- endif ()
- else ()
- if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
- # for ubuntu's libblas3gf and liblapack3gf packages
- set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES} .so.3gf)
- endif ()
- endif ()
- find_library(${_prefix}_${_library}_LIBRARY_RELEASE
- NAMES ${_library}
- PATHS ${_libdir}
- )
- mark_as_advanced(${_prefix}_${_library}_LIBRARY_RELEASE)
- find_library(${_prefix}_${_library}_LIBRARY_DEBUG
- NAMES ${_library}d
- PATHS ${_libdir}
- )
- mark_as_advanced(${_prefix}_${_library}_LIBRARY_DEBUG)
- select_library_configurations(${_prefix}_${_library})
- if(NOT ${_prefix}_${_library}_LIBRARY_RELEASE MATCHES "NOTFOUND")
- set(${LIBRARIES}_RELEASE ${${LIBRARIES}_RELEASE} ${${_prefix}_${_library}_LIBRARY_RELEASE})
- endif()
- set(${LIBRARIES} ${${LIBRARIES}} ${${_prefix}_${_library}_LIBRARY})
- set(_libraries_work ${${_prefix}_${_library}_LIBRARY})
- endif()
-endforeach()
-
-if(_libraries_work)
- # Test this combination of libraries.
- if(NOT "${_blas}" STREQUAL "")
- string(GENEX_STRIP "${_blas}" _test_blas)
- endif()
- if(UNIX AND BLA_STATIC)
- set(CMAKE_REQUIRED_LIBRARIES ${_flags} "-Wl,--start-group" ${${LIBRARIES}_RELEASE} ${_test_blas} "-Wl,--end-group" ${_threads})
- else()
- set(CMAKE_REQUIRED_LIBRARIES ${_flags} ${${LIBRARIES}_RELEASE} ${_test_blas} ${_threads})
- endif()
- #message("DEBUG: CMAKE_REQUIRED_LIBRARIES = ${CMAKE_REQUIRED_LIBRARIES}")
- #message("DEBUG: _test_blas = ${_test_blas} former ${_blas}")
- if (NOT CMAKE_Fortran_COMPILER_LOADED)
- check_function_exists("${_name}_" ${_prefix}${_combined_name}_WORKS)
- else ()
- check_fortran_function_exists(${_name} ${_prefix}${_combined_name}_WORKS)
- endif ()
- set(CMAKE_REQUIRED_LIBRARIES)
- set(_test_blas)
- set(_libraries_work ${${_prefix}${_combined_name}_WORKS})
-# message("DEBUG: ${LIBRARIES} = ${${LIBRARIES}}")
-endif()
-
- if(_libraries_work)
- set(${LIBRARIES} ${${LIBRARIES}} "${_blas}" ${_threads})
- else()
- set(${LIBRARIES} FALSE)
- endif()
-
-endmacro()
-
-
-set(LAPACK_LINKER_FLAGS)
-set(LAPACK_LIBRARIES)
-set(LAPACK95_LIBRARIES)
-
-
-if(LAPACK_FIND_QUIETLY OR NOT LAPACK_FIND_REQUIRED)
- find_package(BLAS)
-else()
- find_package(BLAS REQUIRED)
-endif()
-
-
-if(BLAS_FOUND)
- set(LAPACK_LINKER_FLAGS ${BLAS_LINKER_FLAGS})
- if (NOT $ENV{BLA_VENDOR} STREQUAL "")
- set(BLA_VENDOR $ENV{BLA_VENDOR})
- else ()
- if(NOT BLA_VENDOR)
- set(BLA_VENDOR "All")
- endif()
- endif ()
-
-#intel lapack
-if (BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All")
- if (NOT WIN32)
- set(LAPACK_mkl_LM "-lm")
- set(LAPACK_mkl_LDL "-ldl")
- endif ()
- if (CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED)
- if(LAPACK_FIND_QUIETLY OR NOT LAPACK_FIND_REQUIRED)
- find_PACKAGE(Threads)
- else()
- find_package(Threads REQUIRED)
- endif()
-
- if (BLA_VENDOR MATCHES "_64ilp")
- set(LAPACK_mkl_ILP_MODE "ilp64")
- else ()
- set(LAPACK_mkl_ILP_MODE "lp64")
- endif ()
-
- set(LAPACK_SEARCH_LIBS "")
-
- if (BLA_F95)
- set(LAPACK_mkl_SEARCH_SYMBOL "cheev_f95")
- set(_LIBRARIES LAPACK95_LIBRARIES)
- set(_BLAS_LIBRARIES ${BLAS95_LIBRARIES})
-
- # old
- list(APPEND LAPACK_SEARCH_LIBS
- "mkl_lapack95")
- # new >= 10.3
- list(APPEND LAPACK_SEARCH_LIBS
- "mkl_intel_c")
- list(APPEND LAPACK_SEARCH_LIBS
- "mkl_lapack95_${LAPACK_mkl_ILP_MODE}")
- else()
- set(LAPACK_mkl_SEARCH_SYMBOL "cheev")
- set(_LIBRARIES LAPACK_LIBRARIES)
- set(_BLAS_LIBRARIES ${BLAS_LIBRARIES})
-
- # old
- list(APPEND LAPACK_SEARCH_LIBS
- "mkl_lapack")
- endif()
-
- # First try empty lapack libs
- if (NOT ${_LIBRARIES})
- check_lapack_libraries(
- ${_LIBRARIES}
- LAPACK
- ${LAPACK_mkl_SEARCH_SYMBOL}
- ""
- ""
- "${_BLAS_LIBRARIES}"
- ""
- )
- endif ()
- # Then try the search libs
- foreach (IT ${LAPACK_SEARCH_LIBS})
- if (NOT ${_LIBRARIES})
- check_lapack_libraries(
- ${_LIBRARIES}
- LAPACK
- ${LAPACK_mkl_SEARCH_SYMBOL}
- ""
- "${IT}"
- "${_BLAS_LIBRARIES}"
- "${CMAKE_THREAD_LIBS_INIT};${LAPACK_mkl_LM};${LAPACK_mkl_LDL}"
- )
- endif ()
- endforeach ()
-
- unset(LAPACK_mkl_ILP_MODE)
- unset(LAPACK_mkl_SEARCH_SYMBOL)
- unset(LAPACK_mkl_LM)
- unset(LAPACK_mkl_LDL)
- endif ()
-endif()
-
-if (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All")
- if(NOT LAPACK_LIBRARIES)
- check_lapack_libraries(
- LAPACK_LIBRARIES
- LAPACK
- cheev
- ""
- "goto2"
- "${BLAS_LIBRARIES}"
- ""
- )
- endif()
-endif ()
-
-if (BLA_VENDOR STREQUAL "OpenBLAS" OR BLA_VENDOR STREQUAL "All")
- if(NOT LAPACK_LIBRARIES)
- check_lapack_libraries(
- LAPACK_LIBRARIES
- LAPACK
- cheev
- ""
- "openblas"
- "${BLAS_LIBRARIES}"
- ""
- )
- endif()
-endif ()
-
-if (BLA_VENDOR STREQUAL "FLAME" OR BLA_VENDOR STREQUAL "All")
- if(NOT LAPACK_LIBRARIES)
- check_lapack_libraries(
- LAPACK_LIBRARIES
- LAPACK
- cheev
- ""
- "flame"
- "${BLAS_LIBRARIES}"
- ""
- )
- endif()
-endif ()
-
-#acml lapack
- if (BLA_VENDOR MATCHES "ACML" OR BLA_VENDOR STREQUAL "All")
- if (BLAS_LIBRARIES MATCHES ".+acml.+")
- set (LAPACK_LIBRARIES ${BLAS_LIBRARIES})
- endif ()
- endif ()
-
-# Apple LAPACK library?
-if (BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All")
- if(NOT LAPACK_LIBRARIES)
- check_lapack_libraries(
- LAPACK_LIBRARIES
- LAPACK
- cheev
- ""
- "Accelerate"
- "${BLAS_LIBRARIES}"
- ""
- )
- endif()
-endif ()
-if (BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All")
- if ( NOT LAPACK_LIBRARIES )
- check_lapack_libraries(
- LAPACK_LIBRARIES
- LAPACK
- cheev
- ""
- "vecLib"
- "${BLAS_LIBRARIES}"
- ""
- )
- endif ()
-endif ()
-# Generic LAPACK library?
-if (BLA_VENDOR STREQUAL "Generic" OR
- BLA_VENDOR STREQUAL "ATLAS" OR
- BLA_VENDOR STREQUAL "All")
- if ( NOT LAPACK_LIBRARIES )
- check_lapack_libraries(
- LAPACK_LIBRARIES
- LAPACK
- cheev
- ""
- "lapack"
- "${BLAS_LIBRARIES}"
- ""
- )
- endif ()
- if ( NOT LAPACK_LIBRARIES )
- check_lapack_libraries(
- LAPACK_LIBRARIES
- LAPACK
- cheev
- ""
- "lapack;libf2c"
- "${BLAS_LIBRARIES}"
- ""
- )
- endif ()
- if ( NOT LAPACK_LIBRARIES )
- check_lapack_libraries(
- LAPACK_LIBRARIES
- LAPACK
- cheev
- ""
- "lapack;f2c"
- "${BLAS_LIBRARIES}"
- ""
- )
- endif ()
-endif ()
-
-else()
- message(STATUS "LAPACK requires BLAS")
-endif()
-
-if(BLA_F95)
- if(LAPACK95_LIBRARIES)
- set(LAPACK95_FOUND TRUE)
- else()
- set(LAPACK95_FOUND FALSE)
- endif()
- if(NOT LAPACK_FIND_QUIETLY)
- if(LAPACK95_FOUND)
- message(STATUS "A library with LAPACK95 API found.")
- else()
- if(LAPACK_FIND_REQUIRED)
- message(FATAL_ERROR
- "A required library with LAPACK95 API not found. Please specify library location."
- )
- else()
- message(STATUS
- "A library with LAPACK95 API not found. Please specify library location."
- )
- endif()
- endif()
- endif()
- set(LAPACK_FOUND "${LAPACK95_FOUND}")
- set(LAPACK_LIBRARIES "${LAPACK95_LIBRARIES}")
-else()
- if(LAPACK_LIBRARIES)
- set(LAPACK_FOUND TRUE)
- else()
- set(LAPACK_FOUND FALSE)
- endif()
-
- if(NOT LAPACK_FIND_QUIETLY)
- if(LAPACK_FOUND)
- message(STATUS "A library with LAPACK API found.")
- else()
- if(LAPACK_FIND_REQUIRED)
- message(FATAL_ERROR
- "A required library with LAPACK API not found. Please specify library location."
- )
- else()
- message(STATUS
- "A library with LAPACK API not found. Please specify library location."
- )
- endif()
- endif()
- endif()
-endif()
-
-cmake_pop_check_state()
-set(CMAKE_FIND_LIBRARY_SUFFIXES ${_lapack_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
+#.rst:
+# clapack config for vcpkg
+# ------------
+#
+# Find the clapack includes and library.
+#
+# Result Variables
+# ^^^^^^^^^^^^^^^^
+#
+# This script defines the following variables:
+#
+# ``CLAPACK_FOUND``
+# True if clapack library found
+#
+# ``CLAPACK_VERSION``
+# Containing the clapack version tag (manually defined)
+#
+# ``CLAPACK_INCLUDE_DIR``
+# Location of clapack headers
+#
+# ``CLAPACK_LIBRARY``
+# List of libraries to link with when using clapack
+#
+# Result Targets
+# ^^^^^^^^^^^^^^
+#
+# This script defines the following targets:
+#
+# ``clapack::clapack``
+# Target to use clapack
+#
+# Compatibility Variables
+# ^^^^^^^^^^^^^^^^^^^^^^^
+#
+# This script defines the following variables for compatibility reasons:
+#
+# ``F2C_FOUND``
+# True if f2c (fortran-to-c wrap layer) library found
+#
+# ``F2C_INCLUDE_DIR``
+# Location of clapack headers
+#
+# ``F2C_LIBRARY``
+# Library containing the fortran-to-c wrap layer, necessary for clapack and automatically included when used
+#
+# ``LAPACK_FOUND``
+# True if clapack library found
+#
+# ``LAPACK_VERSION``
+# Containing the clapack version tag (manually defined)
+#
+# ``LAPACK_INCLUDE_DIR``
+# Location of clapack headers
+#
+# ``LAPACK_LIBRARY``
+# List of libraries to link with when using clapack
+#
+# Compatibility Targets
+# ^^^^^^^^^^^^^^
+#
+# This script defines the following targets for compatibility reasons:
+#
+# ``lapack``
+# Target to use lapack
+
+include(${CMAKE_ROOT}/Modules/SelectLibraryConfigurations.cmake)
+include(${CMAKE_ROOT}/Modules/CheckSymbolExists.cmake)
+include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
+include(${CMAKE_ROOT}/Modules/CMakeFindDependencyMacro.cmake)
+
+set(CLAPACK_VERSION "3.2.1")
+
+set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
+find_dependency(Threads)
+
+if(UNIX)
+ find_library(ADDITIONAL_LAPACK_LIBRARY m)
+ set(PTHREAD_LINK_NAME "-pthread")
+endif()
+
+if(NOT F2C_LIBRARY)
+ find_library(F2C_LIBRARY_RELEASE NAMES f2c libf2c)
+ find_library(F2C_LIBRARY_DEBUG NAMES f2cd libf2cd)
+ select_library_configurations(F2C)
+
+ #keep a list of "pure" f2c libs, without dependencies
+ set(oF2C_LIBRARY_RELEASE ${F2C_LIBRARY_RELEASE})
+ set(oF2C_LIBRARY_DEBUG ${F2C_LIBRARY_DEBUG})
+ set(oF2C_LIBRARY ${F2C_LIBRARY})
+
+ list(APPEND F2C_LIBRARY ${ADDITIONAL_LAPACK_LIBRARY})
+endif()
+
+if(NOT LAPACK_LIBRARY)
+ find_library(LAPACK_LIBRARY_RELEASE NAMES lapack)
+ find_library(LAPACK_LIBRARY_DEBUG NAMES lapackd)
+
+ #keep a list of "pure" lapack libs, without dependencies
+ set(oLAPACK_LIBRARY_RELEASE ${LAPACK_LIBRARY_RELEASE})
+ set(oLAPACK_LIBRARY_DEBUG ${LAPACK_LIBRARY_DEBUG})
+ select_library_configurations(oLAPACK)
+
+ list(APPEND LAPACK_LIBRARY_RELEASE ${F2C_LIBRARY_RELEASE})
+ list(APPEND LAPACK_LIBRARY_DEBUG ${F2C_LIBRARY_DEBUG})
+
+ find_dependency(OpenBLAS)
+ get_property(_loc TARGET OpenBLAS::OpenBLAS PROPERTY IMPORTED_IMPLIB_RELEASE)
+ if(NOT _loc)
+ get_property(_loc TARGET OpenBLAS::OpenBLAS PROPERTY LOCATION_RELEASE)
+ endif()
+ set(LAPACK_BLAS_LIBRARY_RELEASE ${_loc})
+ get_property(_loc TARGET OpenBLAS::OpenBLAS PROPERTY IMPORTED_IMPLIB_DEBUG)
+ if(NOT _loc)
+ get_property(_loc TARGET OpenBLAS::OpenBLAS PROPERTY LOCATION_DEBUG)
+ endif()
+ set(LAPACK_BLAS_LIBRARY_DEBUG ${_loc})
+ select_library_configurations(LAPACK_BLAS)
+ list(APPEND LAPACK_LIBRARY_RELEASE ${LAPACK_BLAS_LIBRARY_RELEASE})
+ list(APPEND LAPACK_LIBRARY_DEBUG ${LAPACK_BLAS_LIBRARY_DEBUG})
+
+ select_library_configurations(LAPACK)
+ if(UNIX)
+ list(APPEND LAPACK_LIBRARY ${PTHREAD_LINK_NAME})
+ endif()
+endif()
+
+if(NOT F2C_INCLUDE_DIR)
+ find_path(F2C_INCLUDE_DIR NAMES f2c.h)
+endif()
+
+if(NOT LAPACK_INCLUDE_DIR)
+ find_path(LAPACK_INCLUDE_DIR NAMES clapack.h)
+endif()
+
+list(APPEND LAPACK_INCLUDE_DIR ${F2C_INCLUDE_DIR})
+set(LAPACK_INCLUDE_DIR "${LAPACK_INCLUDE_DIR}" CACHE PATH "" FORCE)
+set(LAPACK_INCLUDE_DIRS "${LAPACK_INCLUDE_DIR}" CACHE PATH "" FORCE)
+set(CLAPACK_INCLUDE_DIR "${LAPACK_INCLUDE_DIR}" CACHE PATH "" FORCE)
+set(CLAPACK_INCLUDE_DIRS "${LAPACK_INCLUDE_DIR}" CACHE PATH "" FORCE)
+set(F2C_INCLUDE_DIRS "${F2C_INCLUDE_DIR}" CACHE PATH "" FORCE)
+
+set(LAPACK_DLL_DIR ${LAPACK_INCLUDE_DIR})
+list(TRANSFORM LAPACK_DLL_DIR APPEND "/../bin")
+message(STATUS "LAPACK_DLL_DIR: ${LAPACK_DLL_DIR}")
+
+if(WIN32)
+ find_file(LAPACK_LIBRARY_RELEASE_DLL NAMES lapack.dll PATHS ${LAPACK_DLL_DIR})
+ find_file(LAPACK_LIBRARY_DEBUG_FOLDER NAMES lapackd.dll PATHS ${LAPACK_DLL_DIR})
+ find_file(F2C_LIBRARY_RELEASE_DLL NAMES f2c.dll libf2c.dll PATHS ${LAPACK_DLL_DIR})
+ find_file(F2C_LIBRARY_DEBUG_DLL NAMES f2cd.dll libf2cd.dll PATHS ${LAPACK_DLL_DIR})
+endif()
+
+set(LAPACK_BLAS_LIBRARY "${LAPACK_BLAS_LIBRARY}" CACHE STRING "" FORCE)
+set(F2C_LIBRARIES "${F2C_LIBRARY}" CACHE STRING "" FORCE)
+set(LAPACK_VERSION "${CLAPACK_VERSION}" CACHE STRING "" FORCE)
+set(LAPACK_LIBRARIES "${LAPACK_LIBRARY}" CACHE STRING "" FORCE)
+set(CLAPACK_LIBRARY "${LAPACK_LIBRARY}" CACHE STRING "" FORCE)
+set(CLAPACK_LIBRARIES "${LAPACK_LIBRARY}" CACHE STRING "" FORCE)
+
+set(LAPACK_LIBRARY "${LAPACK_LIBRARY}" CACHE STRING "" FORCE)
+set(F2C_LIBRARY "${F2C_LIBRARY}" CACHE STRING "" FORCE)
+set(LAPACK_LIBRARY_RELEASE "${LAPACK_LIBRARY_RELEASE}" CACHE STRING "" FORCE)
+set(LAPACK_LIBRARY_DEBUG "${LAPACK_LIBRARY_DEBUG}" CACHE STRING "" FORCE)
+set(F2C_LIBRARY_RELEASE "${F2C_LIBRARY_RELEASE}" CACHE STRING "" FORCE)
+set(F2C_LIBRARY_DEBUG "${F2C_LIBRARY_DEBUG}" CACHE STRING "" FORCE)
+
+find_package_handle_standard_args(LAPACK DEFAULT_MSG LAPACK_LIBRARY LAPACK_INCLUDE_DIR)
+mark_as_advanced(LAPACK_INCLUDE_DIR LAPACK_LIBRARY)
+
+#TARGETS
+if(CLAPACK_FOUND AND NOT TARGET clapack::clapack)
+ if(EXISTS "${LAPACK_LIBRARY_RELEASE_DLL}")
+ add_library(clapack::clapack SHARED IMPORTED)
+ set_target_properties(clapack::clapack PROPERTIES
+ IMPORTED_LOCATION_RELEASE "${LAPACK_LIBRARY_RELEASE_DLL}"
+ IMPORTED_IMPLIB_RELEASE "${oLAPACK_LIBRARY_RELEASE}"
+ INTERFACE_INCLUDE_DIRECTORIES "${LAPACK_INCLUDE_DIR}"
+ INTERFACE_LINK_LIBRARIES "$<$<NOT:$<CONFIG:DEBUG>>:${oF2C_LIBRARY_RELEASE}>;$<$<CONFIG:DEBUG>:${oF2C_LIBRARY_DEBUG}>;$<$<NOT:$<CONFIG:DEBUG>>:${LAPACK_BLAS_LIBRARY_RELEASE}>;$<$<CONFIG:DEBUG>:${LAPACK_BLAS_LIBRARY_DEBUG}>;$<LINK_ONLY:${ADDITIONAL_LAPACK_LIBRARY}>;$<LINK_ONLY:${PTHREAD_LINK_NAME}>"
+ IMPORTED_CONFIGURATIONS Release
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C")
+ if(EXISTS "${LAPACK_LIBRARY_DEBUG_DLL}")
+ set_property(TARGET clapack::clapack APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug)
+ set_target_properties(clapack::clapack PROPERTIES
+ IMPORTED_LOCATION_DEBUG "${LAPACK_LIBRARY_DEBUG_DLL}"
+ IMPORTED_IMPLIB_DEBUG "${oLAPACK_LIBRARY_DEBUG}")
+ endif()
+ else()
+ add_library(clapack::clapack UNKNOWN IMPORTED)
+ set_target_properties(clapack::clapack PROPERTIES
+ IMPORTED_LOCATION_RELEASE "${oLAPACK_LIBRARY_RELEASE}"
+ INTERFACE_INCLUDE_DIRECTORIES "${LAPACK_INCLUDE_DIR}"
+ INTERFACE_LINK_LIBRARIES "$<$<NOT:$<CONFIG:DEBUG>>:${oF2C_LIBRARY_RELEASE}>;$<$<CONFIG:DEBUG>:${oF2C_LIBRARY_DEBUG}>;$<$<NOT:$<CONFIG:DEBUG>>:${LAPACK_BLAS_LIBRARY_RELEASE}>;$<$<CONFIG:DEBUG>:${LAPACK_BLAS_LIBRARY_DEBUG}>;$<LINK_ONLY:${ADDITIONAL_LAPACK_LIBRARY}>;$<LINK_ONLY:${PTHREAD_LINK_NAME}>"
+ IMPORTED_CONFIGURATIONS Release
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C")
+ if(EXISTS "${LAPACK_LIBRARY_DEBUG}")
+ set_property(TARGET clapack::clapack APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug)
+ set_target_properties(clapack::clapack PROPERTIES
+ IMPORTED_LOCATION_DEBUG "${oLAPACK_LIBRARY_DEBUG}")
+ endif()
+ endif()
+endif()
+
+if(CLAPACK_FOUND AND NOT TARGET lapack)
+ if(EXISTS "${LAPACK_LIBRARY_RELEASE_DLL}")
+ add_library(lapack SHARED IMPORTED)
+ set_target_properties(lapack PROPERTIES
+ IMPORTED_LOCATION_RELEASE "${LAPACK_LIBRARY_RELEASE_DLL}"
+ IMPORTED_IMPLIB_RELEASE "${oLAPACK_LIBRARY_RELEASE}"
+ INTERFACE_INCLUDE_DIRECTORIES "${LAPACK_INCLUDE_DIR}"
+ INTERFACE_LINK_LIBRARIES "$<$<NOT:$<CONFIG:DEBUG>>:${oF2C_LIBRARY_RELEASE}>;$<$<CONFIG:DEBUG>:${oF2C_LIBRARY_DEBUG}>;$<$<NOT:$<CONFIG:DEBUG>>:${LAPACK_BLAS_LIBRARY_RELEASE}>;$<$<CONFIG:DEBUG>:${LAPACK_BLAS_LIBRARY_DEBUG}>;$<LINK_ONLY:${ADDITIONAL_LAPACK_LIBRARY}>;$<LINK_ONLY:${PTHREAD_LINK_NAME}>"
+ IMPORTED_CONFIGURATIONS Release
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C")
+ if(EXISTS "${LAPACK_LIBRARY_DEBUG_DLL}")
+ set_property(TARGET lapack APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug)
+ set_target_properties(lapack PROPERTIES
+ IMPORTED_LOCATION_DEBUG "${LAPACK_LIBRARY_DEBUG_DLL}"
+ IMPORTED_IMPLIB_DEBUG "${oLAPACK_LIBRARY_DEBUG}")
+ endif()
+ else()
+ add_library(lapack UNKNOWN IMPORTED)
+ set_target_properties(lapack PROPERTIES
+ IMPORTED_LOCATION_RELEASE "${oLAPACK_LIBRARY_RELEASE}"
+ INTERFACE_INCLUDE_DIRECTORIES "${LAPACK_INCLUDE_DIR}"
+ IMPORTED_CONFIGURATIONS Release
+ INTERFACE_LINK_LIBRARIES "$<$<NOT:$<CONFIG:DEBUG>>:${oF2C_LIBRARY_RELEASE}>;$<$<CONFIG:DEBUG>:${oF2C_LIBRARY_DEBUG}>;$<$<NOT:$<CONFIG:DEBUG>>:${LAPACK_BLAS_LIBRARY_RELEASE}>;$<$<CONFIG:DEBUG>:${LAPACK_BLAS_LIBRARY_DEBUG}>;$<LINK_ONLY:${ADDITIONAL_LAPACK_LIBRARY}>;$<LINK_ONLY:${PTHREAD_LINK_NAME}>"
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C")
+ if(EXISTS "${LAPACK_LIBRARY_DEBUG}")
+ set_property(TARGET lapack APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug)
+ set_target_properties(lapack PROPERTIES
+ IMPORTED_LOCATION_DEBUG "${oLAPACK_LIBRARY_DEBUG}")
+ endif()
+ endif()
+endif()
diff --git a/ports/lapack/clapack/vcpkg-cmake-wrapper.cmake b/ports/lapack/clapack/vcpkg-cmake-wrapper.cmake
index 26a0a1624..8c9af9e86 100644
--- a/ports/lapack/clapack/vcpkg-cmake-wrapper.cmake
+++ b/ports/lapack/clapack/vcpkg-cmake-wrapper.cmake
@@ -1,2 +1,10 @@
-include(${CMAKE_CURRENT_LIST_DIR}/FindLAPACK.cmake)
+set(LAPACK_PREV_MODULE_PATH ${CMAKE_MODULE_PATH})
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
+list(REMOVE_ITEM ARGS "NO_MODULE")
+list(REMOVE_ITEM ARGS "CONFIG")
+list(REMOVE_ITEM ARGS "MODULE")
+
+_find_package(${ARGS})
+
+set(CMAKE_MODULE_PATH ${LAPACK_PREV_MODULE_PATH}) \ No newline at end of file
diff --git a/ports/mlpack/CONTROL b/ports/mlpack/CONTROL
index 252c66997..7d3debb83 100644
--- a/ports/mlpack/CONTROL
+++ b/ports/mlpack/CONTROL
@@ -1,9 +1,9 @@
Source: mlpack
Version: 3.2.2
-Port-Version: 5
+Port-Version: 6
Homepage: https://github.com/mlpack/mlpack
Description: mlpack is a fast, flexible machine learning library, written in C++, that aims to provide fast, extensible implementations of cutting-edge machine learning algorithms.
-Build-Depends: openblas (!osx), lapack, boost, armadillo, ensmallen, stb
+Build-Depends: openblas, lapack, boost, armadillo, ensmallen, stb
Feature: tools
Description: Build command-line executables.
diff --git a/ports/mlpack/portfile.cmake b/ports/mlpack/portfile.cmake
index a7d73b2e3..11f6aa815 100644
--- a/ports/mlpack/portfile.cmake
+++ b/ports/mlpack/portfile.cmake
@@ -38,14 +38,56 @@ vcpkg_install_cmake()
vcpkg_copy_pdbs()
if("tools" IN_LIST FEATURES)
- file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/tools)
- file(GLOB MLPACK_TOOLS ${CURRENT_PACKAGES_DIR}/bin/*.exe)
- file(COPY ${MLPACK_TOOLS} DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
- file(REMOVE ${MLPACK_TOOLS})
- file(GLOB MLPACK_TOOLS_DEBUG ${CURRENT_PACKAGES_DIR}/debug/bin/*.exe)
- file(REMOVE ${MLPACK_TOOLS_DEBUG})
+ vcpkg_copy_tools(AUTO_CLEAN TOOL_NAMES
+ mlpack_adaboost
+ mlpack_approx_kfn
+ mlpack_cf
+ mlpack_dbscan
+ mlpack_decision_stump
+ mlpack_decision_tree
+ mlpack_det
+ mlpack_emst
+ mlpack_fastmks
+ mlpack_gmm_generate
+ mlpack_gmm_probability
+ mlpack_gmm_train
+ mlpack_hmm_generate
+ mlpack_hmm_loglik
+ mlpack_hmm_train
+ mlpack_hmm_viterbi
+ mlpack_hoeffding_tree
+ mlpack_kde
+ mlpack_kernel_pca
+ mlpack_kfn
+ mlpack_kmeans
+ mlpack_knn
+ mlpack_krann
+ mlpack_lars
+ mlpack_linear_regression
+ mlpack_linear_svm
+ mlpack_lmnn
+ mlpack_local_coordinate_coding
+ mlpack_logistic_regression
+ mlpack_lsh
+ mlpack_mean_shift
+ mlpack_nbc
+ mlpack_nca
+ mlpack_nmf
+ mlpack_pca
+ mlpack_perceptron
+ mlpack_preprocess_binarize
+ mlpack_preprocess_describe
+ mlpack_preprocess_imputer
+ mlpack_preprocess_scale
+ mlpack_preprocess_split
+ mlpack_radical
+ mlpack_random_forest
+ mlpack_range_search
+ mlpack_softmax_regression
+ mlpack_sparse_coding
+ )
endif()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
-file(INSTALL ${SOURCE_PATH}/COPYRIGHT.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) \ No newline at end of file
+file(INSTALL ${SOURCE_PATH}/COPYRIGHT.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
diff --git a/ports/nanogui/CONTROL b/ports/nanogui/CONTROL
index 63b70db69..9c532e4f1 100644
--- a/ports/nanogui/CONTROL
+++ b/ports/nanogui/CONTROL
@@ -1,5 +1,7 @@
Source: nanogui
Version: 2019-09-23
+Port-Version: 1
Homepage: https://github.com/wjakob/nanogui
Description: NanoGUI is a minimalistic cross-platform widget library for OpenGL 3.x or higher.
-Build-Depends: glfw3, nanovg, eigen3 \ No newline at end of file
+Build-Depends: glfw3, nanovg, eigen3
+Supports: !uwp
diff --git a/ports/nanogui/portfile.cmake b/ports/nanogui/portfile.cmake
index bc868e549..f1cb824a7 100644
--- a/ports/nanogui/portfile.cmake
+++ b/ports/nanogui/portfile.cmake
@@ -1,21 +1,20 @@
-include(vcpkg_common_functions)
-
-if(VCPKG_TARGET_IS_UWP)
- message(FATAL_ERROR "nanogui doesn't support UWP.")
-endif()
+vcpkg_fail_port_install(ON_TARGET "uwp")
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO wjakob/nanogui
- REF e9ec8a1a9861cf578d9c6e85a6420080aa715c03 #Commits on Sep 23, 2019
+ REF e9ec8a1a9861cf578d9c6e85a6420080aa715c03 #Commits on Sep 23, 2019
SHA512 36c93bf977862ced2df4030211e2b83625e60a11fc9fdb6c1f2996bb234758331d3f41a7fbafd25a5bca0239ed9bac9c93446a4a7fac4c5e6d7943af2be3e14a
HEAD_REF master
PATCHES
- fix-cmakelists.patch
+ fix-cmakelists.patch
)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
+ OPTIONS
+ -DNANOGUI_EIGEN_INCLUDE_DIR=${CURRENT_INSTALLED_DIR}/include/eigen3
+ -DEIGEN_INCLUDE_DIR=${CURRENT_INSTALLED_DIR}/include/eigen3
)
vcpkg_install_cmake()
@@ -23,4 +22,4 @@ vcpkg_copy_pdbs()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
# Handle copyright
-file(INSTALL ${SOURCE_PATH}/LICENSE.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) \ No newline at end of file
+file(INSTALL ${SOURCE_PATH}/LICENSE.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
diff --git a/ports/openblas/FindBLAS.cmake b/ports/openblas/FindBLAS.cmake
deleted file mode 100644
index 164e79f3b..000000000
--- a/ports/openblas/FindBLAS.cmake
+++ /dev/null
@@ -1,816 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindBLAS
---------
-
-Find Basic Linear Algebra Subprograms (BLAS) library
-
-This module finds an installed Fortran library that implements the
-BLAS linear-algebra interface (see http://www.netlib.org/blas/). The
-list of libraries searched for is taken from the ``autoconf`` macro file,
-``acx_blas.m4`` (distributed at
-http://ac-archive.sourceforge.net/ac-archive/acx_blas.html).
-
-Input Variables
-^^^^^^^^^^^^^^^
-
-The following variables may be set to influence this module's behavior:
-
-``BLA_STATIC``
- if ``ON`` use static linkage
-
-``BLA_VENDOR``
- If set, checks only the specified vendor, if not set checks all the
- possibilities. List of vendors valid in this module:
-
- * Goto
- * OpenBLAS
- * FLAME
- * ATLAS PhiPACK
- * CXML
- * DXML
- * SunPerf
- * SCSL
- * SGIMATH
- * IBMESSL
- * Intel10_32 (intel mkl v10 32 bit)
- * Intel10_64lp (intel mkl v10+ 64 bit, threaded code, lp64 model)
- * Intel10_64lp_seq (intel mkl v10+ 64 bit, sequential code, lp64 model)
- * Intel10_64ilp (intel mkl v10+ 64 bit, threaded code, ilp64 model)
- * Intel10_64ilp_seq (intel mkl v10+ 64 bit, sequential code, ilp64 model)
- * Intel (obsolete versions of mkl 32 and 64 bit)
- * ACML
- * ACML_MP
- * ACML_GPU
- * Apple
- * NAS
- * Generic
-
-``BLA_F95``
- if ``ON`` tries to find the BLAS95 interfaces
-
-``BLA_PREFER_PKGCONFIG``
- if set ``pkg-config`` will be used to search for a BLAS library first
- and if one is found that is preferred
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module defines the following variables:
-
-``BLAS_FOUND``
- library implementing the BLAS interface is found
-``BLAS_LINKER_FLAGS``
- uncached list of required linker flags (excluding ``-l`` and ``-L``).
-``BLAS_LIBRARIES``
- uncached list of libraries (using full path name) to link against
- to use BLAS (may be empty if compiler implicitly links BLAS)
-``BLAS95_LIBRARIES``
- uncached list of libraries (using full path name) to link against
- to use BLAS95 interface
-``BLAS95_FOUND``
- library implementing the BLAS95 interface is found
-
-.. note::
-
- C or CXX must be enabled to use Intel Math Kernel Library (MKL)
-
- For example, to use Intel MKL libraries and/or Intel compiler:
-
- .. code-block:: cmake
-
- set(BLA_VENDOR Intel10_64lp)
- find_package(BLAS)
-
-Hints
-^^^^^
-
-Set ``MKLROOT`` environment variable to a directory that contains an MKL
-installation.
-
-#]=======================================================================]
-
-include(${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake)
-include(${CMAKE_ROOT}/Modules/CheckFortranFunctionExists.cmake)
-include(${CMAKE_ROOT}/Modules/CMakePushCheckState.cmake)
-include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
-cmake_push_check_state()
-set(CMAKE_REQUIRED_QUIET ${BLAS_FIND_QUIETLY})
-
-set(_blas_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
-
-# Check the language being used
-if( NOT (CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED OR CMAKE_Fortran_COMPILER_LOADED) )
- if(BLAS_FIND_REQUIRED)
- message(FATAL_ERROR "FindBLAS requires Fortran, C, or C++ to be enabled.")
- else()
- message(STATUS "Looking for BLAS... - NOT found (Unsupported languages)")
- return()
- endif()
-endif()
-
-if(BLA_PREFER_PKGCONFIG)
- find_package(PkgConfig)
- pkg_check_modules(PKGC_BLAS blas)
- if(PKGC_BLAS_FOUND)
- set(BLAS_FOUND ${PKGC_BLAS_FOUND})
- set(BLAS_LIBRARIES "${PKGC_BLAS_LINK_LIBRARIES}")
- return()
- endif()
-endif()
-
-macro(Check_Fortran_Libraries LIBRARIES _prefix _name _flags _list _thread)
- # This macro checks for the existence of the combination of fortran libraries
- # given by _list. If the combination is found, this macro checks (using the
- # Check_Fortran_Function_Exists macro) whether can link against that library
- # combination using the name of a routine given by _name using the linker
- # flags given by _flags. If the combination of libraries is found and passes
- # the link test, LIBRARIES is set to the list of complete library paths that
- # have been found. Otherwise, LIBRARIES is set to FALSE.
-
- # N.B. _prefix is the prefix applied to the names of all cached variables that
- # are generated internally and marked advanced by this macro.
-
- set(_libdir ${ARGN})
-
- set(_libraries_work TRUE)
- set(${LIBRARIES})
- set(_combined_name)
- if (NOT _libdir)
- if (WIN32)
- set(_libdir ENV LIB)
- elseif (APPLE)
- set(_libdir ENV DYLD_LIBRARY_PATH)
- else ()
- set(_libdir ENV LD_LIBRARY_PATH)
- endif ()
- endif ()
-
- list(APPEND _libdir "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}")
-
- foreach(_library ${_list})
- set(_combined_name ${_combined_name}_${_library})
- if(NOT "${_thread}" STREQUAL "")
- set(_combined_name ${_combined_name}_thread)
- endif()
- if(_libraries_work)
- if (BLA_STATIC)
- if (WIN32)
- set(CMAKE_FIND_LIBRARY_SUFFIXES .lib ${CMAKE_FIND_LIBRARY_SUFFIXES})
- endif ()
- if (APPLE)
- set(CMAKE_FIND_LIBRARY_SUFFIXES .lib ${CMAKE_FIND_LIBRARY_SUFFIXES})
- else ()
- set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
- endif ()
- else ()
- if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
- # for ubuntu's libblas3gf and liblapack3gf packages
- set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES} .so.3gf)
- endif ()
- endif ()
- find_library(${_prefix}_${_library}_LIBRARY
- NAMES ${_library}
- PATHS ${_libdir}
- )
- mark_as_advanced(${_prefix}_${_library}_LIBRARY)
- set(${LIBRARIES} ${${LIBRARIES}} ${${_prefix}_${_library}_LIBRARY})
- set(_libraries_work ${${_prefix}_${_library}_LIBRARY})
- endif()
- endforeach()
- if(_libraries_work)
- # Test this combination of libraries.
- set(CMAKE_REQUIRED_LIBRARIES ${_flags} ${${LIBRARIES}} ${_thread})
- # message("DEBUG: CMAKE_REQUIRED_LIBRARIES = ${CMAKE_REQUIRED_LIBRARIES}")
- if (CMAKE_Fortran_COMPILER_LOADED)
- check_fortran_function_exists("${_name}" ${_prefix}${_combined_name}_WORKS)
- else()
- check_function_exists("${_name}_" ${_prefix}${_combined_name}_WORKS)
- endif()
- set(CMAKE_REQUIRED_LIBRARIES)
- set(_libraries_work ${${_prefix}${_combined_name}_WORKS})
- endif()
- if(_libraries_work)
- if("${_list}" STREQUAL "")
- set(${LIBRARIES} "${LIBRARIES}-PLACEHOLDER-FOR-EMPTY-LIBRARIES")
- else()
- set(${LIBRARIES} ${${LIBRARIES}} ${_thread}) # for static link
- endif()
- else()
- set(${LIBRARIES} FALSE)
- endif()
- #message("DEBUG: ${LIBRARIES} = ${${LIBRARIES}}")
-endmacro()
-
-set(BLAS_LINKER_FLAGS)
-set(BLAS_LIBRARIES)
-set(BLAS95_LIBRARIES)
-if (NOT $ENV{BLA_VENDOR} STREQUAL "")
- set(BLA_VENDOR $ENV{BLA_VENDOR})
-else ()
- if(NOT BLA_VENDOR)
- set(BLA_VENDOR "All")
- endif()
-endif ()
-
-if (BLA_VENDOR STREQUAL "All")
- if(NOT BLAS_LIBRARIES)
- # Implicitly linked BLAS libraries
- check_fortran_libraries(
- BLAS_LIBRARIES
- BLAS
- sgemm
- ""
- ""
- ""
- )
- endif()
-endif ()
-
-#BLAS in intel mkl 10+ library? (em64t 64bit)
-if (BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All")
- if (NOT BLAS_LIBRARIES)
-
- # System-specific settings
- if (WIN32)
- if (BLA_STATIC)
- set(BLAS_mkl_DLL_SUFFIX "")
- else()
- set(BLAS_mkl_DLL_SUFFIX "_dll")
- endif()
- else()
- # Switch to GNU Fortran support layer if needed (but not on Apple, where MKL does not provide it)
- if(CMAKE_Fortran_COMPILER_LOADED AND CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" AND NOT APPLE)
- set(BLAS_mkl_INTFACE "gf")
- set(BLAS_mkl_THREADING "gnu")
- set(BLAS_mkl_OMP "gomp")
- else()
- set(BLAS_mkl_INTFACE "intel")
- set(BLAS_mkl_THREADING "intel")
- set(BLAS_mkl_OMP "iomp5")
- endif()
- set(BLAS_mkl_LM "-lm")
- set(BLAS_mkl_LDL "-ldl")
- endif()
-
- if (BLA_VENDOR MATCHES "_64ilp")
- set(BLAS_mkl_ILP_MODE "ilp64")
- else ()
- set(BLAS_mkl_ILP_MODE "lp64")
- endif ()
-
- if (CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED)
- if(BLAS_FIND_QUIETLY OR NOT BLAS_FIND_REQUIRED)
- find_package(Threads)
- else()
- find_package(Threads REQUIRED)
- endif()
-
- set(BLAS_SEARCH_LIBS "")
-
- if(BLA_F95)
- set(BLAS_mkl_SEARCH_SYMBOL sgemm_f95)
- set(_LIBRARIES BLAS95_LIBRARIES)
- if (WIN32)
- # Find the main file (32-bit or 64-bit)
- set(BLAS_SEARCH_LIBS_WIN_MAIN "")
- if (BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All")
- list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
- "mkl_blas95${BLAS_mkl_DLL_SUFFIX} mkl_intel_c${BLAS_mkl_DLL_SUFFIX}")
- endif()
- if (BLA_VENDOR MATCHES "^Intel10_64i?lp" OR BLA_VENDOR STREQUAL "All")
- list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
- "mkl_blas95_${BLAS_mkl_ILP_MODE}${BLAS_mkl_DLL_SUFFIX} mkl_intel_${BLAS_mkl_ILP_MODE}${BLAS_mkl_DLL_SUFFIX}")
- endif ()
-
- # Add threading/sequential libs
- set(BLAS_SEARCH_LIBS_WIN_THREAD "")
- if (BLA_VENDOR MATCHES "_seq$" OR BLA_VENDOR STREQUAL "All")
- list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
- "mkl_sequential${BLAS_mkl_DLL_SUFFIX}")
- endif()
- if (NOT BLA_VENDOR MATCHES "_seq$" OR BLA_VENDOR STREQUAL "All")
- # old version
- list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
- "libguide40 mkl_intel_thread${BLAS_mkl_DLL_SUFFIX}")
- # mkl >= 10.3
- list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
- "libiomp5md mkl_intel_thread${BLAS_mkl_DLL_SUFFIX}")
- endif()
-
- # Cartesian product of the above
- foreach (MAIN ${BLAS_SEARCH_LIBS_WIN_MAIN})
- foreach (THREAD ${BLAS_SEARCH_LIBS_WIN_THREAD})
- list(APPEND BLAS_SEARCH_LIBS
- "${MAIN} ${THREAD} mkl_core${BLAS_mkl_DLL_SUFFIX}")
- endforeach()
- endforeach()
- else ()
- if (BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All")
- # old version
- list(APPEND BLAS_SEARCH_LIBS
- "mkl_blas95 mkl_${BLAS_mkl_INTFACE} mkl_${BLAS_mkl_THREADING}_thread mkl_core guide")
-
- # mkl >= 10.3
- list(APPEND BLAS_SEARCH_LIBS
- "mkl_blas95 mkl_${BLAS_mkl_INTFACE} mkl_${BLAS_mkl_THREADING}_thread mkl_core ${BLAS_mkl_OMP}")
- endif ()
- if (BLA_VENDOR MATCHES "^Intel10_64i?lp$" OR BLA_VENDOR STREQUAL "All")
- # old version
- list(APPEND BLAS_SEARCH_LIBS
- "mkl_blas95 mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_THREADING}_thread mkl_core guide")
-
- # mkl >= 10.3
- list(APPEND BLAS_SEARCH_LIBS
- "mkl_blas95_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_THREADING}_thread mkl_core ${BLAS_mkl_OMP}")
- endif ()
- if (BLA_VENDOR MATCHES "^Intel10_64i?lp_seq$" OR BLA_VENDOR STREQUAL "All")
- list(APPEND BLAS_SEARCH_LIBS
- "mkl_blas95_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_sequential mkl_core")
- endif ()
- endif ()
- else ()
- set(BLAS_mkl_SEARCH_SYMBOL sgemm)
- set(_LIBRARIES BLAS_LIBRARIES)
- if (WIN32)
- # Find the main file (32-bit or 64-bit)
- set(BLAS_SEARCH_LIBS_WIN_MAIN "")
- if (BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All")
- list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
- "mkl_intel_c${BLAS_mkl_DLL_SUFFIX}")
- endif()
- if (BLA_VENDOR MATCHES "^Intel10_64i?lp" OR BLA_VENDOR STREQUAL "All")
- list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
- "mkl_intel_${BLAS_mkl_ILP_MODE}${BLAS_mkl_DLL_SUFFIX}")
- endif ()
-
- # Add threading/sequential libs
- set(BLAS_SEARCH_LIBS_WIN_THREAD "")
- if (NOT BLA_VENDOR MATCHES "_seq$" OR BLA_VENDOR STREQUAL "All")
- # old version
- list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
- "libguide40 mkl_intel_thread${BLAS_mkl_DLL_SUFFIX}")
- # mkl >= 10.3
- list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
- "libiomp5md mkl_intel_thread${BLAS_mkl_DLL_SUFFIX}")
- endif()
- if (BLA_VENDOR MATCHES "_seq$" OR BLA_VENDOR STREQUAL "All")
- list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
- "mkl_sequential${BLAS_mkl_DLL_SUFFIX}")
- endif()
-
- # Cartesian product of the above
- foreach (MAIN ${BLAS_SEARCH_LIBS_WIN_MAIN})
- foreach (THREAD ${BLAS_SEARCH_LIBS_WIN_THREAD})
- list(APPEND BLAS_SEARCH_LIBS
- "${MAIN} ${THREAD} mkl_core${BLAS_mkl_DLL_SUFFIX}")
- endforeach()
- endforeach()
- else ()
- if (BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All")
- # old version
- list(APPEND BLAS_SEARCH_LIBS
- "mkl_${BLAS_mkl_INTFACE} mkl_${BLAS_mkl_THREADING}_thread mkl_core guide")
-
- # mkl >= 10.3
- list(APPEND BLAS_SEARCH_LIBS
- "mkl_${BLAS_mkl_INTFACE} mkl_${BLAS_mkl_THREADING}_thread mkl_core ${BLAS_mkl_OMP}")
- endif ()
- if (BLA_VENDOR MATCHES "^Intel10_64i?lp$" OR BLA_VENDOR STREQUAL "All")
- # old version
- list(APPEND BLAS_SEARCH_LIBS
- "mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_THREADING}_thread mkl_core guide")
-
- # mkl >= 10.3
- list(APPEND BLAS_SEARCH_LIBS
- "mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_THREADING}_thread mkl_core ${BLAS_mkl_OMP}")
- endif ()
- if (BLA_VENDOR MATCHES "^Intel10_64i?lp_seq$" OR BLA_VENDOR STREQUAL "All")
- list(APPEND BLAS_SEARCH_LIBS
- "mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_sequential mkl_core")
- endif ()
-
- #older vesions of intel mkl libs
- if (BLA_VENDOR STREQUAL "Intel" OR BLA_VENDOR STREQUAL "All")
- list(APPEND BLAS_SEARCH_LIBS
- "mkl")
- list(APPEND BLAS_SEARCH_LIBS
- "mkl_ia32")
- list(APPEND BLAS_SEARCH_LIBS
- "mkl_em64t")
- endif ()
- endif ()
- endif ()
-
- if (DEFINED ENV{MKLROOT})
- if (BLA_VENDOR STREQUAL "Intel10_32")
- set(_BLAS_MKLROOT_LIB_DIR "$ENV{MKLROOT}/lib/ia32")
- elseif (BLA_VENDOR MATCHES "^Intel10_64i?lp$" OR BLA_VENDOR MATCHES "^Intel10_64i?lp_seq$")
- set(_BLAS_MKLROOT_LIB_DIR "$ENV{MKLROOT}/lib/intel64")
- endif ()
- endif ()
- if (_BLAS_MKLROOT_LIB_DIR)
- if (WIN32)
- string(APPEND _BLAS_MKLROOT_LIB_DIR "_win")
- elseif (APPLE)
- string(APPEND _BLAS_MKLROOT_LIB_DIR "_mac")
- else ()
- string(APPEND _BLAS_MKLROOT_LIB_DIR "_lin")
- endif ()
- endif ()
-
- foreach (IT ${BLAS_SEARCH_LIBS})
- string(REPLACE " " ";" SEARCH_LIBS ${IT})
- if (NOT ${_LIBRARIES})
- check_fortran_libraries(
- ${_LIBRARIES}
- BLAS
- ${BLAS_mkl_SEARCH_SYMBOL}
- ""
- "${SEARCH_LIBS}"
- "${CMAKE_THREAD_LIBS_INIT};${BLAS_mkl_LM};${BLAS_mkl_LDL}"
- "${_BLAS_MKLROOT_LIB_DIR}"
- )
- endif ()
- endforeach ()
-
- endif ()
- unset(BLAS_mkl_ILP_MODE)
- unset(BLAS_mkl_INTFACE)
- unset(BLAS_mkl_THREADING)
- unset(BLAS_mkl_OMP)
- unset(BLAS_mkl_DLL_SUFFIX)
- unset(BLAS_mkl_LM)
- unset(BLAS_mkl_LDL)
- endif ()
-endif ()
-
-if(BLA_F95)
- find_package_handle_standard_args(BLAS REQUIRED_VARS BLAS95_LIBRARIES)
- set(BLAS95_FOUND ${BLAS_FOUND})
- if(BLAS_FOUND)
- set(BLAS_LIBRARIES "${BLAS95_LIBRARIES}")
- endif()
-endif()
-
-if (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All")
- if(NOT BLAS_LIBRARIES)
- # gotoblas (http://www.tacc.utexas.edu/tacc-projects/gotoblas2)
- check_fortran_libraries(
- BLAS_LIBRARIES
- BLAS
- sgemm
- ""
- "goto2"
- ""
- )
- endif()
-endif ()
-
-if (BLA_VENDOR STREQUAL "OpenBLAS" OR BLA_VENDOR STREQUAL "All")
- if(NOT BLAS_LIBRARIES)
- # OpenBLAS (http://www.openblas.net)
- check_fortran_libraries(
- BLAS_LIBRARIES
- BLAS
- sgemm
- ""
- "openblas"
- ""
- )
- endif()
- if(NOT BLAS_LIBRARIES)
- find_package(Threads)
- # OpenBLAS (http://www.openblas.net)
- check_fortran_libraries(
- BLAS_LIBRARIES
- BLAS
- sgemm
- ""
- "openblas"
- "${CMAKE_THREAD_LIBS_INIT}"
- )
- endif()
-endif ()
-
-if (BLA_VENDOR STREQUAL "FLAME" OR BLA_VENDOR STREQUAL "All")
- if(NOT BLAS_LIBRARIES)
- # FLAME's blis library (https://github.com/flame/blis)
- check_fortran_libraries(
- BLAS_LIBRARIES
- BLAS
- sgemm
- ""
- "blis"
- ""
- )
- endif()
-endif ()
-
-if (BLA_VENDOR STREQUAL "ATLAS" OR BLA_VENDOR STREQUAL "All")
- if(NOT BLAS_LIBRARIES)
- # BLAS in ATLAS library? (http://math-atlas.sourceforge.net/)
- check_fortran_libraries(
- BLAS_LIBRARIES
- BLAS
- dgemm
- ""
- "f77blas;atlas"
- ""
- )
- endif()
-endif ()
-
-# BLAS in PhiPACK libraries? (requires generic BLAS lib, too)
-if (BLA_VENDOR STREQUAL "PhiPACK" OR BLA_VENDOR STREQUAL "All")
- if(NOT BLAS_LIBRARIES)
- check_fortran_libraries(
- BLAS_LIBRARIES
- BLAS
- sgemm
- ""
- "sgemm;dgemm;blas"
- ""
- )
- endif()
-endif ()
-
-# BLAS in Alpha CXML library?
-if (BLA_VENDOR STREQUAL "CXML" OR BLA_VENDOR STREQUAL "All")
- if(NOT BLAS_LIBRARIES)
- check_fortran_libraries(
- BLAS_LIBRARIES
- BLAS
- sgemm
- ""
- "cxml"
- ""
- )
- endif()
-endif ()
-
-# BLAS in Alpha DXML library? (now called CXML, see above)
-if (BLA_VENDOR STREQUAL "DXML" OR BLA_VENDOR STREQUAL "All")
- if(NOT BLAS_LIBRARIES)
- check_fortran_libraries(
- BLAS_LIBRARIES
- BLAS
- sgemm
- ""
- "dxml"
- ""
- )
- endif()
-endif ()
-
-# BLAS in Sun Performance library?
-if (BLA_VENDOR STREQUAL "SunPerf" OR BLA_VENDOR STREQUAL "All")
- if(NOT BLAS_LIBRARIES)
- check_fortran_libraries(
- BLAS_LIBRARIES
- BLAS
- sgemm
- "-xlic_lib=sunperf"
- "sunperf;sunmath"
- ""
- )
- if(BLAS_LIBRARIES)
- set(BLAS_LINKER_FLAGS "-xlic_lib=sunperf")
- endif()
- endif()
-endif ()
-
-# BLAS in SCSL library? (SGI/Cray Scientific Library)
-if (BLA_VENDOR STREQUAL "SCSL" OR BLA_VENDOR STREQUAL "All")
- if(NOT BLAS_LIBRARIES)
- check_fortran_libraries(
- BLAS_LIBRARIES
- BLAS
- sgemm
- ""
- "scsl"
- ""
- )
- endif()
-endif ()
-
-# BLAS in SGIMATH library?
-if (BLA_VENDOR STREQUAL "SGIMATH" OR BLA_VENDOR STREQUAL "All")
- if(NOT BLAS_LIBRARIES)
- check_fortran_libraries(
- BLAS_LIBRARIES
- BLAS
- sgemm
- ""
- "complib.sgimath"
- ""
- )
- endif()
-endif ()
-
-# BLAS in IBM ESSL library? (requires generic BLAS lib, too)
-if (BLA_VENDOR STREQUAL "IBMESSL" OR BLA_VENDOR STREQUAL "All")
- if(NOT BLAS_LIBRARIES)
- check_fortran_libraries(
- BLAS_LIBRARIES
- BLAS
- sgemm
- ""
- "essl;blas"
- ""
- )
- endif()
-endif ()
-
-#BLAS in acml library?
-if (BLA_VENDOR MATCHES "ACML" OR BLA_VENDOR STREQUAL "All")
- if( ((BLA_VENDOR STREQUAL "ACML") AND (NOT BLAS_ACML_LIB_DIRS)) OR
- ((BLA_VENDOR STREQUAL "ACML_MP") AND (NOT BLAS_ACML_MP_LIB_DIRS)) OR
- ((BLA_VENDOR STREQUAL "ACML_GPU") AND (NOT BLAS_ACML_GPU_LIB_DIRS))
- )
- # try to find acml in "standard" paths
- if( WIN32 )
- file( GLOB _ACML_ROOT "C:/AMD/acml*/ACML-EULA.txt" )
- else()
- file( GLOB _ACML_ROOT "/opt/acml*/ACML-EULA.txt" )
- endif()
- if( WIN32 )
- file( GLOB _ACML_GPU_ROOT "C:/AMD/acml*/GPGPUexamples" )
- else()
- file( GLOB _ACML_GPU_ROOT "/opt/acml*/GPGPUexamples" )
- endif()
- list(GET _ACML_ROOT 0 _ACML_ROOT)
- list(GET _ACML_GPU_ROOT 0 _ACML_GPU_ROOT)
- if( _ACML_ROOT )
- get_filename_component( _ACML_ROOT ${_ACML_ROOT} PATH )
- if( SIZEOF_INTEGER EQUAL 8 )
- set( _ACML_PATH_SUFFIX "_int64" )
- else()
- set( _ACML_PATH_SUFFIX "" )
- endif()
- if( CMAKE_Fortran_COMPILER_ID STREQUAL "Intel" )
- set( _ACML_COMPILER32 "ifort32" )
- set( _ACML_COMPILER64 "ifort64" )
- elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "SunPro" )
- set( _ACML_COMPILER32 "sun32" )
- set( _ACML_COMPILER64 "sun64" )
- elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "PGI" )
- set( _ACML_COMPILER32 "pgi32" )
- if( WIN32 )
- set( _ACML_COMPILER64 "win64" )
- else()
- set( _ACML_COMPILER64 "pgi64" )
- endif()
- elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "Open64" )
- # 32 bit builds not supported on Open64 but for code simplicity
- # We'll just use the same directory twice
- set( _ACML_COMPILER32 "open64_64" )
- set( _ACML_COMPILER64 "open64_64" )
- elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "NAG" )
- set( _ACML_COMPILER32 "nag32" )
- set( _ACML_COMPILER64 "nag64" )
- else()
- set( _ACML_COMPILER32 "gfortran32" )
- set( _ACML_COMPILER64 "gfortran64" )
- endif()
-
- if( BLA_VENDOR STREQUAL "ACML_MP" )
- set(_ACML_MP_LIB_DIRS
- "${_ACML_ROOT}/${_ACML_COMPILER32}_mp${_ACML_PATH_SUFFIX}/lib"
- "${_ACML_ROOT}/${_ACML_COMPILER64}_mp${_ACML_PATH_SUFFIX}/lib" )
- else()
- set(_ACML_LIB_DIRS
- "${_ACML_ROOT}/${_ACML_COMPILER32}${_ACML_PATH_SUFFIX}/lib"
- "${_ACML_ROOT}/${_ACML_COMPILER64}${_ACML_PATH_SUFFIX}/lib" )
- endif()
- endif()
-elseif(BLAS_${BLA_VENDOR}_LIB_DIRS)
- set(_${BLA_VENDOR}_LIB_DIRS ${BLAS_${BLA_VENDOR}_LIB_DIRS})
-endif()
-
-if( BLA_VENDOR STREQUAL "ACML_MP" )
- foreach( BLAS_ACML_MP_LIB_DIRS ${_ACML_MP_LIB_DIRS})
- check_fortran_libraries (
- BLAS_LIBRARIES
- BLAS
- sgemm
- "" "acml_mp;acml_mv" "" ${BLAS_ACML_MP_LIB_DIRS}
- )
- if( BLAS_LIBRARIES )
- break()
- endif()
- endforeach()
-elseif( BLA_VENDOR STREQUAL "ACML_GPU" )
- foreach( BLAS_ACML_GPU_LIB_DIRS ${_ACML_GPU_LIB_DIRS})
- check_fortran_libraries (
- BLAS_LIBRARIES
- BLAS
- sgemm
- "" "acml;acml_mv;CALBLAS" "" ${BLAS_ACML_GPU_LIB_DIRS}
- )
- if( BLAS_LIBRARIES )
- break()
- endif()
- endforeach()
-else()
- foreach( BLAS_ACML_LIB_DIRS ${_ACML_LIB_DIRS} )
- check_fortran_libraries (
- BLAS_LIBRARIES
- BLAS
- sgemm
- "" "acml;acml_mv" "" ${BLAS_ACML_LIB_DIRS}
- )
- if( BLAS_LIBRARIES )
- break()
- endif()
- endforeach()
-endif()
-
-# Either acml or acml_mp should be in LD_LIBRARY_PATH but not both
-if(NOT BLAS_LIBRARIES)
- check_fortran_libraries(
- BLAS_LIBRARIES
- BLAS
- sgemm
- ""
- "acml;acml_mv"
- ""
- )
-endif()
-if(NOT BLAS_LIBRARIES)
- check_fortran_libraries(
- BLAS_LIBRARIES
- BLAS
- sgemm
- ""
- "acml_mp;acml_mv"
- ""
- )
-endif()
-if(NOT BLAS_LIBRARIES)
- check_fortran_libraries(
- BLAS_LIBRARIES
- BLAS
- sgemm
- ""
- "acml;acml_mv;CALBLAS"
- ""
- )
-endif()
-endif () # ACML
-
-# Apple BLAS library?
-if (BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All")
- if(NOT BLAS_LIBRARIES)
- check_fortran_libraries(
- BLAS_LIBRARIES
- BLAS
- dgemm
- ""
- "Accelerate"
- ""
- )
- endif()
-endif ()
-
-if (BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All")
- if ( NOT BLAS_LIBRARIES )
- check_fortran_libraries(
- BLAS_LIBRARIES
- BLAS
- dgemm
- ""
- "vecLib"
- ""
- )
- endif ()
-endif ()
-
-# Generic BLAS library?
-if (BLA_VENDOR STREQUAL "Generic" OR BLA_VENDOR STREQUAL "All")
- if(NOT BLAS_LIBRARIES)
- check_fortran_libraries(
- BLAS_LIBRARIES
- BLAS
- sgemm
- ""
- "blas"
- ""
- )
- endif()
-endif ()
-
-if(NOT BLA_F95)
- find_package_handle_standard_args(BLAS REQUIRED_VARS BLAS_LIBRARIES)
-endif()
-
-# On compilers that implicitly link BLAS (such as ftn, cc, and CC on Cray HPC machines)
-# we used a placeholder for empty BLAS_LIBRARIES to get through our logic above.
-if (BLAS_LIBRARIES STREQUAL "BLAS_LIBRARIES-PLACEHOLDER-FOR-EMPTY-LIBRARIES")
- set(BLAS_LIBRARIES "")
-endif()
-
-cmake_pop_check_state()
-set(CMAKE_FIND_LIBRARY_SUFFIXES ${_blas_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
diff --git a/ports/openblas/openblas_common.h b/ports/openblas/openblas_common.h
index 6652a17e9..9b798e577 100644
--- a/ports/openblas/openblas_common.h
+++ b/ports/openblas/openblas_common.h
@@ -13,6 +13,7 @@
#ifdef NEEDBUNDERSCORE
#define BLASFUNC(FUNC) FUNC##_
+
#else
#define BLASFUNC(FUNC) FUNC
#endif
@@ -57,18 +58,3 @@ typedef int blasint;
predefined macros with some compilers (e.g. GCC 4.7 on Linux). This occurs
as a side effect of including either <features.h> or <stdc-predef.h>. */
#include <stdio.h>
-#ifndef OPENBLAS_COMPLEX_STRUCT
-#define OPENBLAS_COMPLEX_STRUCT
-typedef struct { float real, imag; } openblas_complex_float;
-typedef struct { double real, imag; } openblas_complex_double;
-typedef struct { xdouble real, imag; } openblas_complex_xdouble;
-#define openblas_make_complex_float(real, imag) {(real), (imag)}
-#define openblas_make_complex_double(real, imag) {(real), (imag)}
-#define openblas_make_complex_xdouble(real, imag) {(real), (imag)}
-#define openblas_complex_float_real(z) ((z).real)
-#define openblas_complex_float_imag(z) ((z).imag)
-#define openblas_complex_double_real(z) ((z).real)
-#define openblas_complex_double_imag(z) ((z).imag)
-#define openblas_complex_xdouble_real(z) ((z).real)
-#define openblas_complex_xdouble_imag(z) ((z).imag)
-#endif \ No newline at end of file
diff --git a/ports/openblas/portfile.cmake b/ports/openblas/portfile.cmake
index 8f26b42ad..b1f2a512d 100644
--- a/ports/openblas/portfile.cmake
+++ b/ports/openblas/portfile.cmake
@@ -58,7 +58,7 @@ if(VCPKG_TARGET_IS_UWP)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
- OPTIONS
+ OPTIONS
${COMMON_OPTIONS}
-DCMAKE_SYSTEM_PROCESSOR=AMD64
-DVS_WINRT_COMPONENT=TRUE
@@ -114,12 +114,8 @@ file(READ ${SOURCE_PATH}/cblas.h CBLAS_H)
string(REPLACE "#include \"common.h\"" "#include \"openblas_common.h\"" CBLAS_H "${CBLAS_H}")
file(WRITE ${CURRENT_PACKAGES_DIR}/include/cblas.h "${CBLAS_H}")
-# openblas is BSD
-file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
-
-file(COPY ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/blas)
-file(COPY ${CMAKE_CURRENT_LIST_DIR}/FindBLAS.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/blas)
-
vcpkg_copy_pdbs()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include ${CURRENT_PACKAGES_DIR}/debug/share)
+
+file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
diff --git a/ports/openblas/vcpkg-cmake-wrapper.cmake b/ports/openblas/vcpkg-cmake-wrapper.cmake
deleted file mode 100644
index fc074f33c..000000000
--- a/ports/openblas/vcpkg-cmake-wrapper.cmake
+++ /dev/null
@@ -1,2 +0,0 @@
-message(STATUS "Using VCPKG FindBLAS. Remove if CMake has been updated to account for Threads in OpenBLAS!")
-include(${CMAKE_CURRENT_LIST_DIR}/FindBLAS.cmake)
diff --git a/ports/openmvg/CONTROL b/ports/openmvg/CONTROL
index dd7dc1e9b..288d530ac 100644
--- a/ports/openmvg/CONTROL
+++ b/ports/openmvg/CONTROL
@@ -1,7 +1,8 @@
Source: openmvg
Version: 1.5
+Port-Version: 1
Description: open Multiple View Geometry library. Basis for 3D computer vision and Structure from Motion.
-Build-Depends: coinutils, clp, osi, liblemon, flann, eigen3, ceres, cereal, libjpeg-turbo, tiff, libpng, zlib, suitesparse
+Build-Depends: coinutils, clp, osi, liblemon, flann, eigen3, ceres[suitesparse,cxsparse], cereal, libjpeg-turbo, tiff, libpng, zlib, vlfeat
Feature: opencv
Build-Depends: opencv[contrib]
@@ -9,3 +10,7 @@ Description: opencv support for openmvg
Feature: openmp
Description: openmp support for openmvg
+
+Feature: software
+Build-Depends: qt5-base, qt5-svg
+Description: build openMVG tools
diff --git a/ports/openmvg/fixcmake.patch b/ports/openmvg/build_fixes.patch
index fc84774c4..fff8846d2 100644
--- a/ports/openmvg/fixcmake.patch
+++ b/ports/openmvg/build_fixes.patch
@@ -1,421 +1,723 @@
-diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index 9cfd06c..a4dea06 100644
---- a/src/CMakeLists.txt
-+++ b/src/CMakeLists.txt
-@@ -14,6 +14,7 @@ if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
- message(FATAL_ERROR "In-source builds not allowed.")
- endif()
-
-+if(0)
- # ==============================================================================
- # OpenMVG build options
- # ==============================================================================
-@@ -31,7 +32,7 @@ option(OpenMVG_USE_OPENMP "Enable OpenMP parallelization" ON)
- # and openMVG simultaneously
- # ==============================================================================
- option(OpenMVG_USE_OPENCV "Build or not opencv+openMVG samples programs" OFF)
--
-+endif()
- # ==============================================================================
- # Since OpenCV 3, SIFT is no longer in the default modules. See
- # https://github.com/itseez/opencv_contrib for more informations.
-@@ -85,6 +86,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
- register_definitions(-DOPENMVG_STD_UNORDERED_MAP)
- endif()
-
-+if(0)
- # ==============================================================================
- # Check that submodule have been initialized and updated
- # ==============================================================================
-@@ -93,6 +95,7 @@ if (NOT EXISTS ${PROJECT_SOURCE_DIR}/dependencies/cereal/include)
- "\n submodule(s) are missing, please update your repository:\n"
- " > git submodule update -i\n")
- endif()
-+endif()
-
- # ==============================================================================
- # Additional cmake find modules
-@@ -128,7 +131,6 @@ if (OpenMVG_USE_OPENMP)
- find_package(OpenMP)
- if (OPENMP_FOUND)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
-- option(OpenMVG_USE_OPENMP "Use OpenMP for parallelization" ON)
- register_definitions(-DOPENMVG_USE_OPENMP)
- if (NOT MSVC)
- if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
-@@ -139,11 +141,6 @@ if (OpenMVG_USE_OPENMP)
- endif()
- endif (NOT MSVC)
- endif (OPENMP_FOUND)
--else (OpenMVG_USE_OPENMP)
-- option(OpenMVG_USE_OPENMP "Use OpenMP for parallelization" OFF)
-- include(UpdateCacheVariable)
-- UPDATE_CACHE_VARIABLE(OpenMVG_USE_OPENMP OFF)
-- remove_definitions(-DOPENMVG_USE_OPENMP)
- endif (OpenMVG_USE_OPENMP)
-
- # ==============================================================================
-@@ -182,6 +179,7 @@ if (OpenMVG_BUILD_OPENGL_EXAMPLES)
- set_property(TARGET glfw PROPERTY FOLDER OpenMVG/3rdParty/glfw)
- endif (OpenMVG_BUILD_OPENGL_EXAMPLES)
-
-+if(0)
- # Dependencies install rules
- install(
- DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/
-@@ -189,7 +187,7 @@ install(
- COMPONENT headers
- FILES_MATCHING PATTERN "*.hpp" PATTERN "*.h"
- )
--
-+endif()
- # ==============================================================================
- # --END-- SUBMODULE CONFIGURATION
- # ==============================================================================
-@@ -225,6 +223,7 @@ ENDMACRO(UNIT_TEST)
- # - external by default
- # - internal if cereal not found
- # ==============================================================================
-+if(0)
- find_package(cereal QUIET CONFIG)
- if (NOT TARGET cereal)
- add_library(cereal INTERFACE)
-@@ -237,6 +236,10 @@ if (NOT TARGET cereal)
-
- set(OpenMVG_USE_INTERNAL_CEREAL ON)
- endif()
-+endif()
-+
-+find_package(cereal REQUIRED CONFIG)
-+get_target_property(CEREAL_INCLUDE_DIRS cereal INTERFACE_INCLUDE_DIRECTORIES)
-
- # ==============================================================================
- # Eigen
-@@ -245,6 +248,7 @@ endif()
- # - external if EIGEN_INCLUDE_DIR_HINTS is defined
- # - internal if Eigen not found
- # ==============================================================================
-+if(0)
- find_package(Eigen3 QUIET)
- if (NOT Eigen3_FOUND)
- set(EIGEN_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/eigen)
-@@ -253,13 +257,17 @@ if (NOT Eigen3_FOUND)
- else()
- set(EIGEN_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR})
- endif()
-+endif()
-
-+find_package(Eigen3 REQUIRED)
-+set(EIGEN_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR})
- # ==============================================================================
- # Ceres
- # ==============================================================================
- # - external by default if CERES_DIR_HINTS or find_package found a valid Ceres
- # - internal if ceres not found (ceres-solver+cxsparse+miniglog)
- # ==============================================================================
-+if(0)
- find_package(Ceres QUIET HINTS ${CERES_DIR_HINTS})
- if (NOT Ceres_FOUND)
- set(OpenMVG_USE_INTERNAL_CERES ON)
-@@ -271,13 +279,16 @@ if (NOT Ceres_FOUND)
- STRING(REGEX REPLACE "version ([0-9.]+).*" "\\1" CERES_VERSION ${CERES_CONFIG})
- set(CERES_LIBRARIES openMVG_ceres)
- endif()
-+endif()
-
-+find_package(Ceres REQUIRED)
- # ==============================================================================
- # Flann
- # ==============================================================================
- # - internal by default (flann),
- # - external if FLANN_INCLUDE_DIR_HINTS and a valid Flann setup is found
- # ==============================================================================
-+if(0)
- if (NOT DEFINED FLANN_INCLUDE_DIR_HINTS)
- set(FLANN_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/flann/src/cpp)
- set(OpenMVG_USE_INTERNAL_FLANN ON)
-@@ -286,13 +297,16 @@ find_package(Flann QUIET)
- if (NOT FLANN_FOUND OR OpenMVG_USE_INTERNAL_FLANN)
- set(FLANN_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/flann/src/cpp)
- endif()
-+endif()
-
-+find_package(flann REQUIRED)
- # ==============================================================================
- # CoinUtils
- # ==============================================================================
- # - internal by default (CoinUtils),
- # - external if COINUTILS_INCLUDE_DIR_HINTS and a valid CoinUtils setup is found
- # ==============================================================================
-+if(0)
- if (NOT DEFINED COINUTILS_INCLUDE_DIR_HINTS)
- set(COINUTILS_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/osi_clp/CoinUtils/src/)
- set(OpenMVG_USE_INTERNAL_COINUTILS ON)
-@@ -302,13 +316,16 @@ if (NOT DEFINED COINUTILS_INCLUDE_DIR_HINTS)
- else()
- find_package(CoinUtils QUIET)
- endif()
-+endif()
-
-+find_package(CoinUtils REQUIRED)
- ## ==============================================================================
- ## Clp
- ## ==============================================================================
- ## - internal by default (Clp),
- ## - external if CLP_INCLUDE_DIR_HINTS and a valid Clp setup is found
- ## ==============================================================================
-+if(0)
- if (NOT DEFINED CLP_INCLUDE_DIR_HINTS)
- set(CLP_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/osi_clp/Clp/src/)
- set(OpenMVG_USE_INTERNAL_CLP ON)
-@@ -320,6 +337,9 @@ if (NOT DEFINED CLP_INCLUDE_DIR_HINTS)
- else()
- find_package(Clp QUIET)
- endif()
-+endif()
-+
-+find_package(Clp REQUIRED)
-
- # ==============================================================================
- # Osi
-@@ -327,6 +347,7 @@ endif()
- # - internal by default (Osi),
- # - external if OSI_INCLUDE_DIR_HINTS and a valid Osi setup is found
- # ==============================================================================
-+if(0)
- if (NOT DEFINED OSI_INCLUDE_DIR_HINTS)
- set(OSI_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/osi_clp/Osi/src/)
- set(OpenMVG_USE_INTERNAL_OSI ON)
-@@ -336,6 +357,9 @@ if (NOT DEFINED OSI_INCLUDE_DIR_HINTS)
- else()
- find_package(Osi QUIET)
- endif()
-+endif()
-+
-+find_package(Osi REQUIRED)
-
- # ==============================================================================
- # Internal CLP/OSI/COINUTILS libraries:
-@@ -354,6 +378,7 @@ endif()
- # - internal by default (Lemon),
- # - external if LEMON_INCLUDE_DIR_HINTS and a valid Lemon setup is found
- # ==============================================================================
-+if(0)
- if (NOT DEFINED LEMON_INCLUDE_DIR_HINTS)
- set(LEMON_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/lemon)
- set(OpenMVG_USE_INTERNAL_LEMON ON)
-@@ -365,6 +390,9 @@ if (NOT LEMON_FOUND OR OpenMVG_USE_INTERNAL_LEMON)
- ${PROJECT_BINARY_DIR}/third_party/lemon)
- set(LEMON_LIBRARY openMVG_lemon)
- endif()
-+endif()
-+
-+find_package(LEMON REQUIRED)
-
- # ==============================================================================
- # OpenCV
-@@ -372,15 +400,13 @@ endif()
- # - only external and enabled only if OpenMVG_USE_OPENCV is set to ON
- # ==============================================================================
- if (OpenMVG_USE_OPENCV)
-- find_package( OpenCV QUIET )
-- if (NOT OpenCV_FOUND OR OpenCV_VERSION VERSION_LESS "3.0.0")
-- message(STATUS "OpenCV was not found (note that OpenCV version >= 3.0.0 is required). -> Disabling OpenCV support.")
-- UPDATE_CACHE_VARIABLE(OpenMVG_USE_OPENCV OFF)
-- UPDATE_CACHE_VARIABLE(OpenMVG_USE_OCVSIFT OFF)
-- endif()
-+ find_package( OpenCV REQUIRED )
- endif()
-
--
-+# ==============================================================================
-+# Suitesparse
-+# ==============================================================================
-+find_package(suitesparse REQUIRED)
- # ==============================================================================
- # Third-party libraries:
- # ==============================================================================
-@@ -472,67 +498,67 @@ message("** Use OpenCV SIFT features: " ${OpenMVG_USE_OCVSIFT})
-
- message("\n")
-
--if (DEFINED OpenMVG_USE_INTERNAL_CEREAL)
-+if (OpenMVG_USE_INTERNAL_CEREAL)
- message(STATUS "CEREAL: (internal)")
- else()
- message(STATUS "CEREAL: (external)")
- endif()
-
--if (DEFINED OpenMVG_USE_INTERNAL_EIGEN)
-+if (OpenMVG_USE_INTERNAL_EIGEN)
- message(STATUS "EIGEN: " ${EIGEN_VERSION} " (internal)")
- else()
- message(STATUS "EIGEN: " ${EIGEN_VERSION} " (external)")
- endif()
-
--if (DEFINED OpenMVG_USE_INTERNAL_CERES)
-+if (OpenMVG_USE_INTERNAL_CERES)
- message(STATUS "CERES: " ${CERES_VERSION} " (internal)")
- else()
- message(STATUS "CERES: " ${CERES_VERSION} " (external)")
- endif()
-
--if (DEFINED OpenMVG_USE_INTERNAL_FLANN)
-+if (OpenMVG_USE_INTERNAL_FLANN)
- message(STATUS "FLANN: " ${FLANN_VERSION} " (internal)")
- else()
- message(STATUS "FLANN: " ${FLANN_VERSION} " (external)")
- endif()
-
--if (DEFINED OpenMVG_USE_INTERNAL_TIFF)
-+if (OpenMVG_USE_INTERNAL_TIFF)
- message(STATUS "LIBTIFF: " ${TIFF_VERSION_STRING} " (internal)")
- else()
- message(STATUS "LIBTIFF: " ${TIFF_VERSION_STRING} " (external)")
- endif()
-
--if (DEFINED OpenMVG_USE_INTERNAL_PNG)
-+if (OpenMVG_USE_INTERNAL_PNG)
- message(STATUS "LIBPNG: " ${PNG_VERSION_STRING} " (internal)")
- else()
- message(STATUS "LIBPNG: " ${PNG_VERSION_STRING} " (external)")
- endif()
-
--if (DEFINED OpenMVG_USE_INTERNAL_JPEG)
-+if (OpenMVG_USE_INTERNAL_JPEG)
- message(STATUS "LIBJPEG (internal)")
- else()
- message(STATUS "LIBJPEG (external)")
- endif()
-
--if (DEFINED OpenMVG_USE_INTERNAL_CLP)
-+if (OpenMVG_USE_INTERNAL_CLP)
- message(STATUS "CLP: " ${CLP_VERSION} " (internal)")
- else()
- message(STATUS "CLP: " ${CLP_VERSION} " (external)")
- endif()
-
--if (DEFINED OpenMVG_USE_INTERNAL_COINUTILS)
-+if (OpenMVG_USE_INTERNAL_COINUTILS)
- message(STATUS "COINUTILS: " ${COINUTILS_VERSION} " (internal)")
- else()
- message(STATUS "COINUTILS: " ${COINUTILS_VERSION} " (external)")
- endif()
-
--if (DEFINED OpenMVG_USE_INTERNAL_OSI)
-+if (OpenMVG_USE_INTERNAL_OSI)
- message(STATUS "OSI: " ${OSI_VERSION} " (internal)")
- else()
- message(STATUS "OSI: " ${OSI_VERSION} " (external)")
- endif()
-
--if (DEFINED OpenMVG_USE_INTERNAL_LEMON)
-+if (OpenMVG_USE_INTERNAL_LEMON)
- message(STATUS "LEMON: " ${LEMON_VERSION} " (internal)")
- else()
- message(STATUS "LEMON: " ${LEMON_VERSION} " (external)")
-diff --git a/src/cmakeFindModules/FindClp.cmake b/src/cmakeFindModules/FindClp.cmake
-index 8a69c23..6a81580 100644
---- a/src/cmakeFindModules/FindClp.cmake
-+++ b/src/cmakeFindModules/FindClp.cmake
-@@ -51,9 +51,8 @@ IF(EXISTS "${CLP_DIR}" AND NOT "${CLP_DIR}" STREQUAL "")
- SET(CLP_INCLUDE_DIR ${CLP_DIR})
-
- FIND_LIBRARY(CLP_LIBRARY NAMES Clp)
-- FIND_LIBRARY(CLPSOLVER_LIBRARY NAMES ClpSolver)
-- FIND_LIBRARY(OSICLP_LIBRARY NAMES OsiClp)
--
-+ FIND_LIBRARY(CLPSOLVER_LIBRARY NAMES ClpSolver Clp)
-+ FIND_LIBRARY(OSICLP_LIBRARY NAMES OsiClp Clp)
- # locate Clp libraries
- IF(DEFINED CLP_LIBRARY AND DEFINED CLPSOLVER_LIBRARY AND DEFINED OSICLP_LIBRARY)
- SET(CLP_LIBRARIES ${CLP_LIBRARY} ${CLPSOLVER_LIBRARY} ${OSICLP_LIBRARY})
-diff --git a/src/openMVG/linearProgramming/CMakeLists.txt b/src/openMVG/linearProgramming/CMakeLists.txt
-index cc5212f..acc57dd 100644
---- a/src/openMVG/linearProgramming/CMakeLists.txt
-+++ b/src/openMVG/linearProgramming/CMakeLists.txt
-@@ -15,16 +15,12 @@ target_link_libraries(openMVG_linearProgramming
- PUBLIC
- openMVG_numeric
- PRIVATE
-- ${CLP_LIBRARIES} # clp + solver wrapper
-- ${COINUTILS_LIBRARY} # container tools
-- ${OSI_LIBRARY} # generic LP
-+ Coin::Clp # clp + solver wrapper
-+ Coin::CoinUtils # container tools
-+ Coin::Osi # generic LP
- )
-
- target_include_directories(openMVG_linearProgramming
-- PRIVATE
-- ${CLP_INCLUDE_DIRS}
-- ${COINUTILS_INCLUDE_DIRS}
-- ${OSI_INCLUDE_DIRS}
- PUBLIC
- $<INSTALL_INTERFACE:include>
- )
-diff --git a/src/openMVG/matching/CMakeLists.txt b/src/openMVG/matching/CMakeLists.txt
-index 5fcd972..b21ea7b 100644
---- a/src/openMVG/matching/CMakeLists.txt
-+++ b/src/openMVG/matching/CMakeLists.txt
-@@ -18,6 +18,7 @@ list(REMOVE_ITEM matching_files_cpp ${REMOVEFILESUNITTEST})
-
- set(THREADS_PREFER_PTHREAD_FLAG ON)
- find_package(Threads REQUIRED)
-+find_package(flann REQUIRED)
-
- set_source_files_properties(${matching_files_cpp} PROPERTIES LANGUAGE CXX)
- add_library(openMVG_matching
-@@ -39,10 +40,10 @@ target_link_libraries(openMVG_matching
- Threads::Threads
- cereal
- )
--if (NOT DEFINED OpenMVG_USE_INTERNAL_FLANN)
-+if (NOT OpenMVG_USE_INTERNAL_FLANN)
- target_link_libraries(openMVG_matching
- PUBLIC
-- ${FLANN_LIBRARIES}
-+ flann::flann
- )
- endif()
- set_target_properties(openMVG_matching PROPERTIES SOVERSION ${OPENMVG_VERSION_MAJOR} VERSION "${OPENMVG_VERSION_MAJOR}.${OPENMVG_VERSION_MINOR}")
-diff --git a/src/third_party/CMakeLists.txt b/src/third_party/CMakeLists.txt
-index 816a941..f0b7145 100644
---- a/src/third_party/CMakeLists.txt
-+++ b/src/third_party/CMakeLists.txt
-@@ -18,7 +18,7 @@ add_subdirectory(stlplus3)
- set(STLPLUS_LIBRARY openMVG_stlplus PARENT_SCOPE)
-
- # Add graph library
--if(DEFINED OpenMVG_USE_INTERNAL_LEMON)
-+if(OpenMVG_USE_INTERNAL_LEMON)
- add_subdirectory(lemon)
- set_property(TARGET openMVG_lemon PROPERTY FOLDER OpenMVG/3rdParty/lemon)
- set_property(TARGET check PROPERTY FOLDER OpenMVG/3rdParty/lemon)
-@@ -68,7 +68,7 @@ endif (NOT TIFF_FOUND)
- add_subdirectory(vectorGraphics)
-
- # Add ceres-solver (A Nonlinear Least Squares Minimizer)
--if (DEFINED OpenMVG_USE_INTERNAL_CERES)
-+if (OpenMVG_USE_INTERNAL_CERES)
- add_subdirectory(cxsparse)
- add_subdirectory(ceres-solver)
- set_property(TARGET openMVG_cxsparse PROPERTY FOLDER OpenMVG/3rdParty/ceres)
-@@ -76,7 +76,7 @@ if (DEFINED OpenMVG_USE_INTERNAL_CERES)
- endif()
-
- # Add an Approximate Nearest Neighbor library
--if (DEFINED OpenMVG_USE_INTERNAL_FLANN)
-+if (OpenMVG_USE_INTERNAL_FLANN)
- set(FLANN_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/openMVG/third_party/flann/src/cpp)
- add_subdirectory(flann)
- endif()
-@@ -90,7 +90,7 @@ add_subdirectory(fast)
- ##
- # Install Header only libraries if necessary
- ##
--if (DEFINED OpenMVG_USE_INTERNAL_EIGEN)
-+if (OpenMVG_USE_INTERNAL_EIGEN)
- #Configure Eigen install
- set(EIGEN_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/openMVG/third_party/eigen)
- add_subdirectory(eigen)
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 9cfd06c..8859469 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -14,6 +14,7 @@ if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
+ message(FATAL_ERROR "In-source builds not allowed.")
+ endif()
+
++if(0)
+ # ==============================================================================
+ # OpenMVG build options
+ # ==============================================================================
+@@ -31,7 +32,7 @@ option(OpenMVG_USE_OPENMP "Enable OpenMP parallelization" ON)
+ # and openMVG simultaneously
+ # ==============================================================================
+ option(OpenMVG_USE_OPENCV "Build or not opencv+openMVG samples programs" OFF)
+-
++endif()
+ # ==============================================================================
+ # Since OpenCV 3, SIFT is no longer in the default modules. See
+ # https://github.com/itseez/opencv_contrib for more informations.
+@@ -85,6 +86,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ register_definitions(-DOPENMVG_STD_UNORDERED_MAP)
+ endif()
+
++if(0)
+ # ==============================================================================
+ # Check that submodule have been initialized and updated
+ # ==============================================================================
+@@ -93,6 +95,7 @@ if (NOT EXISTS ${PROJECT_SOURCE_DIR}/dependencies/cereal/include)
+ "\n submodule(s) are missing, please update your repository:\n"
+ " > git submodule update -i\n")
+ endif()
++endif()
+
+ # ==============================================================================
+ # Additional cmake find modules
+@@ -128,7 +131,6 @@ if (OpenMVG_USE_OPENMP)
+ find_package(OpenMP)
+ if (OPENMP_FOUND)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
+- option(OpenMVG_USE_OPENMP "Use OpenMP for parallelization" ON)
+ register_definitions(-DOPENMVG_USE_OPENMP)
+ if (NOT MSVC)
+ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+@@ -139,11 +141,6 @@ if (OpenMVG_USE_OPENMP)
+ endif()
+ endif (NOT MSVC)
+ endif (OPENMP_FOUND)
+-else (OpenMVG_USE_OPENMP)
+- option(OpenMVG_USE_OPENMP "Use OpenMP for parallelization" OFF)
+- include(UpdateCacheVariable)
+- UPDATE_CACHE_VARIABLE(OpenMVG_USE_OPENMP OFF)
+- remove_definitions(-DOPENMVG_USE_OPENMP)
+ endif (OpenMVG_USE_OPENMP)
+
+ # ==============================================================================
+@@ -160,10 +157,10 @@ endif()
+ # ==============================================================================
+ # IMAGE IO detection
+ # ==============================================================================
+-find_package(JPEG QUIET)
+-find_package(PNG QUIET)
+-find_package(TIFF QUIET)
+-
++find_package(JPEG REQUIRED)
++find_package(PNG REQUIRED)
++find_package(TIFF REQUIRED)
++find_package(vlfeat REQUIRED)
+ # Folders
+ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+
+@@ -182,6 +179,7 @@ if (OpenMVG_BUILD_OPENGL_EXAMPLES)
+ set_property(TARGET glfw PROPERTY FOLDER OpenMVG/3rdParty/glfw)
+ endif (OpenMVG_BUILD_OPENGL_EXAMPLES)
+
++if(0)
+ # Dependencies install rules
+ install(
+ DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/
+@@ -189,7 +187,7 @@ install(
+ COMPONENT headers
+ FILES_MATCHING PATTERN "*.hpp" PATTERN "*.h"
+ )
+-
++endif()
+ # ==============================================================================
+ # --END-- SUBMODULE CONFIGURATION
+ # ==============================================================================
+@@ -225,6 +223,7 @@ ENDMACRO(UNIT_TEST)
+ # - external by default
+ # - internal if cereal not found
+ # ==============================================================================
++if(0)
+ find_package(cereal QUIET CONFIG)
+ if (NOT TARGET cereal)
+ add_library(cereal INTERFACE)
+@@ -237,6 +236,10 @@ if (NOT TARGET cereal)
+
+ set(OpenMVG_USE_INTERNAL_CEREAL ON)
+ endif()
++endif()
++
++find_package(cereal REQUIRED CONFIG)
++get_target_property(CEREAL_INCLUDE_DIRS cereal INTERFACE_INCLUDE_DIRECTORIES)
+
+ # ==============================================================================
+ # Eigen
+@@ -245,6 +248,7 @@ endif()
+ # - external if EIGEN_INCLUDE_DIR_HINTS is defined
+ # - internal if Eigen not found
+ # ==============================================================================
++if(0)
+ find_package(Eigen3 QUIET)
+ if (NOT Eigen3_FOUND)
+ set(EIGEN_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/eigen)
+@@ -253,13 +257,17 @@ if (NOT Eigen3_FOUND)
+ else()
+ set(EIGEN_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR})
+ endif()
++endif()
+
++find_package(Eigen3 REQUIRED)
++set(EIGEN_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR})
+ # ==============================================================================
+ # Ceres
+ # ==============================================================================
+ # - external by default if CERES_DIR_HINTS or find_package found a valid Ceres
+ # - internal if ceres not found (ceres-solver+cxsparse+miniglog)
+ # ==============================================================================
++if(0)
+ find_package(Ceres QUIET HINTS ${CERES_DIR_HINTS})
+ if (NOT Ceres_FOUND)
+ set(OpenMVG_USE_INTERNAL_CERES ON)
+@@ -271,13 +279,16 @@ if (NOT Ceres_FOUND)
+ STRING(REGEX REPLACE "version ([0-9.]+).*" "\\1" CERES_VERSION ${CERES_CONFIG})
+ set(CERES_LIBRARIES openMVG_ceres)
+ endif()
++endif()
+
++find_package(Ceres REQUIRED)
+ # ==============================================================================
+ # Flann
+ # ==============================================================================
+ # - internal by default (flann),
+ # - external if FLANN_INCLUDE_DIR_HINTS and a valid Flann setup is found
+ # ==============================================================================
++if(0)
+ if (NOT DEFINED FLANN_INCLUDE_DIR_HINTS)
+ set(FLANN_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/flann/src/cpp)
+ set(OpenMVG_USE_INTERNAL_FLANN ON)
+@@ -286,13 +297,16 @@ find_package(Flann QUIET)
+ if (NOT FLANN_FOUND OR OpenMVG_USE_INTERNAL_FLANN)
+ set(FLANN_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/flann/src/cpp)
+ endif()
++endif()
+
++find_package(flann REQUIRED)
+ # ==============================================================================
+ # CoinUtils
+ # ==============================================================================
+ # - internal by default (CoinUtils),
+ # - external if COINUTILS_INCLUDE_DIR_HINTS and a valid CoinUtils setup is found
+ # ==============================================================================
++if(0)
+ if (NOT DEFINED COINUTILS_INCLUDE_DIR_HINTS)
+ set(COINUTILS_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/osi_clp/CoinUtils/src/)
+ set(OpenMVG_USE_INTERNAL_COINUTILS ON)
+@@ -302,13 +316,16 @@ if (NOT DEFINED COINUTILS_INCLUDE_DIR_HINTS)
+ else()
+ find_package(CoinUtils QUIET)
+ endif()
++endif()
+
++find_package(CoinUtils REQUIRED)
+ ## ==============================================================================
+ ## Clp
+ ## ==============================================================================
+ ## - internal by default (Clp),
+ ## - external if CLP_INCLUDE_DIR_HINTS and a valid Clp setup is found
+ ## ==============================================================================
++if(0)
+ if (NOT DEFINED CLP_INCLUDE_DIR_HINTS)
+ set(CLP_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/osi_clp/Clp/src/)
+ set(OpenMVG_USE_INTERNAL_CLP ON)
+@@ -320,6 +337,9 @@ if (NOT DEFINED CLP_INCLUDE_DIR_HINTS)
+ else()
+ find_package(Clp QUIET)
+ endif()
++endif()
++
++find_package(Clp REQUIRED)
+
+ # ==============================================================================
+ # Osi
+@@ -327,6 +347,7 @@ endif()
+ # - internal by default (Osi),
+ # - external if OSI_INCLUDE_DIR_HINTS and a valid Osi setup is found
+ # ==============================================================================
++if(0)
+ if (NOT DEFINED OSI_INCLUDE_DIR_HINTS)
+ set(OSI_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/osi_clp/Osi/src/)
+ set(OpenMVG_USE_INTERNAL_OSI ON)
+@@ -336,6 +357,9 @@ if (NOT DEFINED OSI_INCLUDE_DIR_HINTS)
+ else()
+ find_package(Osi QUIET)
+ endif()
++endif()
++
++find_package(Osi REQUIRED)
+
+ # ==============================================================================
+ # Internal CLP/OSI/COINUTILS libraries:
+@@ -354,6 +378,7 @@ endif()
+ # - internal by default (Lemon),
+ # - external if LEMON_INCLUDE_DIR_HINTS and a valid Lemon setup is found
+ # ==============================================================================
++if(0)
+ if (NOT DEFINED LEMON_INCLUDE_DIR_HINTS)
+ set(LEMON_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/lemon)
+ set(OpenMVG_USE_INTERNAL_LEMON ON)
+@@ -365,6 +390,9 @@ if (NOT LEMON_FOUND OR OpenMVG_USE_INTERNAL_LEMON)
+ ${PROJECT_BINARY_DIR}/third_party/lemon)
+ set(LEMON_LIBRARY openMVG_lemon)
+ endif()
++endif()
++
++find_package(LEMON REQUIRED)
+
+ # ==============================================================================
+ # OpenCV
+@@ -372,20 +400,13 @@ endif()
+ # - only external and enabled only if OpenMVG_USE_OPENCV is set to ON
+ # ==============================================================================
+ if (OpenMVG_USE_OPENCV)
+- find_package( OpenCV QUIET )
+- if (NOT OpenCV_FOUND OR OpenCV_VERSION VERSION_LESS "3.0.0")
+- message(STATUS "OpenCV was not found (note that OpenCV version >= 3.0.0 is required). -> Disabling OpenCV support.")
+- UPDATE_CACHE_VARIABLE(OpenMVG_USE_OPENCV OFF)
+- UPDATE_CACHE_VARIABLE(OpenMVG_USE_OCVSIFT OFF)
+- endif()
++ find_package( OpenCV REQUIRED )
+ endif()
+
+-
+ # ==============================================================================
+ # Third-party libraries:
+ # ==============================================================================
+ add_subdirectory(third_party)
+-add_subdirectory(testing)
+
+ # ==============================================================================
+ # openMVG modules
+@@ -472,67 +493,67 @@ message("** Use OpenCV SIFT features: " ${OpenMVG_USE_OCVSIFT})
+
+ message("\n")
+
+-if (DEFINED OpenMVG_USE_INTERNAL_CEREAL)
++if (OpenMVG_USE_INTERNAL_CEREAL)
+ message(STATUS "CEREAL: (internal)")
+ else()
+ message(STATUS "CEREAL: (external)")
+ endif()
+
+-if (DEFINED OpenMVG_USE_INTERNAL_EIGEN)
++if (OpenMVG_USE_INTERNAL_EIGEN)
+ message(STATUS "EIGEN: " ${EIGEN_VERSION} " (internal)")
+ else()
+ message(STATUS "EIGEN: " ${EIGEN_VERSION} " (external)")
+ endif()
+
+-if (DEFINED OpenMVG_USE_INTERNAL_CERES)
++if (OpenMVG_USE_INTERNAL_CERES)
+ message(STATUS "CERES: " ${CERES_VERSION} " (internal)")
+ else()
+ message(STATUS "CERES: " ${CERES_VERSION} " (external)")
+ endif()
+
+-if (DEFINED OpenMVG_USE_INTERNAL_FLANN)
++if (OpenMVG_USE_INTERNAL_FLANN)
+ message(STATUS "FLANN: " ${FLANN_VERSION} " (internal)")
+ else()
+ message(STATUS "FLANN: " ${FLANN_VERSION} " (external)")
+ endif()
+
+-if (DEFINED OpenMVG_USE_INTERNAL_TIFF)
++if (OpenMVG_USE_INTERNAL_TIFF)
+ message(STATUS "LIBTIFF: " ${TIFF_VERSION_STRING} " (internal)")
+ else()
+ message(STATUS "LIBTIFF: " ${TIFF_VERSION_STRING} " (external)")
+ endif()
+
+-if (DEFINED OpenMVG_USE_INTERNAL_PNG)
++if (OpenMVG_USE_INTERNAL_PNG)
+ message(STATUS "LIBPNG: " ${PNG_VERSION_STRING} " (internal)")
+ else()
+ message(STATUS "LIBPNG: " ${PNG_VERSION_STRING} " (external)")
+ endif()
+
+-if (DEFINED OpenMVG_USE_INTERNAL_JPEG)
++if (OpenMVG_USE_INTERNAL_JPEG)
+ message(STATUS "LIBJPEG (internal)")
+ else()
+ message(STATUS "LIBJPEG (external)")
+ endif()
+
+-if (DEFINED OpenMVG_USE_INTERNAL_CLP)
++if (OpenMVG_USE_INTERNAL_CLP)
+ message(STATUS "CLP: " ${CLP_VERSION} " (internal)")
+ else()
+ message(STATUS "CLP: " ${CLP_VERSION} " (external)")
+ endif()
+
+-if (DEFINED OpenMVG_USE_INTERNAL_COINUTILS)
++if (OpenMVG_USE_INTERNAL_COINUTILS)
+ message(STATUS "COINUTILS: " ${COINUTILS_VERSION} " (internal)")
+ else()
+ message(STATUS "COINUTILS: " ${COINUTILS_VERSION} " (external)")
+ endif()
+
+-if (DEFINED OpenMVG_USE_INTERNAL_OSI)
++if (OpenMVG_USE_INTERNAL_OSI)
+ message(STATUS "OSI: " ${OSI_VERSION} " (internal)")
+ else()
+ message(STATUS "OSI: " ${OSI_VERSION} " (external)")
+ endif()
+
+-if (DEFINED OpenMVG_USE_INTERNAL_LEMON)
++if (OpenMVG_USE_INTERNAL_LEMON)
+ message(STATUS "LEMON: " ${LEMON_VERSION} " (internal)")
+ else()
+ message(STATUS "LEMON: " ${LEMON_VERSION} " (external)")
+diff --git a/src/cmakeFindModules/FindClp.cmake b/src/cmakeFindModules/FindClp.cmake
+index 8a69c23..6a81580 100644
+--- a/src/cmakeFindModules/FindClp.cmake
++++ b/src/cmakeFindModules/FindClp.cmake
+@@ -51,9 +51,8 @@ IF(EXISTS "${CLP_DIR}" AND NOT "${CLP_DIR}" STREQUAL "")
+ SET(CLP_INCLUDE_DIR ${CLP_DIR})
+
+ FIND_LIBRARY(CLP_LIBRARY NAMES Clp)
+- FIND_LIBRARY(CLPSOLVER_LIBRARY NAMES ClpSolver)
+- FIND_LIBRARY(OSICLP_LIBRARY NAMES OsiClp)
+-
++ FIND_LIBRARY(CLPSOLVER_LIBRARY NAMES ClpSolver Clp)
++ FIND_LIBRARY(OSICLP_LIBRARY NAMES OsiClp Clp)
+ # locate Clp libraries
+ IF(DEFINED CLP_LIBRARY AND DEFINED CLPSOLVER_LIBRARY AND DEFINED OSICLP_LIBRARY)
+ SET(CLP_LIBRARIES ${CLP_LIBRARY} ${CLPSOLVER_LIBRARY} ${OSICLP_LIBRARY})
+diff --git a/src/cmakeFindModules/OpenMVGConfig.cmake.in b/src/cmakeFindModules/OpenMVGConfig.cmake.in
+index e7dfbfd..c01910d 100644
+--- a/src/cmakeFindModules/OpenMVGConfig.cmake.in
++++ b/src/cmakeFindModules/OpenMVGConfig.cmake.in
+@@ -19,7 +19,7 @@
+ # OPENMVG_VERSION: Version of OpenMVG found.
+ #
+
+-# Called if we failed to find OpenMVG or any of it's required dependencies,
++# Called if we failed to find OpenMVG or any of its required dependencies,
+ # unsets all public (designed to be used externally) variables and reports
+ # error message at priority depending upon [REQUIRED/QUIET/<NONE>] argument.
+ macro(OPENMVG_REPORT_NOT_FOUND REASON_MSG)
+@@ -59,9 +59,19 @@ set(CALLERS_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH})
+ # script.
+ set(CMAKE_MODULE_PATH ${CURRENT_CONFIG_INSTALL_DIR})
+
++include(CMakeFindDependencyMacro)
++find_dependency(CoinUtils)
++find_dependency(Clp)
++find_dependency(Osi)
++find_dependency(flann)
++find_dependency(Threads)
++find_dependency(cereal)
++find_dependency(Ceres)
++find_dependency(vlfeat)
++
+ # Build the absolute root install directory as a relative path
+ get_filename_component(CURRENT_ROOT_INSTALL_DIR
+- ${CMAKE_MODULE_PATH}/../../../ ABSOLUTE)
++ ${CMAKE_MODULE_PATH}/../../ ABSOLUTE)
+ if (NOT EXISTS ${CURRENT_ROOT_INSTALL_DIR})
+ OPENMVG_REPORT_NOT_FOUND(
+ "OpenMVG install root: ${CURRENT_ROOT_INSTALL_DIR}, "
+diff --git a/src/nonFree/sift/CMakeLists.txt b/src/nonFree/sift/CMakeLists.txt
+index 402a2d8..60ddc11 100644
+--- a/src/nonFree/sift/CMakeLists.txt
++++ b/src/nonFree/sift/CMakeLists.txt
+@@ -1,36 +1,36 @@
+
+-# libs should be static
+-set(BUILD_SHARED_LIBS OFF)
+-
+-# use PIC code for link into shared lib
+-if(UNIX)
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
+-endif(UNIX)
+-
+-if(NOT USE_SSE2)
+- add_definitions(-DVL_DISABLE_SSE2)
+-endif()
+-
+-add_definitions(-DVL_DISABLE_THREADS)
+-
+-include_directories(./vl)
+-set(FEATS
+- vl/generic.c
+- vl/imopv_sse2.c
+- vl/sift.c
+- vl/imopv.c
+- vl/mathop_sse2.c
+- vl/sift.c
+- vl/host.c
+- vl/mathop.c
+- vl/random.c)
+-set_source_files_properties(${FEATS} PROPERTIES LANGUAGE C)
+-add_library(vlsift ${FEATS})
+-install(TARGETS vlsift DESTINATION lib EXPORT openMVG-targets)
+-set_property(TARGET vlsift PROPERTY FOLDER OpenMVG/nonFree)
++## libs should be static
++#set(BUILD_SHARED_LIBS OFF)
++#
++## use PIC code for link into shared lib
++#if(UNIX)
++# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
++#endif(UNIX)
++#
++#if(NOT USE_SSE2)
++# add_definitions(-DVL_DISABLE_SSE2)
++#endif()
++#
++#add_definitions(-DVL_DISABLE_THREADS)
++#
++#include_directories(./vl)
++#set(FEATS
++# vl/generic.c
++# vl/imopv_sse2.c
++# vl/sift.c
++# vl/imopv.c
++# vl/mathop_sse2.c
++# vl/sift.c
++# vl/host.c
++# vl/mathop.c
++# vl/random.c)
++#set_source_files_properties(${FEATS} PROPERTIES LANGUAGE C)
++#add_library(vlsift ${FEATS})
++#install(TARGETS vlsift DESTINATION lib EXPORT openMVG-targets)
++#set_property(TARGET vlsift PROPERTY FOLDER OpenMVG/nonFree)
+ install(
+ DIRECTORY .
+ DESTINATION include/openMVG_dependencies/nonFree/sift
+ COMPONENT headers
+- FILES_MATCHING PATTERN "*.hpp" PATTERN "*.h"
++ FILES_MATCHING PATTERN "*.hpp"
+ )
+diff --git a/src/nonFree/sift/SIFT_describer.hpp b/src/nonFree/sift/SIFT_describer.hpp
+index cd800b0..20e9c8e 100644
+--- a/src/nonFree/sift/SIFT_describer.hpp
++++ b/src/nonFree/sift/SIFT_describer.hpp
+@@ -17,9 +17,7 @@
+ #include <iostream>
+ #include <numeric>
+
+-extern "C" {
+-#include "nonFree/sift/vl/sift.h"
+-}
++#include <sift.h>
+
+ namespace openMVG {
+ namespace features {
+@@ -174,7 +172,7 @@ public:
+ const int nkeys = vl_sift_get_nkeypoints(filt);
+
+ // Update gradient before launching parallel extraction
+- vl_sift_update_gradient(filt);
++ update_gradient(filt);
+
+ #ifdef OPENMVG_USE_OPENMP
+ #pragma omp parallel for private(descr, descriptor)
+diff --git a/src/openMVG/linearProgramming/CMakeLists.txt b/src/openMVG/linearProgramming/CMakeLists.txt
+index cc5212f..acc57dd 100644
+--- a/src/openMVG/linearProgramming/CMakeLists.txt
++++ b/src/openMVG/linearProgramming/CMakeLists.txt
+@@ -15,16 +15,12 @@ target_link_libraries(openMVG_linearProgramming
+ PUBLIC
+ openMVG_numeric
+ PRIVATE
+- ${CLP_LIBRARIES} # clp + solver wrapper
+- ${COINUTILS_LIBRARY} # container tools
+- ${OSI_LIBRARY} # generic LP
++ Coin::Clp # clp + solver wrapper
++ Coin::CoinUtils # container tools
++ Coin::Osi # generic LP
+ )
+
+ target_include_directories(openMVG_linearProgramming
+- PRIVATE
+- ${CLP_INCLUDE_DIRS}
+- ${COINUTILS_INCLUDE_DIRS}
+- ${OSI_INCLUDE_DIRS}
+ PUBLIC
+ $<INSTALL_INTERFACE:include>
+ )
+diff --git a/src/openMVG/matching/CMakeLists.txt b/src/openMVG/matching/CMakeLists.txt
+index 5fcd972..b21ea7b 100644
+--- a/src/openMVG/matching/CMakeLists.txt
++++ b/src/openMVG/matching/CMakeLists.txt
+@@ -18,6 +18,7 @@ list(REMOVE_ITEM matching_files_cpp ${REMOVEFILESUNITTEST})
+
+ set(THREADS_PREFER_PTHREAD_FLAG ON)
+ find_package(Threads REQUIRED)
++find_package(flann REQUIRED)
+
+ set_source_files_properties(${matching_files_cpp} PROPERTIES LANGUAGE CXX)
+ add_library(openMVG_matching
+@@ -39,10 +40,10 @@ target_link_libraries(openMVG_matching
+ Threads::Threads
+ cereal
+ )
+-if (NOT DEFINED OpenMVG_USE_INTERNAL_FLANN)
++if (NOT OpenMVG_USE_INTERNAL_FLANN)
+ target_link_libraries(openMVG_matching
+ PUBLIC
+- ${FLANN_LIBRARIES}
++ flann::flann
+ )
+ endif()
+ set_target_properties(openMVG_matching PROPERTIES SOVERSION ${OPENMVG_VERSION_MAJOR} VERSION "${OPENMVG_VERSION_MAJOR}.${OPENMVG_VERSION_MINOR}")
+diff --git a/src/openMVG/numeric/CMakeLists.txt b/src/openMVG/numeric/CMakeLists.txt
+index 06baee7..47255be 100644
+--- a/src/openMVG/numeric/CMakeLists.txt
++++ b/src/openMVG/numeric/CMakeLists.txt
+@@ -24,7 +24,7 @@ target_include_directories(openMVG_numeric
+ $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}>
+ $<INSTALL_INTERFACE:include>
+ )
+-if (DEFINED OpenMVG_USE_INTERNAL_EIGEN)
++if (OpenMVG_USE_INTERNAL_EIGEN)
+ target_include_directories(openMVG_numeric PUBLIC
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include/openMVG/third_party/eigen/>)
+ else()
+diff --git a/src/openMVG_Samples/describe_and_match_GUI/CMakeLists.txt b/src/openMVG_Samples/describe_and_match_GUI/CMakeLists.txt
+index 862ffc7..326fc9a 100644
+--- a/src/openMVG_Samples/describe_and_match_GUI/CMakeLists.txt
++++ b/src/openMVG_Samples/describe_and_match_GUI/CMakeLists.txt
+@@ -18,7 +18,7 @@ if (OpenMVG_BUILD_GUI_SOFTWARES)
+ add_executable( openMVG_sample_describe_and_match_GUI WIN32 ${FEATURES_PAIR_DEMO_SRCS} ${FEATURES_PAIR_DEMO_HDRS} )
+ endif( APPLE )
+
+- target_link_libraries( openMVG_sample_describe_and_match_GUI Qt5::Widgets openMVG_features openMVG_image openMVG_matching vlsift )
++ target_link_libraries( openMVG_sample_describe_and_match_GUI Qt5::Widgets openMVG_features openMVG_image openMVG_matching unofficial::vlfeat::vl )
+
+ set_target_properties( openMVG_sample_describe_and_match_GUI PROPERTIES CXX_STANDARD 11)
+
+diff --git a/src/openMVG_Samples/features_image_matching/CMakeLists.txt b/src/openMVG_Samples/features_image_matching/CMakeLists.txt
+index 18fb385..d44ffce 100644
+--- a/src/openMVG_Samples/features_image_matching/CMakeLists.txt
++++ b/src/openMVG_Samples/features_image_matching/CMakeLists.txt
+@@ -5,7 +5,7 @@ target_link_libraries(openMVG_sample_image_matching
+ openMVG_features
+ openMVG_matching
+ ${STLPLUS_LIBRARY}
+- vlsift)
++ unofficial::vlfeat::vl)
+ target_compile_definitions(openMVG_sample_image_matching
+ PRIVATE -DTHIS_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
+
+diff --git a/src/openMVG_Samples/features_repeatability/CMakeLists.txt b/src/openMVG_Samples/features_repeatability/CMakeLists.txt
+index fd2b7c6..91f2766 100644
+--- a/src/openMVG_Samples/features_repeatability/CMakeLists.txt
++++ b/src/openMVG_Samples/features_repeatability/CMakeLists.txt
+@@ -6,7 +6,7 @@ target_link_libraries(openMVG_sample_main_features_repeatability_dataset
+ openMVG_matching
+ openMVG_system
+ openMVG_multiview
+- vlsift
++ unofficial::vlfeat::vl
+ ${STLPLUS_LIBRARY})
+
+ set_property(TARGET openMVG_sample_main_features_repeatability_dataset PROPERTY FOLDER OpenMVG/Samples)
+diff --git a/src/software/Localization/CMakeLists.txt b/src/software/Localization/CMakeLists.txt
+index 2f60393..0d57d0a 100644
+--- a/src/software/Localization/CMakeLists.txt
++++ b/src/software/Localization/CMakeLists.txt
+@@ -11,7 +11,7 @@ target_link_libraries(openMVG_main_SfM_Localization
+ openMVG_sfm
+ openMVG_exif
+ ${STLPLUS_LIBRARY}
+- vlsift
++ unofficial::vlfeat::vl
+ )
+
+ # Installation rules
+diff --git a/src/software/SfM/CMakeLists.txt b/src/software/SfM/CMakeLists.txt
+index 013a6c8..f38daa9 100644
+--- a/src/software/SfM/CMakeLists.txt
++++ b/src/software/SfM/CMakeLists.txt
+@@ -44,7 +44,7 @@ target_link_libraries(openMVG_main_ComputeFeatures
+ openMVG_multiview
+ openMVG_sfm
+ ${STLPLUS_LIBRARY}
+- vlsift
++ unofficial::vlfeat::vl
+ )
+ if (MSVC)
+ set_target_properties(openMVG_main_ComputeFeatures PROPERTIES COMPILE_FLAGS "/bigobj")
+@@ -235,7 +235,7 @@ if(OpenMVG_USE_OPENCV)
+ openMVG_multiview
+ openMVG_sfm
+ ${STLPLUS_LIBRARY}
+- vlsift
++ unofficial::vlfeat::vl
+ ${OpenCV_LIBS})
+ target_include_directories(openMVG_main_ComputeFeatures_OpenCV PRIVATE ${OpenCV_INCLUDE_DIRS})
+
+diff --git a/src/software/SfM/SfM_GlobalPipeline.py.in b/src/software/SfM/SfM_GlobalPipeline.py.in
+index 42405a4..28b0246 100644
+--- a/src/software/SfM/SfM_GlobalPipeline.py.in
++++ b/src/software/SfM/SfM_GlobalPipeline.py.in
+@@ -21,7 +21,7 @@
+ OPENMVG_SFM_BIN = "@OPENMVG_SOFTWARE_SFM_BUILD_DIR@"
+
+ # Indicate the openMVG camera sensor width directory
+-CAMERA_SENSOR_WIDTH_DIRECTORY = "@OPENMVG_SOFTWARE_SFM_SRC_DIR@" + "/../../openMVG/exif/sensor_width_database"
++CAMERA_SENSOR_WIDTH_DIRECTORY = "@OPENMVG_CAMERA_SENSOR_WIDTH_DIRECTORY@"
+
+ import os
+ import subprocess
+@@ -77,5 +77,3 @@ pRecons.wait()
+
+ pRecons = subprocess.Popen( [os.path.join(OPENMVG_SFM_BIN, "openMVG_main_ComputeSfM_DataColor"), "-i", reconstruction_dir+"/robust.bin", "-o", os.path.join(reconstruction_dir,"robust_colorized.ply")] )
+ pRecons.wait()
+-
+-
+diff --git a/src/software/SfM/SfM_SequentialPipeline.py.in b/src/software/SfM/SfM_SequentialPipeline.py.in
+index 9a5a482..e804a19 100644
+--- a/src/software/SfM/SfM_SequentialPipeline.py.in
++++ b/src/software/SfM/SfM_SequentialPipeline.py.in
+@@ -21,7 +21,7 @@
+ OPENMVG_SFM_BIN = "@OPENMVG_SOFTWARE_SFM_BUILD_DIR@"
+
+ # Indicate the openMVG camera sensor width directory
+-CAMERA_SENSOR_WIDTH_DIRECTORY = "@OPENMVG_SOFTWARE_SFM_SRC_DIR@" + "/../../openMVG/exif/sensor_width_database"
++CAMERA_SENSOR_WIDTH_DIRECTORY = "@OPENMVG_CAMERA_SENSOR_WIDTH_DIRECTORY@"
+
+ import os
+ import subprocess
+@@ -77,5 +77,3 @@ pRecons.wait()
+
+ pRecons = subprocess.Popen( [os.path.join(OPENMVG_SFM_BIN, "openMVG_main_ComputeSfM_DataColor"), "-i", reconstruction_dir+"/robust.bin", "-o", os.path.join(reconstruction_dir,"robust_colorized.ply")] )
+ pRecons.wait()
+-
+-
+diff --git a/src/software/SfM/tutorial_demo.py.in b/src/software/SfM/tutorial_demo.py.in
+index 259e24e..1097062 100644
+--- a/src/software/SfM/tutorial_demo.py.in
++++ b/src/software/SfM/tutorial_demo.py.in
+@@ -12,7 +12,7 @@
+ OPENMVG_SFM_BIN = "@OPENMVG_SOFTWARE_SFM_BUILD_DIR@"
+
+ # Indicate the openMVG camera sensor width directory
+-CAMERA_SENSOR_WIDTH_DIRECTORY = "@OPENMVG_SOFTWARE_SFM_SRC_DIR@" + "/../../openMVG/exif/sensor_width_database"
++CAMERA_SENSOR_WIDTH_DIRECTORY = "@OPENMVG_CAMERA_SENSOR_WIDTH_DIRECTORY@"
+
+ import os
+ import subprocess
+@@ -89,5 +89,3 @@ pRecons.wait()
+ print ("4. Structure from Known Poses (robust triangulation)")
+ pRecons = subprocess.Popen( [os.path.join(OPENMVG_SFM_BIN, "openMVG_main_ComputeStructureFromKnownPoses"), "-i", reconstruction_dir+"/sfm_data.bin", "-m", matches_dir, "-o", os.path.join(reconstruction_dir,"robust.ply")] )
+ pRecons.wait()
+-
+-
+diff --git a/src/software/VO/Tracker_opencv_klt.hpp b/src/software/VO/Tracker_opencv_klt.hpp
+index aa7dffe..2c4d237 100644
+--- a/src/software/VO/Tracker_opencv_klt.hpp
++++ b/src/software/VO/Tracker_opencv_klt.hpp
+@@ -80,7 +80,7 @@ struct Tracker_opencv_KLT : public Abstract_Tracker
+ std::vector<cv::KeyPoint> m_nextKeypoints;
+
+ cv::Ptr<cv::FeatureDetector> m_detector = cv::GFTTDetector::create(count);
+- if (m_detector == NULL)
++ if (m_detector == nullptr)
+ return false;
+
+ m_detector->detect(current_img, m_nextKeypoints);
+diff --git a/src/third_party/CMakeLists.txt b/src/third_party/CMakeLists.txt
+index 816a941..f0b7145 100644
+--- a/src/third_party/CMakeLists.txt
++++ b/src/third_party/CMakeLists.txt
+@@ -18,7 +18,7 @@ add_subdirectory(stlplus3)
+ set(STLPLUS_LIBRARY openMVG_stlplus PARENT_SCOPE)
+
+ # Add graph library
+-if(DEFINED OpenMVG_USE_INTERNAL_LEMON)
++if(OpenMVG_USE_INTERNAL_LEMON)
+ add_subdirectory(lemon)
+ set_property(TARGET openMVG_lemon PROPERTY FOLDER OpenMVG/3rdParty/lemon)
+ set_property(TARGET check PROPERTY FOLDER OpenMVG/3rdParty/lemon)
+@@ -68,7 +68,7 @@ endif (NOT TIFF_FOUND)
+ add_subdirectory(vectorGraphics)
+
+ # Add ceres-solver (A Nonlinear Least Squares Minimizer)
+-if (DEFINED OpenMVG_USE_INTERNAL_CERES)
++if (OpenMVG_USE_INTERNAL_CERES)
+ add_subdirectory(cxsparse)
+ add_subdirectory(ceres-solver)
+ set_property(TARGET openMVG_cxsparse PROPERTY FOLDER OpenMVG/3rdParty/ceres)
+@@ -76,7 +76,7 @@ if (DEFINED OpenMVG_USE_INTERNAL_CERES)
+ endif()
+
+ # Add an Approximate Nearest Neighbor library
+-if (DEFINED OpenMVG_USE_INTERNAL_FLANN)
++if (OpenMVG_USE_INTERNAL_FLANN)
+ set(FLANN_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/openMVG/third_party/flann/src/cpp)
+ add_subdirectory(flann)
+ endif()
+@@ -90,7 +90,7 @@ add_subdirectory(fast)
+ ##
+ # Install Header only libraries if necessary
+ ##
+-if (DEFINED OpenMVG_USE_INTERNAL_EIGEN)
++if (OpenMVG_USE_INTERNAL_EIGEN)
+ #Configure Eigen install
+ set(EIGEN_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/openMVG/third_party/eigen)
+ add_subdirectory(eigen)
diff --git a/ports/openmvg/fix-config-cmake.patch b/ports/openmvg/fix-config-cmake.patch
deleted file mode 100644
index f229502ce..000000000
--- a/ports/openmvg/fix-config-cmake.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/src/cmakeFindModules/OpenMVGConfig.cmake.in b/src/cmakeFindModules/OpenMVGConfig.cmake.in
-index e7dfbfd..357a25c 100644
---- a/src/cmakeFindModules/OpenMVGConfig.cmake.in
-+++ b/src/cmakeFindModules/OpenMVGConfig.cmake.in
-@@ -61,7 +61,7 @@ set(CMAKE_MODULE_PATH ${CURRENT_CONFIG_INSTALL_DIR})
-
- # Build the absolute root install directory as a relative path
- get_filename_component(CURRENT_ROOT_INSTALL_DIR
-- ${CMAKE_MODULE_PATH}/../../../ ABSOLUTE)
-+ ${CMAKE_MODULE_PATH}/../../ ABSOLUTE)
- if (NOT EXISTS ${CURRENT_ROOT_INSTALL_DIR})
- OPENMVG_REPORT_NOT_FOUND(
- "OpenMVG install root: ${CURRENT_ROOT_INSTALL_DIR}, "
diff --git a/ports/openmvg/portfile.cmake b/ports/openmvg/portfile.cmake
index c62ceaa4d..0b3265d6a 100644
--- a/ports/openmvg/portfile.cmake
+++ b/ports/openmvg/portfile.cmake
@@ -3,22 +3,33 @@ vcpkg_buildpath_length_warning(37)
#the port produces some empty dlls when building shared libraries, since some components do not export anything, breaking the internal build itself
vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
+if("software" IN_LIST FEATURES AND VCPKG_CRT_LINKAGE STREQUAL static)
+ message(FATAL_ERROR "OpenMVG software currently cannot be built with static CRT linking. Please open an issue if you require this feature.")
+endif()
+
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO openMVG/openMVG
REF 606d1c9e82123dd50de282128151a50bf42262fc # v1.5
SHA512 eddcf4c5f86541112840a6d89bbf360d30b085c2b3ff3e39b357030a465163b465e89d01474f8dbd65b66f8bccfc1f54a58963324f622482e2960f00214b2b75
PATCHES
- fixcmake.patch
- fix-config-cmake.patch
+ build_fixes.patch
)
+set(OpenMVG_USE_OPENMP OFF)
+if("openmp" IN_LIST FEATURES)
+ if(VCPKG_TARGET_IS_WINDOWS)
+ message(WARNING "OpenMP feature is broken on Windows, disabled until fixed https://github.com/openMVG/openMVG/issues/1765")
+ else()
+ set(OpenMVG_USE_OPENMP ON)
+ endif()
+endif()
+
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
- openmp OpenMVG_USE_OPENMP
- openmp ENABLE_OPENMP
opencv OpenMVG_USE_OPENCV
opencv OpenMVG_USE_OCVSIFT
- opencv ENABLE_OPENCV
+ software OpenMVG_BUILD_SOFTWARES
+ software OpenMVG_BUILD_GUI_SOFTWARES
)
# remove some deps to prevent conflict
@@ -44,13 +55,12 @@ vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}/src
PREFER_NINJA
OPTIONS ${FEATURE_OPTIONS}
+ -DOpenMVG_USE_OPENMP=${OpenMVG_USE_OPENMP}
-DOpenMVG_BUILD_SHARED=OFF
-DOpenMVG_BUILD_TESTS=OFF
-DOpenMVG_BUILD_DOC=OFF
-DOpenMVG_BUILD_EXAMPLES=OFF
-DOpenMVG_BUILD_OPENGL_EXAMPLES=OFF
- -DOpenMVG_BUILD_SOFTWARES=OFF
- -DOpenMVG_BUILD_GUI_SOFTWARES=OFF
-DOpenMVG_BUILD_COVERAGE=OFF
-DOpenMVG_USE_INTERNAL_CLP=OFF
-DOpenMVG_USE_INTERNAL_COINUTILS=OFF
@@ -64,28 +74,102 @@ vcpkg_configure_cmake(
vcpkg_install_cmake()
vcpkg_fixup_cmake_targets(CONFIG_PATH share/openMVG/cmake)
-file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include ${CURRENT_PACKAGES_DIR}/debug/share)
-#remove extra deprecated cmake target files left in unappropriate folders
-file(GLOB REMOVE_CMAKE ${CURRENT_PACKAGES_DIR}/lib/*.cmake)
-file(REMOVE_RECURSE ${REMOVE_CMAKE})
-file(GLOB REMOVE_CMAKE ${CURRENT_PACKAGES_DIR}/debug/lib/*.cmake)
-file(REMOVE_RECURSE ${REMOVE_CMAKE})
+if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
+ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include ${CURRENT_PACKAGES_DIR}/debug/share)
+endif()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/openMVG/image/image_test
- ${CURRENT_PACKAGES_DIR}/include/openMVG/exif/image_data)
+ ${CURRENT_PACKAGES_DIR}/include/openMVG/exif/image_data
+ ${CURRENT_PACKAGES_DIR}/include/openMVG_dependencies/nonFree/sift/vl)
if(OpenMVG_BUILD_SHARED)
- # release
- file(GLOB DLL_FILES ${CURRENT_PACKAGES_DIR}/lib/*.dll)
- file(COPY ${DLL_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
- file(REMOVE_RECURSE ${DLL_FILES})
- # debug
- file(GLOB DLL_FILES ${CURRENT_PACKAGES_DIR}/debug/lib/*.dll)
- file(COPY ${DLL_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin)
- file(REMOVE_RECURSE ${DLL_FILES})
+ if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
+ # release
+ file(GLOB DLL_FILES ${CURRENT_PACKAGES_DIR}/lib/*.dll)
+ file(COPY ${DLL_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
+ file(REMOVE_RECURSE ${DLL_FILES})
+ endif()
+ if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
+ # debug
+ file(GLOB DLL_FILES ${CURRENT_PACKAGES_DIR}/debug/lib/*.dll)
+ file(COPY ${DLL_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin)
+ file(REMOVE_RECURSE ${DLL_FILES})
+ endif()
endif()
vcpkg_copy_pdbs()
+if("software" IN_LIST FEATURES)
+ if(VCPKG_TARGET_IS_OSX)
+ vcpkg_copy_tools(TOOL_NAMES
+ openMVG_main_AlternativeVO.app
+ ui_openMVG_MatchesViewer.app
+ )
+ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin/openMVG_main_AlternativeVO.app)
+ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin/ui_openMVG_MatchesViewer.app)
+ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/bin/openMVG_main_AlternativeVO.app)
+ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/bin/ui_openMVG_MatchesViewer.app)
+ else()
+ vcpkg_copy_tools(AUTO_CLEAN TOOL_NAMES
+ openMVG_main_AlternativeVO
+ ui_openMVG_MatchesViewer
+ )
+ endif()
+ vcpkg_copy_tools(AUTO_CLEAN TOOL_NAMES
+ openMVG_main_ChangeLocalOrigin
+ openMVG_main_ColHarmonize
+ openMVG_main_ComputeClusters
+ openMVG_main_ComputeFeatures
+ openMVG_main_ComputeMatches
+ openMVG_main_ComputeSfM_DataColor
+ openMVG_main_ComputeStructureFromKnownPoses
+ openMVG_main_ConvertList
+ openMVG_main_ConvertSfM_DataFormat
+ openMVG_main_evalQuality
+ openMVG_main_ExportCameraFrustums
+ openMVG_main_exportKeypoints
+ openMVG_main_exportMatches
+ openMVG_main_exportTracks
+ openMVG_main_ExportUndistortedImages
+ openMVG_main_FrustumFiltering
+ openMVG_main_geodesy_registration_to_gps_position
+ openMVG_main_GlobalSfM
+ openMVG_main_IncrementalSfM
+ openMVG_main_IncrementalSfM2
+ openMVG_main_ListMatchingPairs
+ openMVG_main_MatchesToTracks
+ openMVG_main_openMVG2Agisoft
+ openMVG_main_openMVG2CMPMVS
+ openMVG_main_openMVG2Colmap
+ openMVG_main_openMVG2MESHLAB
+ openMVG_main_openMVG2MVE2
+ openMVG_main_openMVG2MVSTEXTURING
+ openMVG_main_openMVG2NVM
+ openMVG_main_openMVG2openMVS
+ openMVG_main_openMVG2PMVS
+ openMVG_main_openMVG2WebGL
+ openMVG_main_openMVGSpherical2Cubic
+ openMVG_main_PointsFiltering
+ openMVG_main_SfMInit_ImageListing
+ openMVG_main_SfMInit_ImageListingFromKnownPoses
+ openMVG_main_SfM_Localization
+ openMVG_main_SplitMatchFileIntoMatchFiles
+ ui_openMVG_control_points_registration
+ )
+ if("opencv" IN_LIST FEATURES)
+ vcpkg_copy_tools(AUTO_CLEAN TOOL_NAMES
+ openMVG_main_ComputeFeatures_OpenCV
+ )
+ endif()
+
+ file(COPY ${SOURCE_PATH}/src/openMVG/exif/sensor_width_database/sensor_width_camera_database.txt DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
+ set(OPENMVG_SOFTWARE_SFM_BUILD_DIR ${CURRENT_INSTALLED_DIR}/tools/${PORT})
+ set(OPENMVG_CAMERA_SENSOR_WIDTH_DIRECTORY ${CURRENT_INSTALLED_DIR}/tools/${PORT})
+ configure_file("${SOURCE_PATH}/src/software/SfM/tutorial_demo.py.in" "${CURRENT_PACKAGES_DIR}/tools/${PORT}/tutorial_demo.py" @ONLY)
+ configure_file("${SOURCE_PATH}/src/software/SfM/SfM_GlobalPipeline.py.in" "${CURRENT_PACKAGES_DIR}/tools/${PORT}/SfM_GlobalPipeline.py" @ONLY)
+ configure_file("${SOURCE_PATH}/src/software/SfM/SfM_SequentialPipeline.py.in" "${CURRENT_PACKAGES_DIR}/tools/${PORT}/SfM_SequentialPipeline.py" @ONLY)
+ message(STATUS "To use tools, you need graphviz installed and manually added to path (to have neato executable)")
+endif()
+
# Handle copyright
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
diff --git a/ports/openmvs/CONTROL b/ports/openmvs/CONTROL
index bc06aef4a..bf4f0f53c 100644
--- a/ports/openmvs/CONTROL
+++ b/ports/openmvs/CONTROL
@@ -1,5 +1,13 @@
Source: openmvs
-Version: 1.1-1
+Version: 1.1
+Port-Version: 2
Description: OpenMVS: open Multi-View Stereo reconstruction library
Homepage: https://cdcseacave.github.io/openMVS
-Build-Depends: zlib, boost-iostreams, boost-program-options, boost-system, boost-serialization, eigen3, ceres, opencv, cgal[core], glew, glfw3, vcglib
+Build-Depends: zlib, boost-iostreams, boost-program-options, boost-system, boost-serialization, eigen3, opencv, cgal[core], glew, glfw3, vcglib, openmvg[software] (!(windows&static)), libpng, tiff
+
+Feature: cuda
+Build-Depends: cuda
+Description: cuda support for openmvs
+
+Feature: openmp
+Description: openmp support for openmvs
diff --git a/ports/openmvs/fix-build.patch b/ports/openmvs/fix-build.patch
new file mode 100644
index 000000000..0cd759503
--- /dev/null
+++ b/ports/openmvs/fix-build.patch
@@ -0,0 +1,408 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 7966ed5..4e0f673 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -63,7 +63,7 @@ INCLUDE_DIRECTORIES("${OpenMVS_SOURCE_DIR}")
+ SET(OpenMVS_EXTRA_LIBS "")
+ if(OpenMVS_USE_OPENMP)
+ SET(OpenMP_LIBS "")
+- FIND_PACKAGE(OpenMP)
++ FIND_PACKAGE(OpenMP REQUIRED)
+ if(OPENMP_FOUND)
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
+ ADD_DEFINITIONS(-D_USE_OPENMP)
+@@ -83,7 +83,7 @@ if(OpenMVS_USE_OPENGL)
+ if(POLICY CMP0072)
+ cmake_policy(SET CMP0072 NEW)
+ endif()
+- FIND_PACKAGE(OpenGL)
++ FIND_PACKAGE(OpenGL REQUIRED)
+ if(OPENGL_FOUND)
+ INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
+ ADD_DEFINITIONS(${OpenGL_DEFINITIONS} -D_USE_OPENGL)
+@@ -94,7 +94,7 @@ if(OpenMVS_USE_OPENGL)
+ endif()
+
+ if(OpenMVS_USE_CUDA)
+- FIND_PACKAGE(CUDA)
++ FIND_PACKAGE(CUDA REQUIRED)
+ if(CUDA_FOUND)
+ INCLUDE_DIRECTORIES(${CUDA_INCLUDE_DIRS})
+ ADD_DEFINITIONS(-D_USE_CUDA)
+@@ -108,7 +108,7 @@ else()
+ endif()
+
+ if(OpenMVS_USE_BREAKPAD)
+- FIND_PACKAGE(BREAKPAD)
++ FIND_PACKAGE(BREAKPAD REQUIRED)
+ if(BREAKPAD_FOUND)
+ INCLUDE_DIRECTORIES(${BREAKPAD_INCLUDE_DIRS})
+ ADD_DEFINITIONS(${BREAKPAD_DEFINITIONS} -D_USE_BREAKPAD)
+@@ -119,7 +119,7 @@ if(OpenMVS_USE_BREAKPAD)
+ endif()
+ endif()
+
+-FIND_PACKAGE(Boost ${SYSTEM_PACKAGE_REQUIRED} COMPONENTS iostreams program_options system serialization)
++FIND_PACKAGE(Boost COMPONENTS iostreams program_options system serialization REQUIRED)
+ if(Boost_FOUND)
+ INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
+ ADD_DEFINITIONS(${Boost_DEFINITIONS} -D_USE_BOOST)
+@@ -127,14 +127,14 @@ if(Boost_FOUND)
+ SET(_USE_BOOST TRUE)
+ endif()
+
+-FIND_PACKAGE(Eigen ${SYSTEM_PACKAGE_REQUIRED})
+-if(EIGEN_FOUND)
+- INCLUDE_DIRECTORIES(${EIGEN_INCLUDE_DIRS})
+- ADD_DEFINITIONS(${EIGEN_DEFINITIONS} -D_USE_EIGEN)
++FIND_PACKAGE(Eigen3 REQUIRED)
++if(EIGEN3_FOUND)
++ INCLUDE_DIRECTORIES(${EIGEN3_INCLUDE_DIRS})
++ ADD_DEFINITIONS(${EIGEN3_DEFINITIONS} -D_USE_EIGEN)
+ SET(_USE_EIGEN TRUE)
+ endif()
+
+-FIND_PACKAGE(OpenCV ${SYSTEM_PACKAGE_REQUIRED})
++FIND_PACKAGE(OpenCV REQUIRED)
+ if(OpenCV_FOUND)
+ INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
+ ADD_DEFINITIONS(${OpenCV_DEFINITIONS})
+@@ -170,7 +170,9 @@ ADD_DEFINITIONS(${OpenMVS_DEFINITIONS})
+
+ # Add modules
+ ADD_SUBDIRECTORY(libs)
++if(OpenMVS_BUILD_TOOLS)
+ ADD_SUBDIRECTORY(apps)
++endif()
+ ADD_SUBDIRECTORY(docs)
+
+ if(OpenMVS_USE_CERES)
+@@ -188,7 +190,7 @@ export(TARGETS Common IO Math MVS FILE "${PROJECT_BINARY_DIR}/OpenMVSTargets.cma
+ # Export the package for use from the build-tree
+ # (this registers the build-tree with a global CMake-registry)
+ export(PACKAGE OpenMVS)
+-
++
+ # Create the OpenMVSConfig.cmake and OpenMVSConfigVersion files
+ file(RELATIVE_PATH REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}" "${INSTALL_INCLUDE_DIR}")
+ # ... for the build tree
+@@ -199,7 +201,7 @@ set(CONF_INCLUDE_DIRS "${INSTALL_CMAKE_DIR}/${REL_INCLUDE_DIR}")
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/build/OpenMVSConfig.cmake.in" "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/OpenMVSConfig.cmake" @ONLY)
+ # ... for both
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/build/OpenMVSConfigVersion.cmake.in" "${PROJECT_BINARY_DIR}/OpenMVSConfigVersion.cmake" @ONLY)
+-
++
+ # Install the OpenMVSConfig.cmake and OpenMVSConfigVersion.cmake
+ install(FILES
+ "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/OpenMVSConfig.cmake"
+diff --git a/MvgMvsPipeline.py b/MvgMvsPipeline.py.in
+similarity index 97%
+rename from MvgMvsPipeline.py
+rename to MvgMvsPipeline.py.in
+index f4914bf..23d03e6 100644
+--- a/MvgMvsPipeline.py
++++ b/MvgMvsPipeline.py.in
+@@ -91,12 +91,12 @@ def find(afile):
+ return None
+
+ # Try to find openMVG and openMVS binaries in PATH
+-OPENMVG_BIN = whereis("openMVG_main_SfMInit_ImageListing")
+-OPENMVS_BIN = whereis("ReconstructMesh")
++OPENMVG_BIN = "@OPENMVG_TOOLS_PATH@"
++OPENMVS_BIN = "@OPENMVS_TOOLS_PATH@"
+
+ # Try to find openMVG camera sensor database
+-CAMERA_SENSOR_DB_FILE = "sensor_width_camera_database.txt"
+-CAMERA_SENSOR_DB_DIRECTORY = find(CAMERA_SENSOR_DB_FILE)
++CAMERA_SENSOR_DB_FILE = "@SENSOR_WIDTH_CAMERA_DATABASE_TXT_PATH@"
++CAMERA_SENSOR_DB_DIRECTORY = "@OPENMVG_TOOLS_PATH@"
+
+ # Ask user for openMVG and openMVS directories if not found
+ if not OPENMVG_BIN:
+@@ -175,10 +175,10 @@ class StepsStore:
+ ["-i", "%input_dir%", "-o", "%matches_dir%", "-d", "%camera_file_params%"]],
+ ["Compute features", # 1
+ os.path.join(OPENMVG_BIN, "openMVG_main_ComputeFeatures"),
+- ["-i", "%matches_dir%/sfm_data.json", "-o", "%matches_dir%", "-m", "SIFT", "-n", "4"]],
++ ["-i", "%matches_dir%/sfm_data.json", "-o", "%matches_dir%", "-m", "SIFT"]],
+ ["Compute matches", # 2
+ os.path.join(OPENMVG_BIN, "openMVG_main_ComputeMatches"),
+- ["-i", "%matches_dir%/sfm_data.json", "-o", "%matches_dir%", "-n", "HNSWL2", "-r", ".8"]],
++ ["-i", "%matches_dir%/sfm_data.json", "-o", "%matches_dir%", "-n", "AUTO", "-r", ".8"]],
+ ["Incremental reconstruction", # 3
+ os.path.join(OPENMVG_BIN, "openMVG_main_IncrementalSfM"),
+ ["-i", "%matches_dir%/sfm_data.json", "-m", "%matches_dir%", "-o", "%reconstruction_dir%"]],
+diff --git a/apps/Viewer/CMakeLists.txt b/apps/Viewer/CMakeLists.txt
+index c519040..934cd50 100644
+--- a/apps/Viewer/CMakeLists.txt
++++ b/apps/Viewer/CMakeLists.txt
+@@ -16,18 +16,6 @@ else()
+ MESSAGE("-- Can't find GLEW. Continuing without it.")
+ RETURN()
+ endif()
+-if(CMAKE_COMPILER_IS_GNUCXX)
+- FIND_PACKAGE(PkgConfig QUIET)
+- pkg_search_module(GLFW QUIET glfw3)
+- if(GLFW_FOUND)
+- INCLUDE_DIRECTORIES(${GLFW_INCLUDE_DIRS})
+- ADD_DEFINITIONS(${GLFW_DEFINITIONS})
+- MESSAGE(STATUS "GLFW3 ${GLFW_VERSION} found (include: ${GLFW_INCLUDE_DIRS})")
+- else()
+- MESSAGE("-- Can't find GLFW3. Continuing without it.")
+- RETURN()
+- endif()
+-else()
+ FIND_PACKAGE(glfw3 QUIET)
+ if(glfw3_FOUND)
+ INCLUDE_DIRECTORIES(${glfw3_INCLUDE_DIRS})
+@@ -37,7 +25,6 @@ else()
+ MESSAGE("-- Can't find GLFW3. Continuing without it.")
+ RETURN()
+ endif()
+-endif()
+
+ # List sources files
+ FILE(GLOB PCH_C "Common.cpp")
+diff --git a/build/OpenMVSConfig.cmake.in b/build/OpenMVSConfig.cmake.in
+index 96b8fe2..454e846 100644
+--- a/build/OpenMVSConfig.cmake.in
++++ b/build/OpenMVSConfig.cmake.in
+@@ -3,16 +3,70 @@
+ # OpenMVS_INCLUDE_DIRS - include directories for OpenMVS
+ # OpenMVS_LIBRARIES - libraries to link against
+ # OpenMVS_BINARIES - the binaries
+-
++
+ # Compute paths
+ get_filename_component(OpenMVS_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+ set(OpenMVS_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@")
+-
++list(APPEND CMAKE_MODULE_PATH "${OpenMVS_CMAKE_DIR}")
++
++if (MSVC)
++ set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /GL")
++ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GL")
++ set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG")
++ set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} /LTCG")
++endif()
++
++set(CMAKE_CXX_STANDARD 14)
++set(CMAKE_CXX_STANDARD_REQUIRED ON)
++
++include(CMakeFindDependencyMacro)
++
++if(@OpenMVS_USE_OPENMP@)
++ find_dependency(OpenMP)
++ add_definitions(-D_USE_OPENMP)
++endif()
++
++if(@OpenMVS_USE_OPENGL@)
++ find_dependency(OpenGL)
++ add_definitions(${OpenGL_DEFINITIONS} -D_USE_OPENGL)
++endif()
++
++if(@OpenMVS_USE_CUDA@)
++ find_dependency(CUDA)
++ add_definitions(-D_USE_CUDA)
++ include_directories(${CUDA_INCLUDE_DIRS})
++endif()
++
++if(@OpenMVS_USE_BREAKPAD@)
++ find_dependency(BREAKPAD)
++ add_definitions(${BREAKPAD_DEFINITIONS} -D_USE_BREAKPAD)
++endif()
++
++find_dependency(Boost)
++add_definitions(${Boost_DEFINITIONS} -D_USE_BOOST)
++include_directories(${Boost_INCLUDE_DIRS})
++find_dependency(Eigen3)
++add_definitions(${EIGEN3_DEFINITIONS} -D_USE_EIGEN)
++find_dependency(OpenCV)
++add_definitions(${OpenCV_DEFINITIONS})
++find_dependency(CGAL)
++add_definitions(${CGAL_DEFINITIONS})
++
++find_dependency(VCG REQUIRED)
++add_definitions(${VCG_DEFINITIONS})
++
++if(@OpenMVS_USE_CERES@)
++ find_dependency(Ceres)
++ add_definitions(${CERES_DEFINITIONS})
++endif()
++
++add_definitions(@OpenMVS_DEFINITIONS@)
++
+ # Our library dependencies (contains definitions for IMPORTED targets)
+ if(NOT TARGET MVS AND NOT OpenMVS_BINARY_DIR)
+ include("${OpenMVS_CMAKE_DIR}/OpenMVSTargets.cmake")
+ endif()
+-
++
+ # These are IMPORTED targets created by OpenMVSTargets.cmake
+ set(OpenMVS_LIBRARIES MVS)
+ set(OpenMVS_BINARIES InterfaceVisualSFM DensifyPointCloud ReconstructMesh RefineMesh TextureMesh)
+diff --git a/build/Utils.cmake b/build/Utils.cmake
+index f41c9d8..31cd292 100644
+--- a/build/Utils.cmake
++++ b/build/Utils.cmake
+@@ -160,7 +160,7 @@ macro(GetOperatingSystemArchitectureBitness)
+ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES i686.*|i386.*|x86.*)
+ set(X86 1)
+ endif()
+-
++
+ if(NOT ${MY_VAR_PREFIX}_PACKAGE_REQUIRED)
+ set(${MY_VAR_PREFIX}_PACKAGE_REQUIRED "REQUIRED")
+ endif()
+@@ -173,30 +173,6 @@ macro(ComposePackageLibSuffix)
+ set(PACKAGE_LIB_SUFFIX "")
+ set(PACKAGE_LIB_SUFFIX_DBG "")
+ set(PACKAGE_LIB_SUFFIX_REL "")
+- if(MSVC)
+- if("${MSVC_VERSION}" STREQUAL "1921")
+- set(PACKAGE_LIB_SUFFIX "/vc16")
+- elseif("${MSVC_VERSION}" STREQUAL "1916")
+- set(PACKAGE_LIB_SUFFIX "/vc15")
+- elseif("${MSVC_VERSION}" STREQUAL "1900")
+- set(PACKAGE_LIB_SUFFIX "/vc14")
+- elseif("${MSVC_VERSION}" STREQUAL "1800")
+- set(PACKAGE_LIB_SUFFIX "/vc12")
+- elseif("${MSVC_VERSION}" STREQUAL "1700")
+- set(PACKAGE_LIB_SUFFIX "/vc11")
+- elseif("${MSVC_VERSION}" STREQUAL "1600")
+- set(PACKAGE_LIB_SUFFIX "/vc10")
+- elseif("${MSVC_VERSION}" STREQUAL "1500")
+- set(PACKAGE_LIB_SUFFIX "/vc9")
+- endif()
+- if("${SYSTEM_BITNESS}" STREQUAL "64")
+- set(PACKAGE_LIB_SUFFIX "${PACKAGE_LIB_SUFFIX}/x64")
+- else()
+- set(PACKAGE_LIB_SUFFIX "${PACKAGE_LIB_SUFFIX}/x86")
+- endif()
+- set(PACKAGE_LIB_SUFFIX_DBG "${PACKAGE_LIB_SUFFIX}/Debug")
+- set(PACKAGE_LIB_SUFFIX_REL "${PACKAGE_LIB_SUFFIX}/Release")
+- endif()
+ endmacro()
+
+
+@@ -511,7 +487,7 @@ macro(optimize_default_compiler_settings)
+ endif()
+ add_extra_compiler_option(-fdiagnostics-show-option)
+ add_extra_compiler_option(-ftemplate-backtrace-limit=0)
+-
++
+ # The -Wno-long-long is required in 64bit systems when including sytem headers.
+ if(X86_64)
+ add_extra_compiler_option(-Wno-long-long)
+@@ -817,7 +793,7 @@ macro(ConfigCompilerAndLinker)
+ else()
+ set(cxx_rtti_support "${cxx_no_rtti_flags}")
+ endif()
+-
++
+ SET(cxx_default "${cxx_exception_support} ${cxx_rtti_support}" CACHE PATH "Common compile CXX flags")
+ SET(c_default "${CMAKE_C_FLAGS} ${cxx_base_flags}" CACHE PATH "Common compile C flags")
+ endmacro()
+@@ -825,16 +801,12 @@ endmacro()
+ # Initialize variables needed for a library type project.
+ macro(ConfigLibrary)
+ # Offer the user the choice of overriding the installation directories
+- set(INSTALL_LIB_DIR "lib/${PROJECT_NAME}" CACHE PATH "Installation directory for libraries")
+- set(INSTALL_BIN_DIR "bin/${PROJECT_NAME}" CACHE PATH "Installation directory for executables")
+- set(INSTALL_INCLUDE_DIR "include/${PROJECT_NAME}" CACHE PATH "Installation directory for header files")
+- if(WIN32 AND NOT CYGWIN)
+- set(DEF_INSTALL_CMAKE_DIR "CMake")
+- else()
+- set(DEF_INSTALL_CMAKE_DIR "lib/CMake/${PROJECT_NAME}")
+- endif()
++ set(INSTALL_LIB_DIR "lib" CACHE PATH "Installation directory for libraries")
++ set(INSTALL_BIN_DIR "bin" CACHE PATH "Installation directory for executables")
++ set(INSTALL_INCLUDE_DIR "include/openmvs" CACHE PATH "Installation directory for header files")
++ set(DEF_INSTALL_CMAKE_DIR "share/openmvs")
+ set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH "Installation directory for CMake files")
+-
++
+ # Make relative paths absolute (needed later on)
+ foreach(p LIB BIN INCLUDE CMAKE)
+ set(var INSTALL_${p}_DIR)
+diff --git a/libs/Common/CMakeLists.txt b/libs/Common/CMakeLists.txt
+index 2e6c1a4..6e1fa95 100644
+--- a/libs/Common/CMakeLists.txt
++++ b/libs/Common/CMakeLists.txt
+@@ -18,6 +18,7 @@ set_target_pch(Common Common.h)
+
+ # Link its dependencies
+ TARGET_LINK_LIBRARIES(Common ${Boost_LIBRARIES} ${OpenCV_LIBS})
++TARGET_INCLUDE_DIRECTORIES(Common PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}> $<INSTALL_INTERFACE:${INSTALL_INCLUDE_DIR}>)
+
+ # Install
+ SET_TARGET_PROPERTIES(Common PROPERTIES
+diff --git a/libs/IO/CMakeLists.txt b/libs/IO/CMakeLists.txt
+index a354376..4fd478c 100644
+--- a/libs/IO/CMakeLists.txt
++++ b/libs/IO/CMakeLists.txt
+@@ -43,7 +43,8 @@ cxx_library_with_type_no_pch(IO "Libs" "STATIC" "${cxx_default}"
+ set_target_pch(IO Common.h)
+
+ # Link its dependencies
+-TARGET_LINK_LIBRARIES(IO Common ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARIES} ${EXIV2_LIBS})
++TARGET_LINK_LIBRARIES(IO Common ${TIFF_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${EXIV2_LIBS})
++TARGET_INCLUDE_DIRECTORIES(IO PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}> $<INSTALL_INTERFACE:${INSTALL_INCLUDE_DIR}>)
+
+ # Install
+ SET_TARGET_PROPERTIES(IO PROPERTIES
+diff --git a/libs/MVS/CMakeLists.txt b/libs/MVS/CMakeLists.txt
+index 14be620..867cfd5 100644
+--- a/libs/MVS/CMakeLists.txt
++++ b/libs/MVS/CMakeLists.txt
+@@ -1,12 +1,12 @@
+ # Find required packages
+-FIND_PACKAGE(CGAL ${SYSTEM_PACKAGE_REQUIRED})
++FIND_PACKAGE(CGAL REQUIRED)
+ if(CGAL_FOUND)
+ include_directories(${CGAL_INCLUDE_DIRS})
+ add_definitions(${CGAL_DEFINITIONS})
+ link_directories(${CGAL_LIBRARY_DIRS})
+ endif()
+
+-FIND_PACKAGE(VCG ${SYSTEM_PACKAGE_REQUIRED})
++FIND_PACKAGE(VCG REQUIRED)
+ if(VCG_FOUND)
+ include_directories(${VCG_INCLUDE_DIRS})
+ add_definitions(${VCG_DEFINITIONS})
+@@ -14,12 +14,10 @@ endif()
+
+ set(CERES_LIBS "")
+ if(OpenMVS_USE_CERES)
+- FIND_PACKAGE(CERES)
++ FIND_PACKAGE(Ceres REQUIRED)
+ if(CERES_FOUND)
+ include_directories(${CERES_INCLUDE_DIRS})
+ add_definitions(${CERES_DEFINITIONS})
+- else()
+- set(OpenMVS_USE_CERES OFF)
+ endif()
+ endif()
+
+@@ -42,7 +40,8 @@ cxx_library_with_type_no_pch(MVS "Libs" "" "${cxx_default}"
+ set_target_pch(MVS Common.h)
+
+ # Link its dependencies
+-TARGET_LINK_LIBRARIES(MVS PRIVATE Common Math IO ${CERES_LIBS} ${CGAL_LIBS} ${CUDA_CUDA_LIBRARY})
++TARGET_LINK_LIBRARIES(MVS PRIVATE Common Math IO ${CERES_LIBS} CGAL::CGAL ${CUDA_CUDA_LIBRARY})
++TARGET_INCLUDE_DIRECTORIES(MVS PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}> $<INSTALL_INTERFACE:${INSTALL_INCLUDE_DIR}>)
+
+ # Install
+ SET_TARGET_PROPERTIES(MVS PROPERTIES
+diff --git a/libs/Math/CMakeLists.txt b/libs/Math/CMakeLists.txt
+index d592bd0..f1fe4c6 100644
+--- a/libs/Math/CMakeLists.txt
++++ b/libs/Math/CMakeLists.txt
+@@ -35,6 +35,7 @@ set_target_pch(Math Common.h)
+
+ # Link its dependencies
+ TARGET_LINK_LIBRARIES(Math Common)
++TARGET_INCLUDE_DIRECTORIES(Math PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}> $<INSTALL_INTERFACE:${INSTALL_INCLUDE_DIR}>)
+
+ # Install
+ INSTALL(FILES ${LIBRARY_FILES_H} DESTINATION "${INSTALL_INCLUDE_DIR}/Math" COMPONENT dev)
diff --git a/ports/openmvs/portfile.cmake b/ports/openmvs/portfile.cmake
index e0a771751..2ec1bd094 100644
--- a/ports/openmvs/portfile.cmake
+++ b/ports/openmvs/portfile.cmake
@@ -6,17 +6,35 @@ vcpkg_from_github(
REF v1.1
SHA512 baa9149853dc08c602deeb1a04cf57643d1cb0733aee2776f4e99b210279aad3b4a1013ab1d790e91a3a95b7c72b9c12c6be25f2c30a76b69b5319b610cb8e7a
HEAD_REF master
+ PATCHES
+ fix-build.patch
)
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ cuda OpenMVS_USE_CUDA
+ openmp OpenMVS_USE_OPENMP
+)
+
+file(REMOVE "${SOURCE_PATH}/build/Modules/FindCERES.cmake")
+file(REMOVE "${SOURCE_PATH}/build/Modules/FindCGAL.cmake")
+file(REMOVE "${SOURCE_PATH}/build/Modules/FindEIGEN.cmake")
+
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
- OPTIONS
+ OPTIONS ${FEATURE_OPTIONS}
+ -DOpenMVS_USE_NONFREE=ON
+ -DOpenMVS_USE_CERES=OFF
+ -DOpenMVS_USE_FAST_FLOAT2INT=ON
+ -DOpenMVS_USE_FAST_INVSQRT=OFF
+ -DOpenMVS_USE_FAST_CBRT=ON
+ -DOpenMVS_USE_SSE=ON
+ -DOpenMVS_USE_OPENGL=ON
-DOpenMVS_USE_BREAKPAD=OFF
- -DOpenMVS_USE_CUDA=OFF
- -DINSTALL_CMAKE_DIR:STRING=share/openmvs
- -DINSTALL_BIN_DIR:STRING=bin
- -DINSTALL_LIB_DIR:STRING=lib
+ OPTIONS_RELEASE
+ -DOpenMVS_BUILD_TOOLS=ON
+ OPTIONS_DEBUG
+ -DOpenMVS_BUILD_TOOLS=OFF
)
vcpkg_install_cmake()
@@ -24,10 +42,30 @@ vcpkg_install_cmake()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
vcpkg_fixup_cmake_targets()
+file(READ ${CURRENT_PACKAGES_DIR}/share/openmvs/OpenMVSTargets-release.cmake TARGETS_CMAKE)
+string(REPLACE "bin/InterfaceCOLMAP" "tools/openmvs/InterfaceCOLMAP" TARGETS_CMAKE "${TARGETS_CMAKE}")
+string(REPLACE "bin/InterfaceVisualSFM" "tools/openmvs/InterfaceVisualSFM" TARGETS_CMAKE "${TARGETS_CMAKE}")
+string(REPLACE "bin/DensifyPointCloud" "tools/openmvs/DensifyPointCloud" TARGETS_CMAKE "${TARGETS_CMAKE}")
+string(REPLACE "bin/ReconstructMesh" "tools/openmvs/ReconstructMesh" TARGETS_CMAKE "${TARGETS_CMAKE}")
+string(REPLACE "bin/RefineMesh" "tools/openmvs/RefineMesh" TARGETS_CMAKE "${TARGETS_CMAKE}")
+string(REPLACE "bin/TextureMesh" "tools/openmvs/TextureMesh" TARGETS_CMAKE "${TARGETS_CMAKE}")
+string(REPLACE "bin/Viewer" "tools/openmvs/Viewer" TARGETS_CMAKE "${TARGETS_CMAKE}")
+file(WRITE ${CURRENT_PACKAGES_DIR}/share/openmvs/OpenMVSTargets-release.cmake "${TARGETS_CMAKE}")
+
+vcpkg_copy_tools(AUTO_CLEAN TOOL_NAMES
+ DensifyPointCloud
+ InterfaceCOLMAP
+ InterfaceVisualSFM
+ ReconstructMesh
+ RefineMesh
+ TextureMesh
+ Viewer
+)
-file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/tools)
-file(RENAME ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/tools/openmvs)
-vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/openmvs)
-file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin)
+set(OPENMVG_TOOLS_PATH "${CURRENT_INSTALLED_DIR}/tools/openmvg")
+set(OPENMVS_TOOLS_PATH "${CURRENT_INSTALLED_DIR}/tools/${PORT}")
+set(SENSOR_WIDTH_CAMERA_DATABASE_TXT_PATH "${OPENMVG_TOOLS_PATH}/sensor_width_camera_database.txt")
+configure_file("${SOURCE_PATH}/MvgMvsPipeline.py.in" "${CURRENT_PACKAGES_DIR}/tools/${PORT}/MvgMvsPipeline.py" @ONLY)
+file(INSTALL "${SOURCE_PATH}/build/Modules/FindVCG.cmake" DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
diff --git a/ports/shogun/CONTROL b/ports/shogun/CONTROL
index 5f46ded2a..580a8be31 100644
--- a/ports/shogun/CONTROL
+++ b/ports/shogun/CONTROL
@@ -1,5 +1,6 @@
Source: shogun
-Version: 6.1.4-1
-Build-Depends: bzip2, eigen3, liblzma, libxml2, openblas (x64&!osx), nlopt, rxcpp, snappy, zlib, protobuf, curl, lzo, dirent
+Version: 6.1.4
+Port-Version: 2
+Build-Depends: bzip2, eigen3, liblzma, libxml2, openblas, nlopt, rxcpp, snappy, zlib, protobuf, curl, lzo, dirent
Homepage: https://github.com/shogun-toolbox/shogun
Description: Unified and efficient Machine Learning \ No newline at end of file
diff --git a/ports/shogun/portfile.cmake b/ports/shogun/portfile.cmake
index ce68bcb57..47555a75b 100644
--- a/ports/shogun/portfile.cmake
+++ b/ports/shogun/portfile.cmake
@@ -1,11 +1,5 @@
vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
-if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
- set(CMAKE_DISABLE_FIND_PACKAGE_BLAS 0)
-else()
- set(CMAKE_DISABLE_FIND_PACKAGE_BLAS 1)
-endif()
-
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO shogun-toolbox/shogun
@@ -44,10 +38,9 @@ vcpkg_configure_cmake(
-DCMAKE_DISABLE_FIND_PACKAGE_ARPREC=TRUE
-DCMAKE_DISABLE_FIND_PACKAGE_Ctags=TRUE
-DCMAKE_DISABLE_FIND_PACKAGE_CCache=TRUE
- -DCMAKE_DISABLE_FIND_PACKAGE_LAPACK=TRUE
-DCMAKE_DISABLE_FIND_PACKAGE_Doxygen=TRUE
-DCMAKE_DISABLE_FIND_PACKAGE_CURL=TRUE
- -DCMAKE_DISABLE_FIND_PACKAGE_BLAS=${CMAKE_DISABLE_FIND_PACKAGE_BLAS}
+ -DCMAKE_DISABLE_FIND_PACKAGE_OpenMP=TRUE
-DINSTALL_TARGETS=shogun-static
)
@@ -62,4 +55,4 @@ file(REMOVE_RECURSE
)
# Handle copyright
-file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) \ No newline at end of file
+file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
diff --git a/ports/suitesparse/CONTROL b/ports/suitesparse/CONTROL
index 722dac004..832306d5a 100644
--- a/ports/suitesparse/CONTROL
+++ b/ports/suitesparse/CONTROL
@@ -1,10 +1,5 @@
Source: suitesparse
-Version: 5.4.0
-Port-Version: 7
-Build-Depends: lapack
-Homepage: http://faculty.cse.tamu.edu/davis/SuiteSparse
+Version: 5.8.0
+Build-Depends: lapack, metis
+Homepage: http://suitesparse.com
Description: algebra library
-
-Feature: metis
-Build-Depends: metis
-Description: Use metis in SuiteSparse
diff --git a/ports/suitesparse/FindCXSparse.cmake b/ports/suitesparse/FindCXSparse.cmake
new file mode 100644
index 000000000..94ba41e04
--- /dev/null
+++ b/ports/suitesparse/FindCXSparse.cmake
@@ -0,0 +1,75 @@
+# Distributed under the OSI-approved BSD 3-Clause License.
+#
+#.rst:
+# FindCXSparse
+# --------
+#
+# Find the CXSparse library
+#
+# Result Variables
+# ^^^^^^^^^^^^^^^^
+#
+# The following variables will be defined:
+#
+# ``CXSparse_FOUND``
+# True if CXSparse found on the local system
+#
+# ``CXSPARSE_FOUND``
+# True if CXSparse found on the local system
+#
+# ``CXSparse_INCLUDE_DIRS``
+# Location of CXSparse header files
+#
+# ``CXSPARSE_INCLUDE_DIRS``
+# Location of CXSparse header files
+#
+# ``CXSparse_LIBRARIES``
+# List of the CXSparse libraries found
+#
+# ``CXSPARSE_LIBRARIES``
+# List of the CXSparse libraries found
+#
+#
+
+include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
+include(${CMAKE_ROOT}/Modules/SelectLibraryConfigurations.cmake)
+include(${CMAKE_ROOT}/Modules/CMakeFindDependencyMacro.cmake)
+
+find_path(CXSPARSE_INCLUDE_DIR NAMES cs.h)
+
+find_library(CXSPARSE_LIBRARY_RELEASE NAMES cxsparse libcxsparse)
+find_library(CXSPARSE_LIBRARY_DEBUG NAMES cxsparsed libcxsparsed)
+select_library_configurations(CXSPARSE)
+
+if(CXSPARSE_INCLUDE_DIR)
+ set(CXSPARSE_VERSION_FILE ${CXSPARSE_INCLUDE_DIR}/cs.h)
+ file(READ ${CXSPARSE_INCLUDE_DIR}/cs.h CXSPARSE_VERSION_FILE_CONTENTS)
+
+ string(REGEX MATCH "#define CS_VER [0-9]+"
+ CXSPARSE_MAIN_VERSION "${CXSPARSE_VERSION_FILE_CONTENTS}")
+ string(REGEX REPLACE "#define CS_VER ([0-9]+)" "\\1"
+ CXSPARSE_MAIN_VERSION "${CXSPARSE_MAIN_VERSION}")
+
+ string(REGEX MATCH "#define CS_SUBVER [0-9]+"
+ CXSPARSE_SUB_VERSION "${CXSPARSE_VERSION_FILE_CONTENTS}")
+ string(REGEX REPLACE "#define CS_SUBVER ([0-9]+)" "\\1"
+ CXSPARSE_SUB_VERSION "${CXSPARSE_SUB_VERSION}")
+
+ string(REGEX MATCH "#define CS_SUBSUB [0-9]+"
+ CXSPARSE_SUBSUB_VERSION "${CXSPARSE_VERSION_FILE_CONTENTS}")
+ string(REGEX REPLACE "#define CS_SUBSUB ([0-9]+)" "\\1"
+ CXSPARSE_SUBSUB_VERSION "${CXSPARSE_SUBSUB_VERSION}")
+
+ set(CXSPARSE_VERSION "${CXSPARSE_MAIN_VERSION}.${CXSPARSE_SUB_VERSION}.${CXSPARSE_SUBSUB_VERSION}")
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(CXSparse
+ REQUIRED_VARS CXSPARSE_INCLUDE_DIRS CXSPARSE_LIBRARIES
+ VERSION_VAR CXSPARSE_VERSION)
+
+set(CXSPARSE_FOUND ${CXSparse_FOUND})
+set(CXSPARSE_INCLUDE_DIRS ${CXSPARSE_INCLUDE_DIR})
+set(CXSPARSE_LIBRARIES ${CXSPARSE_LIBRARY})
+set(CXSparse_INCLUDE_DIRS ${CXSPARSE_INCLUDE_DIR})
+set(CXSparse_LIBRARIES ${CXSPARSE_LIBRARY})
diff --git a/ports/suitesparse/add-find-package-metis.patch b/ports/suitesparse/add-find-package-metis.patch
deleted file mode 100644
index 297309ea0..000000000
--- a/ports/suitesparse/add-find-package-metis.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index b8c2e63..d443390 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -199,12 +199,15 @@ if(LAPACK_FOUND AND BLAS_FOUND)
- endif() # LAPACK is not found
-
- IF(BUILD_METIS OR USE_VCPKG_METIS)
-+ find_package(metis REQUIRED)
- set(SuiteSparse_LINKER_METIS_LIBS "metis")
- ## namespaced library target for config
-- set(SuiteSparse_EXPORTED_METIS_LIBS "SuiteSparse::metis")
-+ set(SuiteSparse_EXPORTED_METIS_LIBS "metis")
-+ set(SuiteSparse_FIND_PACKAGE_METIS "find_package(metis REQUIRED)")
- else()
- set(SuiteSparse_LINKER_METIS_LIBS "")
- set(SuiteSparse_EXPORTED_METIS_LIBS "")
-+ set(SuiteSparse_FIND_PACKAGE_METIS "")
- ENDIF()
-
- add_subdirectory(SuiteSparse)
-diff --git a/SuiteSparse/CMakeLists.txt b/SuiteSparse/CMakeLists.txt
-index 5ef08a6..6c7abfd 100644
---- a/SuiteSparse/CMakeLists.txt
-+++ b/SuiteSparse/CMakeLists.txt
-@@ -13,7 +13,7 @@ ENDIF(CMAKE_COMPILER_IS_GNUCXX AND NOT CMAKE_BUILD_TYPE MATCHES "Debug")
-
- # Global flags:
- IF (BUILD_METIS OR USE_VCPKG_METIS)
-- INCLUDE_DIRECTORIES("${METIS_SOURCE_DIR}/include")
-+ #INCLUDE_DIRECTORIES("${METIS_SOURCE_DIR}/include")
- ELSE ()
- ADD_DEFINITIONS(-DNPARTITION)
- ENDIF ()
-diff --git a/cmake/SuiteSparse-config-install.cmake.in b/cmake/SuiteSparse-config-install.cmake.in
-index 49387b8..553d9c7 100644
---- a/cmake/SuiteSparse-config-install.cmake.in
-+++ b/cmake/SuiteSparse-config-install.cmake.in
-@@ -5,6 +5,7 @@ get_filename_component(_SuiteSparse_PREFIX "${_SuiteSparse_PREFIX}" PATH)
- get_filename_component(_SuiteSparse_PREFIX "${_SuiteSparse_PREFIX}" PATH)
-
- find_package(LAPACK REQUIRED)
-+@SuiteSparse_FIND_PACKAGE_METIS@
-
- # Load targets from the install tree.
- include(${_SuiteSparse_SELF_DIR}/suitesparse-targets.cmake)
diff --git a/ports/suitesparse/build_fixes.patch b/ports/suitesparse/build_fixes.patch
new file mode 100644
index 000000000..2734bb02c
--- /dev/null
+++ b/ports/suitesparse/build_fixes.patch
@@ -0,0 +1,281 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 9602cce..dafb434 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -5,14 +5,6 @@
+ # Updated by jesnault (jerome.esnault@inria.fr) 2014-01-21
+ # -----------------------------------------------------------------
+
+-option(HUNTER_ENABLED "Enable Hunter package manager support" OFF)
+-include(cmake/HunterGate.cmake)
+-
+-HunterGate(
+- URL "https://github.com/ruslo/hunter/archive/v0.23.214.tar.gz"
+- SHA1 "e14bc153a7f16d6a5eeec845fb0283c8fad8c358"
+-)
+-
+ PROJECT(SuiteSparseProject)
+
+ cmake_minimum_required(VERSION 3.1)
+@@ -47,29 +39,9 @@ else()
+ message(STATUS "Using user defined CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}")
+ endif()
+
+-# Fix GKlib path:
+-IF(NOT WIN32)
+- SET(GKLIB_PATH "${${PROJECT_NAME}_SOURCE_DIR}/SuiteSparse/metis-5.1.0/GKlib" CACHE INTERNAL "Path to GKlib (for METIS)" FORCE)
+-ENDIF()
+-
+-# allow creating DLLs in Windows without touching the source code:
+-IF(NOT ${CMAKE_VERSION} VERSION_LESS "3.4.0" AND WIN32)
+- set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
+-ENDIF()
+-
+ ## get CMAKE_INSTALL_BINDIR and CMAKE_INSTALL_LIBDIR
+ include(GNUInstallDirs)
+
+-if(CMAKE_SIZEOF_VOID_P MATCHES "8")
+- set(SUITESPARSE_LIB_POSTFIX "64")
+-else()
+- set(SUITESPARSE_LIB_POSTFIX "")
+-endif()
+-
+-## get POSTFIX for lib install dir
+-set(LIB_POSTFIX "${SUITESPARSE_LIB_POSTFIX}" CACHE STRING "suffix for 32/64 inst dir placement")
+-mark_as_advanced(LIB_POSTFIX)
+-
+ # We want libraries to be named "libXXX" and "libXXXd" in all compilers:
+ # ------------------------------------------------------------------------
+ set(CMAKE_DEBUG_POSTFIX "d")
+@@ -77,59 +49,6 @@ IF(MSVC)
+ set(SP_LIB_PREFIX "lib") # Libs are: "libXXX"
+ ENDIF(MSVC)
+
+-## check if we can build metis
+-SET(BUILD_METIS_DEFAULT ON)
+-if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/SuiteSparse/metis-5.1.0/CMakeLists.txt")
+- SET(BUILD_METIS_DEFAULT OFF)
+-endif()
+-
+-SET(WITH_CUDA OFF CACHE BOOL "Build with CUDA support")
+-
+-SET(BUILD_METIS ${BUILD_METIS_DEFAULT} CACHE BOOL "Build METIS for partitioning?")
+-SET(METIS_DIR ${${PROJECT_NAME}_SOURCE_DIR}/SuiteSparse/metis-5.1.0 CACHE PATH "Source directory of METIS")
+-
+-if(BUILD_METIS)
+- ## prepare the installation :
+- ## using metis target here is not possible because this target is added in another branch of the CMake structure
+- ## TRICK: need to dynamically modify the metis CMakeLists.txt file before it going to parsed...
+- ## (very ugly/poor for a metis project get from SCM (git/svn/cvs) but it's works ;) and it doesn't matter if metis was get from .zip)
+- if(EXISTS "${METIS_DIR}/libmetis/CMakeLists.txt")
+- file(READ "${METIS_DIR}/libmetis/CMakeLists.txt" contentFile)
+- string(REGEX MATCH "EXPORT SuiteSparseTargets" alreadyModified ${contentFile}) ## use a string pattern to check if we have to do the modif
+- if(NOT alreadyModified)
+- file(APPEND "${METIS_DIR}/libmetis/CMakeLists.txt"
+- "
+- set_target_properties(metis PROPERTIES PUBLIC_HEADER \"../include/metis.h\")
+- install(TARGETS metis ## this line is also the string pattern to check if the modification had already done
+- EXPORT SuiteSparseTargets
+- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+- PUBLIC_HEADER DESTINATION include
+- )
+- "
+- )
+- endif()
+- endif()
+- add_subdirectory(SuiteSparse/metis-5.1.0) ## important part for building metis from its src files
+-endif(BUILD_METIS)
+-
+-
+-## For EXPORT only :
+-## Previous version of cmake (>2.8.12) doesn't auto take into account external lib (here I mean blas and lapack) we need to link to for our current target we want to export.
+-## Or at least we need to investigate how to do with previous version.
+-## This may cause some trouble in case you want to build in static mode and then use it into another custom project.
+-## You will need to manually link your target into your custom project to the correct dependencies link interfaces.
+-if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" GREATER 2.8.11) ## (policies introduced both in 2.8.12)
+- set(EXPORT_USE_INTERFACE_LINK_LIBRARIES ON CACHE BOOL "")
+- mark_as_advanced(EXPORT_USE_INTERFACE_LINK_LIBRARIES)
+- if(EXPORT_USE_INTERFACE_LINK_LIBRARIES)
+- cmake_policy(SET CMP0023 NEW) ## just for respecting the new target_link_libraries(...) signature procedure
+- cmake_policy(SET CMP0022 NEW) ## use INTERFACE_LINK_LIBRARIES property for in-build targets and ignore old properties (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?
+- ## Here, next version of cmake 2.8.12 auto take into account the link interface dependencies (see generated cmake/SuiteSparse-config*.cmake into your install dir)
+- endif()
+-endif()
+-
+ ## install_suitesparse_project(targetName headersList)
+ ## factorise the way we will install all projects (part of the suitesparse project)
+ ## <targetName> is the target of the current project you build
+@@ -176,16 +95,16 @@ macro(declare_suitesparse_library targetName srcsList headersList)
+ set(dsl_TARGET_PUBLIC_LINK "")
+ endif()
+ if(WITH_CUDA)
+- find_package(CUDA)
++ find_package(CUDA REQUIRED)
+ endif()
+- IF(${CUDA_FOUND})
++ IF(CUDA_FOUND)
+ INCLUDE_DIRECTORIES(${CUDA_INCLUDE_DIRS})
+ INCLUDE_DIRECTORIES(${SuiteSparse_GPUQREngine_INCLUDE})
+ INCLUDE_DIRECTORIES(${SuiteSparse_GPURuntime_INCLUDE})
+ CUDA_ADD_LIBRARY(${targetName} ${srcsList} ${headersList})
+- ELSE(${CUDA_FOUND})
++ ELSE()
+ ADD_LIBRARY(${targetName} ${srcsList} ${headersList})
+- ENDIF(${CUDA_FOUND})
++ ENDIF()
+ SET_TARGET_PROPERTIES(${targetName} PROPERTIES
+ OUTPUT_NAME ${SP_LIB_PREFIX}${targetName}
+ )
+@@ -211,44 +130,30 @@ MACRO(REMOVE_MATCHING_FILES_FROM_LIST match_expr lst_files)
+ ENDMACRO(REMOVE_MATCHING_FILES_FROM_LIST)
+
+ if(WITH_CUDA)
+- FIND_PACKAGE(cuda)
+- IF(${CUDA_FOUND})
++ FIND_PACKAGE(CUDA REQUIRED)
++ IF(CUDA_FOUND)
+ ADD_DEFINITIONS(-DGPU_BLAS)
+- ENDIF(${CUDA_FOUND})
++ ENDIF()
+ endif()
+
+-hunter_add_package(LAPACK) # only in effect if HUNTER_ENABLED is set
+-# prefer LAPACK config file
+-find_package(LAPACK CONFIG)
+-if (LAPACK_FOUND AND TARGET blas AND TARGET lapack)
+- message(STATUS "found lapack and blas config file. Linking targets lapack and blas")
+- message(STATUS "- LAPACK_CONFIG: ${LAPACK_CONFIG}")
+- set(SuiteSparse_LINKER_LAPACK_BLAS_LIBS lapack blas)
+- # for suitesparse-config file set method used to find LAPACK (and BLAS)
+- set(SuiteSparse_LAPACK_used_CONFIG YES)
+-else()
+- # missing config file or targets, try BLAS and LAPACK
+- find_package(BLAS)
+- find_package(LAPACK)
+- if (BLAS_FOUND AND LAPACK_FOUND)
++ find_package(BLAS REQUIRED)
++ find_package(LAPACK REQUIRED)
+ message(STATUS "found lapack and blas config file. Linking targets lapack and blas")
+ message(STATUS "- LAPACK_LIBRARIES: ${LAPACK_LIBRARIES}")
+ message(STATUS "- BLAS_LIBRARIES: ${BLAS_LIBRARIES}")
+ set(SuiteSparse_LINKER_LAPACK_BLAS_LIBS ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
+ # for suitesparse-config file set method used to find LAPACK (and BLAS)
+ set(SuiteSparse_LAPACK_used_CONFIG NO)
+- else () # LAPACK is not found
+- message(FATAL_ERROR "lapack not found")
+- endif()
+-endif()
+
+-IF(BUILD_METIS)
++IF(USE_VCPKG_METIS)
++ find_package(metis REQUIRED)
+ set(SuiteSparse_LINKER_METIS_LIBS "metis")
+- ## namespaced library target for config
+- set(SuiteSparse_EXPORTED_METIS_LIBS "SuiteSparse::metis")
++ set(SuiteSparse_EXPORTED_METIS_LIBS "metis")
++ set(SuiteSparse_FIND_DEPENDENCY_METIS "find_dependency(metis REQUIRED)")
+ else()
+ set(SuiteSparse_LINKER_METIS_LIBS "")
+ set(SuiteSparse_EXPORTED_METIS_LIBS "")
++ set(SuiteSparse_FIND_PACKAGE_METIS "")
+ ENDIF()
+
+ add_subdirectory(SuiteSparse)
+@@ -287,7 +192,7 @@ endmacro()
+ # get SuiteSparse version
+ get_SuiteSparse_Version()
+
+-set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/suitesparse-${SuiteSparse_VERSION})
++set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/suitesparse)
+ ## create targets file
+ export(EXPORT SuiteSparseTargets
+ FILE "${CMAKE_CURRENT_BINARY_DIR}/suitesparse/suitesparse-targets.cmake"
+@@ -301,7 +206,7 @@ configure_file(cmake/SuiteSparse-config-install.cmake.in
+ ## do the EXPORT for allowing other project to easily use suitesparse with cmake
+ install(EXPORT SuiteSparseTargets
+ FILE
+- SuiteSparse-targets.cmake
++ suitesparse-targets.cmake
+ NAMESPACE
+ SuiteSparse::
+ DESTINATION
+diff --git a/SuiteSparse/CMakeLists.txt b/SuiteSparse/CMakeLists.txt
+index c6e2834..6fdfb01 100644
+--- a/SuiteSparse/CMakeLists.txt
++++ b/SuiteSparse/CMakeLists.txt
+@@ -1,23 +1,5 @@
+ PROJECT(SuiteSparse)
+
+-# Set optimized building:
+-IF(CMAKE_COMPILER_IS_GNUCXX AND NOT CMAKE_BUILD_TYPE MATCHES "Debug")
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
+- # only optimize for native processer when NOT cross compiling
+- if(NOT CMAKE_CROSSCOMPILING)
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=native")
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mtune=native")
+- endif(NOT CMAKE_CROSSCOMPILING)
+-ENDIF(CMAKE_COMPILER_IS_GNUCXX AND NOT CMAKE_BUILD_TYPE MATCHES "Debug")
+-
+-# Global flags:
+-IF (BUILD_METIS)
+- INCLUDE_DIRECTORIES("${METIS_SOURCE_DIR}/include")
+-ELSE (BUILD_METIS)
+- ADD_DEFINITIONS(-DNPARTITION)
+-ENDIF ( BUILD_METIS)
+-
+ # Disable COMPLEX numbers: disable it by default, since it causes problems in some platforms.
+ SET(HAVE_COMPLEX OFF CACHE BOOL "Enables building SuiteSparse with complex numbers (disabled by default to avoid problems in some platforms)")
+ IF (NOT HAVE_COMPLEX)
+@@ -38,12 +20,12 @@ if(WITH_CUDA)
+ set(SUBPROJECTS_TO_ADD
+ ${SUBPROJECTS_TO_ADD}
+ SuiteSparse_GPURuntime
+- GPUQREngine
++ GPUQREngine
+ )
+ endif()
+
+ set(SUBPROJECTS_TO_ADD
+- ${SUBPROJECTS_TO_ADD}
++ ${SUBPROJECTS_TO_ADD}
+ SuiteSparse_config
+ AMD
+ BTF
+diff --git a/cmake/SuiteSparse-config-install.cmake.in b/cmake/SuiteSparse-config-install.cmake.in
+index 1e587d1..fd8f3a7 100644
+--- a/cmake/SuiteSparse-config-install.cmake.in
++++ b/cmake/SuiteSparse-config-install.cmake.in
+@@ -2,20 +2,14 @@
+ get_filename_component(_SuiteSparse_SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+ get_filename_component(_SuiteSparse_PREFIX "${_SuiteSparse_SELF_DIR}" PATH)
+ get_filename_component(_SuiteSparse_PREFIX "${_SuiteSparse_PREFIX}" PATH)
+-get_filename_component(_SuiteSparse_PREFIX "${_SuiteSparse_PREFIX}" PATH)
+
+ include(CMakeFindDependencyMacro)
+-if (@SuiteSparse_LAPACK_used_CONFIG@) # SuiteSparse_LAPACK_used_CONFIG
+- # use config file which provides LAPACK (and BLAS) for us
+- find_dependency(LAPACK CONFIG)
+-else()
+- # try to find BLAS and LAPACK with modules
+ find_dependency(BLAS)
+ find_dependency(LAPACK)
+-endif ()
++ @SuiteSparse_FIND_DEPENDENCY_METIS@
+
+ # Load targets from the install tree.
+-include(${_SuiteSparse_SELF_DIR}/SuiteSparse-targets.cmake)
++include(${_SuiteSparse_SELF_DIR}/suitesparse-targets.cmake)
+
+ # Report SuiteSparse header search locations.
+ set(SuiteSparse_INCLUDE_DIRS ${_SuiteSparse_PREFIX}/include)
+@@ -39,3 +33,7 @@ set(SuiteSparse_LIBRARIES
+
+ unset(_SuiteSparse_PREFIX)
+ unset(_SuiteSparse_SELF_DIR)
++set(SUITESPARSE_FOUND TRUE)
++set(SuiteSparse_FOUND TRUE)
++set(SUITESPARSE_LIBRARIES ${SuiteSparse_LIBRARIES})
++set(SUITESPARSE_INCLUDE_DIRS ${SuiteSparse_INCLUDE_DIRS})
diff --git a/ports/suitesparse/portfile.cmake b/ports/suitesparse/portfile.cmake
index d55688121..44dfa8c36 100644
--- a/ports/suitesparse/portfile.cmake
+++ b/ports/suitesparse/portfile.cmake
@@ -1,54 +1,41 @@
-set(SUITESPARSE_VER 5.4.0)
-set(SUITESPARSEWIN_VER 1.4.0)
-
-vcpkg_download_distfile(SUITESPARSE
- URLS "http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-${SUITESPARSE_VER}.tar.gz"
- FILENAME "SuiteSparse-${SUITESPARSE_VER}.tar.gz"
- SHA512 8328bcc2ef5eb03febf91b9c71159f091ff405c1ba7522e53714120fcf857ceab2d2ecf8bf9a2e1fc45e1a934665a341e3a47f954f87b59934f4fce6164775d6
-)
-
-vcpkg_extract_source_archive_ex(
+vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
- ARCHIVE ${SUITESPARSE}
+ REPO DrTimothyAldenDavis/SuiteSparse
+ REF 71e330ca2bc0a2f12f416c461d23dbca21db4d8f
+ SHA512 06c75927c924cfd5511b07504e826714f504586243d6f3449d67408a33f3ecea824a7f2de7a165171791b9bda4fc09c0d7093125970895c2ed8d4d37ca1d5a3d
+ HEAD_REF master
)
vcpkg_from_github(
OUT_SOURCE_PATH SUITESPARSEWIN_SOURCE_PATH
REPO jlblancoc/suitesparse-metis-for-windows
- REF v${SUITESPARSEWIN_VER}
- SHA512 35a2563d6e33ebe8157f8d023167abd8d2512e2a627b8dbea798c59afefc56b8f01c7d10553529b03a7b4759e200ca82bb26ebce5cefce6983ffb057a8622162
+ REF c11e8dd7a2ef7d0d93af4c16f75374dd8ca029e2
+ SHA512 fbd2a9e6f7df47eeb5d890c7b286bef7fc4c8bcb22783ce800723bacaf2cfe902177828ce5b9e1c2ed9fb5c54591c5fb046a8667e7d354d452a4baac693e47d2
HEAD_REF master
PATCHES
- suitesparse.patch
- add-find-package-metis.patch
+ build_fixes.patch
)
# Copy suitesparse sources.
-message(STATUS "Copying SuiteSparse source files...")
+message(STATUS "Overwriting SuiteSparseWin source files with SuiteSparse source files...")
# Should probably remove everything but CMakeLists.txt files?
file(GLOB SUITESPARSE_SOURCE_FILES ${SOURCE_PATH}/*)
foreach(SOURCE_FILE ${SUITESPARSE_SOURCE_FILES})
file(COPY ${SOURCE_FILE} DESTINATION "${SUITESPARSEWIN_SOURCE_PATH}/SuiteSparse")
endforeach()
-message(STATUS "Copying SuiteSparse source files... done")
-message(STATUS "Removing integrated lapack and metis libs...")
+message(STATUS "Overwriting SuiteSparseWin source files with SuiteSparse source files... done")
+message(STATUS "Removing integrated lapack and metis lib...")
file(REMOVE_RECURSE ${SUITESPARSEWIN_SOURCE_PATH}/lapack_windows)
-file(REMOVE_RECURSE ${SUITESPARSEWIN_SOURCE_PATH}/metis)
-message(STATUS "Removing integrated lapack and metis libs... done")
-
-set(USE_VCPKG_METIS OFF)
-if("metis" IN_LIST FEATURES)
- set(USE_VCPKG_METIS ON)
- set(ADDITIONAL_BUILD_OPTIONS "-DMETIS_SOURCE_DIR=${CURRENT_INSTALLED_DIR}")
-endif()
+file(REMOVE_RECURSE ${SUITESPARSEWIN_SOURCE_PATH}/SuiteSparse/metis-5.1.0)
+message(STATUS "Removing integrated lapack and metis lib... done")
vcpkg_configure_cmake(
SOURCE_PATH ${SUITESPARSEWIN_SOURCE_PATH}
PREFER_NINJA
OPTIONS
-DBUILD_METIS=OFF
- -DUSE_VCPKG_METIS=${USE_VCPKG_METIS}
- ${ADDITIONAL_BUILD_OPTIONS}
+ -DUSE_VCPKG_METIS=ON
+ "-DMETIS_SOURCE_DIR=${CURRENT_INSTALLED_DIR}"
OPTIONS_DEBUG
-DSUITESPARSE_INSTALL_PREFIX="${CURRENT_PACKAGES_DIR}/debug"
OPTIONS_RELEASE
@@ -57,9 +44,13 @@ vcpkg_configure_cmake(
vcpkg_install_cmake()
-vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/suitesparse-${SUITESPARSE_VER})
+vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/suitesparse)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
file(INSTALL ${SOURCE_PATH}/LICENSE.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
file(INSTALL ${SUITESPARSEWIN_SOURCE_PATH}/LICENSE.md DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright_suitesparse-metis-for-windows)
+
+file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/share/cxsparse)
+file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper_cxsparse.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/cxsparse RENAME vcpkg-cmake-wrapper.cmake)
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/FindCXSparse.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/cxsparse)
diff --git a/ports/suitesparse/suitesparse.patch b/ports/suitesparse/suitesparse.patch
deleted file mode 100644
index 2255565ac..000000000
--- a/ports/suitesparse/suitesparse.patch
+++ /dev/null
@@ -1,151 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 3486f05..b8c2e63 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -191,68 +191,14 @@ if(WITH_CUDA)
- ENDIF(${CUDA_FOUND})
- endif()
-
--find_package(BLAS)
--find_package(LAPACK)
--if (LAPACK_FOUND AND BLAS_FOUND)
-+find_package(BLAS REQUIRED)
-+find_package(LAPACK REQUIRED)
-+if(LAPACK_FOUND AND BLAS_FOUND)
- message(STATUS "found lapack and blas config file. Linking targets lapack and blas")
- set(SuiteSparse_LINKER_LAPACK_BLAS_LIBS ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
--else () # LAPACK is not found
--
--## Need to use SuiteSparse_LINKER_LAPACK_BLAS_LIBS in our subproject in case of SHARED flag is set to ON
--SET(SUITESPARSE_USE_CUSTOM_BLAS_LAPACK_LIBS OFF CACHE BOOL "Check if you have custom LAPACK/BLAS libraries (AMD,...)")
--IF (SUITESPARSE_USE_CUSTOM_BLAS_LAPACK_LIBS)
-- SET(SUITESPARSE_CUSTOM_BLAS_LIB "" CACHE FILE "Path to custom library file for BLAS")
-- SET(SUITESPARSE_CUSTOM_LAPACK_LIB "" CACHE FILE "Path to custom library file for LAPACK")
-- IF (NOT EXISTS "${SUITESPARSE_CUSTOM_BLAS_LIB}" OR NOT EXISTS "${SUITESPARSE_CUSTOM_LAPACK_LIB}")
-- MESSAGE("*Error*: Correctly set SUITESPARSE_CUSTOM_BLAS_LIB and SUITESPARSE_CUSTOM_LAPACK_LIB or uncheck SUITESPARSE_USE_CUSTOM_BLAS_LAPACK_LIBS")
-- ELSE()
-- SET(SuiteSparse_LINKER_LAPACK_BLAS_LIBS ${SUITESPARSE_CUSTOM_BLAS_LIB} ${SUITESPARSE_CUSTOM_LAPACK_LIB})
-- ENDIF()
--ELSE()
-- IF (UNIX)
-- SET(SuiteSparse_LINKER_LAPACK_BLAS_LIBS lapack blas rt)
-- ELSE()
-- IF(CMAKE_SIZEOF_VOID_P EQUAL 8) # Size in bytes!
-- set(PATH_WORD_SIZE "x64")
-- ELSE(CMAKE_SIZEOF_VOID_P EQUAL 8) # Size in bytes!
-- set(PATH_WORD_SIZE "x32")
-- ENDIF(CMAKE_SIZEOF_VOID_P EQUAL 8)
--
-- add_library(blas SHARED IMPORTED)
-- set_property(TARGET blas PROPERTY IMPORTED_LOCATION ${SuiteSparseProject_SOURCE_DIR}/lapack_windows/${PATH_WORD_SIZE}/libblas.dll)
-- set_property(TARGET blas PROPERTY IMPORTED_IMPLIB ${SuiteSparseProject_SOURCE_DIR}/lapack_windows/${PATH_WORD_SIZE}/libblas.lib)
--
-- add_library(lapack SHARED IMPORTED)
-- set_property(TARGET lapack PROPERTY IMPORTED_LOCATION ${SuiteSparseProject_SOURCE_DIR}/lapack_windows/${PATH_WORD_SIZE}/liblapack.dll)
-- set_property(TARGET lapack PROPERTY IMPORTED_IMPLIB ${SuiteSparseProject_SOURCE_DIR}/lapack_windows/${PATH_WORD_SIZE}/liblapack.lib)
--
-- SET(SuiteSparse_LINKER_LAPACK_BLAS_LIBS blas lapack)
--
-- ## install lapack and blas dependencies
-- file(GLOB lapack_blas_windows_libs "${CMAKE_SOURCE_DIR}/lapack_windows/${PATH_WORD_SIZE}/*.lib")
-- file(GLOB lapack_blas_windows_dll "${CMAKE_SOURCE_DIR}/lapack_windows/${PATH_WORD_SIZE}/*.dll")
-- if(lapack_blas_windows_dll AND lapack_blas_windows_libs)
-- set(SuiteSparse_LAPACK_BLAS_LIB_DIR "lib${LIB_POSTFIX}/lapack_blas_windows")
-- install(FILES ${lapack_blas_windows_libs}
-- ${lapack_blas_windows_dll}
-- DESTINATION ${SuiteSparse_LAPACK_BLAS_LIB_DIR}
-- )
-- endif()
-- ENDIF()
--ENDIF()
--ENDIF() # LAPACK found
--
--if(SuiteSparse_LAPACK_BLAS_LIB_DIR) # "Export" the imported targets in config.cmake manually
-- set(ExternConfig "add_library(blas SHARED IMPORTED)
-- set_property(TARGET blas PROPERTY IMPORTED_LOCATION \${_SuiteSparse_PREFIX}/${SuiteSparse_LAPACK_BLAS_LIB_DIR}/libblas.dll)
-- set_property(TARGET blas PROPERTY IMPORTED_IMPLIB \${_SuiteSparse_PREFIX}/${SuiteSparse_LAPACK_BLAS_LIB_DIR}/libblas.lib)
--
-- add_library(lapack SHARED IMPORTED)
-- set_property(TARGET lapack PROPERTY IMPORTED_LOCATION \${_SuiteSparse_PREFIX}/${SuiteSparse_LAPACK_BLAS_LIB_DIR}/liblapack.dll)
-- set_property(TARGET lapack PROPERTY IMPORTED_IMPLIB \${_SuiteSparse_PREFIX}/${SuiteSparse_LAPACK_BLAS_LIB_DIR}/liblapack.lib)")
--endif()
-+endif() # LAPACK is not found
-
--IF(BUILD_METIS)
-+IF(BUILD_METIS OR USE_VCPKG_METIS)
- set(SuiteSparse_LINKER_METIS_LIBS "metis")
- ## namespaced library target for config
- set(SuiteSparse_EXPORTED_METIS_LIBS "SuiteSparse::metis")
-@@ -311,7 +257,7 @@ configure_file(cmake/SuiteSparse-config-install.cmake.in
- ## do the EXPORT for allowing other project to easily use suitesparse with cmake
- install(EXPORT SuiteSparseTargets
- FILE
-- SuiteSparse-targets.cmake
-+ suitesparse-targets.cmake
- NAMESPACE
- SuiteSparse::
- DESTINATION
-diff --git a/SuiteSparse/CHOLMOD/Include/cholmod_blas.h b/SuiteSparse/CHOLMOD/Include/cholmod_blas.h
-index aef3e63..907512b 100644
---- a/SuiteSparse/CHOLMOD/Include/cholmod_blas.h
-+++ b/SuiteSparse/CHOLMOD/Include/cholmod_blas.h
-@@ -27,6 +27,7 @@
- #elif defined (__linux) || defined (MGLNX86) || defined (ARCH_GLNX86)
- #define CHOLMOD_LINUX
- #define CHOLMOD_ARCHITECTURE "Linux"
-+#define BLAS_NO_UNDERSCORE
-
- #elif defined (__APPLE__)
- #define CHOLMOD_MAC
-diff --git a/SuiteSparse/CMakeLists.txt b/SuiteSparse/CMakeLists.txt
-index c6e2834..5ef08a6 100644
---- a/SuiteSparse/CMakeLists.txt
-+++ b/SuiteSparse/CMakeLists.txt
-@@ -12,11 +12,11 @@ IF(CMAKE_COMPILER_IS_GNUCXX AND NOT CMAKE_BUILD_TYPE MATCHES "Debug")
- ENDIF(CMAKE_COMPILER_IS_GNUCXX AND NOT CMAKE_BUILD_TYPE MATCHES "Debug")
-
- # Global flags:
--IF (BUILD_METIS)
-+IF (BUILD_METIS OR USE_VCPKG_METIS)
- INCLUDE_DIRECTORIES("${METIS_SOURCE_DIR}/include")
--ELSE (BUILD_METIS)
-+ELSE ()
- ADD_DEFINITIONS(-DNPARTITION)
--ENDIF ( BUILD_METIS)
-+ENDIF ()
-
- # Disable COMPLEX numbers: disable it by default, since it causes problems in some platforms.
- SET(HAVE_COMPLEX OFF CACHE BOOL "Enables building SuiteSparse with complex numbers (disabled by default to avoid problems in some platforms)")
-diff --git a/cmake/SuiteSparse-config-install.cmake.in b/cmake/SuiteSparse-config-install.cmake.in
-index cb1f51f..12f654c 100644
---- a/cmake/SuiteSparse-config-install.cmake.in
-+++ b/cmake/SuiteSparse-config-install.cmake.in
-@@ -2,15 +2,11 @@
- get_filename_component(_SuiteSparse_SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
- get_filename_component(_SuiteSparse_PREFIX "${_SuiteSparse_SELF_DIR}" PATH)
- get_filename_component(_SuiteSparse_PREFIX "${_SuiteSparse_PREFIX}" PATH)
--get_filename_component(_SuiteSparse_PREFIX "${_SuiteSparse_PREFIX}" PATH)
-
--find_package(LAPACK CONFIG)
--if (NOT LAPACK_FOUND) # Load the LAPACK package with which we were built.
-- @ExternConfig@
--endif ()
-+find_package(LAPACK REQUIRED)
-
- # Load targets from the install tree.
--include(${_SuiteSparse_SELF_DIR}/SuiteSparse-targets.cmake)
-+include(${_SuiteSparse_SELF_DIR}/suitesparse-targets.cmake)
-
- # Report SuiteSparse header search locations.
- set(SuiteSparse_INCLUDE_DIRS ${_SuiteSparse_PREFIX}/include)
-@@ -31,6 +27,10 @@ set(SuiteSparse_LIBRARIES
- SuiteSparse::spqr
- @SuiteSparse_EXPORTED_METIS_LIBS@
- )
-+set(SUITESPARSE_LIBRARIES ${SuiteSparse_LIBRARIES})
-
- unset(_SuiteSparse_PREFIX)
- unset(_SuiteSparse_SELF_DIR)
-+
-+set(SUITESPARSE_FOUND TRUE)
-+set(SuiteSparse_FOUND TRUE)
diff --git a/ports/suitesparse/vcpkg-cmake-wrapper_cxsparse.cmake b/ports/suitesparse/vcpkg-cmake-wrapper_cxsparse.cmake
new file mode 100644
index 000000000..67d87e8b6
--- /dev/null
+++ b/ports/suitesparse/vcpkg-cmake-wrapper_cxsparse.cmake
@@ -0,0 +1,10 @@
+set(CXSPARSE_PREV_MODULE_PATH ${CMAKE_MODULE_PATH})
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
+
+list(REMOVE_ITEM ARGS "NO_MODULE")
+list(REMOVE_ITEM ARGS "CONFIG")
+list(REMOVE_ITEM ARGS "MODULE")
+
+_find_package(${ARGS})
+
+set(CMAKE_MODULE_PATH ${CXSPARSE_PREV_MODULE_PATH})
diff --git a/ports/theia/CONTROL b/ports/theia/CONTROL
index 2d527adcd..521468056 100644
--- a/ports/theia/CONTROL
+++ b/ports/theia/CONTROL
@@ -1,5 +1,6 @@
Source: theia
-Version: 0.8-2
+Version: 0.8
+Port-Version: 3
Build-Depends: flann, cereal, ceres[suitesparse], openimageio, glew, freeglut (!osx)
Homepage: https://github.com/sweeneychris/TheiaSfM
Description: An open source library for multiview geometry and structure from motion
diff --git a/ports/theia/fix-external-dependencies.patch b/ports/theia/fix-external-dependencies.patch
index 7a4b00961..fc6e540f3 100644
--- a/ports/theia/fix-external-dependencies.patch
+++ b/ports/theia/fix-external-dependencies.patch
@@ -1,7 +1,22 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 9c1b150..5810156 100644
+index 9c1b150..1adbfed 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
+@@ -105,10 +105,10 @@ add_definitions(-DTHEIA_DATA_DIR="${CMAKE_SOURCE_DIR}/data")
+
+ # Eigen
+ set(MIN_EIGEN_VERSION 3.2.0)
+-find_package(Eigen ${MIN_EIGEN_VERSION} REQUIRED)
+-if (EIGEN_FOUND)
+- message("-- Found Eigen version ${EIGEN_VERSION}: ${EIGEN_INCLUDE_DIRS}")
+-endif (EIGEN_FOUND)
++find_package(Eigen3 ${MIN_EIGEN_VERSION} REQUIRED)
++if (EIGEN3_FOUND)
++ message("-- Found Eigen version ${EIGEN3_VERSION}: ${EIGEN3_INCLUDE_DIRS}")
++endif (EIGEN3_FOUND)
+
+ # Use a larger inlining threshold for Clang, since it hobbles Eigen,
+ # resulting in an unreasonably slow version of the blas routines. The
@@ -129,70 +129,27 @@ endif ()
# GFlags. The namespace patch is borrow from Ceres Solver (see license in
@@ -299,10 +314,48 @@ index 84f3829..f88d75a 100644
-add_subdirectory(visual_sfm)
\ No newline at end of file
+add_subdirectory(visual_sfm)
+diff --git a/libraries/optimo/CMakeLists.txt b/libraries/optimo/CMakeLists.txt
+index 80f5e5f..ea57f1b 100644
+--- a/libraries/optimo/CMakeLists.txt
++++ b/libraries/optimo/CMakeLists.txt
+@@ -67,11 +67,11 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
+
+ # Locations to search for Eigen
+ # Eigen
+-find_package(Eigen REQUIRED)
+-if (EIGEN_FOUND)
+- message("-- Found Eigen version ${EIGEN_VERSION}: ${EIGEN_INCLUDE_DIRS}")
+-endif (EIGEN_FOUND)
+-include_directories(${EIGEN_INCLUDE_DIRS})
++find_package(Eigen3 REQUIRED)
++if (EIGEN3_FOUND)
++ message("-- Found Eigen version ${EIGEN3_VERSION_STRING}: ${EIGEN3_INCLUDE_DIRS}")
++endif (EIGEN3_FOUND)
++include_directories(${EIGEN3_INCLUDE_DIRS})
+
+ # Setting CXX FLAGS appropriately. The code below was inspired from
+ # Google CERES and modified for this library.
diff --git a/libraries/statx/CMakeLists.txt b/libraries/statx/CMakeLists.txt
-index 23b9e49..af236a3 100644
+index 23b9e49..c58a550 100644
--- a/libraries/statx/CMakeLists.txt
+++ b/libraries/statx/CMakeLists.txt
+@@ -72,11 +72,11 @@ message("-- Default Install prefix: ${CMAKE_INSTALL_PREFIX}")
+ option(STATX_WITH_CERES "Enables GEV parameter estimation using Ceres" ON)
+
+ # Eigen
+-find_package(Eigen REQUIRED)
+-if (EIGEN_FOUND)
+- message("-- Found Eigen version ${EIGEN_VERSION}: ${EIGEN_INCLUDE_DIRS}")
+-endif (EIGEN_FOUND)
+-include_directories(${EIGEN_INCLUDE_DIRS})
++find_package(Eigen3 REQUIRED)
++if (EIGEN3_FOUND)
++ message("-- Found Eigen version ${EIGEN3_VERSION_STRING}: ${EIGEN3_INCLUDE_DIRS}")
++endif (EIGEN3_FOUND)
++include_directories(${EIGEN3_INCLUDE_DIRS})
+
+ # Google Flags
+ find_package(Gflags REQUIRED)
@@ -103,7 +103,11 @@ if(STATX_WITH_CERES)
endif(CERES_FOUND)
diff --git a/ports/theia/portfile.cmake b/ports/theia/portfile.cmake
index c131ac095..77b4c11c3 100644
--- a/ports/theia/portfile.cmake
+++ b/ports/theia/portfile.cmake
@@ -1,5 +1,3 @@
-include(vcpkg_common_functions)
-
vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
vcpkg_from_github(
@@ -15,6 +13,7 @@ vcpkg_from_github(
file(REMOVE ${SOURCE_PATH}/cmake/FindSuiteSparse.cmake)
file(REMOVE ${SOURCE_PATH}/cmake/FindGflags.cmake)
file(REMOVE ${SOURCE_PATH}/cmake/FindGlog.cmake)
+file(REMOVE ${SOURCE_PATH}/cmake/FindEigen.cmake)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
@@ -40,5 +39,5 @@ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/theia/libraries/akaze/datase
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/theia/libraries/spectra/doxygen)
# Handle 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)
+file(INSTALL ${SOURCE_PATH}/license.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
+file(COPY ${SOURCE_PATH}/data/camera_sensor_database_license.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
diff --git a/ports/vlfeat/CMakeLists.txt b/ports/vlfeat/CMakeLists.txt
new file mode 100644
index 000000000..39ecfbc6b
--- /dev/null
+++ b/ports/vlfeat/CMakeLists.txt
@@ -0,0 +1,159 @@
+cmake_minimum_required (VERSION 3.10)
+project (vlfeat)
+
+set(INSTALL_BIN_DIR "bin" CACHE PATH "Path where exe and dll will be installed")
+set(INSTALL_LIB_DIR "lib" CACHE PATH "Path where lib will be installed")
+set(INSTALL_INCLUDE_DIR "include/vlfeat" CACHE PATH "Path where headers will be installed")
+set(INSTALL_CMAKE_DIR "share/vlfeat" CACHE PATH "Path where cmake configs will be installed")
+
+# Make relative paths absolute (needed later on)
+set(RELATIVE_INSTALL_INCLUDE_DIR ${INSTALL_INCLUDE_DIR})
+foreach(p LIB BIN INCLUDE CMAKE)
+ set(var INSTALL_${p}_DIR)
+ if(NOT IS_ABSOLUTE "${${var}}")
+ set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
+ endif()
+endforeach()
+
+# make sure that the default is a RELEASE
+set(default_build_type "Release")
+if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
+ message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
+ set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE
+ STRING "Choose the type of build." FORCE)
+ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
+ "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
+endif()
+
+if(ENABLE_OPENMP)
+ find_package(OpenMP REQUIRED)
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
+endif()
+
+if(MSVC)
+ add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
+ add_definitions(-D__LITTLE_ENDIAN__)
+ add_definitions(/Zp8)
+ add_definitions(/wd4146)
+ if(CMAKE_C_FLAGS MATCHES "/W[0-4]")
+ string(REGEX REPLACE "/W[0-4]" "/W1" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
+ endif()
+endif()
+
+if(CMAKE_COMPILER_IS_GNUCC)
+ add_definitions(-std=c99)
+ add_definitions(-Wno-unused-function)
+ add_definitions(-Wno-long-long)
+ add_definitions(-Wno-variadic-macros)
+endif()
+
+if(USE_SSE)
+ add_definitions(-D__SSE2__)
+ set(SSE2_VL_C_FILES "vl/mathop_sse2.c" "vl/imopv_sse2.c")
+ set(SSE2_VL_H_FILES "vl/mathop_sse2.h" "vl/imopv_sse2.h")
+else()
+ add_definitions(-DVL_DISABLE_SSE2)
+endif()
+
+if(USE_AVX)
+ set(AVX_VL_C_FILES "vl/mathop_avx.c")
+ set(AVX_VL_H_FILES "vl/mathop_avx.h")
+else()
+ add_definitions(-DVL_DISABLE_AVX)
+endif()
+
+
+set (C_SOURCES
+ vl/aib.c
+ vl/array.c
+ vl/covdet.c
+ vl/dsift.c
+ vl/fisher.c
+ vl/generic.c
+ vl/getopt_long.c
+ vl/gmm.c
+ vl/hikmeans.c
+ vl/hog.c
+ vl/homkermap.c
+ vl/host.c
+ vl/ikmeans.c
+ vl/imopv.c
+ vl/kdtree.c
+ vl/kmeans.c
+ vl/lbp.c
+ vl/liop.c
+ vl/mathop.c
+ ${AVX_VL_C_FILES}
+ ${SSE2_VL_C_FILES}
+ vl/mser.c
+ vl/pgm.c
+ vl/quickshift.c
+ vl/random.c
+ vl/rodrigues.c
+ vl/scalespace.c
+ vl/sift.c
+ vl/slic.c
+ vl/stringop.c
+ vl/svm.c
+ vl/svmdataset.c
+ vl/vlad.c
+)
+
+set (H_SOURCES
+ vl/aib.h
+ vl/array.h
+ vl/covdet.h
+ vl/dsift.h
+ vl/fisher.h
+ vl/generic.h
+ vl/getopt_long.h
+ vl/gmm.h
+ vl/heap-def.h
+ vl/hikmeans.h
+ vl/hog.h
+ vl/homkermap.h
+ vl/host.h
+ vl/ikmeans.h
+ vl/imopv.h
+ vl/kdtree.h
+ vl/kmeans.h
+ vl/lbp.h
+ vl/liop.h
+ vl/mathop.h
+ ${AVX_VL_H_FILES}
+ ${SSE2_VL_H_FILES}
+ vl/mser.h
+ vl/pgm.h
+ vl/qsort-def.h
+ vl/quickshift.h
+ vl/random.h
+ vl/rodrigues.h
+ vl/scalespace.h
+ vl/shuffle-def.h
+ vl/sift.h
+ vl/slic.h
+ vl/stringop.h
+ vl/svm.h
+ vl/svmdataset.h
+ vl/vlad.h
+)
+
+add_library(vl ${C_SOURCES} ${H_SOURCES})
+set_property(TARGET vl PROPERTY POSITION_INDEPENDENT_CODE ON)
+target_compile_definitions(vl PRIVATE -DVL_BUILD_DLL)
+target_include_directories(vl PUBLIC $<INSTALL_INTERFACE:${RELATIVE_INSTALL_INCLUDE_DIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/vl>)
+set_target_properties(vl PROPERTIES PUBLIC_HEADER "${H_SOURCES}")
+
+install(TARGETS vl EXPORT vlfeatTargets
+ RUNTIME DESTINATION "${INSTALL_BIN_DIR}"
+ LIBRARY DESTINATION "${INSTALL_LIB_DIR}"
+ ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"
+ PUBLIC_HEADER DESTINATION "${INSTALL_INCLUDE_DIR}"
+ COMPONENT dev
+)
+
+install(EXPORT vlfeatTargets
+ FILE vlfeatConfig.cmake
+ NAMESPACE unofficial::vlfeat::
+ DESTINATION "${INSTALL_CMAKE_DIR}"
+)
diff --git a/ports/vlfeat/CONTROL b/ports/vlfeat/CONTROL
new file mode 100644
index 000000000..d700ed845
--- /dev/null
+++ b/ports/vlfeat/CONTROL
@@ -0,0 +1,4 @@
+Source: vlfeat
+Version: 2020-07-10
+Homepage: https://www.vlfeat.org
+Description: An open library of computer vision algorithms
diff --git a/ports/vlfeat/expose_missing_symbols.patch b/ports/vlfeat/expose_missing_symbols.patch
new file mode 100644
index 000000000..02e9ce0a6
--- /dev/null
+++ b/ports/vlfeat/expose_missing_symbols.patch
@@ -0,0 +1,79 @@
+diff --git a/vl/generic.c b/vl/generic.c
+index c6f84a9..8617ed2 100644
+--- a/vl/generic.c
++++ b/vl/generic.c
+@@ -1513,13 +1513,13 @@ vl_thread_specific_state_delete (VlThreadState * self)
+ */
+
+ #if (defined(VL_OS_LINUX) || defined(VL_OS_MACOSX)) && defined(VL_COMPILER_GNUC)
+-static void vl_constructor () __attribute__ ((constructor)) ;
+-static void vl_destructor () __attribute__ ((destructor)) ;
++//static void vl_constructor () __attribute__ ((constructor)) ;
++//static void vl_destructor () __attribute__ ((destructor)) ;
+ #endif
+
+ #if defined(VL_OS_WIN)
+-static void vl_constructor () ;
+-static void vl_destructor () ;
++//static void vl_constructor () ;
++//static void vl_destructor () ;
+
+ BOOL WINAPI DllMain(
+ HINSTANCE hinstDLL, // handle to DLL module
+@@ -1563,7 +1563,7 @@ BOOL WINAPI DllMain(
+ /* ---------------------------------------------------------------- */
+
+ /** @internal @brief Initialize VLFeat state */
+-static void
++void
+ vl_constructor (void)
+ {
+ VlState * state ;
+@@ -1637,7 +1637,7 @@ vl_constructor (void)
+ }
+
+ /** @internal @brief Destruct VLFeat */
+-static void
++void
+ vl_destructor ()
+ {
+ VlState * state ;
+diff --git a/vl/generic.h b/vl/generic.h
+index 4ef87f2..30a974e 100644
+--- a/vl/generic.h
++++ b/vl/generic.h
+@@ -206,5 +206,7 @@ VL_EXPORT double vl_toc (void) ;
+ VL_EXPORT double vl_get_cpu_time (void) ;
+ /** @} */
+
++VL_EXPORT void vl_constructor();
++VL_EXPORT void vl_destructor();
+ /* VL_GENERIC_H */
+ #endif
+diff --git a/vl/sift.c b/vl/sift.c
+index 03963fe..6477a81 100644
+--- a/vl/sift.c
++++ b/vl/sift.c
+@@ -1443,7 +1443,7 @@ vl_sift_detect (VlSiftFilt * f)
+ ** @remark The minimum octave size is 2x2xS.
+ **/
+
+-static void
++void
+ update_gradient (VlSiftFilt *f)
+ {
+ int s_min = f->s_min ;
+diff --git a/vl/sift.h b/vl/sift.h
+index 50e03f4..f9558ad 100644
+--- a/vl/sift.h
++++ b/vl/sift.h
+@@ -138,7 +138,8 @@ void vl_sift_keypoint_init (VlSiftFilt const *f,
+ double y,
+ double sigma) ;
+ /** @} */
+-
++VL_EXPORT
++void update_gradient(VlSiftFilt* f);
+ /** @name Retrieve data and parameters
+ ** @{
+ **/
diff --git a/ports/vlfeat/portfile.cmake b/ports/vlfeat/portfile.cmake
new file mode 100644
index 000000000..a075bdef7
--- /dev/null
+++ b/ports/vlfeat/portfile.cmake
@@ -0,0 +1,33 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO vlfeat/vlfeat
+ REF 1b9075fc42fe54b42f0e937f8b9a230d8e2c7701
+ SHA512 6d317a1a9496ccac80244553d555fe060b150ccc7ee397a353b64f3a8451f24d1f03d8c00ed04cd9fc2dc066a5c5089b03695c614cb43ffa09be363660278255
+ PATCHES
+ expose_missing_symbols.patch
+)
+
+set(USE_SSE ON)
+set(USE_AVX OFF) # feature is broken, so it's always off anyway
+
+if(VCPKG_TARGET_ARCHITECTURE MATCHES "arm")
+ set(USE_SSE OFF)
+ set(USE_AVX OFF)
+endif()
+
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+ OPTIONS
+ -DUSE_SSE=${USE_SSE}
+ -DUSE_AVX=${USE_AVX}
+)
+
+vcpkg_install_cmake()
+vcpkg_fixup_cmake_targets()
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include ${CURRENT_PACKAGES_DIR}/debug/share)
+
+file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt
index 38b5db2d9..82c2c8e1d 100644
--- a/scripts/ci.baseline.txt
+++ b/scripts/ci.baseline.txt
@@ -211,7 +211,7 @@ chmlib:x64-uwp=fail
civetweb:arm64-windows = skip
civetweb:arm-uwp = skip
civetweb:x64-uwp = skip
-# clapack is replaced by lapack-reference.
+# clapack is replaced by lapack-reference.
clapack:x64-linux = skip
clapack:x64-osx = skip
clapack:x64-windows = skip
@@ -1250,7 +1250,6 @@ openmpi:x64-uwp=fail
openmpi:x64-windows=fail
openmpi:x64-windows-static=fail
openmpi:x86-windows=fail
-openmvs:x64-linux=fail
openni2:x64-uwp=fail
openni2:x64-windows-static=fail
openscap:x64-linux=fail