cuda_libdir = ''
cuda_incdir = ''
-if host_machine.system() == 'windows'
- # On windows, CUDA_PATH env will be set by installer
+cuda_versions = [
+ '10.1',
+ '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
+
+if not cuda_dep.found() or not cudart_dep.found()
cuda_root = run_command(python3, '-c', 'import os; print(os.environ.get("CUDA_PATH"))').stdout().strip()
if cuda_root != '' and cuda_root != 'None'
- arc = ''
- if build_machine.cpu_family() == 'x86_64'
- arc = 'x64'
+ if host_machine.system() == 'windows'
+ arc = ''
+ if build_machine.cpu_family() == 'x86_64'
+ arc = 'x64'
+ else
+ arc = 'Win32'
+ endif
+ cuda_libdir = join_paths (cuda_root, 'lib', arc)
else
- arc = 'Win32'
+ cuda_libdir = [join_paths (cuda_root, 'lib'), join_paths (cuda_root, 'lib', 'stubs'),
+ join_paths (cuda_root, 'lib64'), join_paths (cuda_root, 'lib64', 'stubs')]
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)
cudart_dep = declare_dependency(dependencies: cudart_lib)
endif
endif
- endif
-else
- cuda_versions = [
- '10.1',
- '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