diff --git a/build/autotools/shave-libtool.in b/build/autotools/shave-libtool.in index 02de5adea..1f3a720c1 100644 --- a/build/autotools/shave-libtool.in +++ b/build/autotools/shave-libtool.in @@ -5,11 +5,10 @@ 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##'` + last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_\-\.]*_la-##'` } # the real libtool to use @@ -27,7 +26,7 @@ while test "$#" -gt 0; do case $opt in --mode=*) - mode=`echo "X$opt" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` + mode=`echo $opt | $SED -e 's/[-_a-zA-Z0-9]*=//'` preserved_args="$preserved_args $opt" ;; -o) diff --git a/build/autotools/shave.in b/build/autotools/shave.in index 5098f6f15..174641e9b 100644 --- a/build/autotools/shave.in +++ b/build/autotools/shave.in @@ -5,11 +5,10 @@ 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##'` + last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_\-\.]*_la-##'` } # the tool to wrap (cc, cxx, ar, ranlib, ..) @@ -28,7 +27,7 @@ while test "$#" -gt 0; do case $opt in --shave-mode=*) - mode=`echo "X$opt" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` + mode=`echo $opt | $SED -e 's/[-_a-zA-Z0-9]*=//'` ;; -o) lt_output="$1" @@ -41,17 +40,24 @@ while test "$#" -gt 0; do done # mode=link is handled in the libtool wrapper -case "$mode" in -compile) - Q=" CC " - ;; -link) +case "$mode,$tool" in +link,*) pass_through=1 ;; -*) - # no "libtool" mode has been given, we are called by the Makefile: - # -> assume compilation - mode=compile +*,cxx) + Q=" CXX " + ;; +*,cc) + Q=" CC " + ;; +*,fc) + Q=" FC " + ;; +*,f77) + Q=" F77 " + ;; +*,*) + # should not happen Q=" CC " ;; esac diff --git a/build/autotools/shave.m4 b/build/autotools/shave.m4 index 54482db5d..0c2c9f5a0 100644 --- a/build/autotools/shave.m4 +++ b/build/autotools/shave.m4 @@ -1,36 +1,73 @@ dnl Make automake/libtool output more friendly to humans dnl -dnl SHAVE_INIT([shavedir]) +dnl SHAVE_INIT([shavedir],[default_mode]) dnl -dnl shavedir: the directory where the shave script is, it defaults to +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 rewrite CC and +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_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 -AC_SUBST(SHAVE_SAVED_CC) -CC="\$(SHELL) \$(shavedir)/shave cc '\$(SHAVE_SAVED_CC)'" -AC_SUBST(CC) +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 + 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}" + AC_SUBST(CC) + AC_SUBST(CXX) + AC_SUBST(FC) + AC_SUBST(F77) + + V=@ + else + V=1 + fi + Q='$(V:1=)' + AC_SUBST(V) + AC_SUBST(Q) ]) diff --git a/configure.ac b/configure.ac index 57b9278d0..fdb579c1d 100644 --- a/configure.ac +++ b/configure.ac @@ -660,7 +660,7 @@ ALL_LINGUAS="" AM_GLIB_GNU_GETTEXT GLIB_DEFINE_LOCALEDIR(LOCALEDIR) -SHAVE_INIT([build/autotools]) +SHAVE_INIT([build/autotools], [enable]) AC_CONFIG_FILES([ Makefile