I had some tests that needed a binary file. That binary file was generated from a text file by a utility program. That utility program had to be built from source.
After a week of trying to get that correctly specified, I gave up. I thought I'd found the right way of doing it several times, but each time I discovered the dependency chain was broken in some way. I looked into how official modules that dealt with generated files were implemented, but I found them to be surprisingly complex.
By comparison, it was only mildly annoying to do that sort of thing in CMake (the build system I moved to after a year or two with waf). The relative simplicity of CMake was what convinced me to switch.
That being said, it's been several years since I last used waf. It may have improved during that time.