dependencies: Use DependencyFactory for Vulkan
This commit is contained in:
parent
29b6d3e63c
commit
c17fa3223f
|
@ -27,7 +27,7 @@ from .scalapack import ScalapackDependency
|
||||||
from .misc import (BlocksDependency, CursesDependency, NetCDFDependency, OpenMPDependency, Python3Dependency, ThreadDependency,
|
from .misc import (BlocksDependency, CursesDependency, NetCDFDependency, OpenMPDependency, Python3Dependency, ThreadDependency,
|
||||||
PcapDependency, CupsDependency, LibWmfDependency, LibGCryptDependency, GpgmeDependency, ShadercDependency)
|
PcapDependency, CupsDependency, LibWmfDependency, LibGCryptDependency, GpgmeDependency, ShadercDependency)
|
||||||
from .platform import AppleFrameworks
|
from .platform import AppleFrameworks
|
||||||
from .ui import GLDependency, GnuStepDependency, Qt4Dependency, Qt5Dependency, SDL2Dependency, WxDependency, VulkanDependency
|
from .ui import GLDependency, GnuStepDependency, Qt4Dependency, Qt5Dependency, SDL2Dependency, WxDependency, vulkan_factory
|
||||||
|
|
||||||
|
|
||||||
packages.update({
|
packages.update({
|
||||||
|
@ -70,7 +70,7 @@ packages.update({
|
||||||
'qt5': Qt5Dependency,
|
'qt5': Qt5Dependency,
|
||||||
'sdl2': SDL2Dependency,
|
'sdl2': SDL2Dependency,
|
||||||
'wxwidgets': WxDependency,
|
'wxwidgets': WxDependency,
|
||||||
'vulkan': VulkanDependency,
|
'vulkan': vulkan_factory,
|
||||||
})
|
})
|
||||||
_packages_accept_language.update({
|
_packages_accept_language.update({
|
||||||
'hdf5',
|
'hdf5',
|
||||||
|
|
|
@ -31,7 +31,7 @@ from ..environment import detect_cpu_family
|
||||||
from .base import DependencyException, DependencyMethods
|
from .base import DependencyException, DependencyMethods
|
||||||
from .base import ExternalDependency, ExternalProgram, NonExistingExternalProgram
|
from .base import ExternalDependency, ExternalProgram, NonExistingExternalProgram
|
||||||
from .base import ExtraFrameworkDependency, PkgConfigDependency
|
from .base import ExtraFrameworkDependency, PkgConfigDependency
|
||||||
from .base import ConfigToolDependency, process_method_kw
|
from .base import ConfigToolDependency, process_method_kw, DependencyFactory
|
||||||
|
|
||||||
|
|
||||||
class GLDependency(ExternalDependency):
|
class GLDependency(ExternalDependency):
|
||||||
|
@ -589,10 +589,10 @@ class WxDependency(ConfigToolDependency):
|
||||||
return candidates
|
return candidates
|
||||||
|
|
||||||
|
|
||||||
class VulkanDependency(ExternalDependency):
|
class VulkanDependencySystem(ExternalDependency):
|
||||||
|
|
||||||
def __init__(self, environment, kwargs):
|
def __init__(self, name: str, environment, kwargs, language: T.Optional[str] = None):
|
||||||
super().__init__('vulkan', environment, kwargs)
|
super().__init__(name, environment, kwargs, language=language)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.vulkan_sdk = os.environ['VULKAN_SDK']
|
self.vulkan_sdk = os.environ['VULKAN_SDK']
|
||||||
|
@ -645,22 +645,16 @@ class VulkanDependency(ExternalDependency):
|
||||||
self.link_args.append(lib)
|
self.link_args.append(lib)
|
||||||
return
|
return
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def _factory(cls, environment, kwargs):
|
|
||||||
methods = process_method_kw(cls.get_methods(), kwargs)
|
|
||||||
candidates = []
|
|
||||||
|
|
||||||
if DependencyMethods.PKGCONFIG in methods:
|
|
||||||
candidates.append(functools.partial(PkgConfigDependency, 'vulkan', environment, kwargs))
|
|
||||||
|
|
||||||
if DependencyMethods.SYSTEM in methods:
|
|
||||||
candidates.append(functools.partial(VulkanDependency, environment, kwargs))
|
|
||||||
|
|
||||||
return candidates
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_methods():
|
def get_methods():
|
||||||
return [DependencyMethods.PKGCONFIG, DependencyMethods.SYSTEM]
|
return [DependencyMethods.SYSTEM]
|
||||||
|
|
||||||
def log_tried(self):
|
def log_tried(self):
|
||||||
return 'system'
|
return 'system'
|
||||||
|
|
||||||
|
|
||||||
|
vulkan_factory = DependencyFactory(
|
||||||
|
'vulkan',
|
||||||
|
[DependencyMethods.PKGCONFIG, DependencyMethods.SYSTEM],
|
||||||
|
system_class=VulkanDependencySystem,
|
||||||
|
)
|
||||||
|
|
Loading…
Reference in New Issue