Still some hair left
I’ve been asked to give more input on make V=1
Vs. –disable-shave
, so here it is: once again, before shipping your package with shave enabled by default, there is something crucial to understand: make V=1
(when having configured your package with –enable-shave
) is NOT equivalent to no shave at all (ie –disable-shave
). This is because the shave m4 macro is setting MAKEFLAGS=-s
in every single Makefile. This means that make won’t print the commands as is used to, and that the only way to print something on the screen is to echo it. It’s precisely what the shave wrappers do, they echo the CC/CXX and LIBTOOL commands when V=1
. So in short custom rules and a few automake commands won’t be displayed with make V=1
.
That said, it’s possible to craft a rule that would display the command with shaved enabled and make V=1
. The following rule:
lib-file2.h: Makefilewould become:
$(SHAVE_GEN)echo "#define FOO_DEFINE 0xbabe" > lib-file2.h
lib-file2.h: Makefilewhich is quite ugly, to say the least. (if you find a smarter way, please enlighten me!).
@cmd='echo "#define FOO_DEFINE 0xbabe" > lib-file2.h'; <br />if test x"$$V" = x1; then echo $$cmd; fi
$(SHAVE_GEN)echo "#define FOO_DEFINE 0xbabe" > lib-file2.h
On the development side, shave is slowly becoming more mature:
- Thanks to Jan Schmidt, shave works with non GNU
sed
andecho
that do not support-n
. It now works on Solaris, hopefully on BSDs and various Unixes as well (not tested though). SHAVE_INIT
has a new, optional, parameter which empowers the programmer to define shave’s default behaviour (when./configure
is run without shave any related option): eitherenable
ordisable
. ie.SHAVE_INIT([autootols], [enable])
will instruct shave to find its wrapper scripts in the autotools directory and that running./configure
will actually enable the beast. SHAVE_INIT without parameters at all is supposed to mean that the wrapper scripts are in$top_builddir
and that./configure
will not enable shave without the–enable-shave
option.- however, shave has been reported to fail miserably with scratchbox.