Re: [PATCH 1/2] Makefile: use order-only prereq for UNIT_TEST_BIN
- From
Jeff King <peff@peff.net>
- Date
- Jan 30, 2024, 05:21 UTC
- Message-ID
- <20240130052104.GA154684@coredump.intra.peff.net>
- In-Reply-To
- <20240129202201.GA9612@szeder.dev>
On Mon, Jan 29, 2024 at 09:22:01PM +0100, SZEDER Gábor wrote:
Show 15 quoted lines
> > If it is a problem, there are two alternatives: > > > > - we can just "mkdir -p" in the recipe to build the individual > > binaries. This will mean some redundant "mkdir" calls, but only when > > actually invoking the compiler. > > > > - we could stop making the directory on the fly, and just add it with > > a .gitignore of "*". This would work fine, but might be awkward when > > moving back and forth in history. > > A third alternative is to use $(call mkdir_p_parent_template) in the > recipe and get rid of the thus unnecessary UNIT_TEST_BIN dependency > and target. It will only run mkdir when needed, and it's a well > established pattern in our Makefile, so you won't have to spend a > paragraph or two arguing about potential problems with GNU-isms :)
Thanks, I somehow didn't know about that (and didn't find it when grepping around for similar cases, probably because "mkdir -p" no longer appears in those cases ;) ).
I agree it's a better solution here. I'll send a v2 in a moment with that.
(Ironically, that template requires "call" which is in make 3.81, but the commit adding it didn't discuss that at all).
> On a related note, 'make clean' doesn't remove this 't/unit-tests/bin' > directory.
Not the end of the world, as we do clean out the contents, so "ls-files -o" would not mention any leftover cruft. But I agree that we should strive for "make clean" to be the opposite of "make" as much as possible.
I'll add in a patch to v2.
-Peff