5 ms·
GNU Make Standard Library v1.2.2 released
- jgrahamc 3y agoIf you're unfamiliar with this then https://gmsl.jgc.org/ https://gmsl.jgc.org/ is helpful.
- chrismorgan 3y agoWhy is it split into two files, gmsl and __gmsl?
- jgrahamc 3y agoSo that you can do include gmsl as much as you want in nested Makefiles and you won't get problems with redefinitions. The top level gmsl decides whether to include __gmsl. It could have been done as a single file but I wanted to minimize the parse time on large make processes to you include a small file that can quickly decide whether the larger one is needed.
- chrismorgan 3y agoWell, I guess that’s a reason, at least. I’m intensely sceptical about its value, though, when the difference is less than a thousand lines: a subfile containing the usual ifndef gating and a million `a := b` lines adds less than 0.05s on each subsequent inclusion, on my laptop (the first, about 0.15s.) 10,000× `include gmsl`: around 0.1s. 10,000× on including a single-file modification: around 0.7s. Cull all the blank lines and comments and merge continued lines, 197 lines left (excluding license information, which I will acknowledge has some purpose) and it’s around 0.28s. I haven’t ever used makefiles on large projects, but the performance difference feels like it should be completely negligible.
- jgrahamc 3y agoAt the time I wrote the initial GMSL I was particularly focused on parse times for Makefiles because they are a large factor in the "null makes" (i.e. you type 'make' and nothing needs to be done). It's probably an over optimization and I guess I could merge it into a single file.
- bryancoxwell 3y agoI had no idea there was a Make standard library. Very cool, looking forward to using this in future projects.
- jgrahamc 3y agoThere wasn't so I made it.
- nescioquid 3y agoYour library is called 'GNU Make Standard Library', but it doesn't look like it is at all affiliated with the GNU project. I don't know what GNU/FSF's position on this sort of thing is, but if your project isn't part of the GNU project, I wouldn't go around calling it "GNU Make Standard Library". From https://www.gnu.org/help/evaluation.html https://www.gnu.org/help/evaluation.html: > What it means for a program to be a GNU package > > Making a program GNU software means that its developers and the GNU project agree that “This program is part of the GNU project, released under the aegis of GNU”—and say so in the program.
- jgrahamc 3y agoI never claimed it was a GNU project, I said it was a standard library for GNU Make. And it's been around for 19 years at this point, so I feel like the FSF has had plenty of time to come to me and ask me to change the name.
- yjftsjthsd-h 3y agoBut then it's not really a standard library, is it? A standard library is the set of libraries that's shipped with the language/compiler/interpreter/runtime; it is specifically the batteries that are included. If a library has to be separately added, then by definition it isn't standard. Ex. Boost is a very common C++ library, and people could reasonably argue that it should be folded into the standard library, but it isn't the standard library, and nobody's calling it that except in an informal or joking sense.