1#! @SHELL@ 2# autoreconf - remake all Autoconf configure scripts in a directory tree 3# Copyright (C) 1994 Free Software Foundation, Inc. 4 5# This program is free software; you can redistribute it and/or modify 6# it under the terms of the GNU General Public License as published by 7# the Free Software Foundation; either version 2, or (at your option) 8# any later version. 9 10# This program is distributed in the hope that it will be useful, 11# but WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13# GNU General Public License for more details. 14 15# You should have received a copy of the GNU General Public License 16# along with this program; if not, write to the Free Software 17# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 18# 02111-1307, USA. 19 20usage="\ 21Usage: autoreconf [-f] [-h] [--help] [-m dir] [--macrodir=dir] 22 [-l dir] [--localdir=dir] [--force] [--verbose] [--version] 23 [--cygnus] [--foreign] [--gnits] [--gnu] [-i] [--include-deps]" 24 25localdir= 26verbose=no 27show_version=no 28force=no 29automake_mode=--gnu 30automake_deps= 31 32test -z "$AC_MACRODIR" && AC_MACRODIR=@datadir@ 33 34while test $# -gt 0; do 35 case "$1" in 36 -h | --help | --h*) 37 echo "$usage"; exit 0 ;; 38 --localdir=* | --l*=* ) 39 localdir="`echo \"${1}\" | sed -e 's/^[^=]*=//'`" 40 shift ;; 41 -l | --localdir | --l*) 42 shift 43 test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } 44 localdir="${1}" 45 shift ;; 46 --macrodir=* | --m*=* ) 47 AC_MACRODIR="`echo \"$1\" | sed -e 's/^[^=]*=//'`" 48 shift ;; 49 -m | --macrodir | --m*) 50 shift 51 test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } 52 AC_MACRODIR="$1" 53 shift ;; 54 --verbose | --verb*) 55 verbose=yes; shift ;; 56 -f | --force) 57 force=yes; shift ;; 58 --version | --vers*) 59 show_version=yes; shift ;; 60 --cygnus | --foreign | --gnits | --gnu) 61 automake_mode=$1; shift ;; 62 --include-deps | -i) 63 automake_deps=$1; shift ;; 64 --) # Stop option processing. 65 shift; break ;; 66 -*) echo "$usage" 1>&2; exit 1 ;; 67 *) break ;; 68 esac 69done 70 71if test $show_version = yes; then 72 version=`sed -n 's/define.AC_ACVERSION.[ ]*\([0-9.]*\).*/\1/p' \ 73 $AC_MACRODIR/acgeneral.m4` 74 echo "Autoconf version $version" 75 exit 0 76fi 77 78if test $# -ne 0; then 79 echo "$usage" 1>&2; exit 1 80fi 81 82# The paths to the autoconf and autoheader scripts, at the top of the tree. 83top_autoconf=`echo $0|sed s%autoreconf%autoconf%` 84top_autoheader=`echo $0|sed s%autoreconf%autoheader%` 85 86# Make a list of directories to process. 87# The xargs grep filters out Cygnus configure.in files. 88find . -name configure.in -print | 89xargs grep -l AC_OUTPUT | 90sed 's%/configure\.in$%%; s%^./%%' | 91while read dir; do 92 ( 93 cd $dir || continue 94 95 case "$dir" in 96 .) dots= ;; 97 *) # A "../" for each directory in /$dir. 98 dots=`echo /$dir|sed 's%/[^/]*%../%g'` ;; 99 esac 100 101 case "$0" in 102 /*) autoconf=$top_autoconf; autoheader=$top_autoheader ;; 103 */*) autoconf=$dots$top_autoconf; autoheader=$dots$top_autoheader ;; 104 *) autoconf=$top_autoconf; autoheader=$top_autoheader ;; 105 esac 106 107 case "$AC_MACRODIR" in 108 /*) macrodir_opt="--macrodir=$AC_MACRODIR" ;; 109 *) macrodir_opt="--macrodir=$dots$AC_MACRODIR" ;; 110 esac 111 112 case "$localdir" in 113 "") localdir_opt= 114 aclocal=aclocal.m4 ;; 115 /*) localdir_opt="--localdir=$localdir" 116 aclocal=$localdir/aclocal.m4 ;; 117 *) localdir_opt="--localdir=$dots$localdir" 118 aclocal=$dots$localdir/aclocal.m4 ;; 119 esac 120 121 # Regenerate aclocal.m4 if necessary. FIXME: if aclocal searches 122 # nonstandard directories, we need to deal with that here. The 123 # easiest way is to move this info into configure.in. 124 run_aclocal=no 125 if test -f "$aclocal" && 126 grep 'generated automatically by aclocal' $aclocal > /dev/null 127 then 128 run_aclocal=yes 129 else 130 if test -f `echo $aclocal | sed 's,/*[^/]*$,,;s,^$,.,'`/acinclude.m4 131 then 132 run_aclocal=yes 133 fi 134 fi 135 if test $run_aclocal = yes 136 then 137 if test $force = no && 138 ls -lt configure.in $aclocal \ 139 `echo $aclocal | sed 's,/*[^/]*$,,;s,^$,.,'`/acinclude.m4 | 140 sed 1q | 141 grep 'aclocal\.m4$' > /dev/null 142 then 143 : 144 else 145 test $verbose = yes && echo running aclocal in $dir, creating $aclocal 146 aclocal --output=$aclocal -I `echo $aclocal | sed 's,/*[^/]*$,,;s,^$,.,'` 147 fi 148 fi 149 150 # Re-run automake if required. Assumes that there is a Makefile.am 151 # in the topmost directory. 152 if test -f Makefile.am 153 then 154 amforce= 155 test $force = no && amforce=--no-force 156 test $verbose = yes && echo running automake`test x"$amforce" = x || echo " ($amforce)"` in $dir 157 automake $amforce $automake_mode $automake_deps 158 fi 159 160 test ! -f $aclocal && aclocal= 161 162 if test $force = no && test -f configure && 163 ls -lt configure configure.in $aclocal | sed 1q | 164 grep 'configure$' > /dev/null 165 then 166 : 167 else 168 test $verbose = yes && echo running autoconf in $dir 169 $autoconf $macrodir_opt $localdir_opt 170 fi 171 172 if grep 'A[CM]_CONFIG_HEADER' configure.in >/dev/null; then 173 templates=`sed -n '/A[CM]_CONFIG_HEADER/ { 174 s%[^#]*A[CM]_CONFIG_HEADER[ ]*(\([^)]*\).*%\1% 175 p 176 q 177 }' configure.in` 178 tcount=`set -- $templates; echo $#` 179 template=`set -- $templates; echo $1 | sed ' 180 s/.*:// 181 t colon 182 s/$/.in/ 183 : colon 184 s/:.*// 185 '` 186 stamp=`echo $template | sed 's,/*[^/]*$,,;s,^$,.,'`/stamp-h`test "$tcount" -gt 1 && echo "$tcount"`.in 187 if test ! -f "$template" || grep autoheader "$template" >/dev/null; then 188 if test $force = no && test -f $template && 189 ls -lt $template configure.in $aclocal $stamp 2>/dev/null \ 190 `echo $localdir_opt | sed -e 's/--localdir=//' \ 191 -e '/./ s%$%/%'`acconfig.h | 192 sed 1q | egrep "$template$|$stamp$" > /dev/null 193 then 194 : 195 else 196 test $verbose = yes && echo running autoheader in $dir 197 $autoheader $macrodir_opt $localdir_opt && 198 { test $verbose != yes || echo touching $stamp; } && 199 touch $stamp 200 fi 201 fi 202 fi 203 ) 204done 205