diff options
author | Jakub Adam <jakub.adam@collabora.com> | 2019-03-06 15:45:14 +0100 |
---|---|---|
committer | Jakub Adam <jakub.adam@collabora.com> | 2019-10-09 15:50:20 +0200 |
commit | 1bf17824766230a8ad0b2fe56040ff860c841d50 (patch) | |
tree | 58ea79617302c036adf42b6eae7696f23fca0723 /mesonbuild/build.py | |
parent | 217036f2d9d7f90b47e6d9cad43f3144882a3b91 (diff) | |
download | meson-1bf17824766230a8ad0b2fe56040ff860c841d50.zip meson-1bf17824766230a8ad0b2fe56040ff860c841d50.tar.gz meson-1bf17824766230a8ad0b2fe56040ff860c841d50.tar.bz2 |
Fix *.pdb files missing in meson introspect --installed output
On Windows, make sure the introspect command lists all Program database
(PDB) files containing debugging information that Meson will install.
Diffstat (limited to 'mesonbuild/build.py')
-rw-r--r-- | mesonbuild/build.py | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py index 267bd16..68fbd18 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -1488,6 +1488,8 @@ class Executable(BuildTarget): self.vs_import_filename = None # The import library that GCC would generate (and prefer) self.gcc_import_filename = None + # The debugging information file this target will generate + self.debug_filename = None # Check for export_dynamic self.export_dynamic = False @@ -1500,12 +1502,13 @@ class Executable(BuildTarget): if self.export_dynamic and kwargs.get('implib') is False: raise InvalidArguments('"implib" keyword argument must not be false for if "export_dynamic" is true') + m = environment.machines[for_machine] + # If using export_dynamic, set the import library name if self.export_dynamic: implib_basename = self.name + '.exe' if not isinstance(kwargs.get('implib', False), bool): implib_basename = kwargs['implib'] - m = environment.machines[for_machine] if m.is_windows() or m.is_cygwin(): self.vs_import_filename = '{0}.lib'.format(implib_basename) self.gcc_import_filename = 'lib{0}.a'.format(implib_basename) @@ -1514,6 +1517,11 @@ class Executable(BuildTarget): else: self.import_filename = self.gcc_import_filename + if m.is_windows() and ('cs' in self.compilers or + self.get_using_rustc() or + self.get_using_msvc()): + self.debug_filename = self.name + '.pdb' + # Only linkwithable if using export_dynamic self.is_linkwithable = self.export_dynamic @@ -1540,6 +1548,14 @@ class Executable(BuildTarget): return [self.vs_import_filename, self.gcc_import_filename] return [] + def get_debug_filename(self): + """ + The name of debuginfo file that will be created by the compiler + + Returns None if the build won't create any debuginfo file + """ + return self.debug_filename + def is_linkable_target(self): return self.is_linkwithable @@ -1619,6 +1635,8 @@ class SharedLibrary(BuildTarget): self.vs_import_filename = None # The import library that GCC would generate (and prefer) self.gcc_import_filename = None + # The debugging information file this target will generate + self.debug_filename = None super().__init__(name, subdir, subproject, for_machine, sources, objects, environment, kwargs) if 'rust' in self.compilers: # If no crate type is specified, or it's the generic lib type, use dylib @@ -1673,6 +1691,7 @@ class SharedLibrary(BuildTarget): """ prefix = '' suffix = '' + create_debug_file = False self.filename_tpl = self.basic_filename_tpl # NOTE: manual prefix/suffix override is currently only tested for C/C++ # C# and Mono @@ -1680,6 +1699,7 @@ class SharedLibrary(BuildTarget): prefix = '' suffix = 'dll' self.filename_tpl = '{0.prefix}{0.name}.{0.suffix}' + create_debug_file = True # C, C++, Swift, Vala # Only Windows uses a separate import library for linking # For all other targets/platforms import_filename stays None @@ -1692,11 +1712,13 @@ class SharedLibrary(BuildTarget): prefix = '' # Import library is called foo.dll.lib self.import_filename = '{0}.dll.lib'.format(self.name) + create_debug_file = True elif self.get_using_msvc(): # Shared library is of the form foo.dll prefix = '' # Import library is called foo.lib self.import_filename = self.vs_import_filename + create_debug_file = True # Assume GCC-compatible naming else: # Shared library is of the form libfoo.dll @@ -1753,6 +1775,8 @@ class SharedLibrary(BuildTarget): self.suffix = suffix self.filename = self.filename_tpl.format(self) self.outputs = [self.filename] + if create_debug_file: + self.debug_filename = os.path.splitext(self.filename)[0] + '.pdb' @staticmethod def _validate_darwin_versions(darwin_versions): @@ -1866,6 +1890,14 @@ class SharedLibrary(BuildTarget): """ return self.import_filename + def get_debug_filename(self): + """ + The name of debuginfo file that will be created by the compiler + + Returns None if the build won't create any debuginfo file + """ + return self.debug_filename + def get_import_filenameslist(self): if self.import_filename: return [self.vs_import_filename, self.gcc_import_filename] |