aboutsummaryrefslogtreecommitdiff
path: root/ports/suitesparse/suitesparse.patch
blob: 2255565ac173b166c8c76b20693013b3605245b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
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)