-
Notifications
You must be signed in to change notification settings - Fork 86
Expand file tree
/
Copy pathFindDependencies.cmake
More file actions
309 lines (276 loc) · 11 KB
/
FindDependencies.cmake
File metadata and controls
309 lines (276 loc) · 11 KB
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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
# MKL - On Unix the compilervars.sh should be run to find the MKL libraries.
if(DEFINED ENV{MKLROOT})
set(MKLROOT $ENV{MKLROOT} CACHE PATH "MKL root directory")
else()
if(WIN32)
set(MKLPATHS $ENV{ProgramFiles\(x86\)}\\IntelSWTools $ENV{PROGRAMFILES}\\Intel* $ENV{ProgramFiles\(x86\)}\\Intel $ENV{SystemDrive} $ENV{SystemDrive}\\Intel*)
set(MKLSUFFIXES "compilers_and_libraries/windows" "oneapi")
elseif(APPLE)
set(MKLPATHS /opt/intel /intel /usr/local/intel /usr/local/opt/intel)
set(MKLSUFFIXES "compilers_and_libraries/mac" "oneapi")
else()
set(MKLPATHS /opt/intel /intel /usr/local/intel /usr/local/opt/intel $ENV{HOME}/intel $ENV{HOME}/*/intel)
set(MKLSUFFIXES "compilers_and_libraries/linux" "oneapi")
endif()
find_file(MKLROOT mkl
PATHS ${MKLPATHS}
PATH_SUFFIXES ${MKLSUFFIXES}
DOC "MKL root directory")
endif()
if(MKLROOT)
if(${MKLROOT} MATCHES "oneapi" OR ${MKLROOT} MATCHES "oneAPI")
find_path(MKL_INC mkl.h
PATHS
${MKLROOT}/latest/include
${MKLROOT}/include
${MKLROOT}/mkl/latest/include
DOC "MKL include directory")
find_library(MKL_CORE
NAMES mkl_core mkl_core.lib
PATHS
${MKLROOT}/latest/lib
${MKLROOT}/lib
${MKLROOT}/mkl/latest/lib
PATH_SUFFIXES "intel64"
NO_DEFAULT_PATH)
find_library(MKL_OMP_LIB
NAMES iomp5 iomp5md libiomp5md.lib
PATHS
${MKLROOT}/../compiler/latest/*/compiler/lib/
${MKLROOT}/../compiler/latest/lib/
${MKLROOT}/../../compiler/latest/*/compiler/lib/
${MKLROOT}/../../compiler/latest/lib/
${MKLROOT}/compiler/latest/lib/
PATH_SUFFIXES "intel64" "mac"
NO_DEFAULT_PATH
DOC "MKL OMP Library")
else()
find_path(MKL_INC mkl.h
PATHS
${MKLROOT}/latest/include
${MKLROOT}/include
DOC "MKL include directory")
find_library(MKL_CORE mkl_core
PATHS
${MKLROOT}/latest/lib
${MKLROOT}/lib
PATH_SUFFIXES "intel64"
NO_DEFAULT_PATH)
find_library(MKL_OMP_LIB
NAMES iomp5 iomp5md libiomp5md.lib
PATHS ${MKLROOT}/lib
${MKLROOT}/../lib
${MKLROOT}/../compiler/lib
${MKLROOT}/../../windows/compiler/lib/
${MKLROOT}/../../compiler/latest/*/compiler/lib/
PATH_SUFFIXES "intel64"
NO_DEFAULT_PATH
DOC "MKL OMP Library")
endif()
if(MKL_CORE)
get_filename_component(MKL_TEMP ${MKL_CORE} DIRECTORY)
set(MKL_LIB_DIR ${MKL_TEMP} CACHE PATH "MKL Library directory")
unset(MKL_TEMP)
unset(MKL_CORE CACHE)
else()
set(MKL_LIB_DIR "MKL_LIB_DIR-NOTFOUND" CACHE PATH "MKL Library directory")
unset(MKL_CORE CACHE)
endif()
endif()
if(NOT WIN32)
# OpenMP
find_package(OpenMP QUIET)
endif()
if(MKL_INC AND MKL_LIB_DIR AND MKL_OMP_LIB)
option(USE_MKL "Required for pardiso and iterative solvers" ON)
mark_as_advanced(MKL_INC MKL_LIB_DIR MKL_OMP_LIB)
set(OpenMP_C_FOUND true)
else()
option(USE_MKL "Required for pardiso and iterative solvers" OFF)
endif()
# FFTW
if(WIN32)
find_path(FFTW_INC fftw3.h
PATHS C::/Program\ Files/* $ENV{HOMEPATH}/* $ENV{HOMEPATH}/*/*
PATH_SUFFIXES "include" "fftw*" "include/fftw*"
DOC "FFTW include directory")
find_library(FFTW_LIB fftw3 libfftw3-3
PATHS C::/Program\ Files/* $ENV{HOMEPATH}/* $ENV{HOMEPATH}/*/*
PATH_SUFFIXES "vs2017/Release"
DOC "FFTW library path")
else()
find_path(FFTW_INC fftw3.h
PATHS /usr/local/ /opt/fftw* $ENV{HOME}/* $ENV{HOME}/*/*
PATH_SUFFIXES "include" "fftw*" "include/fftw*"
DOC "FFTW include directory")
find_library(FFTW_LIB fftw3
PATHS /usr/local/ /opt/fftw* $ENV{HOME}/* $ENV{HOME}/*/*
PATH_SUFFIXES "lib" "build" "cbuild" "cmbuild"
DOC "FFTW library path")
endif()
if(FFTW_INC AND FFTW_LIB)
option(USE_FFTW "Required for FFTW functions" ON)
mark_as_advanced(FFTW_INC FFTW_LIB)
else()
option(USE_FFTW "Required for FFTW functions" OFF)
mark_as_advanced(CLEAR FFTW_INC FFTW_LIB)
endif()
# HYPRE
if(WIN32)
find_path(HYPRE_INC HYPRE_IJ_mv.h
PATHS C::/Program\ Files/* $ENV{HOMEPATH}/* $ENV{HOMEPATH}/*/*
PATH_SUFFIXES "include" "include/hypre" "src" "src/include" "src/hypre/include"
DOC "HYPRE include directory")
find_library(HYPRE_LIB HYPRE
PATHS C::/Program\ Files/* $ENV{HOMEPATH}/* $ENV{HOMEPATH}/*/*
PATH_SUFFIXES "src" "src/build" "src/mbuild" "/src/vs2017/Release"
DOC "HYPRE library path")
else()
find_path(HYPRE_INC HYPRE_IJ_mv.h
PATHS /opt/hypre* $ENV{HOME}/* $ENV{HOME}/*/*
PATH_SUFFIXES "include" "include/hypre" "src" "src/include" "src/hypre/include"
DOC "HYPRE include directory")
find_library(HYPRE_LIB HYPRE
PATHS /opt/hypre* $ENV{HOME}/* $ENV{HOME}/*/*
PATH_SUFFIXES "lib" "src" "src/build" "src/cbuild"
DOC "HYPRE library path")
endif()
if(HYPRE_INC AND HYPRE_LIB)
option(USE_HYPRE "Required for HYPRE solver" ON)
mark_as_advanced(HYPRE_INC HYPRE_LIB)
else()
option(USE_HYPRE "Required for HYPRE solver" OFF)
mark_as_advanced(CLEAR HYPRE_INC HYPRE_LIB)
endif()
# MMG
if(WIN32)
find_path(MMG_INC mmg/mmg3d/libmmg3d.h
PATHS C::/Program\ Files/* $ENV{HOMEPATH}/* $ENV{HOMEPATH}/*/* $ENV{HOMEPATH}/source/repos/*
PATH_SUFFIXES "include" "include/mmg*" "src" "build" "build/include" "cmbuild/include"
DOC "MMG include directory")
find_library(MMG_LIB mmg3d
PATHS C::/Program\ Files/* $ENV{HOMEPATH}/* $ENV{HOMEPATH}/*/* $ENV{HOMEPATH}/source/repos/*
PATH_SUFFIXES "build/lib" "cmbuild/lib" "src/build/lib" "src/cmbuild/lib" "cmbuild/lib/Release"
DOC "MMG library path")
find_library(MMGS_LIB mmgs
PATHS C::/Program\ Files/* $ENV{HOMEPATH}/* $ENV{HOMEPATH}/*/* $ENV{HOMEPATH}/source/repos/*
PATH_SUFFIXES "build/lib" "cmbuild/lib" "src/build/lib" "src/cmbuild/lib" "cmbuild/lib/Release"
DOC "MMGS library path")
else()
find_path(MMG_INC mmg/mmg3d/libmmg3d.h
PATHS /opt/hypre* $ENV{HOME}/* $ENV{HOME}/*/*
PATH_SUFFIXES "include" "include/mmg" "build" "build/include" "cbuild" "cbuild/include" "src"
DOC "MMG include directory")
find_library(MMG_LIB mmg3d
PATHS /opt/mmg* $ENV{HOME}/* $ENV{HOME}/*/* $ENV{HOME}/local/x86_64/lib
PATH_SUFFIXES "lib" "build/lib" "cbuild/lib" "src/build/lib" "src/cbuild/lib"
DOC "MMG library path")
find_library(MMGS_LIB mmgs
PATHS /opt/mmg* $ENV{HOME}/* $ENV{HOME}/*/* $ENV{HOME}/local/x86_64/lib
PATH_SUFFIXES "lib" "build/lib" "cbuild/lib" "src/build/lib" "src/cbuild/lib"
DOC "MMGS library path")
endif()
if(MMG_INC AND MMG_LIB AND MMGS_LIB)
option(USE_MMG "Required for MMG use" ON)
mark_as_advanced(MMG_INC MMG_LIB MMGS_LIB)
else()
option(USE_MMG "Required for MMG use" OFF)
mark_as_advanced(CLEAR MMG_INC MMG_LIB MMGS_LIB)
endif()
# LEVMAR
if(WIN32)
find_path(LEVMAR_INC levmar.h PATHS C::/Program\ Files/* $ENV{HOMEPATH}/* $ENV{HOMEPATH}/*/*
PATH_SUFFIXES "levmar"
DOC "Levmar include directory")
find_library(LEVMAR_LIB levmar PATHS C::/Program\ Files/* $ENV{HOMEPATH}/* $ENV{HOMEPATH}/*/*
PATH_SUFFIXES "vs2017/Release"
DOC "Levmar library path")
else()
find_path(LEVMAR_INC levmar.h PATHS /usr/local/ /opt/levmar* $ENV{HOME}/* $ENV{HOME}/*/*
PATH_SUFFIXES "include" "levmar" "include/levmar"
DOC "Levmar include directory")
find_library(LEVMAR_LIB levmar PATHS /usr/local/ /opt/levmar* $ENV{HOME}/* $ENV{HOME}/*/*
PATH_SUFFIXES "lib" "build" "cbuild" "cmbuild"
DOC "Levmar library path")
endif()
if(LEVMAR_INC AND LEVMAR_LIB)
option(USE_LEVMAR "Required for optimization in FEBio" ON)
mark_as_advanced(LEVMAR_INC LEVMAR_LIB)
else()
option(USE_LEVMAR "Required for optimization in FEBio" OFF)
mark_as_advanced(CLEAR LEVMAR_INC LEVMAR_LIB)
endif()
# NLOPT
if(WIN32)
find_path(NLOPT_INC nlopt.h PATHS C::/Program\ Files/* $ENV{HOMEPATH}/* $ENV{HOMEPATH}/*/*
PATH_SUFFIXES "nlopt"
DOC "NLOPT include directory")
find_library(NLOPT_LIB nlopt PATHS C::/Program\ Files/* $ENV{HOMEPATH}/* $ENV{HOMEPATH}/*/*
PATH_SUFFIXES "vs2017/Release"
DOC "NLOPT library path")
else()
find_path(NLOPT_INC nlopt.h PATHS /usr/local/ /opt/nlopt* $ENV{HOME}/* $ENV{HOME}/*/*
PATH_SUFFIXES "include" "nlopt" "include/nlopt"
DOC "NLOPT include directory")
find_library(NLOPT_LIB nlopt PATHS /usr/local/ /opt/nlopt* $ENV{HOME}/* $ENV{HOME}/*/*
PATH_SUFFIXES "lib" "build" "cbuild" "cmbuild"
DOC "NLOPT library path")
endif()
if(NLOPT_INC AND NLOPT_LIB)
option(USE_NLOPT "Required for optimization in FEBio" ON)
mark_as_advanced(NLOPT_INC NLOPT_LIB)
else()
option(USE_NLOPT "Required for optimization in FEBio" OFF)
mark_as_advanced(CLEAR NLOPT_INC NLOPT_LIB)
endif()
# SuperLU_MT
if (WIN32)
find_path(SUPERLU_MT_INC slu_mt_ddefs.h PATHS C::/Program\ Files/* $ENV{HOMEPATH}/* $ENV{HOMEPATH}/*/*
DOC "SuperLU_MT include directory")
find_library(SUPERLU_MT_LIB superlu PATHS C::/Program\ Files/* $ENV{HOMEPATH}/* $ENV{HOMEPATH}/*/*
DOC "SuperLU_MT library path")
else()
find_path(SUPERLU_MT_INC slu_mt_ddefs.h PATHS /usr/local/include/* $ENV{HOMEPATH}/* $ENV{HOMEPATH}/*/*
DOC "SuperLU_MT include directory")
find_library(SUPERLU_MT_LIB superlu PATHS /usr/local/lib/* $ENV{HOMEPATH}/* $ENV{HOMEPATH}/*/*
DOC "SuperLU_MT library path")
endif()
if(SUPERLU_MT_INC AND SUPERLU_MT_LIB)
option(USE_SUPERLU_MT "Option for using SuperLU_MT" ON)
mark_as_advanced(SUPERLU_MT_INC SUPERLU_MT_LIB)
else()
option(USE_SUPERLU_MT "Option for using SuperLU_MT" OFF)
mark_as_advanced(CLEAR SUPERLU_MT_INC SUPERLU_MT_LIB)
endif()
# PDL
if(WIN32)
find_library(PDL_LIB libpardiso600-WIN-X86-64*
PATHS C::/Program\ Files/* $ENV{HOME}/* $ENV{HOME}/*/*
DOC "PDL library path")
elseif(APPLE)
find_library(PDL_LIB pardiso600-MACOS-X86-64
PATHS /usr/local* $ENV{HOME}/* $ENV{HOME}/*/*
PATH_SUFFIXES "lib" "pardiso/lib" "pardiso-project/lib"
DOC "PDL library path")
else()
find_library(PDL_LIB pardiso600-GNU*-X86-64
PATHS /usr/local* $ENV{HOME}/* $ENV{HOME}/*/*
PATH_SUFFIXES "lib" "pardiso/lib" "pardiso-project/lib"
DOC "PDL library path")
endif()
if(PDL_LIB)
option(USE_PDL "Required for pardiso-project use" ON)
mark_as_advanced(PDL_LIB)
else()
option(USE_PDL "Required for pardiso-project use" OFF)
mark_as_advanced(CLEAR PDL_LIB)
endif()
# ZLIB
include(FindZLIB)
if(ZLIB_INCLUDE_DIR AND ZLIB_LIBRARY_RELEASE)
option(USE_ZLIB "Required for compressing xplt files" ON)
mark_as_advanced(ZLIB_INCLUDE_DIR ZLIB_LIBRARY_RELEASE)
else()
option(USE_ZLIB "Required for compressing xplt files" OFF)
mark_as_advanced(CLEAR ZLIB_INCLUDE_DIR ZLIB_LIBRARY_RELEASE)
endif()