Index: /trunk/boostcpp.jam
===================================================================
--- /trunk/boostcpp.jam	(revision 79301)
+++ /trunk/boostcpp.jam	(revision 81000)
@@ -210,6 +210,44 @@
 }
 
+rule filtered-target ( name : message + : sources + : requirements * )
+{
+    message $(name)-message : warning: $(message) ;
+    alias $(name) : $(sources) : $(requirements) ;
+    alias $(name) : $(name)-message ;
+
+    local p = [ project.current ] ;
+    $(p).mark-target-as-explicit $(name) ;
+    $(p).mark-target-as-explicit $(name)-message ;
+}
+
 rule declare_install_and_stage_proper_targets ( libraries * : headers * )
 {
+    for local l in $(libraries)
+    {
+        if $(l) = locale
+        {
+            filtered-target $(l)-for-install :
+                Skipping Boost.Locale library with threading=single. :
+                libs/$(l)/build : <threading>multi ;
+        }
+        else if $(l) = wave
+        {
+            filtered-target $(l)-for-install :
+                Skipping Boost.Wave library with threading=single. :
+                libs/$(l)/build : <threading>multi ;
+        }
+        else if $(l) = thread
+        {
+            filtered-target $(l)-for-install :
+                Skipping Boost.Thread library with threading=single. :
+                libs/$(l)/build : <threading>multi ;
+        }
+        else
+        {
+            alias $(l)-for-install : libs/$(l)/build ; 
+        }
+    }
+    local library-targets = $(libraries)-for-install ;
+
     install-requirements = <install-source-root>$(BOOST_ROOT)/boost ;
 
@@ -239,5 +277,5 @@
         : $(install-requirements) <install-no-version-symlinks>on
         :
-        : libs/$(libraries)/build
+        : $(libraries)-for-install
         : $(headers)
         ;
@@ -246,5 +284,5 @@
     # Install just library.
     install stage-proper
-        : libs/$(libraries)/build
+        : $(libraries)-for-install
         : <location>$(stage-locate)/lib
           <install-dependencies>on <install-type>LIB
