Re: [PATCH] make: add INSTALL_STRIP variable
From: Đoàn Trần Công Danh <hidden>
Date: 2021-08-21 02:13:22
On 2021-08-20 11:16:37-0700, Junio C Hamano [off-list ref] wrote:
Đoàn Trần Công Danh [off-list ref] writes:quoted
quoted
install: all +ifdef INSTALL_STRIP + $(MAKE) strip +endifI believe it's better to write like this: ----- 8< ------ ifdef INSTALL_STRIP install: strip endif install: all .... ---- >8------- IOW, install depends on strip, not install invoke strip. I think it would work better for: make install stripI think you meant "it would work better than 'make install strip'", and if so, I tend to agree. With echo INSTALL_STRIP=YesPlease >>config.mak either Bagas's or your "before installing, make sure we strip" change lets make install just work without "strip" given on the command line. If users with such a config.mak type "make install strip", it will make the recipe for "install" wait until "strip" is done, which is what we want, but "strip" on the command line for them is redundant, and there is no way for them to install unstripped binaries, which may be a bit of downside. But for those who do not always want to use INSTALL_STRIP, as Dscho said after I mentioned the "make variable" thing, we probably a wrong thing when they say "make -j strip install", as there is nothing to make recipe for "install" to wait for "strip", so it is not a fully satisfactory solution.
In that case, we can use this construct (since we depends on GNU Make, anyway). ---- 8< ------ ifneq ($(filter install,$(MAKECMDGOALS)),) ifneq ($(filter strip,$(MAKECMDGOALS)),) install: strip endif endif ---- >8 ----- MAKECMDGOALS is available from at least GNU Make 3.75.1 in 1997. Anyway, maybe it's only me, but I think people may want to install first, then strip later for debug mapping.
I think we want two things:
(1) if a user says "make [-j] strip install", make sure "install"
won't start before "strip" finishes;
(2) if a user wants to always install stripped binary, allow some
make variable in config.mak so that "make install" would do
that without an explicit "strip".
Of course, if a user does not have (2) configured, "make install"
should install unstripped binaries, but that goes without saying.
And after thinking it like this, perhaps a new "install-stripped"
target that runs "strip" and then "install" as originally proposed
in the thread that triggered this discussion may be the simplest
approach. We can control the optional dependency between "strip"
and "install", those who want to install stripped binary can use
"install-stripped" instead of "install", and they can on-demand
choose to install unstripped binary (which was a potential downside
of the "make variable" approach under discussion here).
Thanks.-- Danh