Another thing which I have noticed while documenting usage of my makefile was how big (and thus unreadable) it was getting. As an attempt to counter this trend, I have decided to modularize it a little bit more by splitting it in three parts : one “core” makefile which generates the ISO CD image, one “kernel” makefile, and one “bootstrap” makefile. While I was at it, I also reworked the source tree’s organization a bit so as to introduce a stronger separation between the bootstrap code and the kernel code, since the distinction between both remained a bit blurry. I also isolated the architecture-specific code a bit more than before, even if the makefiles themselves remain highly architecture-specific for now.
At this point, my main remaining gripe about those makefiles is that they are unable to automatically detect source files and to probe their dependencies instead of rebuilding everything anytime a header is touched. Thankfully, I have found quality documentation on those two matters, so with a bit of luck I should be able to crack that down in a few days.