The use keyword is order-dependent
Modern Python has syntax for set literals allowing you to write things like:
bld.program(source='main.c', target='app', use={'m', 'gl', 'pthreads', ...})
However, this will cause main.c
to be spuriously recompiled even when up to date because the order of the uses varies by program invocation. This is unexpected because nothing in the waf documentation indicates that the use keyword cannot be a set. I don't know how waf computes target hashes, but afaict use = ['foo', 'bar']
should generate the same hash as use = ['bar', 'foo']
and thus this should not trigger a recompilation.