aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/linkers.py
diff options
context:
space:
mode:
authorKramer Peace <kpeace1@gmail.com>2019-09-02 14:23:11 +0300
committerDylan Baker <dylan@pnwbakers.com>2019-09-05 08:38:56 -0700
commitfb9a5ce8672a01b4b82d10fe2518a047dc532da9 (patch)
tree55115636518d01cd3b26f3e16fd18733f530dabb /mesonbuild/linkers.py
parentbd37147b4b46081c58e0b15f6a0f0123099b27b1 (diff)
downloadmeson-fb9a5ce8672a01b4b82d10fe2518a047dc532da9.zip
meson-fb9a5ce8672a01b4b82d10fe2518a047dc532da9.tar.gz
meson-fb9a5ce8672a01b4b82d10fe2518a047dc532da9.tar.bz2
Add a CUDA linker object
Fixes issue #5870
Diffstat (limited to 'mesonbuild/linkers.py')
-rw-r--r--mesonbuild/linkers.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/mesonbuild/linkers.py b/mesonbuild/linkers.py
index 272f927..7db7d09 100644
--- a/mesonbuild/linkers.py
+++ b/mesonbuild/linkers.py
@@ -909,3 +909,32 @@ class OptlinkDynamicLinker(VisualStudioLikeLinkerMixin, DynamicLinker):
def get_allow_undefined_args(self) -> typing.List[str]:
return []
+
+class CudaLinker(DynamicLinker):
+ """Cuda linker (nvlink)"""
+ @staticmethod
+ def parse_version():
+ version_cmd = ['nvlink', '--version']
+ try:
+ _, out, _ = mesonlib.Popen_safe(version_cmd)
+ except OSError:
+ return 'unknown version'
+ # Output example:
+ # nvlink: NVIDIA (R) Cuda linker
+ # Copyright (c) 2005-2018 NVIDIA Corporation
+ # Built on Sun_Sep_30_21:09:22_CDT_2018
+ # Cuda compilation tools, release 10.0, V10.0.166
+ # we need the most verbose version output. Luckily starting with V
+ return out.strip().split('V')[-1]
+
+ def get_output_args(self, outname: str) -> typing.List[str]:
+ return ['-o', outname]
+
+ def get_search_args(self, dirname: str) -> typing.List[str]:
+ return ['-L', dirname]
+
+ def fatal_warnings(self) -> typing.List[str]:
+ return ['--warning-as-error']
+
+ def get_allow_undefined_args(self) -> typing.List[str]:
+ return []