From c3ffbd215571fcda70c866431741eb3fd6b98ee8 Mon Sep 17 00:00:00 2001 From: Vladimir Prus Date: Sat, 25 Jul 2009 09:01:23 +0000 Subject: [PATCH] Initial PDB support and manifest file fixes. Patch from Alexey Pakhunov. The changes are: - Make msvc link generators create targets that correspond to PDB files, so that they can be installed. - Force creation of manifest file if separate manifest is requested - Fix the name of manifest file that boost.build expects to make those produced by the compiler. [SVN r55154] --- src/tools/msvc.jam | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/tools/msvc.jam b/src/tools/msvc.jam index fac62b978..caba91254 100644 --- a/src/tools/msvc.jam +++ b/src/tools/msvc.jam @@ -40,6 +40,8 @@ import type ; type.register MANIFEST : manifest ; feature.feature embed-manifest : on off : incidental propagated ; +type.register PDB : pdb ; + ################################################################################ # # Public rules. @@ -259,6 +261,10 @@ rule configure-version-specific ( toolset : version : conditions ) toolset.flags $(toolset).link LINKFLAGS $(conditions)/$(.cpu-arch-amd64) : /MACHINE:X64 ; toolset.flags $(toolset).link LINKFLAGS $(conditions)/$(.cpu-arch-i386) : /MACHINE:X86 ; toolset.flags $(toolset).link LINKFLAGS $(conditions)/$(.cpu-arch-ia64) : /MACHINE:IA64 ; + + # Make sure that manifest will be generated even if there is no + # dependencies to put there. + toolset.flags $(toolset).link LINKFLAGS $(conditions)/off : /MANIFEST ; } toolset.pop-checking-for-flags-module ; } @@ -1005,12 +1011,23 @@ class msvc-linking-generator : linking-generator { local name = [ $(result[0]).name ] ; local action = [ $(result[0]).action ] ; + + if [ $(property-set).get ] = "on" + { + local target = [ class.new file-target $(name) : PDB : $(project) : $(action) ] ; + lcoal registered-target = [ virtual-target.register $(target) ] ; + if $(target) != $(registered-target) + { + $(action).replace-targets $(target) : $(registered-target) ; + } + result += $(registered-target) ; + } if [ $(property-set).get ] = "off" { local target = [ class.new file-target $(name) : MANIFEST : $(project) : $(action) ] ; local registered-target = [ virtual-target.register $(target) ] ; - if $(action) && ( $(target) != $(registered-target) ) + if $(target) != $(registered-target) { $(action).replace-targets $(target) : $(registered-target) ; }