current status: writing a build system in cmake
-
@aismallard@woem.space @whitequark@social.treehouse.systems
cmake with classes
-
to be clear i'm not doing this because i love writing cmake syntax that would drive mere mortals mad. i do it because i'm replacing a "simple Makefile" that has perhaps once fit that bill, but eventually turned into a 1200-line (not including *.inc files) monstrosity with a load-bearing rot13 call inside of a manual reimplementation of half of
git submodule(this particular monstrosity has since been removed but the overall genre has not changed)
@whitequark ah, the fingerprints of an engineer who is very capable, but doesn’t bother to read the docs or think about alternatives…
I’ve reimplemented a git LFS client without knowing that’s what I was doing. -
@whitequark I mean very minimal. Like it fetched the bits I needed. “God, why are these binary files just a sha hash? Oh, and there are files over here with those hashes as names, fine, let’s do this.”
-
@whitequark I mean very minimal. Like it fetched the bits I needed. “God, why are these binary files just a sha hash? Oh, and there are files over here with those hashes as names, fine, let’s do this.”
@whitequark self-awareness is not always online
-
current status: writing a build system in cmake
not "something that builds a project and is also implemented in implemented in cmake"
no, it is "something that is implemented in cmake and can be used to implement a build system that is in turn used as a part of a build system (also in cmake)"
@whitequark I have described the Linux kernel's build system as "a build system implemented in GNU make," so, seems normal.
-
@pikhq @whitequark there are a lot of people for whom build systems are just not on their radar. I don’t understand them in the least, but I have definitely observed them in action.
-
current status: writing a build system in cmake
not "something that builds a project and is also implemented in implemented in cmake"
no, it is "something that is implemented in cmake and can be used to implement a build system that is in turn used as a part of a build system (also in cmake)"
@whitequark someone wrote a raytracer and PNG encoder in CMake sooo
-
The world of buildsystems is weird and fascinating.
My opinion on cmake is that (for certain domains) it's the best there is, and that's sad.
@asmw @whitequark to some extent, cmake is a natural consequence of the fact that every platform is almost actively hostile to the idea that 3rd party developers also target other platforms
-
i'm making it sound more complicated than it is, the actual thing boils down to "cmake's dependency resolution algorithm doesn't work for a particular edge case i'm having, so i'm implementing a different one, in cmake script"
but also "dependency resolution algorithm" is basically what a build system is, so,
@whitequark
Having called out to tsort from a GNUmakefile to order library builds, I'm taking emotional damage from this thread. -
What happens if we remove all the abstractions? That will make everything simpler!
-
R relay@relay.infosec.exchange shared this topic