summaryrefslogtreecommitdiff
path: root/shave.in
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2009-03-13 15:48:40 -0700
committerEric Anholt <eric@anholt.net>2009-03-13 16:15:44 -0700
commitd9dbdb325543bd747cd1bfb3e1142ea6daf2b637 (patch)
treea9b1b7f31a834066615ca376a3809b56a111a184 /shave.in
parentc3a82106a1a1a94c9e1e465c7dc0d828c1cbf50d (diff)
Add shave support, enabled by default.
This cuts down build system noise so that warnings are more visible. The old style output can be reenabled for build system debugging using "make V=1", or --disable-shave at configure time.
Diffstat (limited to 'shave.in')
-rw-r--r--shave.in76
1 files changed, 76 insertions, 0 deletions
diff --git a/shave.in b/shave.in
new file mode 100644
index 00000000..174641e9
--- /dev/null
+++ b/shave.in
@@ -0,0 +1,76 @@
+#!/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 "
+ ;;
+*,*)
+ # 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