Merge pull request #1444 from mesonbuild/pdbinstall
Install PDB files. Closes #1442.
This commit is contained in:
commit
2ecb26c9ae
|
@ -115,12 +115,6 @@ class Backend:
|
|||
return os.path.join(self.get_target_dir(target), target.get_filename())
|
||||
raise AssertionError('BUG: Tried to link to something that\'s not a library')
|
||||
|
||||
def get_target_debug_filename(self, target):
|
||||
fname = target.get_debug_filename()
|
||||
if not fname:
|
||||
raise AssertionError("BUG: Tried to generate debug filename when it doesn't exist")
|
||||
return os.path.join(self.get_target_dir(target), fname)
|
||||
|
||||
def get_target_dir(self, target):
|
||||
if self.environment.coredata.get_builtin_option('layout') == 'mirror':
|
||||
dirname = target.get_subdir()
|
||||
|
|
|
@ -654,13 +654,6 @@ int dummy;
|
|||
else:
|
||||
# XXX: Add BuildTarget-specific install dir cases here
|
||||
outdir = self.environment.get_libdir()
|
||||
if isinstance(t, build.SharedLibrary) or isinstance(t, build.Executable):
|
||||
if t.get_debug_filename():
|
||||
# Install the debug symbols file in the same place as
|
||||
# the target itself. It has no aliases, should not be
|
||||
# stripped, and doesn't have an install_rpath
|
||||
i = [self.get_target_debug_filename(t), outdir, {}, False, '']
|
||||
d.targets.append(i)
|
||||
if isinstance(t, build.BuildTarget):
|
||||
i = [self.get_target_filename(t), outdir, t.get_aliases(),
|
||||
should_strip, t.install_rpath]
|
||||
|
|
|
@ -300,8 +300,6 @@ class BuildTarget(Target):
|
|||
self.name_prefix_set = False
|
||||
self.name_suffix_set = False
|
||||
self.filename = 'no_name'
|
||||
# The file with debugging symbols
|
||||
self.debug_filename = None
|
||||
self.need_install = False
|
||||
self.pch = {}
|
||||
self.extra_args = {}
|
||||
|
@ -686,15 +684,6 @@ class BuildTarget(Target):
|
|||
def get_outputs(self):
|
||||
return [self.filename]
|
||||
|
||||
def get_debug_filename(self):
|
||||
"""
|
||||
The name of the file that contains debugging symbols for this target
|
||||
|
||||
Returns None if there are no debugging symbols or if they are embedded
|
||||
in the filename itself
|
||||
"""
|
||||
return self.debug_filename
|
||||
|
||||
def get_extra_args(self, language):
|
||||
return self.extra_args.get(language, [])
|
||||
|
||||
|
@ -1006,10 +995,6 @@ class Executable(BuildTarget):
|
|||
self.filename = self.name
|
||||
if self.suffix:
|
||||
self.filename += '.' + self.suffix
|
||||
# See determine_debug_filenames() in build.SharedLibrary
|
||||
buildtype = environment.coredata.get_builtin_option('buildtype')
|
||||
if self.get_using_msvc() and buildtype.startswith('debug'):
|
||||
self.debug_filename = self.prefix + self.name + '.pdb'
|
||||
|
||||
def type_suffix(self):
|
||||
return "@exe"
|
||||
|
@ -1037,10 +1022,6 @@ class StaticLibrary(BuildTarget):
|
|||
else:
|
||||
self.suffix = 'a'
|
||||
self.filename = self.prefix + self.name + '.' + self.suffix
|
||||
# See determine_debug_filenames() in build.SharedLibrary
|
||||
buildtype = environment.coredata.get_builtin_option('buildtype')
|
||||
if self.get_using_msvc() and buildtype.startswith('debug'):
|
||||
self.debug_filename = self.prefix + self.name + '.pdb'
|
||||
|
||||
def type_suffix(self):
|
||||
return "@sta"
|
||||
|
@ -1066,7 +1047,6 @@ class SharedLibrary(BuildTarget):
|
|||
self.suffix = None
|
||||
self.basic_filename_tpl = '{0.prefix}{0.name}.{0.suffix}'
|
||||
self.determine_filenames(is_cross, environment)
|
||||
self.determine_debug_filenames(is_cross, environment)
|
||||
|
||||
def determine_filenames(self, is_cross, env):
|
||||
"""
|
||||
|
@ -1156,21 +1136,6 @@ class SharedLibrary(BuildTarget):
|
|||
self.suffix = suffix
|
||||
self.filename = self.filename_tpl.format(self)
|
||||
|
||||
def determine_debug_filenames(self, is_cross, env):
|
||||
"""
|
||||
Determine the debug filename(s) using the prefix/name/etc detected in
|
||||
determine_filenames() above.
|
||||
"""
|
||||
buildtype = env.coredata.get_builtin_option('buildtype')
|
||||
if self.get_using_msvc() and buildtype.startswith('debug'):
|
||||
# Currently we only implement separate debug symbol files for MSVC
|
||||
# since the toolchain does it for us. Other toolchains embed the
|
||||
# debugging symbols in the file itself by default.
|
||||
if self.soversion:
|
||||
self.debug_filename = '{0.prefix}{0.name}-{0.soversion}.pdb'.format(self)
|
||||
else:
|
||||
self.debug_filename = '{0.prefix}{0.name}.pdb'.format(self)
|
||||
|
||||
def process_kwargs(self, kwargs, environment):
|
||||
super().process_kwargs(kwargs, environment)
|
||||
# Shared library version
|
||||
|
|
|
@ -247,6 +247,11 @@ def install_targets(d):
|
|||
print('Stdout:\n%s\n' % stdo)
|
||||
print('Stderr:\n%s\n' % stde)
|
||||
sys.exit(1)
|
||||
pdb_filename = os.path.splitext(fname)[0] + '.pdb'
|
||||
if not should_strip and os.path.exists(pdb_filename):
|
||||
pdb_outname = os.path.splitext(outname)[0] + '.pdb'
|
||||
print('Installing pdb file %s to %s.' % (pdb_filename, pdb_outname))
|
||||
do_copyfile(pdb_filename, pdb_outname)
|
||||
elif os.path.isdir(fname):
|
||||
fname = os.path.join(d.build_dir, fname.rstrip('/'))
|
||||
do_copydir(fname, os.path.dirname(fname), outdir)
|
||||
|
|
|
@ -181,6 +181,9 @@ def validate_install(srcdir, installdir):
|
|||
# Check if there are any unexpected files
|
||||
found = get_relative_files_list_from_dir(installdir)
|
||||
for fname in found:
|
||||
# Windows-specific tests check for the existence of installed PDB
|
||||
# files, but common tests do not, for obvious reasons. Ignore any
|
||||
# extra PDB files found.
|
||||
if fname not in expected and not fname.endswith('.pdb'):
|
||||
ret_msg += 'Extra file {0} found.\n'.format(fname)
|
||||
return ret_msg
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
usr/bin/prog.exe
|
||||
usr/bin/prog.pdb
|
|
@ -1,4 +1,4 @@
|
|||
project('wintest', 'c')
|
||||
|
||||
prog = executable('prog', 'prog.c')
|
||||
prog = executable('prog', 'prog.c', install : true)
|
||||
test('wintest', prog)
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
usr/bin/some-0.dll
|
||||
usr/bin/some-0.pdb
|
||||
usr/lib/some.lib
|
||||
usr/bin/noversion.dll
|
||||
usr/bin/noversion.pdb
|
||||
usr/lib/noversion.lib
|
||||
|
|
Loading…
Reference in New Issue