Openocd has been successfully used to program the Xilinx CPLD inside an Amontec Chameleon (Coolrunner XCR3128XL) using the bitbang interface on a PC parallel port. This is the first real use of the new codebase I've been working on. I'm looking to integrate SVF and STAPL support, too, but that'll take some time, I guess.
Documentation for the JTAG API (this should be final for now) will follow soon.