summaryrefslogtreecommitdiff
path: root/sys/meson.build
diff options
context:
space:
mode:
authorSeungha Yang <seungha.yang@navercorp.com>2018-11-19 22:40:50 +0900
committerTim-Philipp Müller <tim@centricular.com>2018-11-25 23:31:37 +0000
commit6051c47bfe3d98f96012f79e63f2b7fae618379e (patch)
tree66f62c8fac7871e241fd74c59868c4d7ac7c8f42 /sys/meson.build
parent4e314d6f80515501906599f548e88e2e4f2d9452 (diff)
downloadgstreamer-plugins-bad-6051c47bfe3d98f96012f79e63f2b7fae618379e.tar.gz
nvdec: Add meson build with Windows support
Diffstat (limited to 'sys/meson.build')
-rw-r--r--sys/meson.build88
1 files changed, 87 insertions, 1 deletions
diff --git a/sys/meson.build b/sys/meson.build
index c21494df8..8a1363fab 100644
--- a/sys/meson.build
+++ b/sys/meson.build
@@ -15,7 +15,6 @@ subdir('fbdev')
subdir('ipcpipeline')
subdir('kms')
subdir('msdk')
-#subdir('nvenc')
subdir('opensles')
subdir('shm')
subdir('uvch264')
@@ -24,3 +23,90 @@ subdir('uvch264')
subdir('wasapi')
subdir('winks')
subdir('winscreencap')
+
+# CUDA dependency
+cuda_dep = dependency('', required : false)
+cudart_dep = dependency('', required : false)
+cuda_libdir = ''
+cuda_incdir = ''
+
+if host_machine.system() == 'windows'
+ # On windows, CUDA_PATH env will be set by installer
+ cuda_root = run_command(python3, '-c', 'import os; print(os.environ.get("CUDA_PATH"))').stdout().strip()
+ if cuda_root != ''
+ arc = ''
+ if build_machine.cpu_family() == 'x86_64'
+ arc = 'x64'
+ else
+ arc = 'Win32'
+ endif
+ cuda_libdir = join_paths (cuda_root, 'lib', arc)
+ cuda_incdir = join_paths (cuda_root, 'include')
+ cuda_lib = cc.find_library('cuda', dirs: cuda_libdir, required: false)
+ cudart_lib = cc.find_library('cudart', dirs: cuda_libdir, required: false)
+ if cuda_lib.found()
+ cuda_header_found = cc.has_header('cuda.h', args: '-I' + cuda_incdir)
+ cuda_lib_found = cc.has_function('cuInit', dependencies: cuda_lib)
+ if cuda_header_found and cuda_lib_found
+ cuda_dep = declare_dependency(include_directories: include_directories(cuda_incdir),
+ dependencies: cuda_lib)
+ endif
+ endif
+
+ if cudart_lib.found()
+ cudart_header_found = cc.has_header('cuda_runtime_api.h', args: '-I' + cuda_incdir)
+ cudart_lib_found = cc.has_function('cudaGetErrorString', dependencies: cudart_lib)
+ if cudart_header_found and cudart_lib_found
+ cudart_dep = declare_dependency(dependencies: cudart_lib)
+ endif
+ endif
+ endif
+else
+ cuda_versions = [
+ '10.0',
+ '9.2',
+ '9.1',
+ '9.0',
+ '8.0',
+ '7.5',
+ '7.0',
+ '6.5',
+ ]
+ cuda_ver = ''
+
+ # FIXME: use break syntax when we use meson >= '0.49'
+ foreach v : cuda_versions
+ if cuda_ver == ''
+ cuda_dep = dependency('cuda-' + v, required: false)
+ cudart_dep = dependency('cudart-' + v, required: false)
+ if cuda_dep.found() and cudart_dep.found()
+ cuda_ver = v
+ endif
+ endif
+ endforeach
+
+ if cuda_dep.found()
+ cuda_header_found = cc.has_header('cuda.h', dependencies: cuda_dep)
+ cuda_lib_found = cc.has_function('cuInit', dependencies: cuda_dep)
+ if not cuda_header_found or not cuda_lib_found
+ message ('Missing required header and/or function in cuda dependency')
+ cuda_dep = dependency('', required : false)
+ endif
+ endif
+
+ if cudart_dep.found()
+ cudart_header_found = cc.has_header('cuda_runtime_api.h', dependencies: cudart_dep)
+ cudart_lib_found = cc.has_function('cudaGetErrorString', dependencies: cudart_dep)
+ if not cudart_header_found or not cudart_lib_found
+ message ('Missing required header and/or function in cudart dependency')
+ cudart_dep = dependency('', required : false)
+ endif
+ endif
+endif
+
+if cuda_dep.found() and cudart_dep.found()
+ subdir('nvdec')
+ #subdir('nvenc')
+elif get_option('nvdec').enabled()
+ error('The nvdec plugin was enabled explicitly, but required CUDA dependencies were not found.')
+endif \ No newline at end of file