forked from rsyslog/rsyslog
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
shave tranforms the verbose autotools output into a pretty Kbuild-like one which makes it easier to spot warnings. See also http://damien.lespiau.name/blog/2009/02/18/shave-making-the-autotools-output-sane/ git clone git://git.lespiau.name/shave By default, shave is disabled and you have to explicitly enable it via ./configure --enable-shave. Signed-off-by: Rainer Gerhards <[email protected]>
- Loading branch information
Showing
5 changed files
with
315 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -35,3 +35,5 @@ log | |
logfile | ||
debug | ||
core.* | ||
shave | ||
shave-libtool |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
dnl Make automake/libtool output more friendly to humans | ||
dnl | ||
dnl Copyright (c) 2009, Damien Lespiau <[email protected]> | ||
dnl | ||
dnl Permission is hereby granted, free of charge, to any person | ||
dnl obtaining a copy of this software and associated documentation | ||
dnl files (the "Software"), to deal in the Software without | ||
dnl restriction, including without limitation the rights to use, | ||
dnl copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
dnl copies of the Software, and to permit persons to whom the | ||
dnl Software is furnished to do so, subject to the following | ||
dnl conditions: | ||
dnl | ||
dnl The above copyright notice and this permission notice shall be | ||
dnl included in all copies or substantial portions of the Software. | ||
dnl | ||
dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
dnl EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||
dnl OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
dnl NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||
dnl HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | ||
dnl WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
dnl OTHER DEALINGS IN THE SOFTWARE. | ||
dnl | ||
dnl SHAVE_INIT([shavedir],[default_mode]) | ||
dnl | ||
dnl shavedir: the directory where the shave scripts are, it defaults to | ||
dnl $(top_builddir) | ||
dnl default_mode: (enable|disable) default shave mode. This parameter | ||
dnl controls shave's behaviour when no option has been | ||
dnl given to configure. It defaults to disable. | ||
dnl | ||
dnl * SHAVE_INIT should be called late in your configure.(ac|in) file (just | ||
dnl before AC_CONFIG_FILE/AC_OUTPUT is perfect. This macro rewrites CC and | ||
dnl LIBTOOL, you don't want the configure tests to have these variables | ||
dnl re-defined. | ||
dnl * This macro requires GNU make's -s option. | ||
|
||
AC_DEFUN([_SHAVE_ARG_ENABLE], | ||
[ | ||
AC_ARG_ENABLE([shave], | ||
AS_HELP_STRING( | ||
[--enable-shave], | ||
[use shave to make the build pretty [[default=$1]]]),, | ||
[enable_shave=$1] | ||
) | ||
]) | ||
|
||
AC_DEFUN([SHAVE_INIT], | ||
[ | ||
dnl you can tweak the default value of enable_shave | ||
m4_if([$2], [enable], [_SHAVE_ARG_ENABLE(yes)], [_SHAVE_ARG_ENABLE(no)]) | ||
if test x"$enable_shave" = xyes; then | ||
dnl where can we find the shave scripts? | ||
m4_if([$1],, | ||
[shavedir="$ac_pwd"], | ||
[shavedir="$ac_pwd/$1"]) | ||
AC_SUBST(shavedir) | ||
dnl make is now quiet | ||
AC_SUBST([MAKEFLAGS], [-s]) | ||
AC_SUBST([AM_MAKEFLAGS], ['`test -z $V && echo -s`']) | ||
dnl we need sed | ||
AC_CHECK_PROG(SED,sed,sed,false) | ||
dnl substitute libtool | ||
SHAVE_SAVED_LIBTOOL=$LIBTOOL | ||
LIBTOOL="${SHELL} ${shavedir}/shave-libtool '${SHAVE_SAVED_LIBTOOL}'" | ||
AC_SUBST(LIBTOOL) | ||
dnl substitute cc/cxx | ||
SHAVE_SAVED_CC=$CC | ||
SHAVE_SAVED_CXX=$CXX | ||
SHAVE_SAVED_FC=$FC | ||
SHAVE_SAVED_F77=$F77 | ||
SHAVE_SAVED_OBJC=$OBJC | ||
CC="${SHELL} ${shavedir}/shave cc ${SHAVE_SAVED_CC}" | ||
CXX="${SHELL} ${shavedir}/shave cxx ${SHAVE_SAVED_CXX}" | ||
FC="${SHELL} ${shavedir}/shave fc ${SHAVE_SAVED_FC}" | ||
F77="${SHELL} ${shavedir}/shave f77 ${SHAVE_SAVED_F77}" | ||
OBJC="${SHELL} ${shavedir}/shave objc ${SHAVE_SAVED_OBJC}" | ||
AC_SUBST(CC) | ||
AC_SUBST(CXX) | ||
AC_SUBST(FC) | ||
AC_SUBST(F77) | ||
AC_SUBST(OBJC) | ||
V=@ | ||
else | ||
V=1 | ||
fi | ||
Q='$(V:1=)' | ||
AC_SUBST(V) | ||
AC_SUBST(Q) | ||
]) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
#!/bin/sh | ||
# | ||
# Copyright (c) 2009, Damien Lespiau <[email protected]> | ||
# | ||
# Permission is hereby granted, free of charge, to any person | ||
# obtaining a copy of this software and associated documentation | ||
# files (the "Software"), to deal in the Software without | ||
# restriction, including without limitation the rights to use, | ||
# copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
# copies of the Software, and to permit persons to whom the | ||
# Software is furnished to do so, subject to the following | ||
# conditions: | ||
# | ||
# The above copyright notice and this permission notice shall be | ||
# included in all copies or substantial portions of the Software. | ||
# | ||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | ||
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
# OTHER DEALINGS IN THE SOFTWARE. | ||
|
||
# we need sed | ||
SED=@SED@ | ||
if test -z "$SED" ; then | ||
SED=sed | ||
fi | ||
|
||
lt_unmangle () | ||
{ | ||
last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_\-\.]*_la-##'` | ||
} | ||
|
||
# the real libtool to use | ||
LIBTOOL="$1" | ||
shift | ||
|
||
# if 1, don't print anything, the underlaying wrapper will do it | ||
pass_though=0 | ||
|
||
# scan the arguments, keep the right ones for libtool, and discover the mode | ||
preserved_args= | ||
|
||
# have we seen the --tag option of libtool in the command line ? | ||
tag_seen=0 | ||
|
||
while test "$#" -gt 0; do | ||
opt="$1" | ||
shift | ||
|
||
case $opt in | ||
--mode=*) | ||
mode=`echo $opt | $SED -e 's/[-_a-zA-Z0-9]*=//'` | ||
preserved_args="$preserved_args $opt" | ||
;; | ||
-o) | ||
lt_output="$1" | ||
preserved_args="$preserved_args $opt" | ||
;; | ||
--tag=*) | ||
tag_seen=1 | ||
preserved_args="$preserved_args $opt" | ||
;; | ||
*) | ||
preserved_args="$preserved_args $opt" | ||
;; | ||
esac | ||
done | ||
|
||
case "$mode" in | ||
compile) | ||
# shave will be called and print the actual CC/CXX/LINK line | ||
preserved_args="$preserved_args --shave-mode=$mode" | ||
pass_though=1 | ||
;; | ||
link) | ||
preserved_args="$preserved_args --shave-mode=$mode" | ||
Q=" LINK " | ||
;; | ||
*) | ||
# let's u | ||
# echo "*** libtool: Unimplemented mode: $mode, fill a bug report" | ||
;; | ||
esac | ||
|
||
lt_unmangle "$lt_output" | ||
output=$last_result | ||
|
||
# automake does not add a --tag switch to its libtool invocation when | ||
# assembling a .s file and rely on libtool to infer the right action based | ||
# on the compiler name. As shave is using CC to hook a wrapper, libtool gets | ||
# confused. Let's detect these cases and add a --tag=CC option. | ||
tag="" | ||
if test $tag_seen -eq 0 -a x"$mode" = xcompile; then | ||
tag="--tag=CC" | ||
fi | ||
|
||
if test -z $V; then | ||
if test $pass_though -eq 0; then | ||
echo "$Q$output" | ||
fi | ||
$LIBTOOL --silent $tag $preserved_args | ||
else | ||
echo $LIBTOOL $tag $preserved_args | ||
$LIBTOOL $tag $preserved_args | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
#!/bin/sh | ||
# | ||
# Copyright (c) 2009, Damien Lespiau <[email protected]> | ||
# | ||
# Permission is hereby granted, free of charge, to any person | ||
# obtaining a copy of this software and associated documentation | ||
# files (the "Software"), to deal in the Software without | ||
# restriction, including without limitation the rights to use, | ||
# copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
# copies of the Software, and to permit persons to whom the | ||
# Software is furnished to do so, subject to the following | ||
# conditions: | ||
# | ||
# The above copyright notice and this permission notice shall be | ||
# included in all copies or substantial portions of the Software. | ||
# | ||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | ||
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
# OTHER DEALINGS IN THE SOFTWARE. | ||
|
||
# we need sed | ||
SED=@SED@ | ||
if test -z "$SED" ; then | ||
SED=sed | ||
fi | ||
|
||
lt_unmangle () | ||
{ | ||
last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_\-\.]*_la-##'` | ||
} | ||
|
||
# the tool to wrap (cc, cxx, ar, ranlib, ..) | ||
tool="$1" | ||
shift | ||
|
||
# the reel tool (to call) | ||
REEL_TOOL="$1" | ||
shift | ||
|
||
pass_through=0 | ||
preserved_args= | ||
while test "$#" -gt 0; do | ||
opt="$1" | ||
shift | ||
|
||
case $opt in | ||
--shave-mode=*) | ||
mode=`echo $opt | $SED -e 's/[-_a-zA-Z0-9]*=//'` | ||
;; | ||
-o) | ||
lt_output="$1" | ||
preserved_args="$preserved_args $opt" | ||
;; | ||
*) | ||
preserved_args="$preserved_args $opt" | ||
;; | ||
esac | ||
done | ||
|
||
# mode=link is handled in the libtool wrapper | ||
case "$mode,$tool" in | ||
link,*) | ||
pass_through=1 | ||
;; | ||
*,cxx) | ||
Q=" CXX " | ||
;; | ||
*,cc) | ||
Q=" CC " | ||
;; | ||
*,fc) | ||
Q=" FC " | ||
;; | ||
*,f77) | ||
Q=" F77 " | ||
;; | ||
*,objc) | ||
Q=" OBJC " | ||
;; | ||
*,*) | ||
# should not happen | ||
Q=" CC " | ||
;; | ||
esac | ||
|
||
lt_unmangle "$lt_output" | ||
output=$last_result | ||
|
||
if test -z $V; then | ||
if test $pass_through -eq 0; then | ||
echo "$Q$output" | ||
fi | ||
$REEL_TOOL $preserved_args | ||
else | ||
echo $REEL_TOOL $preserved_args | ||
$REEL_TOOL $preserved_args | ||
fi |