aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/backend/ninjabackend.py1
-rw-r--r--mesonbuild/compilers.py11
2 files changed, 12 insertions, 0 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index cb007d4..7c47ef4 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -1669,6 +1669,7 @@ rule FORTRAN_DEP_HACK
linker)
commands += linker.get_buildtype_linker_args(self.environment.coredata.get_builtin_option('buildtype'))
commands += linker.get_option_link_args(self.environment.coredata.compiler_options)
+ commands += linker.get_link_debugfile_args(outname)
if not(isinstance(target, build.StaticLibrary)):
commands += self.environment.coredata.external_link_args[linker.get_language()]
if isinstance(target, build.Executable):
diff --git a/mesonbuild/compilers.py b/mesonbuild/compilers.py
index 5a8f48a..744d75f 100644
--- a/mesonbuild/compilers.py
+++ b/mesonbuild/compilers.py
@@ -357,6 +357,9 @@ class Compiler():
def get_compile_debugfile_args(self, rel_obj):
return []
+ def get_link_debugfile_args(self, rel_obj):
+ return []
+
class CCompiler(Compiler):
def __init__(self, exelist, version, is_cross, exe_wrapper=None):
super().__init__(exelist, version)
@@ -1608,6 +1611,10 @@ class VisualStudioCCompiler(CCompiler):
pdbarr = rel_obj.split('.')[:-1] + ['pdb']
return ['/Fd' + '.'.join(pdbarr)]
+ def get_link_debugfile_args(self, targetfile):
+ pdbarr = targetfile.split('.')[:-1] + ['pdb']
+ return ['/DEBUG', '/PDB:' + '.'.join(pdbarr)]
+
class VisualStudioCPPCompiler(VisualStudioCCompiler):
def __init__(self, exelist, version, is_cross, exe_wrap):
VisualStudioCCompiler.__init__(self, exelist, version, is_cross, exe_wrap)
@@ -2284,6 +2291,10 @@ class VisualStudioLinker():
def unix_compile_flags_to_native(self, args):
return args[:]
+ def get_link_debugfile_args(self, targetfile):
+ pdbarr = targetfile.split('.')[:-1] + ['pdb']
+ return ['/DEBUG', '/PDB:' + '.'.join(pdbarr)]
+
class ArLinker():
def __init__(self, exelist):