Update shave

This update fixes a few issues:
  - the use of shave with mingw32 bash on windows,
  - fix the unmangling of libtool names
  - fix build on solaris
  - add an --enable/disable-shave configure option (while still
    defaulting to enabled)
This commit is contained in:
Damien Lespiau 2009-03-11 18:39:10 +00:00
parent d88bc30b87
commit 168499742a
4 changed files with 82 additions and 40 deletions

View File

@ -5,11 +5,10 @@ SED=@SED@
if test -z "$SED" ; then if test -z "$SED" ; then
SED=sed SED=sed
fi fi
Xsed="$SED -e s/^X//"
lt_unmangle () 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 # the real libtool to use
@ -27,7 +26,7 @@ while test "$#" -gt 0; do
case $opt in case $opt in
--mode=*) --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" preserved_args="$preserved_args $opt"
;; ;;
-o) -o)

View File

@ -5,11 +5,10 @@ SED=@SED@
if test -z "$SED" ; then if test -z "$SED" ; then
SED=sed SED=sed
fi fi
Xsed="$SED -e s/^X//"
lt_unmangle () 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, ..) # the tool to wrap (cc, cxx, ar, ranlib, ..)
@ -28,7 +27,7 @@ while test "$#" -gt 0; do
case $opt in case $opt in
--shave-mode=*) --shave-mode=*)
mode=`echo "X$opt" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` mode=`echo $opt | $SED -e 's/[-_a-zA-Z0-9]*=//'`
;; ;;
-o) -o)
lt_output="$1" lt_output="$1"
@ -41,17 +40,24 @@ while test "$#" -gt 0; do
done done
# mode=link is handled in the libtool wrapper # mode=link is handled in the libtool wrapper
case "$mode" in case "$mode,$tool" in
compile) link,*)
Q=" CC "
;;
link)
pass_through=1 pass_through=1
;; ;;
*) *,cxx)
# no "libtool" mode has been given, we are called by the Makefile: Q=" CXX "
# -> assume compilation ;;
mode=compile *,cc)
Q=" CC "
;;
*,fc)
Q=" FC "
;;
*,f77)
Q=" F77 "
;;
*,*)
# should not happen
Q=" CC " Q=" CC "
;; ;;
esac esac

View File

@ -1,36 +1,73 @@
dnl Make automake/libtool output more friendly to humans dnl Make automake/libtool output more friendly to humans
dnl dnl
dnl SHAVE_INIT([shavedir]) dnl SHAVE_INIT([shavedir],[default_mode])
dnl 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 $(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
dnl * SHAVE_INIT should be called late in your configure.(ac|in) file (just 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 LIBTOOL, you don't want the configure tests to have these variables
dnl re-defined. dnl re-defined.
dnl * This macro requires GNU make's -s option. dnl * This macro requires GNU make's -s option.
AC_DEFUN([SHAVE_INIT], [ AC_DEFUN([_SHAVE_ARG_ENABLE],
dnl where can we find the shave scripts? [
m4_if([$1],, AC_ARG_ENABLE([shave],
[shavedir='$(top_builddir)'], AS_HELP_STRING(
[shavedir='$(top_builddir)'/$1]) [--enable-shave],
AC_SUBST(shavedir) [use shave to make the build pretty [[default=$1]]]),,
dnl make is now quiet [enable_shave=$1]
AC_SUBST([MAKEFLAGS], [-s]) )
AC_SUBST([AM_MAKEFLAGS], ['`test -z $V && echo -s`']) ])
dnl we need sed
AC_CHECK_PROG(SED,sed,sed,false) AC_DEFUN([SHAVE_INIT],
dnl substitute libtool [
SHAVE_SAVED_LIBTOOL=$LIBTOOL dnl you can tweak the default value of enable_shave
AC_SUBST(SHAVE_SAVED_LIBTOOL) m4_if([$2], [enable], [_SHAVE_ARG_ENABLE(yes)], [_SHAVE_ARG_ENABLE(no)])
LIBTOOL="\$(SHELL) \$(shavedir)/shave-libtool '\$(SHAVE_SAVED_LIBTOOL)'"
AC_SUBST(LIBTOOL) if test x"$enable_shave" = xyes; then
dnl substitute cc dnl where can we find the shave scripts?
SHAVE_SAVED_CC=$CC m4_if([$1],,
AC_SUBST(SHAVE_SAVED_CC) [shavedir="$ac_pwd"],
CC="\$(SHELL) \$(shavedir)/shave cc '\$(SHAVE_SAVED_CC)'" [shavedir="$ac_pwd/$1"])
AC_SUBST(CC) 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)
]) ])

View File

@ -660,7 +660,7 @@ ALL_LINGUAS=""
AM_GLIB_GNU_GETTEXT AM_GLIB_GNU_GETTEXT
GLIB_DEFINE_LOCALEDIR(LOCALEDIR) GLIB_DEFINE_LOCALEDIR(LOCALEDIR)
SHAVE_INIT([build/autotools]) SHAVE_INIT([build/autotools], [enable])
AC_CONFIG_FILES([ AC_CONFIG_FILES([
Makefile Makefile