On Tuesday, March 18th, 2025 at 12:03 PM, Greg A. Woods <woods(a)robohack.ca> wrote:
At Tue, 18 Mar 2025 16:39:45 +0000, "Ronald
Natalie" ron(a)ronnatalie.com wrote:
Subject: [TUHS] Re: "Imake: an obsolete build tool" -- anybody got this?
We eventually switched
to CMAKE.
Yikes. That's not what I would call an improvement!
I think CMake is about as anti-Unix (in philosophy) as you can get.
At least Imake had a clear design and simple basic concept, and in its
basic form it could be highly performant. It was simple tool for using
other tools in an innovative way. As used by X11 though it was part of
what might best be described as a dog's breakfast, but that's only
really because the X11 macros kind of grew by committee and had an
extraordinary variety of target systems and source code to contend with.
CMake has ended up with what I would consider an even uglier and more
unpalatable dog's breakfast. It also abuses other tools, requires hours
to compile on otherwise usable platforms, and wastes CPU and memory like
nothing else.
--
Greg A. Woods gwoods(a)acm.org
Kelowna, BC +1 250 762-7675 RoboHack woods(a)robohack.ca
Planix, Inc. woods(a)planix.com Avoncote Farms woods(a)avoncote.ca
CMake does seem to be losing some ground to the meson/ninja combination
these days. I haven't used any of these beyond autotools, but the most
complex stuff I've built has only depended on Xlib and OpenGL. I just keep an
LDFLAGS_<platform> up at the top of my makefiles these days and if I need to
target such platform, add $(LDFLAGS_<platform>) to my main LDFLAGS definition.
Same with CFLAGS and other such variables. Maybe not tenable for a huge
sprawling project, but in my case, I'd much rather edit a line or two of a
Makefile at build time than maintain the whole added dependency of some
specialized build system. Admittedly there are simple little projects I see
sometimes with something like autotools draped over the top and it feels like
a solution in want of a problem. I put more effort into ensuring things like
pkg-config are happy than I would just adding -L/opt/lib to an LDFLAGS
variable...
- Matt G.