diff options
author | Gary V. Vaughan <gary@gnu.org> | 2003-10-07 11:12:16 +0000 |
---|---|---|
committer | Gary V. Vaughan <gary@gnu.org> | 2003-10-07 11:12:16 +0000 |
commit | 29b9bc885ba18509d916e3753365a6010b8fd9a6 (patch) | |
tree | 4d8e7f8b7ea4fdb4bc01d0fa16111ee61bb5cef4 /libtoolize.in | |
parent | eb8a008f1256c9d1cf46cd7a59b35eb2663bc23c (diff) | |
download | libtool-29b9bc885ba18509d916e3753365a6010b8fd9a6.tar.gz |
* libtoolize.in: Completely rewritten.
* Makefile.am (AUTOMAKE_OPTIONS): Reduced to 1.7. The 1.8
requirement just made the distribution much smaller due to
m4_includes. 1.7 will bootstrap libtool just fine.
* NEWS: Updated.
Diffstat (limited to 'libtoolize.in')
-rw-r--r-- | libtoolize.in | 822 |
1 files changed, 532 insertions, 290 deletions
diff --git a/libtoolize.in b/libtoolize.in index 0896b2ef..4ffa90ba 100644 --- a/libtoolize.in +++ b/libtoolize.in @@ -1,10 +1,11 @@ #! /bin/sh -# libtoolize - Prepare a package to use libtool. -# @configure_input@ -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003 -# Free Software Foundation, Inc. -# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 -# +# libtoolize (GNU @PACKAGE@) @VERSION@@TIMESTAMP@ +# Written by Gary V. Vaughan <gary@gnu.org> + +# Copyright (C) 2003 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. + # 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 of the License, or @@ -16,339 +17,580 @@ # 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. +# along with this program; if not, a copy can be downloaded from +# http://www.gnu.org/copyleft/gpl.html, or by writing to the Free +# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, +# MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. -# The name of this program. -progname=`echo "$0" | sed 's%^.*/%%'` +# Usage: $progname [OPTION]... +# +# Prepare a package to use libtool. +# +# -c, --copy copy files rather than symlinking them +# --debug enable verbose shell tracing +# -n, --dry-run print commands rather than running them +# -f, --force replace existing files +# --help display this message and exit +# -i, --install copy missing auxiliary files +# --ltdl install libltdl in a subdirectory +# --ltdl-tar install the libltdl tarball +# -q, --quiet work silently +# -v, --verbose verbosely report processing +# --version print version information and exit +# +# You must `cd' to the top directory of your package before you run +# `$progname'. +# +# Report bugs to <bug-libtool@gnu.org>. + +: ${CP="cp -f"} +: ${LN_S="@LN_S@"} +: ${MKDIR="mkdir"} +: ${RM="rm -f"} -# Constants. +# The name of this program: +progname=`echo "$0" | sed 's%^.*/%%'` PROGRAM=libtoolize -PACKAGE=@PACKAGE@ -VERSION=@VERSION@ -# Directory names. +# Global variables. +dry_run_opt=false +force_opt=false +install_opt=false +link_opt=: +ltdl_opt=false +ltdl_tar_opt=false +quiet_opt=false +verbose_opt=false + +seen_gettext=false +seen_libtool=false +seen_ltdl=false + +exit_status=0 + +# Locations for important files: prefix=@prefix@ datadir=@datadir@ pkgdatadir=@pkgdatadir@ aclocaldir=@aclocaldir@ - +auxdir= +m4dir= +configure_ac=configure.in libtool_m4="$aclocaldir/libtool.m4" ltdl_m4="$aclocaldir/ltdl.m4" -dry_run=no -help="Try \`$progname --help' for more information." -rm="rm -f" -ln_s="@LN_S@" -cp="cp -f" -mkdir="mkdir" - -# Global variables. -automake= -copy= -force= -ltdl= -ltdl_tar= -configure_ac= -status=0 - -for arg -do - case "$arg" in - --help) - cat <<EOF -Usage: $progname [OPTION]... - -Prepare a package to use libtool. - - --automake work silently, and assume that Automake is in use --c, --copy copy files rather than symlinking them - --debug enable verbose shell tracing --n, --dry-run print commands rather than running them --f, --force replace existing files - --help display this message and exit - --ltdl install libltdl in a subdirectory - --ltdl-tar install the libltdl tarball - --version print version information and exit - -You must \`cd' to the top directory of your package before you run -\`$progname'. - -Report bugs to <bug-libtool@gnu.org>. -EOF - exit 0 - ;; - - --version) - echo "$PROGRAM (GNU $PACKAGE) $VERSION" - echo - echo "Copyright (C) 2003 Free Software Foundation, Inc." - echo "This is free software; see the source for copying conditions. There is NO" - echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - exit 0 - ;; - - --automake) - automake=yes - ;; - - -c | --copy) - ln_s= - ;; - - --debug) - echo "$progname: enabling shell trace mode" - set -x - ;; - - -n | --dry-run) - if test "$dry_run" != yes; then - dry_run=yes - rm="echo $rm" - test -n "$ln_s" && ln_s="echo $ln_s" - cp="echo $cp" - mkdir="echo mkdir" +sed_dirname='s,/[^/]*$,,' + +# func_echo arg... +# Echo program name prefixed message. +func_echo () +{ + echo $progname: ${1+"$@"} +} + +# func_verbose arg... +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $verbose_opt && func_echo ${1+"$@"} +} + +# func_error arg... +# Echo program name prefixed message to standard error. +func_error () +{ + echo $progname: ${1+"$@"} 1>&2 +} + +# func_fatal_error arg... +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + func_error ${1+"$@"} + exit 1 +} + +# func_fatal_help arg... +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + func_error ${1+"$@"} + func_fatal_error "Try \`$progname --help' for more information." +} + + +# Parse options once, thoroughly. This comes as soon as possible in +# the script to make things like `libtoolize --version' happen quickly. +{ + # sed scripts: + my_sed_single_opt='1s/^\(..\).*$/\1/;q' + my_sed_single_rest='1s/^..\(.*\)$/\1/;q' + my_sed_help='/^# Usage:/,/# Report bugs to/ { + s/^# //; s/^# *$//; + s/\$progname/'$progname'/; + p; + }; d' + my_sed_version='/^# '$PROGRAM' (GNU /,/# warranty; / { + s/^# //; s/^# *$//; + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/; + p; + }; d' + + + while test $# -gt 0; do + case $1 in + --copy | -c) shift; link_opt=false ;; + + --debug) shift + func_echo "enabling shell trace mode" + set -x + ;; + + --dry-run | -n) shift + if $dry_run_opt; then :; else + dry_run_opt=: + RM="echo $RM" + test -n "$LN_S" && LN_S="echo $LN_S" + CP="echo $CP" + MKDIR="echo $MKDIR" + fi + ;; + + --force | -f) shift; force_opt=: ;; + --install | -i) shift; install_opt=: ;; + --ltdl) shift; ltdl_opt=: ;; + --ltdl-tar) shift; ltdl_tar_opt=: ;; + --quiet | --automake | -q) # --automake is for 1.5 compatibility + shift; quiet_opt=: ;; + --verbose | -v) shift; verbose_opt=: ;; + + -c*|-i*|-f*|-n*|-q*|-v*) + opt=`echo "$1" |sed "$my_sed_single_opt"` + rest=`echo "$1" |sed "$my_sed_single_rest"` + shift + set -- "$opt" "-$rest" ${1+"$@"} + ;; + + --version) sed "$my_sed_version" < $0; exit 0 ;; + --help) sed "$my_sed_help" < $0; exit 0 ;; + --) shift ;; + -*) func_fatal_help "unrecognized option \`$1'" ;; + *) func_fatal_help "too many arguments" ;; + esac + done +} + +# func_mkdir_p dir +# Make sure the entire path to DIR is available. +func_mkdir_p () +{ + my_dir=$1 + my_dirs= + + while test ! -d "$my_dir"; do + my_dirs="$my_dir $my_dirs" + my_dir=`echo "$my_dir" | sed "$sed_dirname"` + done + test ! -n "$my_dirs" || $MKDIR $my_dirs +} + +# func_copy srcfile destfile +# If --copy was specified, or soft-linking SRCFILE to DESTFILE fails, +# then try to copy SRCFILE to DESTFILE. +func_copy () +{ + my_srcfile="$1" + my_destfile="$2" + my_return_status=1 + + func_mkdir_p `echo "$my_destfile" | sed "$sed_dirname"` + + $RM "$my_destfile" + if $link_opt && $LN_S "$my_srcfile" "$my_destfile"; then + $quiet_opt || func_echo "copying file \`$my_destfile'" + my_return_status=0 + elif $CP "$my_srcfile" "$my_destfile"; then + $quiet_opt || func_echo "copying file \`$my_destfile'" + my_return_status=0 + else + func_error "can not copy \`$my_srcfile' to \`$my_destfile'" + exit_status=1 fi - ;; - -f | --force) - force=yes - ;; + return $my_return_status +} - --ltdl) - ltdl=yes - ;; +# func_copy_all_files srcdir destdir [glob_exclude] +# For each file in SRCDIR, if --copy was specified, or soft-linking the +# file to DESTDIR fails, then try to copy the file to DESTDIR. If +# GLOB_EXCLUDE is given, exclude any matching filenames from the copy. +func_copy_all_files () +{ + my_srcdir="$1" + my_destdir="$2" + my_glob_exclude="$3" - --ltdl-tar) - ltdl_tar=yes - ;; + for my_filename in `cd "$my_srcdir" && ls`; do - -*) - echo "$progname: unrecognized option \`$arg'" 1>&2 - echo "$help" 1>&2 - exit 1 - ;; + # ignore excluded filenames + if test -n "$my_glob_exclude"; then + eval 'case $my_filename in '$my_glob_exclude') continue ;; esac' + fi - *) - echo "$progname: too many arguments" 1>&2 - echo "$help" 1>&2 - exit 1 - ;; - esac -done - -if test -f configure.ac; then - configure_ac=configure.ac -elif test -f configure.in; then - configure_ac=configure.in -else - echo "$progname: \`configure.ac' does not exist" 1>&2 - echo "$help" 1>&2 - exit 1 -fi - - -files=`cd $pkgdatadir && ls` -if test -z "$files"; then - echo "$progname: cannot list files in \`$pkgdatadir'" 1>&2 - exit 1 -fi -files='config.guess config.sub ltmain.sh' - -auxdir=. -auxdirline=`grep '^AC_CONFIG_AUX_DIR' $configure_ac 2>/dev/null` -if test -n "$auxdirline"; then - # Handle explicit AC_CONFIG_AUX_DIR settings. - auxdir=`echo "$auxdirline" | sed 's/^AC_CONFIG_AUX_DIR(\([^)]*\)).*$/\1/'` - - if test "$auxdir" = "$auxdirline"; then - echo "$progname: invalid AC_CONFIG_AUX_DIR syntax: $auxdirline" 1>&2 - exit 1 - else - # Strip any quote brackets. - auxdir=`echo "$auxdir" | sed 's/^\[\(.*\)\]$/\1/g'` - case "$auxdir" in - *\$*) - echo "$progname: cannot handle variables in AC_CONFIG_AUX_DIR" 1>&2 - exit 1 - ;; - *) - ;; - esac - fi -else - # Try to discover auxdir the same way it is discovered by configure. - # Note that we default to the current directory. - for dir in . .. ../..; do - if test -f $dir/install-sh; then - auxdir=$dir - break - elif test -f $dir/install.sh; then - auxdir=$dir - break + if test -f "$my_srcdir/$my_filename"; then + $force_opt || if test -e "$my_destdir/$my_filename"; then + $quiet_opt \ + || func_error "\`$my_destdir/$my_filename' exists: use \`--force' to overwrite" + continue + fi + else + # Not a regular file + continue + fi + + func_copy "$my_srcdir/$my_filename" "$my_destdir/$my_filename" + done +} + +# func_grep expression filename +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + grep "$1" "$2" >/dev/null 2>&1 +} + +# func_scan_files +# Trace configure.(ac|in) for use of autoconf, gettext, aclocal, automake, +# libltdl and libtool. Possibly running some of these tools if necessary. +func_scan_files () +{ + # Prefer configure.ac to configure.in + test -f configure.ac && configure_ac=configure.ac + test -f "$configure_ac" \ + || func_fatal_help "\`$configure_ac' does not exist" + + test -n "`cd $pkgdatadir && ls`" \ + || func_fatal_error "can not list files in \`$pkgdatadir'" + + + # Set local variables to reflect contents of configure.ac + my_uses_autoconf=false + my_sed_scan_configure_ac='s,#.*$,,; s,^dnl .*$,,; s, dnl .*$,,; + /AC_INIT/ { s,^.*$,my_uses_autoconf=:,; p; }; + d' + eval `sed "$my_sed_scan_configure_ac" "$configure_ac"` + + $my_uses_autoconf || { + func_verbose "$configure_ac: not using Autoconf" + return + } + + # ---------------------------------------------------- # + # Probe macro usage in configure.ac and/or aclocal.m4. # + # ---------------------------------------------------- # + + my_sed_traces='s,#.*$,,; s,^dnl .*$,,; s, dnl .*$,,; + /AC_CONFIG_AUX_DIR/ { + s,^.*AC_CONFIG_AUX_DIR([[ ]*\([^])]*\).*$,auxdir=\1,; p; + }; + /AC_CONFIG_M4_DIR/ { + s,^.*AC_CONFIG_M4_DIR([[ ]*\([^])]*\).*$,m4dir=\1,; p; + }; + /A[CM]_PROG_LIBTOOL/ { s,^.*$,seen_libtool=:,; p; }; + /AC_LIB_LTDL/ { s,^.*$,seen_ltdl=:,; p; }; + d;' + eval `cat aclocal.m4 "$configure_ac" | sed "$my_sed_traces"` + + + # ---------------- # + # Validate auxdir. # + # ---------------- # + + if test -n "$auxdir"; then + # If $configure_ac contains AC_CONFIG_AUX_DIR, check that it was + # not given in terms of a shell variable! + case "$auxdir" in + *\$*) + func_fatal_error "can not handle variables in AC_CONFIG_AUX_DIR" + ;; + *);; + esac + else + # Try to discover auxdir the same way it is discovered by configure. + # Note that we default to the current directory. + for dir in . .. ../..; do + if test -f $dir/install-sh; then + auxdir=$dir + break + elif test -f $dir/install.sh; then + auxdir=$dir + break + fi + done fi - done -fi -if test -z "$automake"; then - if grep '^A[MC]_PROG_LIBTOOL' $configure_ac >/dev/null 2>&1; then : - else - echo "Remember to add \`AC_PROG_LIBTOOL' to \`$configure_ac'." - fi - if grep '^AC_PROG_RANLIB' $configure_ac >/dev/null 2>&1; then - echo "Using \`AC_PROG_RANLIB' is rendered obsolete by \`AC_PROG_LIBTOOL'" - fi + # ------------------------------ # + # Find local m4 macro directory. # + # ------------------------------ # + + # If AC_CONFIG_M4_DIR turned nothing up, we hunt for ACLOCAL_AMFLAGS + # in `Makefile.am' for a `-I' argument. + + my_sed_aclocal_flags='/^[ ]*ACLOCAL_[A-Z_]*FLAGS[ ]*=/ { + s,^[^=]*=[ ]*\(.*\), \1,; q; }; d' + if test ! -n "$m4dir" && test -f Makefile.am; then + my_m4dir_is_next=false + for arg in `sed "$my_sed_aclocal_flags" Makefile.am`; do + if $my_m4dir_is_next; then + m4dir="$arg" + break + else + if test "X$arg" = "X-I"; then + my_m4dir_is_next=: + else + my_m4dir_is_next=false + fi + fi + done + fi - if grep 'generated automatically by aclocal' aclocal.m4 >/dev/null 2>&1; then - updatemsg="update your \`aclocal.m4' by running aclocal" - else - updatemsg="add the contents of \`$libtool_m4' to \`aclocal.m4'" - fi + # Just use the current directory if all else fails. + test -n "$m4dir" || m4dir=. +} - if grep '^AC_DEFUN(\[A[MC]_PROG_LIBTOOL' aclocal.m4 >/dev/null 2>&1; then - # Check the version number on libtool.m4 and the one used in aclocal.m4. - instserial=`grep '^# serial ' $libtool_m4 | grep 'A[MC]_PROG_LIBTOOL' | sed -e 's/^# serial \([0-9][0-9]*\).*$/\1/; q'` +# func_included_files searchfile +# Output INCLUDEFILE if SEARCHFILE m4_includes it, else output SEARCHFILE. +func_included_files () +{ + my_searchfile="$1" - if test -z "$instserial"; then - echo "$progname: warning: no serial number on \`$libtool_m4'" 1>&2 - else - # If the local macro has no serial number, we assume it's ancient. - localserial=`grep '^# serial ' aclocal.m4 | grep 'A[MC]_PROG_LIBTOOL' | sed -e 's/^# serial \([0-9][0-9]*\).*$/\1/; q'` - - test -z "$localserial" && localserial=0 - - if test "$localserial" -lt "$instserial"; then - echo "You should $updatemsg." - elif test "$localserial" -gt "$instserial"; then - echo "$progname: \`$libtool_m4' is serial $instserial, less than $localserial in \`aclocal.m4'" 1>&2 - if test -z "$force"; then - echo "Use \`--force' to replace newer libtool files with this version." 1>&2 - exit 1 - fi - echo "To remain compatible, you should $updatemsg." + my_include_regex= + my_sed_include=' + /^m4_include(\[.*\])$/ { s,^m4_include(\[\(.*\)\])$,\1,; p; }; + d' + + test -f $my_searchfile && echo $my_searchfile + + # Only recurse when we don't care if all the variables we use get + # trashed, since they are in global scope. + for my_filename in `sed "$my_sed_include" "$my_searchfile"`; do + func_included_files $my_filename + done +} + +# func_serial macro_regex filename +# Output the value of the serial number comment in FILENAME, where the +# comment line must also match MACRO_REGEX. +func_serial () +{ + my_macro_regex="$1" + my_filename="$2" + my_sed_serial='/^# serial [1-9][0-9]* '"$my_macro_regex"'[ ]*$/ { + s,^# serial \([1-9][0-9]*\) .*$,\1,; q; + }; d' + + # Search FILENAME and all the files it m4_includes for a serial number + # in the file that AC_DEFUNs MACRO_REGEX. + my_serial= + for my_file in `func_included_files "$my_filename"`; do + if func_grep '^AC_DEFUN(\['"$my_macro_regex" "$my_file"; then + my_serial=`sed -e "$my_sed_serial" "$my_file"` + break + fi + done + + # If the file has no serial number, we assume it's ancient. + test -n "$my_serial" || my_serial=0 + + echo $my_serial +} + +# func_serial_update macro_regex srcfile destfile +# Copy SRCFILE to DESTFILE provided SRCFILE has a newer serial number, or +# DESTFILE does not yet exist, or the user specified `--force'. +func_serial_update () +{ + my_macro_regex="$1" + my_srcfile="$2" + my_destfile="$3" + + my_return_status=1 + my_update_p=: + + if test -f "$my_destfile"; then + my_src_serial=`func_serial "$my_macro_regex" "$my_srcfile"` + my_dest_serial=`func_serial "$my_macro_regex" "$my_destfile"` + + test $my_src_serial = 0 && { + func_error "warning: no serial number on \`$my_srcfile', not copying." + return + } + + # Only perform the file update if the destination has an older serial. + test $my_src_serial -gt $my_dest_serial || my_update_p=false + + test $my_src_serial -gt $my_dest_serial \ + && func_verbose "\`$my_srcfile' is serial $my_srcserial, greater than $my_destserial in \`$my_destfile'" + + if test $my_src_serial -lt $my_dest_serial; then + func_error "\`$my_srcfile' is serial $my_srcserial, less than $my_destserial in \`$my_destfile'" + $force_opt \ + || func_fatal_error "Use \`--force' to replace newer libtool files with this version." fi fi - else - echo "You should $updatemsg." - fi - if grep '^AC_LIB_LTDL' $configure_ac >/dev/null 2>&1; then - if grep 'generated automatically by aclocal' aclocal.m4 >/dev/null 2>&1; then - updatemsg="update your \`aclocal.m4' by running aclocal" + if $my_update_p || $force_opt; then + func_copy "$my_srcfile" "$my_destfile" + my_return_status=$? else - updatemsg="add the contents of \`$ltdl_m4' to \`aclocal.m4'" + $quiet_opt \ + || func_echo "\`$my_destfile' is already up to date." fi - if grep '^AC_DEFUN(AC_LIB_LTDL' aclocal.m4 >/dev/null 2>&1; then - # Check the version number on ltdl.m4 and the one used in aclocal.m4. - instserial=`grep '^# serial ' $ltdl_m4 | grep 'AC_LIB_LTDL' | sed -e 's/^# serial \([0-9][0-9]*\).*$/\1/; q'` + # Do this after the copy for hand maintained `aclocal.m4', incase + # it has `m4_include([DESTFILE])', so the copy effectively already + # updated `aclocal.m4'. + $use_aclocal || if test -f aclocal.m4; then + test $my_src_serial -gt `func_serial "$my_macro_regex" aclocal.m4` \ + && func_echo "You should add the contents of \'$my_destfile' to \`aclocal.m4'." + fi - if test -z "$instserial"; then - echo "$progname: warning: no serial number on \`$ltdl_m4'" 1>&2 - else - # If the local macro has no serial number, we assume it's ancient. - localserial=`grep '^# serial ' aclocal.m4 | grep 'AC_LIB_LTDL' | sed -e 's/^# serial \([0-9][0-9]*\).*$/\1/; q'` - - test -z "$localserial" && localserial=0 - - if test "$localserial" -lt "$instserial"; then - echo "You should $updatemsg." - elif test "$localserial" -gt "$instserial"; then - echo "$progname: \`$ltld_m4' is serial $instserial, less than $localserial in \`aclocal.m4'" 1>&2 - if test -z "$force"; then - echo "Use \`--force' to replace newer libtool files with this version." 1>&2 - exit 1 - fi - echo "To remain compatible, you should $updatemsg." - fi - fi + return $my_return_status +} + +# func_check_macros +# Sanity check macros from aclocal.m4 against installed versions. +func_check_macros () +{ + # Don't trace for this, we're just checking the user didn't invoke it + # directly from configure.ac. + sed 's,dnl .*$,,; s,# .*$,,' "$configure_ac" | grep AC_PROG_RANLIB \ + && func_echo "\`AC_PROG_RANLIB' is rendered obsolete by \`AC_PROG_LIBTOOL'" + + $seen_libtool \ + || func_echo "Remember to add \`AC_PROG_LIBTOOL' to \`$configure_ac'." + + # FIXME: Ensure ltmain.sh, libtool.m4 and ltdl.m4 are from the same release +} + +# func_ltmain_update srcfile destfile +# Copy SRCFILE to DESTFILE provided SRCFILE has a newer VERSION/TIMESTAMP, +# or DESTFILE does not yet exist, or the user specified `--force'. +func_ltmain_update () +{ + my_srcfile="$1" + my_destfile="$2" + my_sed_ltmain=' + s,^VERSION=[^0-9]*\(.*\)[ ]*$,\1,; t + s,^TIMESTAMP=[^0-9]*\([.0-9]*\) .*$,\1,; t + d' + + if test -f "$my_srcfile"; then : else - echo "You should $updatemsg." + func_error "\`$my_srcfile' does not exist." + return + fi + + # FIXME: check versions, and only downgrade with --force + cmp -s "$my_srcfile" "$my_destfile" + if test $? != 0 || $force_opt; then + func_copy "$my_srcfile" "$my_destfile" + else + $quiet_opt \ + || func_echo "\`$my_destfile' is already up to date." + fi +} + +# func_config_update srcfile destfile +# Copy SRCFILE to DESTFILE provided SRCFILE has a newer TIMESTAMP, +# or DESTFILE does not yet exist, or the user specified `--force'. +func_config_update () +{ + my_srcfile="$1" + my_destfile="$2" + my_sed_config='s,^timestamp=[^0-9]*\([.0-9-]*\)[^0-9].*$,\1,; t; d' + + if test -f "$my_srcfile"; then : + else + func_error "\`$my_srcfile' does not exist." + return fi - fi -fi + # FIXME: check versions, and only downgrade with --force + cmp -s "$my_srcfile" "$my_destfile" + if test $? != 0 || $force_opt; then + func_copy "$my_srcfile" "$my_destfile" + else + $quiet_opt \ + || func_echo "\`$my_destfile' is already up to date." + fi +} -if test "x$ltdl" = xyes; then - test -d libltdl || $mkdir libltdl - ltdlfiles=`cd $pkgdatadir && ls libltdl/*` -else - ltdlfiles= -fi -for file in $ltdlfiles; do - if test -f "$file" && test -z "$force"; then - test -z "$automake" && echo "$progname: \`$file' exists: use \`--force' to overwrite" 1>&2 - continue - fi - $rm $file - if test -n "$ln_s" && $ln_s $pkgdatadir/$file $file; then : - elif $cp $pkgdatadir/$file $file; then : - else - echo "$progname: cannot copy \`$pkgdatadir/$file' to \`$file'" 1>&2 - status=1 - fi -done +## ----------- ## +## Main. ## +## ----------- ## -if test "x$ltdl_tar" = x"yes"; then - if test "x$dry_run" = x"yes"; then - echo "tar -cf - libltdl | gzip --best > libltdl.tar.gz" - elif test -f libltdl.tar.gz && test -z "$force"; then - test -z "$automake" && echo "$progname: \`libltdl.tar.gz' exists: use \`--force' to overwrite" 1>&2 - else - test -d libltdl && ${rm}r libltdl - $mkdir libltdl - ltdlfiles=`cd $pkgdatadir && ls libltdl/*` - for file in $ltdlfiles; do - if $cp $pkgdatadir/$file $file; then : - else - echo "$progname: cannot copy \`$pkgdatadir/$file' to \`$file'" 1>&2 - status=1 - break - fi - done - for file in $files; do - if $cp $pkgdatadir/$file libltdl/$file; then : - else - echo "$progname: cannot copy \`$pkgdatadir/$file' to \`libltdl/$file'" 1>&2 - status=1 - break +{ + rerun_aclocal=false + + func_scan_files + $quiet_opt || func_check_macros + + # Copy all the files from installed libltdl to this project, if the + # user specified `--with-ltdl'. + $ltdl_opt && eval func_copy_all_files "$pkgdatadir/libltdl" libltdl + + # Copy all the files from installed libltdl to a tarball in this project, + # if the user specified `--with-ltdl-tar'. + $ltdl_tar_opt && { + if test -f libltdl.tar.gz; then + if $force_opt; then + test -d libltdl && ${RM}r libltdl + func_copy_all_files "$pkgdatadir/libltdl" libltdl + tar -chof - libltdl | gzip --best > libltdl.tar.gz + ${RM}r libltdl + else + func_error "\`libltdl.tar.gz' exists: use \`--force' to overwrite" + fi fi - done - tar -cf - libltdl | gzip --best > libltdl.tar.gz - ${rm}r libltdl + } + + # Copy all the installed utility files to the auxiliary directory if + # `--install' was passed, or else copy just ltmain.sh. + $quiet_opt || if test "$auxdir" != .; then + func_echo "putting files in AC_CONFIG_AUX_DIR, \`$auxdir'." fi -fi - -# Change to the auxiliary directory. -if test "$auxdir" != .; then - test -z "$automake" && echo "Putting files in AC_CONFIG_AUX_DIR, \`$auxdir'." - cd $auxdir || exit 1 -fi - -for file in $files; do - if test -f "$file" && test -z "$force"; then - test -z "$automake" && echo "$progname: \`$file' exists: use \`--force' to overwrite" 1>&2 - continue + if $install_opt || $force_opt; then + func_copy_all_files "$pkgdatadir" "$auxdir" 'config.guess|config.sub|ltmain.sh' + func_config_update "$pkgdatadir/config.guess" "$auxdir/config.guess" + test -f "$pkgdatadir/config.sub" \ + && func_config_update "$pkgdatadir/config.guess" "$auxdir/config.sub" + fi + func_ltmain_update "$pkgdatadir/ltmain.sh" "$auxdir/ltmain.sh" + + # Copy libtool's m4 macros to the macro directory, if they are newer. + $quiet_opt || if test "$m4dir" != .; then + func_echo "putting macros in AC_CONFIG_M4_DIR, \`$m4dir'." fi + func_serial_update 'A[CM]_PROG_LIBTOOL' "$aclocaldir/libtool.m4" "$m4dir/libtool.m4" - $rm $file - if test -n "$ln_s" && $ln_s $pkgdatadir/$file $file; then : - elif $cp $pkgdatadir/$file $file; then : + if $seen_ltdl; then + func_serial_update 'AC_LIB_LTDL' "$aclocaldir/ltdl.m4" "$m4dir/ltdl.m4" else - echo "$progname: cannot copy \`$pkgdatadir/$file' to \`$file'" 1>&2 - status=1 + func_verbose "Not copying \`$aclocaldir/ltdl.m4', AC_LIB_LTDL not used." fi -done +} -exit $status +exit $exit_status # Local Variables: # mode:shell-script |