nakst wrote:
Sort of. I never *intended* to make a build system, it just sort of happened. It calls out to `./configure` and `make` to build ported applications, but is able to build the components I've made by itself. Honestly, I'd much prefer it if I didn't need a build system, and I'm trying to reduce its complexity whenever I have the opportunity.
I've been disappointed with most build systems. It shouldn't be as complicated as it. I learnt C++ using Visual Studio where I'd create a project, and it gave me a main.cpp, and I could press the ▶ button and away it went. No configuring required. I built my own build system, because I want something that simple for my own hobby projects, and hopefully if I can compile an operating system with it, I can show the world it doesn't need to be complicated.
I don't need a super configurable system. Every .c, .asm, .cpp, .cc file in "source/" gets built everything unless I explicitly say ignore a file or subdirectory. If I'm a library I have a bunch of headers under "public/" that dependents can include, my projects have a
metafile that says what libraries it depends on. That's all 99% of projects should need. The build order doesn't matter, so recursive dependencies between libraries is allowed, as long as everything gets linked together. At some point, I'd like to add unit test support.
Here are my metadata files for
musl and
libc++ which required a bit more of a complicated situation (mainly it expected some symbols defined, and I also deleted the irrelevant files, but I could do that with "ignore" rules.)