One of the things that butter does is generate a tree of objects that eliminates the problems of collisions and allows for all objects to be seperate from their source. This is done automatically and is required as each file may be made into an object many times during a build. This is due to the ability of butter to build each target according to a number of templates and means that we can use standard naming conventions without needing to follow libtool down the read of altering the standard extensions 🙂

The problem arises when trying to figure out how we format the object directory tree. The basics I have as follows are

/

This already a bit of a long path, but would seem to make sense. Imagine an app building an object blah.o, in target Blah, for an Executable template in a directory foo/bar, the path for the object would be

Executable/Blah/foo/bar/blah.o

The problem (in my mind) arises when we’re building files from several directories as part of a single target. the path shown is the path of the directory where the target was defined, not the path of the source file relative to root. This obviously increases the chance of a name collision and so should probably be changed.

I think I’ll alter it to actually reflect the relative directory once I add the needed code to ButterFile.