redo: build rules spread across many files
There are other projects that use the bitbake build system, not just OpenEmbedded and the Yocto Project.
"Stringly typed" - even lists are just semicolon-separated strings.
Insane quoting rules. I recently tried to work out exactly how the argument parsing works and the source code has undocumented behaviour. It's ridiculous.
Accessing undeclared variables works fine. They're just empty. Good luck tracking down silently ignored typos!
Scratching the surface...
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.
The docs are up front that waf is not a build system but a build system toolkit. For example, there is a demo that uses makefiles as the build language and runs them in waf. Another demo requires no build file but just finds the source files and builds them. But I have yet to see any external project released that says, “This is a build system... built on the waf build system toolkit,” like the Software Construction Toolkit was built on scons. Perhaps the toolkit is so close to being a build system that people just use it as is and require only small customizations, which are kept in their projects.
Having said that, there might be a way. From their FAQ:
> It might well be possible to make it work using Cygwin or MinGW / MSYS, or the recent Ubuntu on Windows development though. We aren't doing this work ourselves because we don't have any Windows machines, but we're happy to accept PRs in that direction.
Not sure I want to use a platform which the dev team can't test (and there are other alternatives), but it might work after all.
A side remark, the link posted below in this thread contains an awesome "awesome" list. For those interested, here is a (truly) awesome list of dataset resources: https://github.com/awesomedata/awesome-public-datasets.
I encourage Windows versions of cross-platform apps wherever the app could justify it due to all the developers and tooling on Windows. Yet, non-Windows apps can be cross-platform.
Just offering a counterviewpoint.