summaryrefslogtreecommitdiffstats
path: root/autoreconf.in
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--autoreconf.in334
1 files changed, 334 insertions, 0 deletions
diff --git a/autoreconf.in b/autoreconf.in
new file mode 100644
index 0000000..a5d7a44
--- /dev/null
+++ b/autoreconf.in
@@ -0,0 +1,334 @@
+#! @SHELL@
+# -*- shell-script -*-
+# autoreconf - remake all Autoconf configure scripts in a directory tree
+# Copyright 2010,2023 Thomas E. Dickey
+# Copyright 1994, 1999, 2000 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.
+
+me=`echo "$0" | sed -e 's,.*[\\/],,'`
+
+usage="\
+Usage: $0 [OPTION] ... [TEMPLATE-FILE]
+
+Run \`autoconf' and \`autoheader' where appropriate) repeatedly to
+remake the Autoconf \`configure' scripts and configuration header
+templates in the directory tree rooted at the current directory.
+
+By default, it only remakes those files that are older than their
+predecessors. If you install a new version of Autoconf, running
+\`autoreconf' remakes all of the files by giving it the \`--force'
+option.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+ -v, --verbose verbosely report processing
+ -d, --debug don't remove temporary files
+ -f, --force consider every files are obsolete
+ -i, --install copy missing auxiliary files
+ -s, --symlink instead of copying, install symbolic links
+
+The option \`--install' is similar to the option \`--add-missing' in
+other tools.
+
+Library directories:
+ -A, --autoconf-dir=ACDIR Autoconf's macro files location (rarely needed)
+ -l, --localdir=DIR location of \`aclocal.m4' and \`acconfig.h'
+ -M, --m4dir=M4DIR this package's Autoconf extensions
+
+Unless specified, heuristics try to compute \`M4DIR' from the \`Makefile.am',
+or defaults to \`m4' if it exists.
+
+The environment variables AUTOCONF and AUTOHEADER are honored.
+
+Report bugs to <@PACKAGE_BUGREPORT@>."
+
+version="\
+autoreconf (@PACKAGE_NAME@) @VERSION@
+Written by David J. MacKenzie.
+
+Copyright 1994, 1999, 2000 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="\
+Try \`$me --help' for more information."
+
+exit_missing_arg="\
+echo \"$me: option \\\`\$1' requires an argument\" >&2
+echo \"\$help\" >&2
+exit 1"
+
+# NLS nuisances.
+# Only set these to C if already set. These must not be set unconditionally
+# because not all systems understand e.g. LANG=C (notably SCO).
+# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
+# Non-C LC_CTYPE values break the ctype check.
+if test "${LANG+set}" = set; then LANG=C; export LANG; fi
+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
+if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
+
+# Variables.
+: ${autoconf_dir=${AC_MACRODIR=@datadir@}}
+debug=false
+dir=`echo "$0" | sed -e 's,[^\\/]*$,,'`
+force=false
+# --install -- as --add-missing in other tools.
+install=false
+localdir=.
+# m4dir -- local Autoconf extensions. Typically `m4'.
+m4dir=
+status=0
+# symlink -- when --install, use symlinks instead.
+symlink=false
+verbose=:
+
+# Looking for autoconf.
+# We test "$dir/autoconf" in case we are in the build tree, in which case
+# the names are not transformed yet.
+for autoconf in "$AUTOCONF" \
+ "$dir/@autoconf-name@" \
+ "$dir/autoconf" \
+ "@bindir@/@autoconf-name@"; do
+ test -f "$autoconf" && break
+done
+
+# Looking for autoheader.
+for autoheader in "$AUTOHEADER" \
+ "$dir/@autoheader-name@" \
+ "$dir/autoheader" \
+ "@bindir@/@autoheader-name@"; do
+ test -f "$autoheader" && break
+done
+
+# Parse command line.
+while test $# -gt 0; do
+ optarg=`expr "x$1" : 'x--[^=]*=\(.*\)' \| \
+ "x$1" : 'x-.\(.*\)'`
+ case "$1" in
+ --version | -V )
+ echo "$version" ; exit 0 ;;
+ --help | -h )
+ echo "$usage"; exit 0 ;;
+
+ --verbose | -v )
+ verbose=echo
+ shift;;
+ --debug | -d )
+ debug=:; shift ;;
+
+ --localdir=* | -l?* )
+ localdir=$optarg
+ shift ;;
+ --localdir | -l )
+ test $# = 1 && eval "$exit_missing_arg"
+ shift
+ localdir=$1
+ shift ;;
+
+ --autoconf-dir=* | -A?* )
+ autoconf_dir=$optarg
+ shift ;;
+ --autoconf-dir | -A )
+ test $# = 1 && eval "$exit_missing_arg"
+ shift
+ autoconf_dir=$1
+ shift ;;
+ --macrodir=* | -m?* )
+ echo "$me: warning: --macrodir is obsolete, use --autoconf-dir" >&2
+ autoconf_dir=$optarg
+ shift ;;
+ --macrodir | -m )
+ echo "$me: warning: --macrodir is obsolete, use --autoconf-dir" >&2
+ test $# = 1 && eval "$exit_missing_arg"
+ shift
+ autoconf_dir=$1
+ shift ;;
+
+ --m4dir=* | -M?* )
+ m4dir=$optarg
+ shift ;;
+ --m4dir | -M )
+ test $# = 1 && eval "$exit_missing_arg"
+ shift
+ m4dir=$1
+ shift ;;
+
+ --force | -f )
+ force=:; shift ;;
+
+ --install | -i )
+ install=:; shift ;;
+ --symlink | -s )
+ symlink=:; shift ;;
+
+ -- ) # Stop option processing.
+ shift; break ;;
+ -* )
+ exec >&2
+ echo "$me: invalid option $1"
+ echo "$help"
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+# Find the input file.
+if test $# -ne 0; then
+ exec >&2
+ echo "$me: invalid number of arguments"
+ echo "$help"
+ exit 1
+fi
+
+# If verbose, say what you are going to use.
+if test $verbose = echo; then
+ $autoconf --version |
+ sed "s,.*)\(.*\)$,$me: using autoconf\1: $autoconf,;1q" >&2
+ $autoheader --version |
+ sed "s,.*)\(.*\)$,$me: using autoheader\1: $autoheader,;1q" >&2
+fi
+
+# Dispatch autoreconf's option to the tools.
+# --localdir
+autoconf="$autoconf -l $localdir"
+autoheader="$autoheader -l $localdir"
+# --verbose
+autoconf="$autoconf `$verbose --verbose`"
+autoheader="$autoheader `$verbose --verbose`"
+# --debug
+$debug &&
+{
+ autoconf="$autoconf --debug"
+ autoheader="$autoheader --debug"
+}
+# --macrodir
+export autoconf_dir
+
+# Trap on 0 to stop playing with `rm'.
+$debug ||
+{
+ trap 'status=$?; rm -rf $tmp && exit $status' 0
+ trap '(exit 1); exit 1' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+: ${TMPDIR=/tmp}
+{
+ tmp=`(umask 077 && mktemp -d -q "$TMPDIR/arXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=$TMPDIR/ar$$
+ (umask 077 && mkdir $tmp)
+} ||
+{
+ echo "$me: cannot create a temporary directory in $TMPDIR" >&2
+ (exit 1); exit 1
+}
+
+# When debugging, it is convenient that all the related temporary
+# files be at the same place.
+TMPDIR=$tmp
+export TMPDIR
+
+# update.sh --
+# Exit 0 if the first argument is not the most recent of all or is missing.
+cat >$tmp/update.sh <<\EOF
+test -f "$1" || { :; exit; }
+test x`ls -1dt "$@" 2>/dev/null | sed 1q` != x"$1"
+EOF
+update="@SHELL@ $tmp/update.sh"
+
+
+# ----------------------- #
+# Real work starts here. #
+# ----------------------- #
+
+# Make a list of directories to process.
+# The xargs grep filters out Cygnus configure.in files.
+find . '(' -name configure.ac -o -name configure.in ')' -print |
+xargs grep -l AC_INIT |
+sed 's,/configure\.ac$,,;s,/configure\.in$,,;s,^./,,' |
+while read dir; do
+ (
+ cd $dir || continue
+
+
+ # ------------------ #
+ # Running autoconf. #
+ # ------------------ #
+
+ if $force ||
+ $update configure configure.ac $localdir/aclocal.m4 ||
+ $update configure configure.in $localdir/aclocal.m4; then
+ $verbose $me: running $autoconf in $dir >&2
+ $autoconf
+ fi
+
+
+ # -------------------- #
+ # Running autoheader. #
+ # -------------------- #
+
+ # templates -- arguments of AC_CONFIG_HEADERS.
+ $verbose $me: running $autoconf -t 'AC_CONFIG_HEADERS:$1' >&2
+ templates=`$autoconf -t 'AC_CONFIG_HEADERS:$1'`
+ if test -n "$templates"; then
+ tcount=`set -- $templates; echo $#`
+ template=`set -- $templates; echo $1 | sed '
+ s/.*://
+ t colon
+ s/$/.in/
+ : colon
+ s/:.*//
+ '`
+ template_dir=`echo $template | sed -e 's,[\\/]*[^\\/]*$,,;s,^$,.,'`
+ stamp_num=`test "$tcount" -gt 1 && echo "$tcount"`
+ stamp=$template_dir/stamp-h$stamp_num.in
+ # If config.hin exists, don't override it unless it was really
+ # created by autoheader (users are allowed to write them by hand!).
+ uses_autoheader=false
+ grep autoheader "$template" >/dev/null 2>&1 &&
+ uses_autoheader=:
+ test -f "$template" ||
+ uses_autoheader=:
+ if $uses_autoheader &&
+ { $force ||
+ $update $template \
+ configure.ac $localdir/aclocal.m4 $localdir/acconfig.h ||
+ $update $template \
+ configure.in $localdir/aclocal.m4 $localdir/acconfig.h ||
+ $update $stamp \
+ configure.ac $localdir/aclocal.m4 $localdir/acconfig.h ||
+ $update $stamp \
+ configure.in $localdir/aclocal.m4 $localdir/acconfig.h; } then
+ $verbose $me: running $autoheader in $dir >&2
+ $autoheader &&
+ $verbose "touching $stamp" >&2 &&
+ touch $stamp
+ fi
+ fi
+ )
+done
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# End: