Sometimes things are so simple, so obvious that you really do feel like Homer when they hit you. standing cleaning my teeth (as you do) it suddenly hit me that the solution for removing a lot of mess from the butter builds was really, really simple. The complexity was due to having to build a tree of objects that we then used for the build and how to maintain sanity while still preventing naming collisions.
The answer? To add the build directories into the directory where the source file is. yes, this may be slightly messier but it’ll only be a directory entry and will be removed during a make clean. As we use full patsh for all files this removes the problem. Using the target name as the second level in the directory allows for the problem of having the same file being built twice by different targets with differing build flags. All in all it seems so sane and straightforward! It will also allow me to remove some complexity from the source which is always a good thing!