Back to the firmware side of things, and setting up to create derivative projects based on the firmware for one particular gadget.
For hysterical raisins, the starting project refers to an ancestral project. This is not good; apart from anything else, attempts to build the ancestral project now fail, and building the current project triggers an attempted build of the ancestral one, though the failure is then ignored.
(It doesn't help that the error messages flashes in the console window and a moment later is lost forever.)
Also, for no apparent reason, any build of the project results in a full build, rather than incremental (though the console output shows it being an incremental build), even if nothing whatsoever has changed since the last build.
So... I copy all the shared files over to a new project which exists purely as a place to keep the shared source files. I then link this new shared project into the active project. And...!
It's still bloody trying to build the ancestral project.
I search for the ancestral project, and to the name by which it was once referenced, and edit out all references I can find, using
vi (the Eclipse GUI doesn't show them existing in the first place).
...still trying to build...
The attempt to build it (and none of the other projects in the workspace) is getting injected into the
Then I rename the ancestral project (whose old name exists nowhere in the current project's directory). Hey presto! Eclipse is no longer putting its name in the
Makefile, and all is well. Except for the "incremental" build still insisting on rebuilding every-freakin'-thing, that is.
Just out of curiosity (and hoping to keep Subversion happy), I then restore the ancestral project's original name. Whoopsie! Now Eclipse wants to build it again.
Oh, wait: maybe it's not in the project, but in the metadata, which is stored in the workspace directory? Hm. Well, the name does appear in various places that
grep -r can find, so probably it's something to do with that. Maybe the solution is to blow away the workspace, and re-import the projects?
And so much of this is due to Eclipse's resource management being half-baked. I can selectively exclude source files from certain builds (which sometimes works and sometimes doesn't), but I can't selectively include files in just a particular build (and not have them included by default in new builds that will be created in the future), so I'm stuck with having a separate project for each gadget.
Update: Huh. Squirreled away under Properties ⇒ C/C++ Build => Refresh Policy (this last being a tab), there's a reference to the ancestral project. Delete that, and... No Change. Foo.