aboutsummaryrefslogtreecommitdiff
path: root/ports/suitesparse
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 /ports/suitesparse
parent68003004c045c527d1c74c238abd29ae619e60bc (diff)
downloadvcpkg-0a506f7c5e7ecc85893855fcd6bf3ace96d590ae.tar.gz
vcpkg-0a506f7c5e7ecc85893855fcd6bf3ace96d590ae.zip
[OpenMVG/OpenMVS] fix tools (#12229)
Diffstat (limited to 'ports/suitesparse')
-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
7 files changed, 389 insertions, 234 deletions
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})