|
|
|
@ -205,6 +205,8 @@ class BuildTarget(): |
|
|
|
|
self.link_targets = [] |
|
|
|
|
self.link_depends = [] |
|
|
|
|
self.filename = 'no_name' |
|
|
|
|
# The file with debugging symbols |
|
|
|
|
self.debug_filename = None |
|
|
|
|
self.need_install = False |
|
|
|
|
self.pch = {} |
|
|
|
|
self.extra_args = {} |
|
|
|
@ -466,6 +468,15 @@ class BuildTarget(): |
|
|
|
|
def get_filename(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, []) |
|
|
|
|
|
|
|
|
@ -708,6 +719,11 @@ 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 compiler_is_msvc(self.sources, is_cross, environment) and \ |
|
|
|
|
buildtype.startswith('debug'): |
|
|
|
|
self.debug_filename = self.prefix + self.name + '.pdb' |
|
|
|
|
|
|
|
|
|
def type_suffix(self): |
|
|
|
|
return "@exe" |
|
|
|
@ -733,6 +749,11 @@ 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 compiler_is_msvc(self.sources, is_cross, environment) and \ |
|
|
|
|
buildtype.startswith('debug'): |
|
|
|
|
self.debug_filename = self.prefix + self.name + '.pdb' |
|
|
|
|
|
|
|
|
|
def type_suffix(self): |
|
|
|
|
return "@sta" |
|
|
|
@ -755,6 +776,7 @@ 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): |
|
|
|
|
""" |
|
|
|
@ -846,6 +868,21 @@ 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 compiler_is_msvc(self.sources, is_cross, env) 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 |
|
|
|
|