gettextize.in   [plain text]


#! /bin/sh
#
# Copyright (C) 1995-1998, 2000-2003 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.
#

# This file is meant for authors or maintainers which want to
# internationalize their package with the help of GNU gettext.  For
# further information how to use it consult the GNU gettext manual.

progname=$0
package=@PACKAGE@
version=@VERSION@

# Set variables
# - gettext_dir     directory where the sources are stored.
prefix="@prefix@"
gettext_dir="@datadir@/gettext"

# Support for relocatability.
func_find_curr_installdir ()
{
  # Determine curr_installdir, even taking into account symlinks.
  curr_executable="$0"
  case "$curr_executable" in
    */* | *\\*) ;;
    *) # Need to look in the PATH.
      if test "${PATH_SEPARATOR+set}" != set; then
        { echo "#! /bin/sh"; echo "exit 0"; } > /tmp/conf$$.sh
        chmod +x /tmp/conf$$.sh
        if (PATH="/nonexistent;/tmp"; conf$$.sh) >/dev/null 2>&1; then
          PATH_SEPARATOR=';'
        else
          PATH_SEPARATOR=:
        fi
        rm -f /tmp/conf$$.sh
      fi
      save_IFS="$IFS"; IFS="$PATH_SEPARATOR"
      for dir in $PATH; do
        IFS="$save_IFS"
        test -z "$dir" && dir=.
        for exec_ext in ''; do
          if test -f "$dir/$curr_executable$exec_ext"; then
            curr_executable="$dir/$curr_executable$exec_ext"
            break 2
          fi
        done
      done
      IFS="$save_IFS"
      ;;
  esac
  # Make absolute.
  case "$curr_executable" in
    /* | ?:/* | ?:\\*) ;;
    *) curr_executable=`pwd`/"$curr_executable" ;;
  esac
  # Resolve symlinks.
  while : ; do
    lsline=`LC_ALL=C ls -l "$curr_executable"`
    case "$lsline" in
      *" -> "*)
        curr_executable=`echo "$curr_executable" | sed -e 's,/[^/]*$,,'`/`echo "$lsline" | sed -n -e 's,^.* -> \(.*\),\1,p'` ;;
      *) break ;;
    esac
  done
  curr_installdir=`echo "$curr_executable" | sed -e 's,/[^/]*$,,'`
  # Canonicalize.
  curr_installdir=`cd "$curr_installdir" && pwd`
}
func_find_prefixes ()
{
  # Compute the original/current installation prefixes by stripping the
  # trailing directories off the original/current installation directories.
  orig_installprefix="$orig_installdir"
  curr_installprefix="$curr_installdir"
  while true; do
    orig_last=`echo "$orig_installprefix" | sed -n -e 's,^.*/\([^/]*\)$,\1,p'`
    curr_last=`echo "$curr_installprefix" | sed -n -e 's,^.*/\([^/]*\)$,\1,p'`
    if test -z "$orig_last" || test -z "$curr_last"; then
      break
    fi
    if test "$orig_last" != "$curr_last"; then
      break
    fi
    orig_installprefix=`echo "$orig_installprefix" | sed -e 's,/[^/]*$,,'`
    curr_installprefix=`echo "$curr_installprefix" | sed -e 's,/[^/]*$,,'`
  done
}
if test "@RELOCATABLE@" = yes; then
  exec_prefix="@exec_prefix@"
  bindir="@bindir@"
  orig_installdir="$bindir" # see Makefile.am's *_SCRIPTS variables
  func_find_curr_installdir # determine curr_installdir
  func_find_prefixes
  # Relocate the directory variables that we use.
  gettext_dir=`echo "$gettext_dir/" | sed -e "s%^${orig_installprefix}/%${curr_installprefix}/%" | sed -e 's,/$,,'`
fi

# func_usage
# outputs to stdout the --help usage message.
func_usage ()
{
  echo "\
Usage: gettextize [OPTION]... [package-dir]

Prepares a source package to use gettext.

Options:
      --help           print this help and exit
      --version        print version information and exit
  -c, --copy           copy files instead of making symlinks
  -f, --force          force writing of new files even if old exist
      --intl           install libintl in a subdirectory
      --no-changelog   don't update or create ChangeLog files
  -n, --dry-run        print modifications but don't perform them

Report bugs to <bug-gnu-gettext@gnu.org>."
}

# func_version
# outputs to stdout the --version message.
func_version ()
{
  echo "$progname (GNU $package) $version"
  echo "Copyright (C) 1995-1998, 2000-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."
  echo "Written by" "Ulrich Drepper"
}

# func_fatal_error message
# outputs to stderr a fatal error message, and terminates the program.
func_fatal_error ()
{
  echo "gettextize: *** $1" 1>&2
  echo "gettextize: *** Stop." 1>&2
  exit 1
}

# Command-line option processing.
# Removes the OPTIONS from the arguments. Sets the variables:
# - force           1 if --force was given, 0 otherwise
# - intldir         yes if --intl was given, empty otherwise
# - try_ln_s        false if --copy was given, : otherwise
# - do_changelog    false if --no-changelog was given, : otherwise
# - doit            false if --dry-run was given, : otherwise
{
  force=0
  intldir=
  try_ln_s=:
  do_changelog=:
  doit=:

  while test $# -gt 0; do
    case "$1" in
      -c | --copy | --cop | --co | --c )
        shift
        try_ln_s=false ;;
      -n | --dry-run | --dry-ru | --dry-r | --dry- | --dry | --dr | --d )
        shift
        doit=false ;;
      -f | --force | --forc | --for | --fo | --f )
        shift
        force=1 ;;
      --help | --hel | --he | --h )
        func_usage; exit 0 ;;
      --intl | --int | --in | --i )
        shift
        intldir=yes ;;
      --no-changelog | --no-changelo | --no-changel | --no-change | --no-chang | --no-chan | --no-cha | --no-ch | --no-c )
        shift
        do_changelog=false ;;
      --version | --versio | --versi | --vers | --ver | --ve | --v )
        func_version
        exit 0 ;;
      -- )	# Stop option prcessing
        shift; break ;;
      -* )
        echo "gettextize: unknown option $1" 1>&2
        echo "Try 'gettextize --help' for more information." 1>&2
        exit 1 ;;
      * )
        break ;;
    esac
  done
}

# Command-line argument processing.
# Analyzes the remaining arguments.
# Sets the variables
# - origdir         to the original directory,
# - srcdir          to the package directory, and cd-s into it.
{
  if test $# -gt 1; then
    func_usage 1>&2
    exit 1
  fi
  origdir=`pwd`
  if test $# -eq 1; then
    srcdir=$1
    if cd "$srcdir"; then
      srcdir=`pwd`
    else
      func_fatal_error "Cannot change directory to '$srcdir'."
    fi
  else
    srcdir=$origdir
  fi
}

# The current directory is now $srcdir.

# Check integrity of package: A configure.in/ac must be present. Sets variable
# - configure_in    name of configure.in/ac file.
test -f configure.in || test -f configure.ac ||
  func_fatal_error "Missing configure.in or configure.ac, please cd to your package first."
configure_in=NONE
if test -f configure.in; then
  configure_in=configure.in
else
  if test -f configure.ac; then
    configure_in=configure.ac
  fi
fi

# Check whether the --force option is needed but has not been specified.
if test $force -eq 0; then
  if test -d intl; then
    func_fatal_error "intl/ subdirectory exists: use option -f if you really want to delete it."
  fi
  if test -f po/Makefile.in.in; then
    func_fatal_error "po/Makefile.in.in exists: use option -f if you really want to delete it."
  fi
  if test -f ABOUT-NLS; then
    func_fatal_error "ABOUT-NLS exists: use option -f if you really want to delete it."
  fi
fi

# Check in which directory config.rpath, mkinstalldirs etc. belong.
auxdir=`cat "$configure_in" | grep '^AC_CONFIG_AUX_DIR' | sed -n -e 's/AC_CONFIG_AUX_DIR(\([^()]*\))/\1/p' | sed -e 's/^\[\(.*\)\]$/\1/' | sed -e 1q`
if test -n "$auxdir"; then
  auxdir="$auxdir/"
fi

# For simplicity we change to the gettext source directory.
cd $gettext_dir ||
  func_fatal_error "gettext source directory '${gettext_dir}' doesn't exist"

# Variables which keep track what has been modified.
added_directories=
removed_directory=
added_extradist=
added_acoutput=
removed_acoutput=" intl/intlh.inst"

# Variable:
# - please          accumulates instructions for the user.
please=

# Variable:
# - date            current date, for use in ChangeLog entries.
date=`date +%Y-%m-%d`

# func_copy from to
# copies a file.
# 'from' is a relative pathname, relative to the current directory.
# 'to' is a relative pathname, relative to $srcdir.
func_copy ()
{
  if $doit; then
    rm -f "$srcdir/$2"
    echo "Copying file $2"
    cp "$1" "$srcdir/$2"
  else
    echo "Copy file $2"
  fi
}

# func_linkorcopy from absfrom to
# links or copies a file.
# 'from' is a relative pathname, relative to the current directory.
# 'absfrom' is the corresponding absolute pathname.
# 'to' is a relative pathname, relative to $srcdir.
func_linkorcopy ()
{
  if $doit; then
    rm -f "$srcdir/$3"
    ($try_ln_s && ln -s "$2" "$srcdir/$3" && echo "Symlinking file $3") 2>/dev/null ||
    { echo "Copying file $3"; cp "$1" "$srcdir/$3"; }
  else
    if $try_ln_s; then
      echo "Symlink file $3"
    else
      echo "Copy file $3"
    fi
  fi
}

# func_backup to
# makes a backup of a file that is about to be overwritten or replaced.
# 'to' is a relative pathname, relative to $srcdir.
func_backup ()
{
  if $doit; then
    if test -f "$srcdir/$1"; then
      rm -f "$srcdir/$1~"
      cp -p "$srcdir/$1" "$srcdir/$1~"
    fi
  fi
}

# func_remove to
# removes a file.
# 'to' is a relative pathname, relative to $srcdir.
func_remove ()
{
  if $doit; then
    echo "Removing $1"
    rm -f "$srcdir/$1"
  else
    echo "Remove $1"
  fi
}

# func_ChangeLog_init
# func_ChangeLog_add_entry line
# func_ChangeLog_finish
# manage the ChangeLog file, relative to $srcdir.
func_ChangeLog_init ()
{
  modified_ChangeLog=
}
func_ChangeLog_add_entry ()
{
  if $doit; then
    if test -z "$modified_ChangeLog"; then
      echo "$date  gettextize  <bug-gnu-gettext@gnu.org>" > "$srcdir/ChangeLog.tmp"
      echo >> "$srcdir/ChangeLog.tmp"
      modified_ChangeLog=yes
    fi
    echo "$1" >> "$srcdir/ChangeLog.tmp"
  else
    modified_ChangeLog=yes
  fi
}
func_ChangeLog_finish ()
{
  if test -n "$modified_ChangeLog"; then
    if $doit; then
      echo >> "$srcdir/ChangeLog.tmp"
      if test -f "$srcdir/ChangeLog"; then
        echo "Adding an entry to ChangeLog (backup is in ChangeLog~)"
        cat "$srcdir/ChangeLog" >> "$srcdir/ChangeLog.tmp"
        rm -f "$srcdir/ChangeLog~"
        cp -p "$srcdir/ChangeLog" "$srcdir/ChangeLog~"
      else
        echo "Creating ChangeLog"
      fi
      cp "$srcdir/ChangeLog.tmp" "$srcdir/ChangeLog"
      rm -f "$srcdir/ChangeLog.tmp"
    else
      if test -f "$srcdir/ChangeLog"; then
        echo "Add an entry to ChangeLog"
      else
        echo "Create ChangeLog"
      fi
    fi
  fi
}

# func_poChangeLog_init
# func_poChangeLog_add_entry line
# func_poChangeLog_finish
# manage the po/ChangeLog file, relative to $srcdir.
func_poChangeLog_init ()
{
  modified_poChangeLog=
}
func_poChangeLog_add_entry ()
{
  if $doit; then
    if test -z "$modified_poChangeLog"; then
      echo "$date  gettextize  <bug-gnu-gettext@gnu.org>" > "$srcdir/po/ChangeLog.tmp"
      echo >> "$srcdir/po/ChangeLog.tmp"
      modified_poChangeLog=yes
    fi
    echo "$1" >> "$srcdir/po/ChangeLog.tmp"
  else
    modified_poChangeLog=yes
  fi
}
func_poChangeLog_finish ()
{
  if test -n "$modified_poChangeLog"; then
    if $doit; then
      echo >> "$srcdir/po/ChangeLog.tmp"
      if test -f "$srcdir/po/ChangeLog"; then
        echo "Adding an entry to po/ChangeLog (backup is in po/ChangeLog~)"
        cat "$srcdir/po/ChangeLog" >> "$srcdir/po/ChangeLog.tmp"
        rm -f "$srcdir/po/ChangeLog~"
        cp -p "$srcdir/po/ChangeLog" "$srcdir/po/ChangeLog~"
      else
        echo "Creating po/ChangeLog"
      fi
      cp "$srcdir/po/ChangeLog.tmp" "$srcdir/po/ChangeLog"
      rm -f "$srcdir/po/ChangeLog.tmp"
    else
      if test -f "$srcdir/po/ChangeLog"; then
        echo "Add an entry to po/ChangeLog"
      else
        echo "Create po/ChangeLog"
      fi
    fi
  fi
}

# func_m4ChangeLog_init
# func_m4ChangeLog_add_entry line
# func_m4ChangeLog_finish
# manage the $m4dir/ChangeLog file, relative to $srcdir.
func_m4ChangeLog_init ()
{
  modified_m4ChangeLog=
}
func_m4ChangeLog_add_entry ()
{
  if $doit; then
    if test -z "$modified_m4ChangeLog"; then
      echo "$date  gettextize  <bug-gnu-gettext@gnu.org>" > "$srcdir/$m4dir/ChangeLog.tmp"
      echo >> "$srcdir/$m4dir/ChangeLog.tmp"
      modified_m4ChangeLog=yes
    fi
    echo "$1" >> "$srcdir/$m4dir/ChangeLog.tmp"
  else
    modified_m4ChangeLog=yes
  fi
}
func_m4ChangeLog_finish ()
{
  if test -n "$modified_m4ChangeLog"; then
    if $doit; then
      echo >> "$srcdir/$m4dir/ChangeLog.tmp"
      if test -f "$srcdir/$m4dir/ChangeLog"; then
        echo "Adding an entry to $m4dir/ChangeLog (backup is in $m4dir/ChangeLog~)"
        cat "$srcdir/$m4dir/ChangeLog" >> "$srcdir/$m4dir/ChangeLog.tmp"
        rm -f "$srcdir/$m4dir/ChangeLog~"
        cp -p "$srcdir/$m4dir/ChangeLog" "$srcdir/$m4dir/ChangeLog~"
      else
        echo "Creating $m4dir/ChangeLog"
      fi
      cp "$srcdir/$m4dir/ChangeLog.tmp" "$srcdir/$m4dir/ChangeLog"
      rm -f "$srcdir/$m4dir/ChangeLog.tmp"
    else
      if test -f "$srcdir/$m4dir/ChangeLog"; then
        echo "Add an entry to $m4dir/ChangeLog"
      else
        echo "Create $m4dir/ChangeLog"
      fi
    fi
  fi
}

if test ! -f "$srcdir/intl/Makefile.in" && test -n "$intldir"; then
  added_acoutput="$added_acoutput intl/Makefile"
fi
if test -f "$srcdir/intl/Makefile.in" && test -z "$intldir"; then
  removed_acoutput="$removed_acoutput intl/Makefile"
fi
if test -d "$srcdir/intl"; then
  # Remove everything inside intl except for RCS and CVS subdirs and invisible
  # files.
  if $doit; then
    echo "Wiping out intl/ subdirectory"
    (cd "$srcdir/intl" &&
     for f in *; do
       if test CVS != "$f" && test RCS != "$f"; then
         rm -rf "$f"
       fi
     done)
  else
    echo "Wipe out intl/ subdirectory"
  fi
  if test -z "$intldir"; then
    removed_directory=intl
  fi
else
  if test -n "$intldir"; then
    if $doit; then
      echo "Creating intl/ subdirectory"
      mkdir "$srcdir/intl" || func_fatal_error "failed to create intl/ subdirectory"
    else
      echo "Create intl/ subdirectory"
    fi
    added_directories="$added_directories intl"
  fi
fi

$do_changelog && func_ChangeLog_init

test -d "$srcdir/po" || {
  if $doit; then
    echo "Creating po/ subdirectory"
    mkdir "$srcdir/po" || func_fatal_error "failed to create po/ subdirectory"
  else
    echo "Create po/ subdirectory"
  fi
}

# Now copy all files.  Take care for the destination directories.
for file in *; do
  case $file in
    ABOUT-NLS)
      func_linkorcopy $file "$gettext_dir/$file" $file
      ;;
    config.rpath | mkinstalldirs)
      if test -f "$srcdir/$auxdir$file"; then
        :
      else
        added_extradist="$added_extradist $auxdir$file"
      fi
      func_linkorcopy $file "$gettext_dir/$file" "$auxdir$file"
      ;;
  esac
done

# Copy files to intl/ subdirectory.
if test -n "$intldir"; then
  cd intl
  for file in *; do
    if test $file != COPYING.LIB-2.0 && test $file != COPYING.LIB-2.1; then
      if test $file != plural.c; then
        func_linkorcopy $file "$gettext_dir/intl/$file" intl/$file
      else
        # plural.c is a generated file; it must be copied and touched.
        func_copy $file intl/$file
        if $doit; then
          (sleep 2; touch "$srcdir/intl/$file") &
        fi
      fi
    fi
  done
  cd ..
else
  echo "Not copying intl/ directory."
  please="$please
Please use AM_GNU_GETTEXT([external]) in order to cause autoconfiguration
to look for an external libintl.
"
fi

# Copy files to po/ subdirectory.
$do_changelog && func_poChangeLog_init
cd po
for file in Makefile.in.in; do
  same=no
  if test -f "$srcdir/po/$file"; then
    if cmp -s $file "$srcdir/po/$file"; then
      same=yes
    fi
  else
    added_acoutput="$added_acoutput po/Makefile.in"
  fi
  if $do_changelog && test $same = no; then
    if test -f "$srcdir/po/$file"; then
      func_poChangeLog_add_entry "	* $file: Upgrade to gettext-${version}."
    else
      func_poChangeLog_add_entry "	* $file: New file, from gettext-${version}."
    fi
  fi
  func_backup po/$file
  func_linkorcopy $file "$gettext_dir/po/$file" po/$file
done
for file in *; do
  case $file in
    Makefile.in.in)
      # Already handled above.
      ;;
    Makevars.template)
      func_linkorcopy Makevars.template "$gettext_dir/po/Makevars.template" po/Makevars.template
      if test -f "$srcdir/po/Makevars"; then
        sed -n -e 's/[ 	]*\([A-Za-z0-9_]*\)[ 	]*=.*/\1/p' < "$srcdir/po/Makevars" | LC_ALL=C sort > "$srcdir/po/Makevars.tmp1"
        sed -n -e 's/[ 	]*\([A-Za-z0-9_]*\)[ 	]*=.*/\1/p' < "$srcdir/po/Makevars.template" | LC_ALL=C sort > "$srcdir/po/Makevars.tmp2"
        missingvars=`LC_ALL=C comm -13 "$srcdir/po/Makevars.tmp1" "$srcdir/po/Makevars.tmp2"`
        rm -f "$srcdir/po/Makevars.tmp1" "$srcdir/po/Makevars.tmp2"
        if test -n "$missingvars"; then
          please="$please
Please update po/Makevars so that it defines all the variables mentioned
in po/Makevars.template.
You can then remove po/Makevars.template.
"
        fi
      else
        please="$please
Please create po/Makevars from the template in po/Makevars.template.
You can then remove po/Makevars.template.
"
      fi
      ;;
    *)
      same=no
      if test -f "$srcdir/po/$file"; then
        if cmp -s $file "$srcdir/po/$file"; then
          same=yes
        fi
      fi
      if $do_changelog && test $same = no; then
        if test -f "$srcdir/po/$file"; then
          func_poChangeLog_add_entry "	* $file: Upgrade to gettext-${version}."
        else
          func_poChangeLog_add_entry "	* $file: New file, from gettext-${version}."
        fi
      fi
      func_backup po/$file
      func_linkorcopy $file $gettext_dir/po/$file po/$file
      ;;
  esac
done
if test -f "$srcdir/po/cat-id-tbl.c"; then
  func_remove po/cat-id-tbl.c
  $do_changelog && func_poChangeLog_add_entry "	* cat-id-tbl.c: Remove file."
fi
if test -f "$srcdir/po/stamp-cat-id"; then
  func_remove po/stamp-cat-id
  $do_changelog && func_poChangeLog_add_entry "	* stamp-cat-id: Remove file."
fi
$do_changelog && func_poChangeLog_finish

m4filelist='  codeset.m4 gettext.m4 glibc21.m4 iconv.m4 intdiv0.m4 intmax.m4
  inttypes.m4 inttypes_h.m4 inttypes-pri.m4 isc-posix.m4 lcmessage.m4 lib-ld.m4
  lib-link.m4 lib-prefix.m4 longdouble.m4 longlong.m4 nls.m4 po.m4
  printf-posix.m4 progtest.m4 signed.m4 size_max.m4 stdint_h.m4 uintmax_t.m4
  ulonglong.m4 wchar_t.m4 wint_t.m4 xsize.m4'
# We cannot omit codeset.m4, glibc21.m4, intdiv0.m4, intmax.m4, inttypes.m4,
# inttypes_h.m4, inttypes-pri.m4, isc-posix.m4, lcmessage.m4, longdouble.m4,
# longlong.m4, nls.m4, po.m4, printf-posix.m4, signed.m4, size_max.m4,
# stdint_h.m4, uintmax_t.m4, ulonglong.m4, wchar_t.m4, wint_t.m4, xsize.m4
# if test -z "$intldir", otherwise "aclocal -I m4" might give an error.
# (aclocal doesn't know which macros are really needed, it looks which macros
# are potentially needed.)

# All sorts of bugs could occur if the configure file was remade with the wrong
# version of gettext.m4 et al. (because then the configure and the po/Makefile.in.in
# don't fit together). It is therefore important that the package carries the
# right versions of gettext.m4 et al. with it.
if test -f "$srcdir/Makefile.am"; then
  # A package using automake.

  # Extract the macro directory name from Makefile.am.
  aclocal_amflags=`grep '^ACLOCAL_AMFLAGS[ 	]*=' "$srcdir/Makefile.am" | sed -e 's/^ACLOCAL_AMFLAGS[ 	]*=\(.*\)$/\1/'`
  m4dir=m4
  m4dir_is_next=
  for arg in $aclocal_amflags; do
    if test -n "$m4dir_is_next"; then
      # Ignore absolute directory pathnames, like /usr/local/share/aclocal.
      case "$arg" in
        /*) ;;
        *)
          m4dir="$arg"
          break
          ;;
      esac
    else
      if test "X$arg" = "X-I"; then
        m4dir_is_next=yes
      else
        m4dir_is_next=
      fi
    fi
  done

  # Update the *.m4 files and the corresponding Makefile.am.
  $do_changelog && func_m4ChangeLog_init
  added_m4files=
  if test -d "$srcdir/$m4dir"; then
    :
  else
    if $doit; then
      echo "Creating directory $m4dir"
      mkdir "$srcdir/$m4dir"
    else
      echo "Create directory $m4dir"
    fi
    added_directories="$added_directories $m4dir"
  fi
  for file in $m4filelist; do
    same=no
    if test -f "$srcdir/$m4dir/$file"; then
      if cmp -s "@datadir@/aclocal/$file" "$srcdir/$m4dir/$file"; then
        same=yes
      fi
    else
      added_m4files="$added_m4files $file"
    fi
    if $do_changelog && test $same = no; then
      if test -f "$srcdir/$m4dir/$file"; then
        func_m4ChangeLog_add_entry "	* $file: Upgrade to gettext-${version}."
      else
        func_m4ChangeLog_add_entry "	* $file: New file, from gettext-${version}."
      fi
    fi
    func_backup "$m4dir/$file"
    func_linkorcopy "@datadir@/aclocal/$file" "@datadir@/aclocal/$file" "$m4dir/$file"
  done
  if test -n "$added_m4files"; then
    if test -f "$srcdir/$m4dir/Makefile.am"; then
      if $doit; then
        echo "Updating EXTRA_DIST in $m4dir/Makefile.am (backup is in $m4dir/Makefile.am~)"
        func_backup "$m4dir/Makefile.am"
        rm -f "$srcdir/$m4dir/Makefile.am"
        if grep '^EXTRA_DIST[ 	]*=' "$srcdir/$m4dir/Makefile.am~" > /dev/null; then
          sed -e "s%^\(EXTRA_DIST[ 	]*=\)%\\1$added_m4files %" < "$srcdir/$m4dir/Makefile.am~" > "$srcdir/$m4dir/Makefile.am"
          $do_changelog && func_m4ChangeLog_add_entry "	* Makefile.am (EXTRA_DIST): Add the new files."
        else
          (cat "$srcdir/$m4dir/Makefile.am~"; echo; echo "EXTRA_DIST =$added_m4files") > "$srcdir/$m4dir/Makefile.am"
          $do_changelog && func_m4ChangeLog_add_entry "	* Makefile.am (EXTRA_DIST): New variable."
        fi
      else
        echo "Update EXTRA_DIST in $m4dir/Makefile.am"
        $do_changelog && func_m4ChangeLog_add_entry "	* Makefile.am (EXTRA_DIST)."
      fi
    else
      if $doit; then
        echo "Creating $m4dir/Makefile.am"
        echo "EXTRA_DIST =$added_m4files" > "$srcdir/$m4dir/Makefile.am"
      else
        echo "Create $m4dir/Makefile.am"
      fi
      $do_changelog && func_m4ChangeLog_add_entry "	* Makefile.am: New file."
      added_acoutput="$added_acoutput $m4dir/Makefile"
    fi
  fi
  $do_changelog && func_m4ChangeLog_finish

  # Update the top-level Makefile.am.
  modified_Makefile_am=
  # func_modify_Makefile_am changelog_comment
  # assumes a modified copy of $srcdir/Makefile.am in $srcdir/Makefile.am.tmp
  # and replaces the original Makefile.am file with the modified one if
  # the two files differ. Then it removes the modified copy.
  func_modify_Makefile_am ()
  {
    if cmp -s "$srcdir/Makefile.am" "$srcdir/Makefile.am.tmp"; then
      :
    else
      if test -z "$modified_Makefile_am"; then
        if $doit; then
          echo "Updating Makefile.am (backup is in Makefile.am~)"
          func_backup Makefile.am
        else
          echo "Update Makefile.am"
        fi
      fi
      if $doit; then
        rm -f "$srcdir/Makefile.am"
        cp "$srcdir/Makefile.am.tmp" "$srcdir/Makefile.am"
      fi
      if $do_changelog; then
        if test -z "$modified_Makefile_am"; then
          func_ChangeLog_add_entry "	* Makefile.am $1"
        else
          func_ChangeLog_add_entry "	$1"
        fi
      fi
      modified_Makefile_am=yes
    fi
    rm -f "$srcdir/Makefile.am.tmp"
  }

  if test -n "$added_directories"; then
    if grep '^SUBDIRS[ 	]*=' "$srcdir/Makefile.am" > /dev/null; then
      sed -e "s%^\(SUBDIRS[ 	]*=\)%\\1$added_directories %" < "$srcdir/Makefile.am" > "$srcdir/Makefile.am.tmp"
      func_modify_Makefile_am "(SUBDIRS): Add "`echo $added_directories | sed -e 's/ /, /g'`'.'
    else
      (cat "$srcdir/Makefile.am"; echo; echo "SUBDIRS =$added_directories") > "$srcdir/Makefile.am.tmp"
      func_modify_Makefile_am "(SUBDIRS): New variable."
    fi
  fi
  if test -n "$removed_directory"; then
    sed -e '/^SUBDIRS[ 	]*=/ {
        :a
        s%\([ 	]\)'"$removed_directory"'[ 	]%\1%
        s%[ 	]'"$removed_directory"'$%%
        tb
        :b
        s%\\$%\\%
        tc
        bd
        :c
        n
        ba
      :d
    }' < "$srcdir/Makefile.am" > "$srcdir/Makefile.am.tmp"
    func_modify_Makefile_am "(SUBDIRS): Remove $removed_directory."
  fi
  if test -z "$m4dir_is_next"; then
    if grep '^ACLOCAL_AMFLAGS[ 	]*=' "$srcdir/Makefile.am" > /dev/null; then
      sed -e "s%^\(ACLOCAL_AMFLAGS[ 	]*=\)%\\1 -I $m4dir %" < "$srcdir/Makefile.am" > "$srcdir/Makefile.am.tmp"
      func_modify_Makefile_am "(ACLOCAL_AMFLAGS): Add -I $m4dir."
    else
      (cat "$srcdir/Makefile.am"; echo; echo "ACLOCAL_AMFLAGS = -I $m4dir") > "$srcdir/Makefile.am.tmp"
      func_modify_Makefile_am "(ACLOCAL_AMFLAGS): New variable."
    fi
    # Also update Makefile.in and, if existent, Makefile. Otherwise they
    # would take into account the new flags only after a few rounds of
    # "./configure", "make", "touch configure.in", "make distclean".
    if $doit; then
      for file in Makefile.in Makefile; do
        if test -f "$srcdir/$file"; then
          func_backup $file
          rm -f "$srcdir/$file"
          sed -e "s%(ACLOCAL)%(ACLOCAL) -I $m4dir%" < "$srcdir/$file~" > "$srcdir/$file"
        fi
      done
    fi
  fi
  if test -n "$added_extradist"; then
    if grep '^EXTRA_DIST[ 	]*=' "$srcdir/Makefile.am" > /dev/null; then
      sed -e "s%^\(EXTRA_DIST[ 	]*=\)%\\1$added_extradist %" < "$srcdir/Makefile.am" > "$srcdir/Makefile.am.tmp"
      func_modify_Makefile_am "(EXTRA_DIST): Add$added_extradist."
    else
      (cat "$srcdir/Makefile.am"; echo; echo "EXTRA_DIST =$added_extradist") > "$srcdir/Makefile.am.tmp"
      func_modify_Makefile_am "(EXTRA_DIST): New variable."
    fi
  fi
  please="$please
Please run 'aclocal -I $m4dir' to regenerate the aclocal.m4 file.
You need aclocal from GNU automake 1.5 (or newer) to do this.
Then run 'autoconf' to regenerate the configure file.
"

  # Also create $m4dir/Makefile.in from $m4dir/Makefile.am, because automake
  # doesn't do it by itself.
  if $doit; then
    case "$added_acoutput" in
      *" $m4dir/Makefile")
        (cd "$srcdir" && automake "$m4dir/Makefile") 2>/dev/null ||
        please="$please
Please run 'automake $m4dir/Makefile' to create $m4dir/Makefile.in
"
        ;;
    esac
  fi
else
  please="$please
Please add the files
$m4filelist
from the @datadir@/aclocal directory to your aclocal.m4 file.
"
fi

modified_configure_in=
# func_modify_configure_in changelog_comment
# assumes a modified copy of $srcdir/$configure_in in $srcdir/$configure_in.tmp
# and replaces the original configure.in/ac file with the modified one if
# the two files differ. Then it removes the modified copy.
func_modify_configure_in ()
{
  if cmp -s "$srcdir/$configure_in" "$srcdir/$configure_in.tmp"; then
    :
  else
    if test -z "$modified_configure_in"; then
      if $doit; then
        echo "Updating $configure_in (backup is in $configure_in~)"
        func_backup $configure_in
      else
        echo "Update $configure_in"
      fi
    fi
    if $doit; then
      rm -f "$srcdir/$configure_in"
      cp "$srcdir/$configure_in.tmp" "$srcdir/$configure_in"
    fi
    if $do_changelog; then
      if test -z "$modified_configure_in"; then
        func_ChangeLog_add_entry "	* $configure_in $1"
      else
        func_ChangeLog_add_entry "	$1"
      fi
    fi
    modified_configure_in=yes
  fi
  rm -f "$srcdir/$configure_in.tmp"
}

if test -n "$added_acoutput"; then
  if grep '^AC_CONFIG_FILES(' "$srcdir/$configure_in" > /dev/null; then
    sed -e "s%^\\(AC_CONFIG_FILES([^])\\,]*\\)%\\1$added_acoutput %" < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
    func_modify_configure_in "(AC_CONFIG_FILES): Add "`echo $added_acoutput | sed -e 's/ /, /g'`'.'
  else
    if grep '^AC_OUTPUT(' "$srcdir/$configure_in" > /dev/null; then
      sed -e "s%^\\(AC_OUTPUT([^])\\,]*\\)%\\1$added_acoutput %" < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
      func_modify_configure_in "(AC_OUTPUT): Add "`echo $added_acoutput | sed -e 's/ /, /g'`'.'
    else
      please="$please
Please add$added_acoutput to the AC_OUTPUT or AC_CONFIG_FILES invocation in the $configure_in file.
"
    fi
  fi
fi
if test -n "$removed_acoutput"; then
  for file in $removed_acoutput; do
    tag=
    sedprog='{
      s%\([[ 	]\)'"$file"'[ 	]%\1%
      s%\([[ 	]\)'"$file"'\([]),]\)%\1\2%
      s%[[ 	]'"$file"'$%%
        :a
        tb
        :b
        s%\\$%\\%
        tc
        bd
        :c
        n
        s%\([ 	]\)'"$file"'[ 	]%\1%
        s%\([ 	]\)'"$file"'\([]),]\)%\1\2%
        s%[ 	]'"$file"'$%%
        ba
      :d
    }'
    sed -e '/^AC_CONFIG_FILES(/'"$sedprog" < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
    if cmp -s "$srcdir/$configure_in" "$srcdir/$configure_in.tmp"; then
      sed -e '/^AC_OUTPUT(/'"$sedprog" < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
      if cmp -s "$srcdir/$configure_in" "$srcdir/$configure_in.tmp"; then
        :
      else
        tag=AC_OUTPUT
      fi
    else
      tag=AC_CONFIG_FILES
    fi
    if test -n "$tag"; then
      func_modify_configure_in "($tag): Remove $file."
    else
      rm -f "$srcdir/$configure_in.tmp"
      if test "$file" != intl/intlh.inst; then
        please="$please
Please remove $file from the AC_OUTPUT or AC_CONFIG_FILES invocation
in the $configure_in file.
"
      fi
    fi
  done
fi
sed -e 's%sed -e "/POTFILES =/r po/POTFILES" po/Makefile\.in > po/Makefile *;* *%%' < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
func_modify_configure_in "(AC_OUTPUT): Remove command that created po/Makefile."
sed -e '/^\(dnl \|\)AC_LINK_FILES(\$nls_cv_header_libgt, \$nls_cv_header_intl)$/d' < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
func_modify_configure_in "(AC_LINK_FILES): Remove invocation."
sed -e 's/^AM_GNU_GETTEXT_VERSION([^()]*)/AM_GNU_GETTEXT_VERSION('"$version"')/' < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
func_modify_configure_in "(AM_GNU_GETTEXT_VERSION): Bump to $version."
$do_changelog && func_ChangeLog_finish

# Recommend replacement for deprecated Makefile variables.
use_libtool=`cat "$srcdir/$configure_in" | grep '^A[CM]_PROG_LIBTOOL'`
for file in `(cd "$srcdir"; find . -name Makefile.am -print; find . -name Makefile.in -print) | sed -e 's,^\./,,'`; do
  if test -f "$srcdir/$file"; then
    if test `echo "$file" | sed -e 's,^.*/,,'` = Makefile.in && grep automake "$srcdir/$file" >/dev/null 2>&1; then
      continue;
    fi
    # INTLLIBS is deprecated because it doesn't distinguish the two
    # cases: with libtool, without libtool.
    if grep '@''INTLLIBS''@' "$srcdir/$file" >/dev/null 2>&1; then
      if test -n "$use_libtool"; then
        please="$please
Please change $file to use @""LTLIBINTL""@ or @""LIBINTL""@ instead of
@""INTLLIBS""@. Which one, depends whether it is used with libtool or not.
@""INTLLIBS""@ will go away.
"
      else
        please="$please
Please change $file to use @""LIBINTL""@ instead of @""INTLLIBS""@.
@""INTLLIBS""@ will go away.
"
      fi
    fi
    # DATADIRNAME is deprecated because we install only .gmo files nowadays,
    # which can be stored in the platform independent $prefix/share hierarchy.
    if grep '@''DATADIRNAME''@' "$srcdir/$file" >/dev/null 2>&1; then
      please="$please
Please change $file to use the constant string \"share\" instead of
@""DATADIRNAME""@. @""DATADIRNAME""@ will go away.
"
    fi
    # INSTOBJEXT is deprecated because we install only .gmo files nowadays,
    # no catgets .cat catalogs.
    if grep '@''INSTOBJEXT''@' "$srcdir/$file" >/dev/null 2>&1; then
      please="$please
Please change $file to use the constant string \".mo\" instead of
@""INSTOBJEXT""@. @""INSTOBJEXT""@ will go away.
"
    fi
    # GENCAT is deprecated because we install no catgets catalogs anymore.
    if grep '@''GENCAT''@' "$srcdir/$file" >/dev/null 2>&1; then
      please="$please
Please change $file to use the constant string \"gencat\" instead of
@""GENCAT""@. @""GENCAT""@ will go away. Maybe you don't even need it any more?
"
    fi
    # POSUB is deprecated because it causes "./configure --disable-nls", "make",
    # "make dist" to create a buggy tarfile.
    if grep '@''POSUB''@' "$srcdir/$file" >/dev/null 2>&1; then
      please="$please
Please change $file to use the constant string \"po\" instead of
@""POSUB""@. @""POSUB""@ will go away.
"
    fi
  fi
done

# Recommend replacement for deprecated configure variables.
if grep '\$nls_cv_header_' "$srcdir/$configure_in" >/dev/null 2>&1; then
  please="$please
Please stop using \$nls_cv_header_intl or \$nls_cv_header_libgt in the
$configure_in file. Both will go away. Use <libintl.h> or \"gettext.h\" instead.
"
fi

# Recommend fetching config.guess and config.sub.
if test -f "$srcdir/$auxdir"config.guess && test -f "$srcdir/$auxdir"config.sub; then
  :
else
  please="$please
You will also need config.guess and config.sub, which you can get from
ftp://ftp.gnu.org/pub/gnu/config/.
"
fi

if $doit; then
  echo "$please"
  echo "You might also want to copy the convenience header file gettext.h"
  echo "from the $gettext_dir directory into your package."
  echo "It is a wrapper around <libintl.h> that implements the configure --disable-nls"
  echo "option."
  echo
  count=`echo "$please" | grep '^$' | wc -l`
  count=`echo "$count" | sed -e 's/[ 	]//g'`
  case "$count" in
    1) count="paragraph";;
    2) count="two paragraphs";;
    3) count="three paragraphs";;
    4) count="four paragraphs";;
    5) count="five paragraphs";;
    *) count="$count paragraphs";;
  esac
  echo "Press Return to acknowledge the previous $count."
  # Read from /dev/tty, not stdin, so that gettextize cannot be abused by
  # non-interactive tools.
  read dummy < /dev/tty
fi

exit 0