diff options
author | Seungha Yang <seungha.yang@navercorp.com> | 2018-11-19 22:40:50 +0900 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2018-11-25 23:31:37 +0000 |
commit | 6051c47bfe3d98f96012f79e63f2b7fae618379e (patch) | |
tree | 66f62c8fac7871e241fd74c59868c4d7ac7c8f42 /sys/meson.build | |
parent | 4e314d6f80515501906599f548e88e2e4f2d9452 (diff) | |
download | gstreamer-plugins-bad-6051c47bfe3d98f96012f79e63f2b7fae618379e.tar.gz |
nvdec: Add meson build with Windows support
Diffstat (limited to 'sys/meson.build')
-rw-r--r-- | sys/meson.build | 88 |
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 |