The function uses a variable "surface" without declaring it.
"%s( surface=%p ).\n", __FUNCTION__, surface);
which leads to a failure when compiling for cairo/directfb.
The fix, exists already in the 1.8.0, just to add:
cairo_directfb_surface_t *surface = abstract_surface;
Commited to my local 1.8 branch will push in the next batch.