intel-oneapi-mkl: add cluster libs and option for static linking (#26256)
This commit is contained in:
@@ -99,7 +99,13 @@ def setup_run_environment(self, env):
|
||||
|
||||
|
||||
class IntelOneApiLibraryPackage(IntelOneApiPackage):
|
||||
"""Base class for Intel oneAPI library packages."""
|
||||
"""Base class for Intel oneAPI library packages.
|
||||
|
||||
Contains some convenient default implementations for libraries.
|
||||
Implement the method directly in the package if something
|
||||
different is needed.
|
||||
|
||||
"""
|
||||
|
||||
@property
|
||||
def headers(self):
|
||||
@@ -111,3 +117,36 @@ def libs(self):
|
||||
lib_path = join_path(self.component_path, 'lib', 'intel64')
|
||||
lib_path = lib_path if isdir(lib_path) else dirname(lib_path)
|
||||
return find_libraries('*', root=lib_path, shared=True, recursive=True)
|
||||
|
||||
|
||||
class IntelOneApiStaticLibraryList(object):
|
||||
"""Provides ld_flags when static linking is needed
|
||||
|
||||
Oneapi puts static and dynamic libraries in the same directory, so
|
||||
-l will default to finding the dynamic library. Use absolute
|
||||
paths, as recommended by oneapi documentation.
|
||||
|
||||
Allow both static and dynamic libraries to be supplied by the
|
||||
package.
|
||||
"""
|
||||
|
||||
def __init__(self, static_libs, dynamic_libs):
|
||||
self.static_libs = static_libs
|
||||
self.dynamic_libs = dynamic_libs
|
||||
|
||||
@property
|
||||
def directories(self):
|
||||
return self.dynamic_libs.directories
|
||||
|
||||
@property
|
||||
def search_flags(self):
|
||||
return self.dynamic_libs.search_flags
|
||||
|
||||
@property
|
||||
def link_flags(self):
|
||||
return '-Wl,--start-group {0} -Wl,--end-group {1}'.format(
|
||||
' '.join(self.static_libs.libraries), self.dynamic_libs.link_flags)
|
||||
|
||||
@property
|
||||
def ld_flags(self):
|
||||
return '{0} {1}'.format(self.search_flags, self.link_flags)
|
||||
|
@@ -29,7 +29,11 @@
|
||||
from spack.build_systems.maven import MavenPackage
|
||||
from spack.build_systems.meson import MesonPackage
|
||||
from spack.build_systems.octave import OctavePackage
|
||||
from spack.build_systems.oneapi import IntelOneApiLibraryPackage, IntelOneApiPackage
|
||||
from spack.build_systems.oneapi import (
|
||||
IntelOneApiLibraryPackage,
|
||||
IntelOneApiPackage,
|
||||
IntelOneApiStaticLibraryList,
|
||||
)
|
||||
from spack.build_systems.perl import PerlPackage
|
||||
from spack.build_systems.python import PythonPackage
|
||||
from spack.build_systems.qmake import QMakePackage
|
||||
|
Reference in New Issue
Block a user