Index: build/property.jam
===================================================================
--- build/property.jam	(revision 47466)
+++ build/property.jam	(working copy)
@@ -511,7 +511,36 @@
     return $(result) ;
 }
 
+rule translate-dependencies ( specification * : project-id )
+{
+    local result ;
+    for local p in $(specification)
+    {
+        local split = [ split-conditional $(p) ] ;
+        local condition = "" ;
+        if $(split)
+        {
+            condition = $(split[1]): ;
+            p = $(split[2]) ;
+        }
 
+        if dependency in [ feature.attributes $(p:G) ]
+        {
+            if [ regex.match (.*//.*) : $(p:G=) ] {
+                result += $(condition)$(p) ;
+            } else {
+                result += $(condition)$(p:G)$(project-id)//$(p:G=) ;
+            }
+        }
+        else
+        {
+            result += $(condition)$(p) ;
+        }
+    }
+    return $(result) ;
+}
+
+
 # Class maintaining a property set -> string mapping.
 #
 class property-map
Index: build/property-set.jam
===================================================================
--- build/property-set.jam	(revision 47466)
+++ build/property-set.jam	(working copy)
@@ -378,10 +378,15 @@
 #
 rule create-from-user-input ( raw-properties * : jamfile-module location )
 {
+    import project ;
+    import path ;
     local specification = [ property.translate-paths $(raw-properties)
         : $(location) ] ;
     specification = [ property.translate-indirect $(specification)
         : $(jamfile-module) ] ;
+    local project-id = [ project.attribute $(jamfile-module) id ] ;
+    project-id ?= [ path.root [ project.attribute $(jamfile-module) location ] [ path.pwd ] ] ;
+    specification = [ property.translate-dependencies $(specification) : $(project-id) ] ;
     specification =
         [ property.expand-subfeatures-in-conditions $(specification) ] ;
     specification = [ property.make $(specification) ] ;
