diff options
-rw-r--r-- | m4/shave.m4 | 50 | ||||
-rw-r--r-- | shave-libtool.in | 2 | ||||
-rw-r--r-- | shave.in | 8 |
3 files changed, 35 insertions, 25 deletions
diff --git a/m4/shave.m4 b/m4/shave.m4 index 44d3908b..0c2c9f5a 100644 --- a/m4/shave.m4 +++ b/m4/shave.m4 @@ -1,9 +1,12 @@ 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 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 @@ -11,19 +14,26 @@ 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], +AC_DEFUN([_SHAVE_ARG_ENABLE], [ - dnl enable/disable shave AC_ARG_ENABLE([shave], - AS_HELP_STRING([--enable-shave], - [use shave to make the build pretty [[default=no]]]),, - [enable_shave=no]) + 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='$(top_builddir)'], - [shavedir='$(top_builddir)'/$1]) + [shavedir="$ac_pwd"], + [shavedir="$ac_pwd/$1"]) AC_SUBST(shavedir) dnl make is now quiet @@ -35,19 +45,22 @@ AC_DEFUN([SHAVE_INIT], dnl substitute libtool SHAVE_SAVED_LIBTOOL=$LIBTOOL - AC_SUBST(SHAVE_SAVED_LIBTOOL) - LIBTOOL="\$(SHELL) \$(shavedir)/shave-libtool '\$(SHAVE_SAVED_LIBTOOL)'" + LIBTOOL="${SHELL} ${shavedir}/shave-libtool '${SHAVE_SAVED_LIBTOOL}'" AC_SUBST(LIBTOOL) dnl substitute cc/cxx 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)'" + 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 @@ -58,12 +71,3 @@ AC_DEFUN([SHAVE_INIT], AC_SUBST(Q) ]) -AC_DEFUN([SHAVE_OUTPUT], -[ - if test x"$enable_shave" = xyes; then - dnl small workaround to fix libtool itself - dnl it's shokingly hard to find a better way, really! wtf... - test -f $srcdir/libtool && (tmpfile=`mktemp` && cat $srcdir/libtool | sed "s,^LTCC=.*$,LTCC=\"$SHELL $ac_pwd/shave cc $SHAVE_SAVED_CC\"," > $tmpfile && mv $tmpfile $srcdir/libtool) - fi - -]) diff --git a/shave-libtool.in b/shave-libtool.in index 30e6f138..1f3a720c 100644 --- a/shave-libtool.in +++ b/shave-libtool.in @@ -8,7 +8,7 @@ fi lt_unmangle () { - last_result=`echo $1 | $SED -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 @@ -8,7 +8,7 @@ fi lt_unmangle () { - last_result=`echo $1 | $SED -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, ..) @@ -50,6 +50,12 @@ link,*) *,cc) Q=" CC " ;; +*,fc) + Q=" FC " + ;; +*,f77) + Q=" F77 " + ;; *,*) # should not happen Q=" CC " |