aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2017-03-04 05:52:33 -0500
committerGitHub <noreply@github.com>2017-03-04 05:52:33 -0500
commit2ecb26c9ae093a16c1f79b3b81ca0c66c054f579 (patch)
tree00349a92ecab80359e33a9f391cfa126691a2558
parentb3aaab3a038f9139f5735d590b5036c25fd033a0 (diff)
parent303b8819ecc4adf5268d0a73aa25aa1540b3c2bc (diff)
downloadmeson-2ecb26c9ae093a16c1f79b3b81ca0c66c054f579.zip
meson-2ecb26c9ae093a16c1f79b3b81ca0c66c054f579.tar.gz
meson-2ecb26c9ae093a16c1f79b3b81ca0c66c054f579.tar.bz2
Merge pull request #1444 from mesonbuild/pdbinstall
Install PDB files. Closes #1442.
-rw-r--r--mesonbuild/backend/backends.py6
-rw-r--r--mesonbuild/backend/ninjabackend.py7
-rw-r--r--mesonbuild/build.py35
-rw-r--r--mesonbuild/scripts/meson_install.py5
-rwxr-xr-xrun_project_tests.py3
-rw-r--r--test cases/windows/1 basic/installed_files.txt2
-rw-r--r--test cases/windows/1 basic/meson.build2
-rw-r--r--test cases/windows/8 msvc dll versioning/installed_files.txt2
8 files changed, 13 insertions, 49 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 26052d3..5939488 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -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()
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index d696076..4d54acb 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -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]
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index bdb1dc3..fd01f77 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -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
diff --git a/mesonbuild/scripts/meson_install.py b/mesonbuild/scripts/meson_install.py
index a025b0c..8fb9e04 100644
--- a/mesonbuild/scripts/meson_install.py
+++ b/mesonbuild/scripts/meson_install.py
@@ -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)
diff --git a/run_project_tests.py b/run_project_tests.py
index f87a121..1457432 100755
--- a/run_project_tests.py
+++ b/run_project_tests.py
@@ -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
diff --git a/test cases/windows/1 basic/installed_files.txt b/test cases/windows/1 basic/installed_files.txt
new file mode 100644
index 0000000..8c8464a
--- /dev/null
+++ b/test cases/windows/1 basic/installed_files.txt
@@ -0,0 +1,2 @@
+usr/bin/prog.exe
+usr/bin/prog.pdb
diff --git a/test cases/windows/1 basic/meson.build b/test cases/windows/1 basic/meson.build
index f736b66..03d5436 100644
--- a/test cases/windows/1 basic/meson.build
+++ b/test cases/windows/1 basic/meson.build
@@ -1,4 +1,4 @@
project('wintest', 'c')
-prog = executable('prog', 'prog.c')
+prog = executable('prog', 'prog.c', install : true)
test('wintest', prog)
diff --git a/test cases/windows/8 msvc dll versioning/installed_files.txt b/test cases/windows/8 msvc dll versioning/installed_files.txt
index 5f6e26a..e3f72bc 100644
--- a/test cases/windows/8 msvc dll versioning/installed_files.txt
+++ b/test cases/windows/8 msvc dll versioning/installed_files.txt
@@ -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