@@ -96,28 +96,34 @@ if(ENABLE_MPI)
9696 message (STATUS "oneMKL BLACS interface: ${_mkl_blacs_name} " )
9797endif ()
9898
99- # Re-run searches when a configuration axis or the selected MKL root changes.
100- # This avoids reusing a library cached for another link mode, threading layer,
101- # MPI ABI, or oneMKL installation.
102- set (_mkl_search_signature
103- "${_mkl_root_hints} ;${_mkl_link} ;${_mkl_interface_name} ;${_mkl_threading} ;${_mkl_blacs_name} "
104- )
105- if (DEFINED _MKL_SEARCH_SIGNATURE
106- AND NOT "${_MKL_SEARCH_SIGNATURE} " STREQUAL "${_mkl_search_signature} " )
107- foreach (
108- _mkl_cache_var IN
109- ITEMS MKL_INCLUDE
110- MKL_FFTW_INCLUDE
111- MKL_INTERFACE_LIB
112- MKL_THREAD
113- MKL_CORE
114- MKL_SCALAPACK
115- MKL_BLACS)
116- unset (${_mkl_cache_var} CACHE )
117- endforeach ()
118- endif ()
119- set (_MKL_SEARCH_SIGNATURE "${_mkl_search_signature} "
120- CACHE INTERNAL "Configuration used for the current oneMKL search" )
99+ # These are result variables of this finder, not user configuration inputs.
100+ foreach (_mkl_result_var IN ITEMS
101+ MKL_INCLUDE
102+ MKL_FFTW_INCLUDE
103+ MKL_INTERFACE_LIB
104+ MKL_THREAD
105+ MKL_CORE
106+ MKL_SCALAPACK
107+ MKL_BLACS)
108+ if (DEFINED CACHE{${_mkl_result_var} })
109+ message (WARNING
110+ "${_mkl_result_var} is an internal result of FindMKL.cmake and will be ignored." )
111+ unset (${_mkl_result_var} CACHE )
112+ endif ()
113+ unset (${_mkl_result_var} )
114+ endforeach ()
115+
116+ foreach (_mkl_internal_var IN ITEMS
117+ _abacus_mkl_include
118+ _abacus_mkl_fftw_include
119+ _abacus_mkl_interface_lib
120+ _abacus_mkl_thread
121+ _abacus_mkl_core
122+ _abacus_mkl_scalapack
123+ _abacus_mkl_blacs)
124+ unset (${_mkl_internal_var} )
125+ unset (${_mkl_internal_var} CACHE )
126+ endforeach ()
121127
122128set (_mkl_saved_suffixes "${CMAKE_FIND_LIBRARY_SUFFIXES } " )
123129if (_mkl_link STREQUAL "static" )
@@ -126,38 +132,63 @@ elseif(_mkl_link STREQUAL "dynamic")
126132 set (CMAKE_FIND_LIBRARY_SUFFIXES ".so" )
127133endif ()
128134
129- find_path (MKL_INCLUDE
130- NAMES mkl.h
131- HINTS ${_mkl_root_hints}
132- PATH_SUFFIXES include )
133- find_path (MKL_FFTW_INCLUDE
134- NAMES fftw3.h
135- HINTS ${_mkl_root_hints}
136- PATH_SUFFIXES include /fftw )
137- find_library (MKL_INTERFACE_LIB
138- NAMES ${_mkl_interface_name}
139- HINTS ${_mkl_root_hints}
140- PATH_SUFFIXES lib/intel64 lib )
141- find_library (MKL_THREAD
142- NAMES mkl_${_mkl_threading}
143- HINTS ${_mkl_root_hints}
144- PATH_SUFFIXES lib/intel64 lib )
145- find_library (MKL_CORE
146- NAMES mkl_core
147- HINTS ${_mkl_root_hints}
148- PATH_SUFFIXES lib/intel64 lib )
135+ find_path (_abacus_mkl_include
136+ NAMES mkl.h
137+ PATHS ${_mkl_root_hints}
138+ PATH_SUFFIXES include
139+ NO_DEFAULT_PATH )
140+
141+ find_path (_abacus_mkl_fftw_include
142+ NAMES fftw3.h
143+ PATHS ${_mkl_root_hints}
144+ PATH_SUFFIXES include /fftw
145+ NO_DEFAULT_PATH )
146+
147+ find_library (_abacus_mkl_interface_lib
148+ NAMES ${_mkl_interface_name}
149+ PATHS ${_mkl_root_hints}
150+ PATH_SUFFIXES lib/intel64 lib
151+ NO_DEFAULT_PATH )
152+
153+ find_library (_abacus_mkl_thread
154+ NAMES mkl_${_mkl_threading}
155+ PATHS ${_mkl_root_hints}
156+ PATH_SUFFIXES lib/intel64 lib
157+ NO_DEFAULT_PATH )
158+
159+ find_library (_abacus_mkl_core
160+ NAMES mkl_core
161+ PATHS ${_mkl_root_hints}
162+ PATH_SUFFIXES lib/intel64 lib
163+ NO_DEFAULT_PATH )
164+
149165if (ENABLE_MPI)
150- find_library (MKL_SCALAPACK
151- NAMES mkl_scalapack_lp64
152- HINTS ${_mkl_root_hints}
153- PATH_SUFFIXES lib/intel64 lib )
154- find_library (MKL_BLACS
155- NAMES ${_mkl_blacs_name}
156- HINTS ${_mkl_root_hints}
157- PATH_SUFFIXES lib/intel64 lib )
166+ find_library (_abacus_mkl_scalapack
167+ NAMES mkl_scalapack_lp64
168+ PATHS ${_mkl_root_hints}
169+ PATH_SUFFIXES lib/intel64 lib
170+ NO_DEFAULT_PATH )
171+
172+ find_library (_abacus_mkl_blacs
173+ NAMES ${_mkl_blacs_name}
174+ PATHS ${_mkl_root_hints}
175+ PATH_SUFFIXES lib/intel64 lib
176+ NO_DEFAULT_PATH )
158177endif ()
178+
159179set (CMAKE_FIND_LIBRARY_SUFFIXES "${_mkl_saved_suffixes} " )
160180
181+ set (MKL_INCLUDE "${_abacus_mkl_include} " )
182+ set (MKL_FFTW_INCLUDE "${_abacus_mkl_fftw_include} " )
183+ set (MKL_INTERFACE_LIB "${_abacus_mkl_interface_lib} " )
184+ set (MKL_THREAD "${_abacus_mkl_thread} " )
185+ set (MKL_CORE "${_abacus_mkl_core} " )
186+
187+ if (ENABLE_MPI)
188+ set (MKL_SCALAPACK "${_abacus_mkl_scalapack} " )
189+ set (MKL_BLACS "${_abacus_mkl_blacs} " )
190+ endif ()
191+
161192set (_mkl_required_vars MKL_INCLUDE MKL_FFTW_INCLUDE MKL_INTERFACE_LIB MKL_THREAD MKL_CORE)
162193if (ENABLE_MPI)
163194 list (APPEND _mkl_required_vars MKL_SCALAPACK MKL_BLACS)
@@ -243,10 +274,10 @@ if(MKL_FOUND)
243274endif ()
244275
245276mark_as_advanced (
246- MKL_INCLUDE
247- MKL_FFTW_INCLUDE
248- MKL_INTERFACE_LIB
249- MKL_THREAD
250- MKL_CORE
251- MKL_SCALAPACK
252- MKL_BLACS )
277+ _abacus_mkl_include
278+ _abacus_mkl_fftw_include
279+ _abacus_mkl_interface_lib
280+ _abacus_mkl_thread
281+ _abacus_mkl_core
282+ _abacus_mkl_scalapack
283+ _abacus_mkl_blacs )
0 commit comments