|
4 | 4 | baremodule SuiteSparse_jll
|
5 | 5 | using Base, Libdl, libblastrampoline_jll
|
6 | 6 |
|
7 |
| -const PATH_list = String[] |
8 |
| -const LIBPATH_list = String[] |
9 |
| - |
10 | 7 | export libamd, libbtf, libcamd, libccolamd, libcholmod, libcolamd, libklu, libldl, librbio, libspqr, libsuitesparseconfig, libumfpack
|
11 | 8 |
|
12 | 9 | # These get calculated in __init__()
|
13 | 10 | # Man I can't wait until these are automatically handled by an in-Base JLLWrappers clone.
|
14 | 11 | const PATH = Ref("")
|
| 12 | +const PATH_list = String[] |
15 | 13 | const LIBPATH = Ref("")
|
| 14 | +const LIBPATH_list = String[] |
16 | 15 | artifact_dir::String = ""
|
17 |
| -libamd_handle::Ptr{Cvoid} = C_NULL |
18 | 16 | libamd_path::String = ""
|
19 |
| -libbtf_handle::Ptr{Cvoid} = C_NULL |
20 | 17 | libbtf_path::String = ""
|
21 |
| -libcamd_handle::Ptr{Cvoid} = C_NULL |
22 | 18 | libcamd_path::String = ""
|
23 |
| -libccolamd_handle::Ptr{Cvoid} = C_NULL |
24 | 19 | libccolamd_path::String = ""
|
25 |
| -libcholmod_handle::Ptr{Cvoid} = C_NULL |
26 | 20 | libcholmod_path::String = ""
|
27 |
| -libcolamd_handle::Ptr{Cvoid} = C_NULL |
28 | 21 | libcolamd_path::String = ""
|
29 |
| -libklu_handle::Ptr{Cvoid} = C_NULL |
30 | 22 | libklu_path::String = ""
|
31 |
| -libldl_handle::Ptr{Cvoid} = C_NULL |
32 | 23 | libldl_path::String = ""
|
33 |
| -librbio_handle::Ptr{Cvoid} = C_NULL |
34 | 24 | librbio_path::String = ""
|
35 |
| -libspqr_handle::Ptr{Cvoid} = C_NULL |
36 | 25 | libspqr_path::String = ""
|
37 |
| -libsuitesparseconfig_handle::Ptr{Cvoid} = C_NULL |
38 | 26 | libsuitesparseconfig_path::String = ""
|
39 |
| -libumfpack_handle::Ptr{Cvoid} = C_NULL |
40 | 27 | libumfpack_path::String = ""
|
41 | 28 |
|
| 29 | +_libamd_dependencies = LazyLibrary[libblastrampoline] |
| 30 | +_libbtf_dependencies = LazyLibrary[libblastrampoline] |
| 31 | +_libcamd_dependencies = LazyLibrary[libblastrampoline] |
| 32 | +_libccolamd_dependencies = LazyLibrary[libblastrampoline] |
| 33 | +_libcholmod_dependencies = LazyLibrary[libblastrampoline] |
| 34 | +_libcolamd_dependencies = LazyLibrary[libblastrampoline] |
| 35 | +_libklu_dependencies = LazyLibrary[libblastrampoline] |
| 36 | +_libldl_dependencies = LazyLibrary[] |
| 37 | +_librbio_dependencies = LazyLibrary[libblastrampoline] |
| 38 | +_libspqr_dependencies = LazyLibrary[libblastrampoline] |
| 39 | +_libsuitesparseconfig_dependencies = LazyLibrary[libblastrampoline] |
| 40 | +_libumfpack_dependencies = LazyLibrary[libblastrampoline] |
| 41 | + |
42 | 42 | if Sys.iswindows()
|
43 |
| - const libamd = "libamd.dll" |
44 |
| - const libbtf = "libbtf.dll" |
45 |
| - const libcamd = "libcamd.dll" |
46 |
| - const libccolamd = "libccolamd.dll" |
47 |
| - const libcholmod = "libcholmod.dll" |
48 |
| - const libcolamd = "libcolamd.dll" |
49 |
| - const libklu = "libklu.dll" |
50 |
| - const libldl = "libldl.dll" |
51 |
| - const librbio = "librbio.dll" |
52 |
| - const libspqr = "libspqr.dll" |
53 |
| - const libsuitesparseconfig = "libsuitesparseconfig.dll" |
54 |
| - const libumfpack = "libumfpack.dll" |
| 43 | + const _libamd_path = BundledLazyLibraryPath("libamd.dll") |
| 44 | + const _libbtf_path = BundledLazyLibraryPath("libbtf.dll") |
| 45 | + const _libcamd_path = BundledLazyLibraryPath("libcamd.dll") |
| 46 | + const _libccolamd_path = BundledLazyLibraryPath("libccolamd.dll") |
| 47 | + const _libcholmod_path = BundledLazyLibraryPath("libcholmod.dll") |
| 48 | + const _libcolamd_path = BundledLazyLibraryPath("libcolamd.dll") |
| 49 | + const _libklu_path = BundledLazyLibraryPath("libklu.dll") |
| 50 | + const _libldl_path = BundledLazyLibraryPath("libldl.dll") |
| 51 | + const _librbio_path = BundledLazyLibraryPath("librbio.dll") |
| 52 | + const _libspqr_path = BundledLazyLibraryPath("libspqr.dll") |
| 53 | + const _libsuitesparseconfig_path = BundledLazyLibraryPath("libsuitesparseconfig.dll") |
| 54 | + const _libumfpack_path = BundledLazyLibraryPath("libumfpack.dll") |
55 | 55 | elseif Sys.isapple()
|
56 |
| - const libamd = "@rpath/libamd.3.dylib" |
57 |
| - const libbtf = "@rpath/libbtf.2.dylib" |
58 |
| - const libcamd = "@rpath/libcamd.3.dylib" |
59 |
| - const libccolamd = "@rpath/libccolamd.3.dylib" |
60 |
| - const libcholmod = "@rpath/libcholmod.5.dylib" |
61 |
| - const libcolamd = "@rpath/libcolamd.3.dylib" |
62 |
| - const libklu = "@rpath/libklu.2.dylib" |
63 |
| - const libldl = "@rpath/libldl.3.dylib" |
64 |
| - const librbio = "@rpath/librbio.4.dylib" |
65 |
| - const libspqr = "@rpath/libspqr.4.dylib" |
66 |
| - const libsuitesparseconfig = "@rpath/libsuitesparseconfig.7.dylib" |
67 |
| - const libumfpack = "@rpath/libumfpack.6.dylib" |
| 56 | + const _libamd_path = BundledLazyLibraryPath("libamd.3.dylib") |
| 57 | + const _libbtf_path = BundledLazyLibraryPath("libbtf.2.dylib") |
| 58 | + const _libcamd_path = BundledLazyLibraryPath("libcamd.3.dylib") |
| 59 | + const _libccolamd_path = BundledLazyLibraryPath("libccolamd.3.dylib") |
| 60 | + const _libcholmod_path = BundledLazyLibraryPath("libcholmod.5.dylib") |
| 61 | + const _libcolamd_path = BundledLazyLibraryPath("libcolamd.3.dylib") |
| 62 | + const _libklu_path = BundledLazyLibraryPath("libklu.2.dylib") |
| 63 | + const _libldl_path = BundledLazyLibraryPath("libldl.3.dylib") |
| 64 | + const _librbio_path = BundledLazyLibraryPath("librbio.4.dylib") |
| 65 | + const _libspqr_path = BundledLazyLibraryPath("libspqr.4.dylib") |
| 66 | + const _libsuitesparseconfig_path = BundledLazyLibraryPath("libsuitesparseconfig.7.dylib") |
| 67 | + const _libumfpack_path = BundledLazyLibraryPath("libumfpack.6.dylib") |
68 | 68 | else
|
69 |
| - const libamd = "libamd.so.3" |
70 |
| - const libbtf = "libbtf.so.2" |
71 |
| - const libcamd = "libcamd.so.3" |
72 |
| - const libccolamd = "libccolamd.so.3" |
73 |
| - const libcholmod = "libcholmod.so.5" |
74 |
| - const libcolamd = "libcolamd.so.3" |
75 |
| - const libklu = "libklu.so.2" |
76 |
| - const libldl = "libldl.so.3" |
77 |
| - const librbio = "librbio.so.4" |
78 |
| - const libspqr = "libspqr.so.4" |
79 |
| - const libsuitesparseconfig = "libsuitesparseconfig.so.7" |
80 |
| - const libumfpack = "libumfpack.so.6" |
| 69 | + const _libamd_path = BundledLazyLibraryPath("libamd.so.3") |
| 70 | + const _libbtf_path = BundledLazyLibraryPath("libbtf.so.2") |
| 71 | + const _libcamd_path = BundledLazyLibraryPath("libcamd.so.3") |
| 72 | + const _libccolamd_path = BundledLazyLibraryPath("libccolamd.so.3") |
| 73 | + const _libcholmod_path = BundledLazyLibraryPath("libcholmod.so.5") |
| 74 | + const _libcolamd_path = BundledLazyLibraryPath("libcolamd.so.3") |
| 75 | + const _libklu_path = BundledLazyLibraryPath("libklu.so.2") |
| 76 | + const _libldl_path = BundledLazyLibraryPath("libldl.so.3") |
| 77 | + const _librbio_path = BundledLazyLibraryPath("librbio.so.4") |
| 78 | + const _libspqr_path = BundledLazyLibraryPath("libspqr.so.4") |
| 79 | + const _libsuitesparseconfig_path = BundledLazyLibraryPath("libsuitesparseconfig.so.7") |
| 80 | + const _libumfpack_path = BundledLazyLibraryPath("libumfpack.so.6") |
| 81 | +end |
| 82 | + |
| 83 | +const libamd = LazyLibrary(_libamd_path, dependencies=_libamd_dependencies) |
| 84 | +const libbtf = LazyLibrary(_libbtf_path, dependencies=_libbtf_dependencies) |
| 85 | +const libcamd = LazyLibrary(_libcamd_path, dependencies=_libcamd_dependencies) |
| 86 | +const libccolamd = LazyLibrary(_libccolamd_path, dependencies=_libccolamd_dependencies) |
| 87 | +const libcholmod = LazyLibrary(_libcholmod_path, dependencies=_libcholmod_dependencies) |
| 88 | +const libcolamd = LazyLibrary(_libcolamd_path, dependencies=_libcolamd_dependencies) |
| 89 | +const libklu = LazyLibrary(_libklu_path, dependencies=_libklu_dependencies) |
| 90 | +const libldl = LazyLibrary(_libldl_path, dependencies=_libldl_dependencies) |
| 91 | +const librbio = LazyLibrary(_librbio_path, dependencies=_librbio_dependencies) |
| 92 | +const libspqr = LazyLibrary(_libspqr_path, dependencies=_libspqr_dependencies) |
| 93 | +const libsuitesparseconfig = LazyLibrary(_libsuitesparseconfig_path, dependencies=_libsuitesparseconfig_dependencies) |
| 94 | +const libumfpack = LazyLibrary(_libumfpack_path, dependencies=_libumfpack_dependencies) |
| 95 | + |
| 96 | + |
| 97 | +function eager_mode() |
| 98 | + dlopen(libamd) |
| 99 | + dlopen(libbtf) |
| 100 | + dlopen(libcamd) |
| 101 | + dlopen(libccolamd) |
| 102 | + dlopen(libcholmod) |
| 103 | + dlopen(libcolamd) |
| 104 | + dlopen(libklu) |
| 105 | + dlopen(libldl) |
| 106 | + dlopen(librbio) |
| 107 | + dlopen(libspqr) |
| 108 | + dlopen(libsuitesparseconfig) |
| 109 | + dlopen(libumfpack) |
| 110 | + |
81 | 111 | end
|
| 112 | +is_available() = true |
82 | 113 |
|
83 | 114 | function __init__()
|
84 | 115 | libblastrampoline_jll.eager_mode()
|
85 | 116 |
|
86 | 117 | # BSD-3-Clause
|
87 |
| - global libamd_handle = dlopen(libamd) |
88 |
| - global libamd_path = dlpath(libamd_handle) |
89 |
| - global libcamd_handle = dlopen(libcamd) |
90 |
| - global libcamd_path = dlpath(libcamd_handle) |
91 |
| - global libccolamd_handle = dlopen(libccolamd) |
92 |
| - global libccolamd_path = dlpath(libccolamd_handle) |
93 |
| - global libcolamd_handle = dlopen(libcolamd) |
94 |
| - global libcolamd_path = dlpath(libcolamd_handle) |
95 |
| - global libsuitesparseconfig_handle = dlopen(libsuitesparseconfig) |
96 |
| - global libsuitesparseconfig_path = dlpath(libsuitesparseconfig_handle) |
| 118 | + global libamd_path = string(_libamd_path) |
| 119 | + global libcamd_path = string(_libcamd_path) |
| 120 | + global libccolamd_path = string(_libccolamd_path) |
| 121 | + global libsuitesparseconfig_path = string(_libsuitesparseconfig_path) |
97 | 122 |
|
98 | 123 | # LGPL-2.1+
|
99 |
| - global libbtf_handle = dlopen(libbtf) |
100 |
| - global libbtf_path = dlpath(libbtf_handle) |
101 |
| - global libklu_handle = dlopen(libklu) |
102 |
| - global libklu_path = dlpath(libklu_handle) |
103 |
| - global libldl_handle = dlopen(libldl) |
104 |
| - global libldl_path = dlpath(libldl_handle) |
| 124 | + global libbtf_path = string(_libbtf_path) |
| 125 | + global libklu_path = string(_libklu_path) |
| 126 | + global libldl_path = string(_libldl_path) |
105 | 127 |
|
106 | 128 | # GPL-2.0+
|
107 | 129 | if Base.USE_GPL_LIBS
|
108 |
| - global libcholmod_handle = dlopen(libcholmod) |
109 |
| - global libcholmod_path = dlpath(libcholmod_handle) |
110 |
| - global librbio_handle = dlopen(librbio) |
111 |
| - global librbio_path = dlpath(librbio_handle) |
112 |
| - global libspqr_handle = dlopen(libspqr) |
113 |
| - global libspqr_path = dlpath(libspqr_handle) |
114 |
| - global libumfpack_handle = dlopen(libumfpack) |
115 |
| - global libumfpack_path = dlpath(libumfpack_handle) |
| 130 | + global libcholmod_path = string(_libcholmod_path) |
| 131 | + global librbio_path = string(_librbio_path) |
| 132 | + global libspqr_path = string(_libspqr_path) |
| 133 | + global libumfpack_path = string(_libumfpack_path) |
116 | 134 | end
|
117 | 135 | global artifact_dir = dirname(Sys.BINDIR)
|
118 | 136 | end
|
119 | 137 |
|
120 |
| -# JLLWrappers API compatibility shims. Note that not all of these will really make sense. |
121 |
| -# For instance, `find_artifact_dir()` won't actually be the artifact directory, because |
122 |
| -# there isn't one. It instead returns the overall Julia prefix. |
123 |
| -is_available() = true |
124 |
| -find_artifact_dir() = artifact_dir |
125 |
| -dev_jll() = error("stdlib JLLs cannot be dev'ed") |
126 |
| -best_wrapper = nothing |
127 |
| -get_libamd_path() = libamd_path |
128 |
| -get_libbtf_path() = libbtf_path |
129 |
| -get_libcamd_path() = libcamd_path |
130 |
| -get_libccolamd_path() = libccolamd_path |
131 |
| -get_libcholmod_path() = libcholmod_path |
132 |
| -get_libcolamd_path() = libcolamd_path |
133 |
| -get_libklu_path() = libklu_path |
134 |
| -get_libldl_path() = libldl_path |
135 |
| -get_librbio_path() = librbio_path |
136 |
| -get_libspqr_path() = libspqr_path |
137 |
| -get_libsuitesparseconfig_path() = libsuitesparseconfig_path |
138 |
| -get_libumfpack_path() = libumfpack_path |
139 |
| - |
140 | 138 | end # module SuiteSparse_jll
|
0 commit comments