| #! @SHELL@ |
| # autoreconf - remake all Autoconf configure scripts in a directory tree |
| # Copyright (C) 1994 Free Software Foundation, Inc. |
| |
| # This program is free software; you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation; either version 2, or (at your option) |
| # any later version. |
| |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| |
| # You should have received a copy of the GNU General Public License |
| # along with this program; if not, write to the Free Software |
| # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA |
| # 02111-1307, USA. |
| |
| usage="\ |
| Usage: autoreconf [-f] [-h] [--help] [-m dir] [--macrodir=dir] |
| [-l dir] [--localdir=dir] [--force] [--verbose] [--version] |
| [--cygnus] [--foreign] [--gnits] [--gnu] [-i] [--include-deps]" |
| |
| localdir= |
| verbose=no |
| show_version=no |
| force=no |
| automake_mode=--gnu |
| automake_deps= |
| |
| test -z "$AC_MACRODIR" && AC_MACRODIR=@datadir@ |
| |
| while test $# -gt 0; do |
| case "$1" in |
| -h | --help | --h*) |
| echo "$usage"; exit 0 ;; |
| --localdir=* | --l*=* ) |
| localdir="`echo \"${1}\" | sed -e 's/^[^=]*=//'`" |
| shift ;; |
| -l | --localdir | --l*) |
| shift |
| test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } |
| localdir="${1}" |
| shift ;; |
| --macrodir=* | --m*=* ) |
| AC_MACRODIR="`echo \"$1\" | sed -e 's/^[^=]*=//'`" |
| shift ;; |
| -m | --macrodir | --m*) |
| shift |
| test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } |
| AC_MACRODIR="$1" |
| shift ;; |
| --verbose | --verb*) |
| verbose=yes; shift ;; |
| -f | --force) |
| force=yes; shift ;; |
| --version | --vers*) |
| show_version=yes; shift ;; |
| --cygnus | --foreign | --gnits | --gnu) |
| automake_mode=$1; shift ;; |
| --include-deps | -i) |
| automake_deps=$1; shift ;; |
| --) # Stop option processing. |
| shift; break ;; |
| -*) echo "$usage" 1>&2; exit 1 ;; |
| *) break ;; |
| esac |
| done |
| |
| if test $show_version = yes; then |
| version=`sed -n 's/define.AC_ACVERSION.[ ]*\([0-9.]*\).*/\1/p' \ |
| $AC_MACRODIR/acgeneral.m4` |
| echo "Autoconf version $version" |
| exit 0 |
| fi |
| |
| if test $# -ne 0; then |
| echo "$usage" 1>&2; exit 1 |
| fi |
| |
| # The paths to the autoconf and autoheader scripts, at the top of the tree. |
| top_autoconf=`echo $0|sed s%autoreconf%autoconf%` |
| top_autoheader=`echo $0|sed s%autoreconf%autoheader%` |
| |
| # Make a list of directories to process. |
| # The xargs grep filters out Cygnus configure.in files. |
| find . -name configure.in -print | |
| xargs grep -l AC_OUTPUT | |
| sed 's%/configure\.in$%%; s%^./%%' | |
| while read dir; do |
| ( |
| cd $dir || continue |
| |
| case "$dir" in |
| .) dots= ;; |
| *) # A "../" for each directory in /$dir. |
| dots=`echo /$dir|sed 's%/[^/]*%../%g'` ;; |
| esac |
| |
| case "$0" in |
| /*) autoconf=$top_autoconf; autoheader=$top_autoheader ;; |
| */*) autoconf=$dots$top_autoconf; autoheader=$dots$top_autoheader ;; |
| *) autoconf=$top_autoconf; autoheader=$top_autoheader ;; |
| esac |
| |
| case "$AC_MACRODIR" in |
| /*) macrodir_opt="--macrodir=$AC_MACRODIR" ;; |
| *) macrodir_opt="--macrodir=$dots$AC_MACRODIR" ;; |
| esac |
| |
| case "$localdir" in |
| "") localdir_opt= |
| aclocal=aclocal.m4 ;; |
| /*) localdir_opt="--localdir=$localdir" |
| aclocal=$localdir/aclocal.m4 ;; |
| *) localdir_opt="--localdir=$dots$localdir" |
| aclocal=$dots$localdir/aclocal.m4 ;; |
| esac |
| |
| # Regenerate aclocal.m4 if necessary. FIXME: if aclocal searches |
| # nonstandard directories, we need to deal with that here. The |
| # easiest way is to move this info into configure.in. |
| run_aclocal=no |
| if test -f "$aclocal" && |
| grep 'generated automatically by aclocal' $aclocal > /dev/null |
| then |
| run_aclocal=yes |
| else |
| if test -f `echo $aclocal | sed 's,/[^/]*,,;s,^$,.,'`/acinclude.m4 |
| then |
| run_aclocal=yes |
| fi |
| fi |
| if test $run_aclocal = yes |
| then |
| if test $force = no && |
| ls -lt configure.in $aclocal \ |
| `echo $aclocal | sed 's,/[^/]*,,;s,^$,.,'`/acinclude.m4 | |
| sed 1q | |
| grep 'aclocal\.m4$' > /dev/null |
| then |
| : |
| else |
| test $verbose = yes && echo running aclocal in $dir, creating $aclocal |
| aclocal --output=$aclocal -I `echo $aclocal | sed 's,/[^/]*,,;s,^$,.,'` |
| fi |
| fi |
| |
| # Re-run automake if required. Assumes that there is a Makefile.am |
| # in the topmost directory. |
| if test -f Makefile.am |
| then |
| amforce= |
| test $force = no && amforce=--no-force |
| test $verbose = yes && echo running automake`test x"$amforce" = x || echo " ($amforce)"` in $dir |
| automake $amforce $automake_mode $automake_deps |
| fi |
| |
| test ! -f $aclocal && aclocal= |
| |
| if test $force = no && test -f configure && |
| ls -lt configure configure.in $aclocal | sed 1q | |
| grep 'configure$' > /dev/null |
| then |
| : |
| else |
| test $verbose = yes && echo running autoconf in $dir |
| $autoconf $macrodir_opt $localdir_opt |
| fi |
| |
| if grep 'A[CM]_CONFIG_HEADER' configure.in >/dev/null; then |
| templates=`sed -n '/A[CM]_CONFIG_HEADER/ { |
| s%[^#]*A[CM]_CONFIG_HEADER[ ]*(\([^)]*\).*%\1% |
| p |
| q |
| }' configure.in` |
| tcount=`set -- $templates; echo $#` |
| template=`set -- $templates; echo $1 | sed ' |
| s/.*:// |
| t colon |
| s/$/.in/ |
| : colon |
| s/:.*// |
| '` |
| stamp=`echo $template | sed 's,/[^/]*$,,;s,^$,.,`/stamp-h`test "$tcount" -gt 1 && echo "$tcount"`.in |
| if test ! -f "$template" || grep autoheader "$template" >/dev/null; then |
| if test $force = no && test -f $template && |
| ls -lt $template configure.in $aclocal $stamp 2>/dev/null \ |
| `echo $localdir_opt | sed 's/--localdir=// |
| s%\(.\)$%\1/%'`acconfig.h | |
| sed 1q | egrep "$template$|$stamp$" > /dev/null |
| then |
| : |
| else |
| test $verbose = yes && echo running autoheader in $dir |
| $autoheader $macrodir_opt $localdir_opt && |
| { test $verbose != yes || echo touching $stamp; } && |
| touch $stamp |
| fi |
| fi |
| fi |
| ) |
| done |