Permit packages that depend on Intel oneAPI packages to access sdk (#41117)
* Permit packages that depend on Intel oneAPI packages to access sdk * Implement and use IntelOneapiLibraryPackageWithSdk * Restore libs property to IntelOneapiLibraryPackage * Conform to style * Provide new class to infrastructure * Treat sdk/include as the main include
This commit is contained in:
		@@ -179,6 +179,35 @@ def libs(self):
 | 
			
		||||
        return find_libraries("*", root=lib_path, shared=True, recursive=True)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class IntelOneApiLibraryPackageWithSdk(IntelOneApiPackage):
 | 
			
		||||
    """Base class for Intel oneAPI library packages with SDK components.
 | 
			
		||||
 | 
			
		||||
    Contains some convenient default implementations for libraries
 | 
			
		||||
    that expose functionality in sdk subdirectories.
 | 
			
		||||
    Implement the method directly in the package if something
 | 
			
		||||
    different is needed.
 | 
			
		||||
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def include(self):
 | 
			
		||||
        return join_path(self.component_prefix, "sdk", "include")
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def headers(self):
 | 
			
		||||
        return find_headers("*", self.include, recursive=True)
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def lib(self):
 | 
			
		||||
        lib_path = join_path(self.component_prefix, "sdk", "lib64")
 | 
			
		||||
        lib_path = lib_path if isdir(lib_path) else dirname(lib_path)
 | 
			
		||||
        return lib_path
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def libs(self):
 | 
			
		||||
        return find_libraries("*", root=self.lib, shared=True, recursive=True)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class IntelOneApiStaticLibraryList:
 | 
			
		||||
    """Provides ld_flags when static linking is needed
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -52,6 +52,7 @@
 | 
			
		||||
from spack.build_systems.oneapi import (
 | 
			
		||||
    INTEL_MATH_LIBRARIES,
 | 
			
		||||
    IntelOneApiLibraryPackage,
 | 
			
		||||
    IntelOneApiLibraryPackageWithSdk,
 | 
			
		||||
    IntelOneApiPackage,
 | 
			
		||||
    IntelOneApiStaticLibraryList,
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@IntelOneApiPackage.update_description
 | 
			
		||||
class IntelOneapiAdvisor(IntelOneApiPackage):
 | 
			
		||||
class IntelOneapiAdvisor(IntelOneApiLibraryPackageWithSdk):
 | 
			
		||||
    """Intel Advisor is a design and analysis tool for developing
 | 
			
		||||
    performant code. The tool supports C, C++, Fortran, SYCL, OpenMP,
 | 
			
		||||
    OpenCL code, and Python. It helps with the following: Performant
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@IntelOneApiPackage.update_description
 | 
			
		||||
class IntelOneapiInspector(IntelOneApiPackage):
 | 
			
		||||
class IntelOneapiInspector(IntelOneApiLibraryPackageWithSdk):
 | 
			
		||||
    """Intel Inspector is a dynamic memory and threading error debugger
 | 
			
		||||
    for C, C++, and Fortran applications that run on Windows and Linux
 | 
			
		||||
    operating systems.  Save money: locate the root cause of memory,
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@IntelOneApiPackage.update_description
 | 
			
		||||
class IntelOneapiVtune(IntelOneApiPackage):
 | 
			
		||||
class IntelOneapiVtune(IntelOneApiLibraryPackageWithSdk):
 | 
			
		||||
    """Intel VTune Profiler is a profiler to optimize application
 | 
			
		||||
    performance, system performance, and system configuration for HPC,
 | 
			
		||||
    cloud, IoT, media, storage, and more.  CPU, GPU, and FPGA: Tune
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user