 +  'PRODUCT_DIR': '@',
 +  'SHARED_LIB_DIR': '$(builddir)/lib.$(TOOLSET)',
 +  'LIB_DIR': '$(obj).$(TOOLSET)',
-+  'RULE_INPUT_ROOT': '%(basename)s',
-+  'RULE_INPUT_PATH': '$in',
-+  'RULE_INPUT_EXT': 'XXXNINJAXXX',
++  'RULE_INPUT_ROOT': '$root',
++  'RULE_INPUT_PATH': '$source',
++  'RULE_INPUT_EXT': '$ext',
 +  'RULE_INPUT_NAME': 'XXXNINJAXXX',
 +
 +  # This appears unused --- ?

+
+  def WriteEdge(self, outputs, command, inputs,
+                order_only_inputs=[],
+                use_prebuild_stamp=True):
+    extra_inputs = order_only_inputs[:]
+    if use_prebuild_stamp and self.prebuild_stamp:
+      extra_inputs.append(self.prebuild_stamp)

+      extra_inputs = ['|'] + extra_inputs
+    self.WriteList('build ' + ' '.join(outputs) + ': ' + command,
+                   inputs + extra_inputs)
+    if extra_bindings:
+      for key, val in extra_bindings:
+        self.WriteLn('  %s = %s' % (key, val))
+
+  def WriteVariableList(self, var, values, quoter=lambda x: x):
+    if self.variables.get(var, []) == values:
