diff options
author | Jan Schmidt <thaytan@noraisin.net> | 2009-02-22 13:42:36 +0000 |
---|---|---|
committer | Jan Schmidt <thaytan@noraisin.net> | 2009-02-22 13:42:36 +0000 |
commit | 157d49bca7492130dfd214cd040c9483240602d2 (patch) | |
tree | 656098092fbf5835e32c73a0888c1775df93e940 | |
parent | 5d7c9cc163b211f5f3a9b8663e055c03bdacb343 (diff) |
Enrol shave files
-rw-r--r-- | Makefile.am | 3 | ||||
-rw-r--r-- | m4/Makefile.am | 3 | ||||
-rw-r--r-- | m4/shave.m4 | 40 | ||||
-rw-r--r-- | shave-libtool.in | 70 | ||||
-rw-r--r-- | shave.in | 70 |
5 files changed, 184 insertions, 2 deletions
diff --git a/Makefile.am b/Makefile.am index 6f7bb27..248e71e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -15,4 +15,5 @@ EXTRA_DIST = \ coverage/coverage-report.pl \ coverage/coverage-report.xsl \ coverage/coverage-report-entry.pl \ - download-translations + download-translations \ + shave.in shave-libtool.in diff --git a/m4/Makefile.am b/m4/Makefile.am index 5649856..fc81022 100644 --- a/m4/Makefile.am +++ b/m4/Makefile.am @@ -35,4 +35,5 @@ EXTRA_DIST = \ gst.m4 \ gtk-doc.m4 \ pkg.m4 \ - check.m4 + check.m4 \ + shave.m4 diff --git a/m4/shave.m4 b/m4/shave.m4 new file mode 100644 index 0000000..5b1f675 --- /dev/null +++ b/m4/shave.m4 @@ -0,0 +1,40 @@ +dnl Make automake/libtool output more friendly to humans +dnl +dnl SHAVE_INIT([shavedir]) +dnl +dnl shavedir: the directory where the shave script is, it defaults to +dnl $(top_builddir) +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 rewrite 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_INIT], [ +dnl where can we find the shave scripts? +m4_if([$1],, + [shavedir='$(top_builddir)'], + [shavedir='$(top_builddir)'/$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 +AC_SUBST(SHAVE_SAVED_LIBTOOL) +LIBTOOL="\$(SHELL) \$(shavedir)/shave-libtool '\$(SHAVE_SAVED_LIBTOOL)'" +AC_SUBST(LIBTOOL) +dnl substitute cc +SHAVE_SAVED_CC=$CC +SHAVE_SAVED_CXX=$CXX +AC_SUBST(SHAVE_SAVED_CC) +AC_SUBST(SHAVE_SAVED_CXX) +CC="\$(SHELL) \$(shavedir)/shave cc '\$(SHAVE_SAVED_CC)'" +CXX="\$(SHELL) \$(shavedir)/shave cxx '\$(SHAVE_SAVED_CXX)'" +AC_SUBST(CC) +AC_SUBST(CXX) +]) + diff --git a/shave-libtool.in b/shave-libtool.in new file mode 100644 index 0000000..8c468e2 --- /dev/null +++ b/shave-libtool.in @@ -0,0 +1,70 @@ +#!/bin/sh + +# we need sed +SED=@SED@ +if test -z "$SED" ; then +SED=sed +fi +Xsed="$SED -e s/^X//" + +lt_unmangle () +{ + last_result=`echo -n X$1 | $Xsed -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 "X$opt" | $Xsed -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/shave.in b/shave.in new file mode 100644 index 0000000..97ff947 --- /dev/null +++ b/shave.in @@ -0,0 +1,70 @@ +#!/bin/sh + +# we need sed +SED=@SED@ +if test -z "$SED" ; then +SED=sed +fi +Xsed="$SED -e s/^X//" + +lt_unmangle () +{ + last_result=`echo -n X$1 | $Xsed -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 "X$opt" | $Xsed -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 + ;; +compile,cxx) + Q=" CXX " + ;; +compile,cc|*,*) + # no "libtool" mode has been given, we are called by the Makefile: + # -> assume compilation + mode=compile + 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 |