aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authornyorain <nyorain@gmail.com>2017-07-24 18:30:23 +0200
committernyorain <nyorain@gmail.com>2017-07-24 18:30:23 +0200
commit29e2aac69088e3592b1f6c8f3dd14cf1a838bd7a (patch)
tree181e5c87bf68955497477b64f70f1f3fb98e51c5 /mesonbuild
parent3ddf9bf6dd45c2accb526dbd97919c19ade43c25 (diff)
downloadmeson-29e2aac69088e3592b1f6c8f3dd14cf1a838bd7a.zip
meson-29e2aac69088e3592b1f6c8f3dd14cf1a838bd7a.tar.gz
meson-29e2aac69088e3592b1f6c8f3dd14cf1a838bd7a.tar.bz2
Add first vulkan dependency module
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/dependencies/__init__.py3
-rw-r--r--mesonbuild/dependencies/ui.py55
2 files changed, 56 insertions, 2 deletions
diff --git a/mesonbuild/dependencies/__init__.py b/mesonbuild/dependencies/__init__.py
index 3d41a2b..f153b97 100644
--- a/mesonbuild/dependencies/__init__.py
+++ b/mesonbuild/dependencies/__init__.py
@@ -19,7 +19,7 @@ from .base import ( # noqa: F401
from .dev import GMockDependency, GTestDependency, LLVMDependency, ValgrindDependency
from .misc import BoostDependency, Python3Dependency, ThreadDependency
from .platform import AppleFrameworks
-from .ui import GLDependency, GnuStepDependency, Qt4Dependency, Qt5Dependency, SDL2Dependency, WxDependency
+from .ui import GLDependency, GnuStepDependency, Qt4Dependency, Qt5Dependency, SDL2Dependency, WxDependency, VulkanDependency
packages.update({
@@ -44,4 +44,5 @@ packages.update({
'qt5': Qt5Dependency,
'sdl2': SDL2Dependency,
'wxwidgets': WxDependency,
+ 'vulkan': VulkanDependency,
})
diff --git a/mesonbuild/dependencies/ui.py b/mesonbuild/dependencies/ui.py
index 1c59a41..18a7996 100644
--- a/mesonbuild/dependencies/ui.py
+++ b/mesonbuild/dependencies/ui.py
@@ -24,7 +24,7 @@ from collections import OrderedDict
from .. import mlog
from .. import mesonlib
from ..mesonlib import MesonException, Popen_safe, version_compare
-from ..environment import for_windows
+from ..environment import for_windows, detect_cpu
from .base import DependencyException, DependencyMethods
from .base import ExternalDependency, ExternalProgram
@@ -493,3 +493,56 @@ class WxDependency(ExternalDependency):
pass
WxDependency.wxconfig_found = False
mlog.log('Found wx-config:', mlog.red('NO'))
+
+class VulkanDependency(ExternalDependency):
+ def __init__(self, environment, kwargs):
+ super().__init__('vulkan', environment, None, kwargs)
+
+ if DependencyMethods.SYSTEM in self.methods:
+ try:
+ self.vulkan_sdk = os.environ['VULKAN_SDK']
+ if not os.path.isabs(self.vulkan_sdk):
+ raise DependencyException('VULKAN_SDK must be an absolute path.')
+
+ # TODO: this config might not work on some platforms, fix bugs as reported
+ # we at least have to detect other 64-bit platforms (e.g. armv8)
+ lib_name = 'vulkan'
+ if mesonlib.is_windows():
+ lib_name = 'vulkan-1'
+
+ lib_dir = 'Lib32'
+ if detect_cpu({}) == 'x86_64':
+ lib_dir = 'Lib'
+
+ self.type_name = 'vulkan_sdk'
+ self.is_found = True
+ self.compile_args.append('-I' + os.path.join(self.vulkan_sdk, 'Include'))
+ self.link_args.append('-L' + os.path.join(self.vulkan_sdk, lib_dir))
+ self.link_args.append('-l' + lib_name)
+
+ # TODO: find a way to retrieve this from the sdk
+ # we could try go guess it depending on the vulkan_sdk path
+ # usually the paths last component is the vulkan version
+ # but this might be modified at installation
+ self.version = '1'
+ return
+ except KeyError:
+ self.vulkan_sdk = None
+
+ if DependencyMethods.PKGCONFIG in self.methods:
+ try:
+ pcdep = PkgConfigDependency('vulkan', environment, kwargs)
+ if pcdep.found():
+ self.type_name = 'pkgconfig'
+ self.is_found = True
+ self.compile_args = pcdep.get_compile_args()
+ self.link_args = pcdep.get_link_args()
+ self.version = pcdep.get_version()
+ return
+ except Exception:
+ pass
+
+ def get_methods(self):
+ return [DependencyMethods.PKGCONFIG, DependencyMethods.SYSTEM]
+
+