diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index cb007d458..7c47ef4de 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 5a8f48a9f..744d75f8f 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):