[gnome-utils] [build] Use Shave
- From: Emmanuele Bassi <ebassi src gnome org>
- To: svn-commits-list gnome org
- Subject: [gnome-utils] [build] Use Shave
- Date: Sat, 18 Apr 2009 08:25:40 -0400 (EDT)
commit dde8661d7c781c0a77e2dc25258f16c1dcea2086
Author: Emmanuele Bassi <ebassi gnome org>
Date: Sat Apr 18 12:57:07 2009 +0100
[build] Use Shave
Shave is a neat little tool that removes the libtool and gcc incantations
from the build output, making it useful again for spotting warnings and
errors that would otherwise be drowned by the excessive verbosity.
It can be toggled by simply using:
make V=1
instead of the usual 'make'.
---
.gitignore | 3 ++
Makefile.am | 22 +++++++-------
configure.ac | 6 ++++
m4/Makefile.am | 8 +++++
m4/shave-libtool.in | 69 ++++++++++++++++++++++++++++++++++++++++++++
m4/shave.in | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++
m4/shave.m4 | 77 +++++++++++++++++++++++++++++++++++++++++++++++++
7 files changed, 253 insertions(+), 11 deletions(-)
diff --git a/.gitignore b/.gitignore
index 5fae5cd..f0e0b98 100644
--- a/.gitignore
+++ b/.gitignore
@@ -27,6 +27,8 @@ ltmain.sh
/m4/gnome-doc-utils.m4
/m4/gtk-doc.m4
/m4/intltool.m4
+/m4/shave-libtool
+/m4/shave
missing
mkinstalldirs
omf.make
@@ -34,5 +36,6 @@ omf.make
/po/Makefile.in.in
/po/POTFILES
/po/stamp-it
+/po/*.gmo
stamp-h1
xmldocs.make
diff --git a/Makefile.am b/Makefile.am
index 8e931df..a9144b8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -15,20 +15,20 @@
# distuninstallcheck_listfiles = find . -type f -print | grep -v 'scrollkeeper' | grep -v 'omf' | grep -v 'figures'
distuninstallcheck:
@:
-
-distcleancheck_listfiles = find . -type f -print | grep -v 'omf\.out' | grep -v 'legal.xml'
-always_built_SUBDIRS = \
- po \
- logview \
- gsearchtool \
- gnome-dictionary \
- gnome-screenshot \
- baobab
+distcleancheck_listfiles = find . -type f -print | grep -v 'omf\.out' | grep -v 'legal.xml'
-SUBDIRS = $(always_built_SUBDIRS)
+ACLOCAL_AMFLAGS = -I m4
-DIST_SUBDIRS = $(always_built_SUBDIRS)
+SUBDIRS = \
+ m4 \
+ po \
+ baobab \
+ gnome-dictionary \
+ gnome-screenshot \
+ gsearchtool \
+ logview \
+ $(NULL)
EXTRA_DIST = \
omf.make \
diff --git a/configure.ac b/configure.ac
index 787a3ea..f6c0fda 100644
--- a/configure.ac
+++ b/configure.ac
@@ -336,9 +336,15 @@ GTK_DOC_CHECK([1.10])
dnl gnome-doc-utils stuff
GNOME_DOC_INIT
+SHAVE_INIT([m4], [enable])
+
AC_CONFIG_FILES([
Makefile
+ m4/Makefile
+ m4/shave-libtool
+ m4/shave
+
po/Makefile.in
baobab/Makefile
diff --git a/m4/Makefile.am b/m4/Makefile.am
new file mode 100644
index 0000000..fc4900b
--- /dev/null
+++ b/m4/Makefile.am
@@ -0,0 +1,8 @@
+EXTRA_DIST = \
+ shave-libtool.in \
+ shave.in \
+ shave.m4
+
+DISTCLEANFILES = \
+ shave-libtool \
+ shave
diff --git a/m4/shave-libtool.in b/m4/shave-libtool.in
new file mode 100644
index 0000000..1f3a720
--- /dev/null
+++ b/m4/shave-libtool.in
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+# 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=
+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"
+ ;;
+ *)
+ 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
+
+if test -z $V; then
+ if test $pass_though -eq 0; then
+ echo "$Q$output"
+ fi
+ $LIBTOOL --silent $preserved_args
+else
+ echo $LIBTOOL $preserved_args
+ $LIBTOOL $preserved_args
+fi
diff --git a/m4/shave.in b/m4/shave.in
new file mode 100644
index 0000000..5c16f27
--- /dev/null
+++ b/m4/shave.in
@@ -0,0 +1,79 @@
+#!/bin/sh
+
+# 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
diff --git a/m4/shave.m4 b/m4/shave.m4
new file mode 100644
index 0000000..0a3509e
--- /dev/null
+++ b/m4/shave.m4
@@ -0,0 +1,77 @@
+dnl Make automake/libtool output more friendly to humans
+dnl Damien Lespiau <damien lespiau gmail com>
+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)
+])
+
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]