 +      target = target[3:]
 +
 +    if spec['type'] == 'static_library':
-+      return '%s.a' % target
++      return 'lib%s.a' % target
 +    elif spec['type'] in ('loadable_module', 'shared_library'):
-+      return '%s.so' % target
++      return 'lib%s.so' % target
 +    elif spec['type'] == 'none':
 +      return '%s.stamp' % target
 +    elif spec['type'] == 'settings':

+  def ComputeOutput(self, spec):
+    filename = self.ComputeOutputFileName(spec)
+
+    # XXX what are all these extra variables?
+    path = spec.get('product_dir', '')
+    assert 'product_prefix' not in spec
+    if 'product_name' in spec:
+      print 'XXX ignoring product_name'

+  'SHARED_INTERMEDIATE_DIR': '@gen',
+  'PRODUCT_DIR': '@',
+  'SHARED_LIB_DIR': '$(builddir)/lib.$(TOOLSET)',
+  'LIB_DIR': '@',
+  'RULE_INPUT_ROOT': '$root',
+  'RULE_INPUT_PATH': '$source',
+  'RULE_INPUT_EXT': '$ext',
