$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r55154 - trunk/tools/build/v2/tools
From: ghost_at_[hidden]
Date: 2009-07-25 05:01:23
Author: vladimir_prus
Date: 2009-07-25 05:01:23 EDT (Sat, 25 Jul 2009)
New Revision: 55154
URL: http://svn.boost.org/trac/boost/changeset/55154
Log:
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.
Text files modified: 
   trunk/tools/build/v2/tools/msvc.jam |    19 ++++++++++++++++++-                     
   1 files changed, 18 insertions(+), 1 deletions(-)
Modified: trunk/tools/build/v2/tools/msvc.jam
==============================================================================
--- trunk/tools/build/v2/tools/msvc.jam	(original)
+++ trunk/tools/build/v2/tools/msvc.jam	2009-07-25 05:01:23 EDT (Sat, 25 Jul 2009)
@@ -40,6 +40,8 @@
 type.register MANIFEST : manifest ;
 feature.feature embed-manifest : on off : incidental propagated ;
 
+type.register PDB : pdb ;
+
 ################################################################################
 #
 # Public rules.
@@ -259,6 +261,10 @@
         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)/<embed-manifest>off : /MANIFEST ;
     }
     toolset.pop-checking-for-flags-module ;
 }
@@ -1005,12 +1011,23 @@
         {
             local name = [ $(result[0]).name ] ;
             local action = [ $(result[0]).action ] ;
+            
+            if [ $(property-set).get <debug-symbols> ] = "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 <embed-manifest> ] = "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) ;
                 }