vusb and linked assembly problem

I'm trying to get the vusb (Google Code Archive - Long-term storage for Google Code Project Hosting.) code (the UsbKeyboard branch) installed and working on Arduino-22 and I need some help understanding how Arduino handles linked .S (assembly) files.

What is the correct way to link a .S file to a project? I have gone through the Sketch > Add file... dialog which appears to work -- the selected file (usbdrvasm.S) is now in the data/ subdirectory of my sketch. But when I try to compile I get the error

undefined reference to `usbCrc16Append'

This function is defined in usbdrvasm.S and (I believe properly) prototyped in another header file:

#ifdef __cplusplus
extern "C"{
#endif
extern unsigned usbCrc16Append(unsigned data, uchar len);
#ifdef __cplusplus
} // extern "C"
#endif

Is this error a sign of the assembly not being properly linked? Of the prototype in the header not working properly? Some other toolchain error?