зеркало из https://github.com/github/msysgit.git
Install gettext-0.18.1.1.tar.gz
Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
This commit is contained in:
Родитель
84b5bf12c9
Коммит
bad2db76ff
|
@ -0,0 +1,717 @@
|
|||
#! /bin/sh
|
||||
#
|
||||
# Copyright (C) 2002-2010 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 3 of the License, 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, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
# This file is meant for authors, maintainers, co-maintainers or installers
|
||||
# of packages which are internationalized with the help of GNU gettext. For
|
||||
# further information how to use it consult the GNU gettext manual.
|
||||
|
||||
progname=$0
|
||||
package=gettext-tools
|
||||
version=0.18.1
|
||||
|
||||
# Set variables
|
||||
# - gettext_dir directory where the sources are stored.
|
||||
prefix="/mingw"
|
||||
datarootdir="${prefix}/share"
|
||||
gettext_dir="${datarootdir}/gettext"
|
||||
|
||||
# func_tmpdir
|
||||
# creates a temporary directory.
|
||||
# Sets variable
|
||||
# - tmp pathname of freshly created temporary directory
|
||||
func_tmpdir ()
|
||||
{
|
||||
# Use the environment variable TMPDIR, falling back to /tmp. This allows
|
||||
# users to specify a different temporary directory, for example, if their
|
||||
# /tmp is filled up or too small.
|
||||
: ${TMPDIR=/tmp}
|
||||
{
|
||||
# Use the mktemp program if available. If not available, hide the error
|
||||
# message.
|
||||
tmp=`(umask 077 && mktemp -d "$TMPDIR/gtXXXXXX") 2>/dev/null` &&
|
||||
test -n "$tmp" && test -d "$tmp"
|
||||
} ||
|
||||
{
|
||||
# Use a simple mkdir command. It is guaranteed to fail if the directory
|
||||
# already exists. $RANDOM is bash specific and expands to empty in shells
|
||||
# other than bash, ksh and zsh. Its use does not increase security;
|
||||
# rather, it minimizes the probability of failure in a very cluttered /tmp
|
||||
# directory.
|
||||
tmp=$TMPDIR/gt$$-$RANDOM
|
||||
(umask 077 && mkdir "$tmp")
|
||||
} ||
|
||||
{
|
||||
echo "$0: cannot create a temporary directory in $TMPDIR" >&2
|
||||
{ (exit 1); exit 1; }
|
||||
}
|
||||
}
|
||||
|
||||
# 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
|
||||
func_tmpdir
|
||||
{ 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 -rf "$tmp"
|
||||
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.
|
||||
sed_dirname='s,/[^/]*$,,'
|
||||
sed_linkdest='s,^.* -> \(.*\),\1,p'
|
||||
while : ; do
|
||||
lsline=`LC_ALL=C ls -l "$curr_executable"`
|
||||
case "$lsline" in
|
||||
*" -> "*)
|
||||
linkdest=`echo "$lsline" | sed -n -e "$sed_linkdest"`
|
||||
case "$linkdest" in
|
||||
/* | ?:/* | ?:\\*) curr_executable="$linkdest" ;;
|
||||
*) curr_executable=`echo "$curr_executable" | sed -e "$sed_dirname"`/"$linkdest" ;;
|
||||
esac ;;
|
||||
*) 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 "yes" = yes; then
|
||||
exec_prefix="${prefix}"
|
||||
bindir="${exec_prefix}/bin"
|
||||
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: autopoint [OPTION]...
|
||||
|
||||
Copies standard gettext infrastructure files into a source package.
|
||||
|
||||
Options:
|
||||
--help print this help and exit
|
||||
--version print version information and exit
|
||||
-f, --force force overwriting of files that already exist
|
||||
-n, --dry-run print modifications but don't perform them"
|
||||
# echo "\
|
||||
# -V version copy the infrastructure of the specified gettext version
|
||||
# (dangerous)"
|
||||
echo "
|
||||
Report bugs to <bug-gnu-gettext@gnu.org>."
|
||||
}
|
||||
|
||||
# func_version
|
||||
# outputs to stdout the --version message.
|
||||
func_version ()
|
||||
{
|
||||
echo "$progname (GNU $package) $version"
|
||||
echo "Uses a versions archive in git format."
|
||||
echo "Copyright (C) 2002-2010 Free Software Foundation, Inc.
|
||||
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
||||
This is free software: you are free to change and redistribute it.
|
||||
There is NO WARRANTY, to the extent permitted by law."
|
||||
echo "Written by" "Bruno Haible"
|
||||
}
|
||||
|
||||
# func_fatal_error message
|
||||
# outputs to stderr a fatal error message, and terminates the program.
|
||||
func_fatal_error ()
|
||||
{
|
||||
echo "autopoint: *** $1" 1>&2
|
||||
echo "autopoint: *** Stop." 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Command-line option processing.
|
||||
# Removes the OPTIONS from the arguments. Sets the variables:
|
||||
# - force yes if --force was given, empty otherwise
|
||||
# - ver gettext version if -V was given, empty otherwise
|
||||
# - doit false if --dry-run was given, : otherwise
|
||||
{
|
||||
force=
|
||||
ver=
|
||||
doit=:
|
||||
|
||||
while test $# -gt 0; do
|
||||
case "$1" in
|
||||
-n | --dry-run | --dry-ru | --dry-r | --dry- | --dry | --dr | --d )
|
||||
shift
|
||||
doit=false ;;
|
||||
-f | --force | --forc | --for | --fo | --f )
|
||||
shift
|
||||
force=yes ;;
|
||||
--help | --hel | --he | --h )
|
||||
func_usage; exit 0 ;;
|
||||
# -V ) # Some people put a space between -V and the version number.
|
||||
# shift
|
||||
# if test $# = 0; then
|
||||
# func_usage 1>&2
|
||||
# exit 1
|
||||
# fi
|
||||
# ver=$1;
|
||||
# shift ;;
|
||||
# -V*) # Some people omit the space between -V and the version number.
|
||||
# ver=`echo "X$1" | sed -e 's/^X-V//'`
|
||||
# shift ;;
|
||||
--version | --versio | --versi | --vers | --ver | --ve | --v )
|
||||
func_version
|
||||
exit 0 ;;
|
||||
-- ) # Stop option prcessing
|
||||
shift; break ;;
|
||||
-* )
|
||||
echo "autopoint: unknown option $1" 1>&2
|
||||
echo "Try 'autopoint --help' for more information." 1>&2
|
||||
exit 1 ;;
|
||||
* )
|
||||
break ;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
# Command-line argument processing.
|
||||
# Analyzes the remaining arguments.
|
||||
{
|
||||
if test $# -gt 0; then
|
||||
func_usage 1>&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
srcdir=`pwd`
|
||||
# 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.
|
||||
if test -f configure.in; then
|
||||
configure_in=configure.in
|
||||
else
|
||||
if test -f configure.ac; then
|
||||
configure_in=configure.ac
|
||||
else
|
||||
# KDE specific convention: configure.in.in
|
||||
if test -f configure.in.in; then
|
||||
configure_in=configure.in.in
|
||||
else
|
||||
func_fatal_error "Missing configure.in or configure.ac, please cd to your package first."
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check whether the -V option and the version number in configure.in match.
|
||||
# At least one of the two must be given. If both are given, they must agree.
|
||||
sed_extract_AM_GNU_GETTEXT_VERSION_argument='s/^AM_GNU_GETTEXT_VERSION(\([^()]*\)).*$/\1/'
|
||||
sed_remove_outer_brackets='s/^\[\(.*\)\]$/\1/'
|
||||
xver=`cat "$configure_in" | grep '^AM_GNU_GETTEXT_VERSION(' | sed -n -e "$sed_extract_AM_GNU_GETTEXT_VERSION_argument"p | sed -e "$sed_remove_outer_brackets" | sed -e 1q`
|
||||
if test -z "$xver" && test -f intl/VERSION; then
|
||||
xver=`cat intl/VERSION | LC_ALL=C sed -n -e 's/^.*gettext-\([-+_.0-9A-Za-z]*\).*$/\1/p'`
|
||||
fi
|
||||
if test -n "$xver"; then
|
||||
if test -n "$ver"; then
|
||||
if test "X$ver" != "X$xver"; then
|
||||
func_fatal_error "Version mismatch: specified -V $ver but the package uses gettext version $xver"
|
||||
fi
|
||||
else
|
||||
ver="$xver"
|
||||
fi
|
||||
else
|
||||
if test -z "$ver"; then
|
||||
func_fatal_error "Missing version: please specify in $configure_in through a line 'AM_GNU_GETTEXT_VERSION(x.yy.zz)' the gettext version the package is using"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check whether the version number is supported.
|
||||
case "$ver" in
|
||||
0.10.35 | 0.10.36 | 0.10.37 | 0.10.38 | 0.10.39 | 0.10.40 | \
|
||||
0.11 | 0.11.1 | 0.11.2 | 0.11.3 | 0.11.4 | 0.11.5 | \
|
||||
0.12 | 0.12.1 | \
|
||||
0.13 | 0.13.1 | \
|
||||
0.14 | 0.14.1 | 0.14.2 | 0.14.3 | 0.14.4 | 0.14.5 | 0.14.6 | \
|
||||
0.15 | \
|
||||
0.16 | 0.16.1 | \
|
||||
0.17 | \
|
||||
0.18 | 0.18.1 )
|
||||
;;
|
||||
*)
|
||||
func_fatal_error "The AM_GNU_GETTEXT_VERSION declaration in your $configure_in
|
||||
file requires the infrastructure from gettext-$ver but this version
|
||||
is older. Please upgrade to gettext-$ver or newer."
|
||||
;;
|
||||
esac
|
||||
|
||||
# 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
|
||||
|
||||
# Check in which directory the *.m4 macros belong.
|
||||
m4dir=m4
|
||||
if test -f Makefile.am; then
|
||||
# A package using automake.
|
||||
# Extract the macro directory name from Makefile.am.
|
||||
aclocal_amflags=`grep '^ACLOCAL_AMFLAGS[ ]*=' Makefile.am | sed -e 's/^ACLOCAL_AMFLAGS[ ]*=\(.*\)$/\1/'`
|
||||
m4dir_is_next=
|
||||
for arg in $aclocal_amflags; do
|
||||
if test -n "$m4dir_is_next"; then
|
||||
m4dir="$arg"
|
||||
break
|
||||
else
|
||||
if test "X$arg" = "X-I"; then
|
||||
m4dir_is_next=yes
|
||||
else
|
||||
m4dir_is_next=
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Check whether to omit the intl/ directory.
|
||||
omitintl=`cat "$configure_in" | grep '^AM_GNU_GETTEXT' | sed -n -e 's/^AM_GNU_GETTEXT(\([^(),]*\).*$/\1/p' | sed -e 's/^\[\(.*\)\]$/\1/' | sed -e 1q`
|
||||
omitintl=`if test 'external' = "$omitintl"; then echo yes; fi`
|
||||
|
||||
# Check in which directory or directories the po/* infrastructure belongs.
|
||||
sed_extract_config_files='s,#.*$,,
|
||||
s,^dnl .*$,,
|
||||
s, dnl .*$,,
|
||||
/AC_CONFIG_FILES(/ {
|
||||
ta
|
||||
:a
|
||||
s/)/)/
|
||||
tb
|
||||
s/\\$//
|
||||
N
|
||||
ba
|
||||
:b
|
||||
s,^.*AC_CONFIG_FILES([[ ]*\([^]"$`\\)]*\).*$,\1,p
|
||||
}'
|
||||
configfiles=`cat "$configure_in" | sed -n -e "$sed_extract_config_files"`
|
||||
# PO directories have a Makefile.in generated from Makefile.in.in.
|
||||
# Treat a directory as a PO directory if and only if it has a
|
||||
# POTFILES.in file. This allows packages to have multiple PO
|
||||
# directories under different names or in different locations.
|
||||
sed_remove_Makefile_in='s,/Makefile\.in$,,'
|
||||
podirs=`for f in $configfiles; do case "$f" in */Makefile.in) echo $f;; esac; done | sed -e "$sed_remove_Makefile_in"`
|
||||
if test -z "$podirs"; then
|
||||
# If we cannot get the list of PO directories from configure.ac, assume the
|
||||
# common default.
|
||||
podirs="po"
|
||||
fi
|
||||
|
||||
# Set up a temporary checkout directory.
|
||||
# Set variables
|
||||
# - work_dir directory containing the temporary checkout
|
||||
work_dir=tmpwrk$$
|
||||
mkdir "$work_dir" || {
|
||||
if test -d "$work_dir"; then
|
||||
func_fatal_error "directory $work_dir already exists"
|
||||
else
|
||||
func_fatal_error "cannot create directory $work_dir"
|
||||
fi
|
||||
}
|
||||
|
||||
# We support three archive formats.
|
||||
#
|
||||
# Format | Size (KiB) for gettext-0.17 | Extra tools needed |
|
||||
# -------+-----------------------------+--------------------+
|
||||
# dir | 3000 | -- |
|
||||
# cvs | 356 | cvs |
|
||||
# git | 484 | git |
|
||||
# -------+-----------------------------+--------------------+
|
||||
|
||||
case "git" in
|
||||
dir)
|
||||
# The archive of different versions is very large, but using it does not
|
||||
# require special tools.
|
||||
gzip -d -c < "$gettext_dir/archive.dir.tar.gz" | (cd "$work_dir" && tar xf - "gettext-$ver")
|
||||
if test `find "$work_dir" -type f -print | wc -l` = 0; then
|
||||
rm -rf "$work_dir"
|
||||
func_fatal_error "infrastructure files for version $ver not found; this is autopoint from GNU $package $version"
|
||||
fi
|
||||
mv "$work_dir/gettext-$ver" "$work_dir/archive"
|
||||
;;
|
||||
|
||||
cvs)
|
||||
# We distributed the many different versions of the files in a CVS
|
||||
# repository. This guaranteed a good compression rate:
|
||||
#
|
||||
# Including version size in KB of
|
||||
# "du autopoint-files/archive"
|
||||
# 0.10.35 240
|
||||
# 0.10.36 428
|
||||
# 0.10.37 436
|
||||
# 0.10.38 488
|
||||
# 0.10.39 500
|
||||
# 0.10.40 528
|
||||
# 0.11 720
|
||||
# 0.11.1 740
|
||||
# 0.11.2 748
|
||||
# 0.11.3 804
|
||||
# 0.11.4 864
|
||||
# 0.11.5 880
|
||||
# 0.12 1032
|
||||
# 0.12.1 1032
|
||||
# 0.13 1220
|
||||
# 0.13.1 1236
|
||||
# 0.14 1296
|
||||
# 0.14.1 1300
|
||||
# 0.14.2 1420
|
||||
# 0.14.3 1428
|
||||
# 0.14.4 1464
|
||||
# 0.14.5 1508
|
||||
# 0.14.6 1580
|
||||
# 0.15 1760
|
||||
# 0.16 1808
|
||||
# 0.16.1 1812
|
||||
# 0.17 2128
|
||||
# 0.18 2656
|
||||
#
|
||||
# The requirement that the user must have the CVS program available is not
|
||||
# a severe restrictions, because most of the people who use autopoint are
|
||||
# users of CVS.
|
||||
#
|
||||
# But the CVS format is now deprecated, because "cvs init" does not work in
|
||||
# all circumstances
|
||||
# (see <http://lists.gnu.org/archive/html/bug-cvs/2010-05/msg00003.html>)
|
||||
# and we are not allowed to distribute the cvs infrastructure files
|
||||
# ourselves
|
||||
# (see <http://lists.gnu.org/archive/html/bug-cvs/2010-06/msg00011.html>).
|
||||
#
|
||||
# Check availability of the CVS program.
|
||||
(cvs -v) >/dev/null 2>/dev/null || func_fatal_error "cvs program not found"
|
||||
|
||||
# Set up a temporary CVS repository.
|
||||
# We need the temporary CVS repository because any checkout needs write
|
||||
# access to the CVSROOT/history file, so it cannot be under $gettext_dir.
|
||||
# We need the temporary checkout directory because when --force was not
|
||||
# given, we need to compare the existing files with the checked out ones.
|
||||
# Set variables
|
||||
# - cvs_dir directory containing the temporary repository
|
||||
cvs_dir=tmpcvs$$
|
||||
# Use an umask of 077, to avoid attacks that work by overwriting files in
|
||||
# the "$CVSROOT"/CVSROOT directory.
|
||||
(umask 077 && mkdir "$cvs_dir") || {
|
||||
if test -d "$cvs_dir"; then
|
||||
func_fatal_error "directory $cvs_dir already exists"
|
||||
else
|
||||
func_fatal_error "cannot create directory $cvs_dir"
|
||||
fi
|
||||
}
|
||||
CVSROOT="$srcdir/$cvs_dir"
|
||||
unset CVS_CLIENT_LOG
|
||||
unset CVS_CLIENT_PORT
|
||||
unset CVS_IGNORE_REMOTE_ROOT
|
||||
unset CVS_LOCAL_BRANCH_NUM
|
||||
unset CVS_NOBASES
|
||||
unset CVS_PASSFILE
|
||||
unset CVS_PASSWORD
|
||||
unset CVS_PROXY_PORT
|
||||
unset CVS_RCMD_PORT
|
||||
unset CVS_RSH
|
||||
unset CVS_SERVER
|
||||
unset CVS_SERVER_SLEEP
|
||||
CVS_SIGN_COMMITS=
|
||||
export CVS_SIGN_COMMITS
|
||||
unset CVS_SSH
|
||||
unset CVS_VERIFY_CHECKOUTS
|
||||
unset CVS_VERIFY_TEMPLATE
|
||||
unset CVSIGNORE
|
||||
unset CVSREAD
|
||||
unset CVSREADONLYFS
|
||||
unset CVSUMASK
|
||||
unset CVSWRAPPERS
|
||||
|
||||
# Need to pass -d "$CVSROOT", because there may be a CVS directory in the
|
||||
# current directory.
|
||||
cvs -d "$CVSROOT" init
|
||||
gzip -d -c < "$gettext_dir/archive.cvs.tar.gz" | (cd "$cvs_dir" && tar xf -)
|
||||
|
||||
cd "$work_dir"
|
||||
cvsver=gettext-`echo "$ver" | sed -e 's/\./_/g'`
|
||||
(cvs -d "$CVSROOT" checkout -r"$cvsver" archive > /dev/null) 2>&1 | grep -v '^cvs checkout: Updating'
|
||||
find archive -name CVS -type d -print | xargs rm -rf
|
||||
cd ..
|
||||
rm -rf "$cvs_dir"
|
||||
# Check that really all CVS directories are gone, otherwise we would overwrite
|
||||
# the contents of the user's CVS directories.
|
||||
if test `find $work_dir/archive -name CVS -type d -print | wc -l` != 0; then
|
||||
rm -rf "$work_dir"
|
||||
func_fatal_error "failed to remove all CVS subdirectories"
|
||||
fi
|
||||
if test `find $work_dir/archive -type f -print | wc -l` = 0; then
|
||||
rm -rf "$work_dir"
|
||||
func_fatal_error "infrastructure files for version $ver not found; this is autopoint from GNU $package $version"
|
||||
fi
|
||||
;;
|
||||
|
||||
git)
|
||||
# Check availability of the git program.
|
||||
(git --version) >/dev/null 2>/dev/null || func_fatal_error "git program not found"
|
||||
mkdir "$work_dir/archive"
|
||||
gzip -d -c < "$gettext_dir/archive.git.tar.gz" | (cd "$work_dir/archive" && tar xf -)
|
||||
(cd "$work_dir/archive" && git checkout -q "gettext-$ver") || {
|
||||
rm -rf "$work_dir"
|
||||
func_fatal_error "infrastructure files for version $ver not found; this is autopoint from GNU $package $version"
|
||||
}
|
||||
(cd "$work_dir/archive" && rm -rf .git .gitignore)
|
||||
;;
|
||||
esac
|
||||
|
||||
# func_destfile file
|
||||
# determines the destination file, relative to the package's top level
|
||||
# directory, for a given file name, relative to archive.
|
||||
# Sets variables
|
||||
# - destfile relative destination file name, or
|
||||
# empty if the file shall be omitted
|
||||
# - sharedowner yes if the file is not only owned by GNU gettext but may
|
||||
# be installed by automake or other tools, otherwise empty
|
||||
# - allpodirs yes if the file is to be installed in every dir in $podirs
|
||||
func_destfile ()
|
||||
{
|
||||
# There are five categories of files:
|
||||
# ABOUT_NLS -> top level directory
|
||||
# config.rpath mkinstalldirs -> $auxdir
|
||||
# m4/* -> $m4dir/
|
||||
# intl/* -> intl/
|
||||
# po/* ->
|
||||
sharedowner=
|
||||
allpodirs=
|
||||
case `echo "$1" | sed -e 's,[^/]*$,,'` in
|
||||
"" )
|
||||
case "$1" in
|
||||
config.rpath ) destfile="$auxdir$1" ;;
|
||||
mkinstalldirs ) destfile="$auxdir$1" sharedowner=yes ;;
|
||||
* ) destfile="$1" ;;
|
||||
esac
|
||||
;;
|
||||
m4/ ) destfile=`echo "$1" | sed -e "s,^m4/,$m4dir/,"` ;;
|
||||
intl/ ) if test -n "$omitintl"; then destfile=""; else destfile="$1"; fi ;;
|
||||
po/ ) destfile=`echo "$1" | sed -e "s,^po/,,"` allpodirs=yes ;;
|
||||
* ) destfile="$1" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
# func_compare existingfile gettextfile
|
||||
# compares the existing file and the file from gettext, and decides whether the
|
||||
# existing file should be overwritten with the file from gettext. Returns 0 if
|
||||
# it should be overwritten, or 1 if it should be skipped.
|
||||
sed_extract_serial='s/^#.* serial \([^ ]*\).*/\1/p
|
||||
1q'
|
||||
func_compare ()
|
||||
{
|
||||
if cmp -s "$1" "$2"; then
|
||||
false
|
||||
else
|
||||
case "$2" in
|
||||
*.m4)
|
||||
# For interoperability with gnulib. gnulib often has newer versions of
|
||||
# the *.m4 files than the latest gettext release. Don't overwrite a
|
||||
# newer version from gnulib with an older version from the gettext
|
||||
# release. The version can be retrieved from the first line, which
|
||||
# looks like this: # file.m4 serial NN ...
|
||||
existing_serial=`sed -n -e "$sed_extract_serial" < "$1"`
|
||||
gettext_serial=`sed -n -e "$sed_extract_serial" < "$2"`
|
||||
if test -n "$existing_serial" && test -n "$gettext_serial" \
|
||||
&& test "$existing_serial" -ge "$gettext_serial" 2> /dev/null; then
|
||||
false
|
||||
else
|
||||
true
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
true
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
|
||||
# If some files have been locally modified and we have not been requested
|
||||
# to overwrite them, then bail out. This is better than leaving a source
|
||||
# package around where half of the files are locally modified and half are
|
||||
# original - too great risk of version mismatch.
|
||||
if test -z "$force"; then
|
||||
mismatch=
|
||||
func_tmpdir
|
||||
mismatchfile="$tmp"/autopoint.diff
|
||||
for file in `find "$work_dir/archive" -type f -print | sed -e "s,^$work_dir/archive/,," | LC_ALL=C sort`; do
|
||||
func_destfile "$file"
|
||||
if test -n "$destfile"; then
|
||||
func_compare_to_destfile ()
|
||||
{
|
||||
finaldestfile="$1"
|
||||
if test -f "$finaldestfile"; then
|
||||
if func_compare "$finaldestfile" "$work_dir/archive/$file"; then
|
||||
if test -n "$sharedowner"; then
|
||||
echo "autopoint: warning: File $finaldestfile has been locally modified." 1>&2
|
||||
else
|
||||
echo "autopoint: File $finaldestfile has been locally modified." 1>&2
|
||||
mismatch=yes
|
||||
diff -c "$work_dir/archive/$file" "$finaldestfile" | sed -e "1s,$work_dir/archive/,," >> "$mismatchfile"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
if test -n "$allpodirs"; then
|
||||
for dir in $podirs; do
|
||||
func_compare_to_destfile "$dir/$destfile"
|
||||
done
|
||||
else
|
||||
func_compare_to_destfile "$destfile"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
if test -n "$mismatch"; then
|
||||
rm -rf "$work_dir"
|
||||
func_fatal_error "Some files have been locally modified. Not overwriting them because --force has not been specified. For your convenience, you find the local modifications in the file '$mismatchfile'."
|
||||
fi
|
||||
rm -rf "$tmp"
|
||||
fi
|
||||
|
||||
# func_mkdir_for to
|
||||
# ensures the directory that would the given file exists.
|
||||
# 'to' is a relative pathname, relative to the current directory.
|
||||
func_mkdir_for ()
|
||||
{
|
||||
base=`echo "$1" | sed -e 's,/[^/]*$,,'`
|
||||
if test "X$base" != "X$1" && test -n "$base"; then
|
||||
func_mkdir_for "$base"
|
||||
# Recompute base. It was clobbered by the recursive call.
|
||||
base=`echo "$1" | sed -e 's,/[^/]*$,,'`
|
||||
test -d "$base" || { echo "Creating directory $base"; mkdir "$base"; }
|
||||
fi
|
||||
}
|
||||
|
||||
# func_copy from to
|
||||
# copies a file.
|
||||
# 'from' is a relative pathname, relative to the current directory.
|
||||
# 'to' is a relative pathname, relative to the current directory.
|
||||
func_copy ()
|
||||
{
|
||||
if $doit; then
|
||||
func_mkdir_for "$2"
|
||||
rm -f "$2"
|
||||
echo "Copying file $2"
|
||||
cp "$1" "$2"
|
||||
else
|
||||
echo "Copy file $2"
|
||||
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 the current directory.
|
||||
func_backup ()
|
||||
{
|
||||
if $doit; then
|
||||
if test -f "$1"; then
|
||||
rm -f "$1~"
|
||||
cp -p "$1" "$1~"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Now copy the files.
|
||||
for file in `find "$work_dir/archive" -type f -print | sed -e "s,^$work_dir/archive/,," | LC_ALL=C sort`; do
|
||||
func_destfile "$file"
|
||||
if test -n "$destfile"; then
|
||||
func_copy_to_destfile ()
|
||||
{
|
||||
finaldestfile="$1"
|
||||
mustcopy=
|
||||
if test -f "$finaldestfile"; then
|
||||
if func_compare "$finaldestfile" "$work_dir/archive/$file"; then
|
||||
if test -n "$force"; then
|
||||
# Overwrite locally modified file.
|
||||
mustcopy=yes
|
||||
fi
|
||||
# If --force is not specified, don't overwrite locally modified files
|
||||
# for which GNU gettext is a shared owner.
|
||||
fi
|
||||
else
|
||||
mustcopy=yes
|
||||
fi
|
||||
if test -n "$mustcopy"; then
|
||||
func_backup "$finaldestfile"
|
||||
func_copy "$work_dir/archive/$file" "$finaldestfile"
|
||||
fi
|
||||
}
|
||||
if test -n "$allpodirs"; then
|
||||
for dir in $podirs; do
|
||||
func_copy_to_destfile "$dir/$destfile"
|
||||
done
|
||||
else
|
||||
func_copy_to_destfile "$destfile"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# That's it.
|
||||
rm -rf "$work_dir"
|
||||
exit 0
|
Двоичный файл не отображается.
Двоичный файл не отображается.
|
@ -0,0 +1,123 @@
|
|||
#! /bin/sh
|
||||
#
|
||||
# Copyright (C) 2003, 2005-2007 Free Software Foundation, Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU Library 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 Library General Public
|
||||
# License along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
# USA.
|
||||
#
|
||||
|
||||
# Find a way to echo strings without interpreting backslash.
|
||||
if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
|
||||
echo='echo'
|
||||
else
|
||||
if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
|
||||
echo='printf %s\n'
|
||||
else
|
||||
echo_func () {
|
||||
cat <<EOT
|
||||
$*
|
||||
EOT
|
||||
}
|
||||
echo='echo_func'
|
||||
fi
|
||||
fi
|
||||
|
||||
# This script is primarily a shell function library. In order for
|
||||
# ". gettext.sh" to find it, we install it in $PREFIX/bin (that is usually
|
||||
# contained in $PATH), rather than in some other location such as
|
||||
# $PREFIX/share/sh-scripts or $PREFIX/share/gettext. In order to not violate
|
||||
# the Filesystem Hierarchy Standard when doing so, this script is executable.
|
||||
# Therefore it needs to support the standard --help and --version.
|
||||
if test -z "$ZSH_VERSION"; then
|
||||
# zsh is not POSIX compliant: By default, while ". gettext.sh" is executed,
|
||||
# it sets $0 to "gettext.sh", defeating the purpose of this test. But
|
||||
# fortunately we know that when running under zsh, this script is always
|
||||
# being sourced, not executed, because hardly anyone is crazy enough to
|
||||
# install zsh as /bin/sh.
|
||||
case "$0" in
|
||||
gettext.sh | */gettext.sh | *\\gettext.sh)
|
||||
progname=$0
|
||||
package=gettext-runtime
|
||||
version=0.18.1
|
||||
# func_usage
|
||||
# outputs to stdout the --help usage message.
|
||||
func_usage ()
|
||||
{
|
||||
echo "GNU gettext shell script function library version $version"
|
||||
echo "Usage: . gettext.sh"
|
||||
}
|
||||
# func_version
|
||||
# outputs to stdout the --version message.
|
||||
func_version ()
|
||||
{
|
||||
echo "$progname (GNU $package) $version"
|
||||
echo "Copyright (C) 2003-2007 Free Software Foundation, Inc.
|
||||
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>
|
||||
This is free software: you are free to change and redistribute it.
|
||||
There is NO WARRANTY, to the extent permitted by law."
|
||||
echo "Written by" "Bruno Haible"
|
||||
}
|
||||
if test $# = 1; then
|
||||
case "$1" in
|
||||
--help | --hel | --he | --h )
|
||||
func_usage; exit 0 ;;
|
||||
--version | --versio | --versi | --vers | --ver | --ve | --v )
|
||||
func_version; exit 0 ;;
|
||||
esac
|
||||
fi
|
||||
func_usage 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# eval_gettext MSGID
|
||||
# looks up the translation of MSGID and substitutes shell variables in the
|
||||
# result.
|
||||
eval_gettext () {
|
||||
gettext "$1" | (export PATH `envsubst --variables "$1"`; envsubst "$1")
|
||||
}
|
||||
|
||||
# eval_ngettext MSGID MSGID-PLURAL COUNT
|
||||
# looks up the translation of MSGID / MSGID-PLURAL for COUNT and substitutes
|
||||
# shell variables in the result.
|
||||
eval_ngettext () {
|
||||
ngettext "$1" "$2" "$3" | (export PATH `envsubst --variables "$1 $2"`; envsubst "$1 $2")
|
||||
}
|
||||
|
||||
# Note: This use of envsubst is much safer than using the shell built-in 'eval'
|
||||
# would be.
|
||||
# 1) The security problem with Chinese translations that happen to use a
|
||||
# character such as \xe0\x60 is avoided.
|
||||
# 2) The security problem with malevolent translators who put in command lists
|
||||
# like "$(...)" or "`...`" is avoided.
|
||||
# 3) The translations can only refer to shell variables that are already
|
||||
# mentioned in MSGID or MSGID-PLURAL.
|
||||
#
|
||||
# Note: "export PATH" above is a dummy; this is for the case when
|
||||
# `envsubst --variables ...` returns nothing.
|
||||
#
|
||||
# Note: In eval_ngettext above, "$1 $2" means a string whose variables set is
|
||||
# the union of the variables set of "$1" and "$2".
|
||||
#
|
||||
# Note: The minimal use of backquote above ensures that trailing newlines are
|
||||
# not dropped, not from the gettext invocation and not from the value of any
|
||||
# shell variable.
|
||||
#
|
||||
# Note: Field splitting on the `envsubst --variables ...` result is desired,
|
||||
# since envsubst outputs the variables, separated by newlines. Pathname
|
||||
# wildcard expansion or tilde expansion has no effect here, since the words
|
||||
# output by "envsubst --variables ..." consist solely of alphanumeric
|
||||
# characters and underscore.
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
|
@ -0,0 +1,66 @@
|
|||
/* Class autosprintf - formatted output to an ostream.
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
|
||||
#ifndef _AUTOSPRINTF_H
|
||||
#define _AUTOSPRINTF_H
|
||||
|
||||
#ifndef __attribute__
|
||||
/* This feature is available in gcc versions 2.5 and later. */
|
||||
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
|
||||
# define __attribute__(Spec) /* empty */
|
||||
# endif
|
||||
/* The __-protected variants of `format' and `printf' attributes
|
||||
are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
|
||||
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
|
||||
# define __format__ format
|
||||
# define __printf__ printf
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
|
||||
namespace gnu
|
||||
{
|
||||
/* A temporary object, usually allocated on the stack, representing
|
||||
the result of an asprintf() call. */
|
||||
class autosprintf
|
||||
{
|
||||
public:
|
||||
/* Constructor: takes a format string and the printf arguments. */
|
||||
autosprintf (const char *format, ...)
|
||||
__attribute__ ((__format__ (__printf__, 2, 3)));
|
||||
/* Copy constructor. */
|
||||
autosprintf (const autosprintf& src);
|
||||
/* Destructor: frees the temporarily allocated string. */
|
||||
~autosprintf ();
|
||||
/* Conversion to string. */
|
||||
operator char * () const;
|
||||
operator std::string () const;
|
||||
/* Output to an ostream. */
|
||||
friend inline std::ostream& operator<< (std::ostream& stream, const autosprintf& tmp)
|
||||
{
|
||||
stream << (tmp.str ? tmp.str : "(error in autosprintf)");
|
||||
return stream;
|
||||
}
|
||||
private:
|
||||
char *str;
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* _AUTOSPRINTF_H */
|
|
@ -0,0 +1,357 @@
|
|||
/* Public API for GNU gettext PO files - contained in libgettextpo.
|
||||
Copyright (C) 2003-2008, 2010 Free Software Foundation, Inc.
|
||||
Written by Bruno Haible <bruno@clisp.org>, 2003.
|
||||
|
||||
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 3 of the License, 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, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _GETTEXT_PO_H
|
||||
#define _GETTEXT_PO_H 1
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/* =========================== Meta Information ============================ */
|
||||
|
||||
/* Version number: (major<<16) + (minor<<8) + subminor */
|
||||
#define LIBGETTEXTPO_VERSION 0x001201
|
||||
extern __declspec (dllimport) int libgettextpo_version;
|
||||
|
||||
/* ================================= Types ================================= */
|
||||
|
||||
/* A po_file_t represents the contents of a PO file. */
|
||||
typedef struct po_file *po_file_t;
|
||||
|
||||
/* A po_message_iterator_t represents an iterator through a domain of a
|
||||
PO file. */
|
||||
typedef struct po_message_iterator *po_message_iterator_t;
|
||||
|
||||
/* A po_message_t represents a message in a PO file. */
|
||||
typedef struct po_message *po_message_t;
|
||||
|
||||
/* A po_filepos_t represents a string's position within a source file. */
|
||||
typedef struct po_filepos *po_filepos_t;
|
||||
|
||||
/* A po_error_handler handles error situations. */
|
||||
struct po_error_handler
|
||||
{
|
||||
/* Signal an error. The error message is built from FORMAT and the following
|
||||
arguments. ERRNUM, if nonzero, is an errno value.
|
||||
Must increment the error_message_count variable declared in error.h.
|
||||
Must not return if STATUS is nonzero. */
|
||||
void (*error) (int status, int errnum,
|
||||
const char *format, ...)
|
||||
#if ((__GNUC__ == 3 && __GNUC_MINOR__ >= 1) || __GNUC__ > 3) && !__STRICT_ANSI__
|
||||
__attribute__ ((__format__ (__printf__, 3, 4)))
|
||||
#endif
|
||||
;
|
||||
|
||||
/* Signal an error. The error message is built from FORMAT and the following
|
||||
arguments. The error location is at FILENAME line LINENO. ERRNUM, if
|
||||
nonzero, is an errno value.
|
||||
Must increment the error_message_count variable declared in error.h.
|
||||
Must not return if STATUS is nonzero. */
|
||||
void (*error_at_line) (int status, int errnum,
|
||||
const char *filename, unsigned int lineno,
|
||||
const char *format, ...)
|
||||
#if ((__GNUC__ == 3 && __GNUC_MINOR__ >= 1) || __GNUC__ > 3) && !__STRICT_ANSI__
|
||||
__attribute__ ((__format__ (__printf__, 5, 6)))
|
||||
#endif
|
||||
;
|
||||
|
||||
/* Signal a multiline warning. The PREFIX applies to all lines of the
|
||||
MESSAGE. Free the PREFIX and MESSAGE when done. */
|
||||
void (*multiline_warning) (char *prefix, char *message);
|
||||
|
||||
/* Signal a multiline error. The PREFIX applies to all lines of the
|
||||
MESSAGE. Free the PREFIX and MESSAGE when done.
|
||||
Must increment the error_message_count variable declared in error.h if
|
||||
PREFIX is non-NULL. */
|
||||
void (*multiline_error) (char *prefix, char *message);
|
||||
};
|
||||
typedef const struct po_error_handler *po_error_handler_t;
|
||||
|
||||
/* A po_xerror_handler handles warnings, error and fatal error situations. */
|
||||
#define PO_SEVERITY_WARNING 0 /* just a warning, tell the user */
|
||||
#define PO_SEVERITY_ERROR 1 /* an error, the operation cannot complete */
|
||||
#define PO_SEVERITY_FATAL_ERROR 2 /* an error, the operation must be aborted */
|
||||
struct po_xerror_handler
|
||||
{
|
||||
/* Signal a problem of the given severity.
|
||||
MESSAGE and/or FILENAME + LINENO indicate where the problem occurred.
|
||||
If FILENAME is NULL, FILENAME and LINENO and COLUMN should be ignored.
|
||||
If LINENO is (size_t)(-1), LINENO and COLUMN should be ignored.
|
||||
If COLUMN is (size_t)(-1), it should be ignored.
|
||||
MESSAGE_TEXT is the problem description (if MULTILINE_P is true,
|
||||
multiple lines of text, each terminated with a newline, otherwise
|
||||
usually a single line).
|
||||
Must not return if SEVERITY is PO_SEVERITY_FATAL_ERROR. */
|
||||
void (*xerror) (int severity,
|
||||
po_message_t message,
|
||||
const char *filename, size_t lineno, size_t column,
|
||||
int multiline_p, const char *message_text);
|
||||
/* Signal a problem that refers to two messages.
|
||||
Similar to two calls to xerror.
|
||||
If possible, a "..." can be appended to MESSAGE_TEXT1 and prepended to
|
||||
MESSAGE_TEXT2. */
|
||||
void (*xerror2) (int severity,
|
||||
po_message_t message1,
|
||||
const char *filename1, size_t lineno1, size_t column1,
|
||||
int multiline_p1, const char *message_text1,
|
||||
po_message_t message2,
|
||||
const char *filename2, size_t lineno2, size_t column2,
|
||||
int multiline_p2, const char *message_text2);
|
||||
};
|
||||
typedef const struct po_xerror_handler *po_xerror_handler_t;
|
||||
|
||||
/* Memory allocation:
|
||||
The memory allocations performed by these functions use xmalloc(),
|
||||
therefore will cause a program exit if memory is exhausted.
|
||||
The memory allocated by po_file_read, and implicitly returned through
|
||||
the po_message_* functions, lasts until freed with po_file_free. */
|
||||
|
||||
|
||||
/* ============================= po_file_t API ============================= */
|
||||
|
||||
/* Create an empty PO file representation in memory. */
|
||||
extern po_file_t po_file_create (void);
|
||||
|
||||
/* Read a PO file into memory.
|
||||
Return its contents. Upon failure, return NULL and set errno. */
|
||||
#define po_file_read po_file_read_v3
|
||||
extern po_file_t po_file_read (const char *filename,
|
||||
po_xerror_handler_t handler);
|
||||
|
||||
/* Write an in-memory PO file to a file.
|
||||
Upon failure, return NULL and set errno. */
|
||||
#define po_file_write po_file_write_v2
|
||||
extern po_file_t po_file_write (po_file_t file, const char *filename,
|
||||
po_xerror_handler_t handler);
|
||||
|
||||
/* Free a PO file from memory. */
|
||||
extern void po_file_free (po_file_t file);
|
||||
|
||||
/* Return the names of the domains covered by a PO file in memory. */
|
||||
extern const char * const * po_file_domains (po_file_t file);
|
||||
|
||||
|
||||
/* =========================== Header entry API ============================ */
|
||||
|
||||
/* Return the header entry of a domain of a PO file in memory.
|
||||
The domain NULL denotes the default domain.
|
||||
Return NULL if there is no header entry. */
|
||||
extern const char * po_file_domain_header (po_file_t file, const char *domain);
|
||||
|
||||
/* Return the value of a field in a header entry.
|
||||
The return value is either a freshly allocated string, to be freed by the
|
||||
caller, or NULL. */
|
||||
extern char * po_header_field (const char *header, const char *field);
|
||||
|
||||
/* Return the header entry with a given field set to a given value. The field
|
||||
is added if necessary.
|
||||
The return value is a freshly allocated string. */
|
||||
extern char * po_header_set_field (const char *header, const char *field, const char *value);
|
||||
|
||||
|
||||
/* ======================= po_message_iterator_t API ======================= */
|
||||
|
||||
/* Create an iterator for traversing a domain of a PO file in memory.
|
||||
The domain NULL denotes the default domain. */
|
||||
extern po_message_iterator_t po_message_iterator (po_file_t file, const char *domain);
|
||||
|
||||
/* Free an iterator. */
|
||||
extern void po_message_iterator_free (po_message_iterator_t iterator);
|
||||
|
||||
/* Return the next message, and advance the iterator.
|
||||
Return NULL at the end of the message list. */
|
||||
extern po_message_t po_next_message (po_message_iterator_t iterator);
|
||||
|
||||
/* Insert a message in a PO file in memory, in the domain and at the position
|
||||
indicated by the iterator. The iterator thereby advances past the freshly
|
||||
inserted message. */
|
||||
extern void po_message_insert (po_message_iterator_t iterator, po_message_t message);
|
||||
|
||||
|
||||
/* =========================== po_message_t API ============================ */
|
||||
|
||||
/* Return a freshly constructed message.
|
||||
To finish initializing the message, you must set the msgid and msgstr. */
|
||||
extern po_message_t po_message_create (void);
|
||||
|
||||
/* Return the context of a message, or NULL for a message not restricted to a
|
||||
context. */
|
||||
extern const char * po_message_msgctxt (po_message_t message);
|
||||
|
||||
/* Change the context of a message. NULL means a message not restricted to a
|
||||
context. */
|
||||
extern void po_message_set_msgctxt (po_message_t message, const char *msgctxt);
|
||||
|
||||
/* Return the msgid (untranslated English string) of a message. */
|
||||
extern const char * po_message_msgid (po_message_t message);
|
||||
|
||||
/* Change the msgid (untranslated English string) of a message. */
|
||||
extern void po_message_set_msgid (po_message_t message, const char *msgid);
|
||||
|
||||
/* Return the msgid_plural (untranslated English plural string) of a message,
|
||||
or NULL for a message without plural. */
|
||||
extern const char * po_message_msgid_plural (po_message_t message);
|
||||
|
||||
/* Change the msgid_plural (untranslated English plural string) of a message.
|
||||
NULL means a message without plural. */
|
||||
extern void po_message_set_msgid_plural (po_message_t message, const char *msgid_plural);
|
||||
|
||||
/* Return the msgstr (translation) of a message.
|
||||
Return the empty string for an untranslated message. */
|
||||
extern const char * po_message_msgstr (po_message_t message);
|
||||
|
||||
/* Change the msgstr (translation) of a message.
|
||||
Use an empty string to denote an untranslated message. */
|
||||
extern void po_message_set_msgstr (po_message_t message, const char *msgstr);
|
||||
|
||||
/* Return the msgstr[index] for a message with plural handling, or
|
||||
NULL when the index is out of range or for a message without plural. */
|
||||
extern const char * po_message_msgstr_plural (po_message_t message, int index);
|
||||
|
||||
/* Change the msgstr[index] for a message with plural handling.
|
||||
Use a NULL value at the end to reduce the number of plural forms. */
|
||||
extern void po_message_set_msgstr_plural (po_message_t message, int index, const char *msgstr);
|
||||
|
||||
/* Return the comments for a message. */
|
||||
extern const char * po_message_comments (po_message_t message);
|
||||
|
||||
/* Change the comments for a message.
|
||||
comments should be a multiline string, ending in a newline, or empty. */
|
||||
extern void po_message_set_comments (po_message_t message, const char *comments);
|
||||
|
||||
/* Return the extracted comments for a message. */
|
||||
extern const char * po_message_extracted_comments (po_message_t message);
|
||||
|
||||
/* Change the extracted comments for a message.
|
||||
comments should be a multiline string, ending in a newline, or empty. */
|
||||
extern void po_message_set_extracted_comments (po_message_t message, const char *comments);
|
||||
|
||||
/* Return the i-th file position for a message, or NULL if i is out of
|
||||
range. */
|
||||
extern po_filepos_t po_message_filepos (po_message_t message, int i);
|
||||
|
||||
/* Remove the i-th file position from a message.
|
||||
The indices of all following file positions for the message are decremented
|
||||
by one. */
|
||||
extern void po_message_remove_filepos (po_message_t message, int i);
|
||||
|
||||
/* Add a file position to a message, if it is not already present for the
|
||||
message.
|
||||
file is the file name.
|
||||
start_line is the line number where the string starts, or (size_t)(-1) if no
|
||||
line number is available. */
|
||||
extern void po_message_add_filepos (po_message_t message, const char *file, size_t start_line);
|
||||
|
||||
/* Return the previous context of a message, or NULL for none. */
|
||||
extern const char * po_message_prev_msgctxt (po_message_t message);
|
||||
|
||||
/* Change the previous context of a message. NULL is allowed. */
|
||||
extern void po_message_set_prev_msgctxt (po_message_t message, const char *prev_msgctxt);
|
||||
|
||||
/* Return the previous msgid (untranslated English string) of a message, or
|
||||
NULL for none. */
|
||||
extern const char * po_message_prev_msgid (po_message_t message);
|
||||
|
||||
/* Change the previous msgid (untranslated English string) of a message.
|
||||
NULL is allowed. */
|
||||
extern void po_message_set_prev_msgid (po_message_t message, const char *prev_msgid);
|
||||
|
||||
/* Return the previous msgid_plural (untranslated English plural string) of a
|
||||
message, or NULL for none. */
|
||||
extern const char * po_message_prev_msgid_plural (po_message_t message);
|
||||
|
||||
/* Change the previous msgid_plural (untranslated English plural string) of a
|
||||
message. NULL is allowed. */
|
||||
extern void po_message_set_prev_msgid_plural (po_message_t message, const char *prev_msgid_plural);
|
||||
|
||||
/* Return true if the message is marked obsolete. */
|
||||
extern int po_message_is_obsolete (po_message_t message);
|
||||
|
||||
/* Change the obsolete mark of a message. */
|
||||
extern void po_message_set_obsolete (po_message_t message, int obsolete);
|
||||
|
||||
/* Return true if the message is marked fuzzy. */
|
||||
extern int po_message_is_fuzzy (po_message_t message);
|
||||
|
||||
/* Change the fuzzy mark of a message. */
|
||||
extern void po_message_set_fuzzy (po_message_t message, int fuzzy);
|
||||
|
||||
/* Return true if the message is marked as being a format string of the given
|
||||
type (e.g. "c-format"). */
|
||||
extern int po_message_is_format (po_message_t message, const char *format_type);
|
||||
|
||||
/* Change the format string mark for a given type of a message. */
|
||||
extern void po_message_set_format (po_message_t message, const char *format_type, /*bool*/int value);
|
||||
|
||||
/* If a numeric range of a message is set, return true and store the minimum
|
||||
and maximum value in *MINP and *MAXP. */
|
||||
extern int po_message_is_range (po_message_t message, int *minp, int *maxp);
|
||||
|
||||
/* Change the numeric range of a message. MIN and MAX must be non-negative,
|
||||
with MIN < MAX. Use MIN = MAX = -1 to remove the numeric range of a
|
||||
message. */
|
||||
extern void po_message_set_range (po_message_t message, int min, int max);
|
||||
|
||||
|
||||
/* =========================== po_filepos_t API ============================ */
|
||||
|
||||
/* Return the file name. */
|
||||
extern const char * po_filepos_file (po_filepos_t filepos);
|
||||
|
||||
/* Return the line number where the string starts, or (size_t)(-1) if no line
|
||||
number is available. */
|
||||
extern size_t po_filepos_start_line (po_filepos_t filepos);
|
||||
|
||||
|
||||
/* ============================ Format type API ============================= */
|
||||
|
||||
/* Return a NULL terminated array of the supported format types. */
|
||||
extern const char * const * po_format_list (void);
|
||||
|
||||
/* Return the pretty name associated with a format type.
|
||||
For example, for "csharp-format", return "C#".
|
||||
Return NULL if the argument is not a supported format type. */
|
||||
extern const char * po_format_pretty_name (const char *format_type);
|
||||
|
||||
|
||||
/* ============================= Checking API ============================== */
|
||||
|
||||
/* Test whether an entire file PO file is valid, like msgfmt does it.
|
||||
If it is invalid, pass the reasons to the handler. */
|
||||
extern void po_file_check_all (po_file_t file, po_xerror_handler_t handler);
|
||||
|
||||
/* Test a single message, to be inserted in a PO file in memory, like msgfmt
|
||||
does it. If it is invalid, pass the reasons to the handler. The iterator
|
||||
is not modified by this call; it only specifies the file and the domain. */
|
||||
extern void po_message_check_all (po_message_t message, po_message_iterator_t iterator, po_xerror_handler_t handler);
|
||||
|
||||
/* Test whether the message translation is a valid format string if the message
|
||||
is marked as being a format string. If it is invalid, pass the reasons to
|
||||
the handler. */
|
||||
#define po_message_check_format po_message_check_format_v2
|
||||
extern void po_message_check_format (po_message_t message, po_xerror_handler_t handler);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _GETTEXT_PO_H */
|
|
@ -0,0 +1,464 @@
|
|||
/* Message catalogs for internationalization.
|
||||
Copyright (C) 1995-1997, 2000-2010 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
|
||||
#ifndef _LIBINTL_H
|
||||
#define _LIBINTL_H 1
|
||||
|
||||
#include <locale.h>
|
||||
#if (defined __APPLE__ && defined __MACH__) && 0
|
||||
# include <xlocale.h>
|
||||
#endif
|
||||
|
||||
/* The LC_MESSAGES locale category is the category used by the functions
|
||||
gettext() and dgettext(). It is specified in POSIX, but not in ANSI C.
|
||||
On systems that don't define it, use an arbitrary value instead.
|
||||
On Solaris, <locale.h> defines __LOCALE_H (or _LOCALE_H in Solaris 2.5)
|
||||
then includes <libintl.h> (i.e. this file!) and then only defines
|
||||
LC_MESSAGES. To avoid a redefinition warning, don't define LC_MESSAGES
|
||||
in this case. */
|
||||
#if !defined LC_MESSAGES && !(defined __LOCALE_H || (defined _LOCALE_H && defined __sun))
|
||||
# define LC_MESSAGES 1729
|
||||
#endif
|
||||
|
||||
/* We define an additional symbol to signal that we use the GNU
|
||||
implementation of gettext. */
|
||||
#define __USE_GNU_GETTEXT 1
|
||||
|
||||
/* Provide information about the supported file formats. Returns the
|
||||
maximum minor revision number supported for a given major revision. */
|
||||
#define __GNU_GETTEXT_SUPPORTED_REVISION(major) \
|
||||
((major) == 0 || (major) == 1 ? 1 : -1)
|
||||
|
||||
/* Resolve a platform specific conflict on DJGPP. GNU gettext takes
|
||||
precedence over _conio_gettext. */
|
||||
#ifdef __DJGPP__
|
||||
# undef gettext
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/* Version number: (major<<16) + (minor<<8) + subminor */
|
||||
#define LIBINTL_VERSION 0x001201
|
||||
extern int libintl_version;
|
||||
|
||||
|
||||
/* We redirect the functions to those prefixed with "libintl_". This is
|
||||
necessary, because some systems define gettext/textdomain/... in the C
|
||||
library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer).
|
||||
If we used the unprefixed names, there would be cases where the
|
||||
definition in the C library would override the one in the libintl.so
|
||||
shared library. Recall that on ELF systems, the symbols are looked
|
||||
up in the following order:
|
||||
1. in the executable,
|
||||
2. in the shared libraries specified on the link command line, in order,
|
||||
3. in the dependencies of the shared libraries specified on the link
|
||||
command line,
|
||||
4. in the dlopen()ed shared libraries, in the order in which they were
|
||||
dlopen()ed.
|
||||
The definition in the C library would override the one in libintl.so if
|
||||
either
|
||||
* -lc is given on the link command line and -lintl isn't, or
|
||||
* -lc is given on the link command line before -lintl, or
|
||||
* libintl.so is a dependency of a dlopen()ed shared library but not
|
||||
linked to the executable at link time.
|
||||
Since Solaris gettext() behaves differently than GNU gettext(), this
|
||||
would be unacceptable.
|
||||
|
||||
The redirection happens by default through macros in C, so that &gettext
|
||||
is independent of the compilation unit, but through inline functions in
|
||||
C++, in order not to interfere with the name mangling of class fields or
|
||||
class methods called 'gettext'. */
|
||||
|
||||
/* The user can define _INTL_REDIRECT_INLINE or _INTL_REDIRECT_MACROS.
|
||||
If he doesn't, we choose the method. A third possible method is
|
||||
_INTL_REDIRECT_ASM, supported only by GCC. */
|
||||
#if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS)
|
||||
# if defined __GNUC__ && __GNUC__ >= 2 && !(defined __APPLE_CC__ && __APPLE_CC__ > 1) && !defined __MINGW32__ && !(__GNUC__ == 2 && defined _AIX) && (defined __STDC__ || defined __cplusplus)
|
||||
# define _INTL_REDIRECT_ASM
|
||||
# else
|
||||
# ifdef __cplusplus
|
||||
# define _INTL_REDIRECT_INLINE
|
||||
# else
|
||||
# define _INTL_REDIRECT_MACROS
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
/* Auxiliary macros. */
|
||||
#ifdef _INTL_REDIRECT_ASM
|
||||
# define _INTL_ASM(cname) __asm__ (_INTL_ASMNAME (__USER_LABEL_PREFIX__, #cname))
|
||||
# define _INTL_ASMNAME(prefix,cnamestring) _INTL_STRINGIFY (prefix) cnamestring
|
||||
# define _INTL_STRINGIFY(prefix) #prefix
|
||||
#else
|
||||
# define _INTL_ASM(cname)
|
||||
#endif
|
||||
|
||||
/* _INTL_MAY_RETURN_STRING_ARG(n) declares that the given function may return
|
||||
its n-th argument literally. This enables GCC to warn for example about
|
||||
printf (gettext ("foo %y")). */
|
||||
#if defined __GNUC__ && __GNUC__ >= 3 && !(defined __APPLE_CC__ && __APPLE_CC__ > 1 && defined __cplusplus)
|
||||
# define _INTL_MAY_RETURN_STRING_ARG(n) __attribute__ ((__format_arg__ (n)))
|
||||
#else
|
||||
# define _INTL_MAY_RETURN_STRING_ARG(n)
|
||||
#endif
|
||||
|
||||
/* Look up MSGID in the current default message catalog for the current
|
||||
LC_MESSAGES locale. If not found, returns MSGID itself (the default
|
||||
text). */
|
||||
#ifdef _INTL_REDIRECT_INLINE
|
||||
extern char *libintl_gettext (const char *__msgid)
|
||||
_INTL_MAY_RETURN_STRING_ARG (1);
|
||||
static inline char *gettext (const char *__msgid)
|
||||
{
|
||||
return libintl_gettext (__msgid);
|
||||
}
|
||||
#else
|
||||
#ifdef _INTL_REDIRECT_MACROS
|
||||
# define gettext libintl_gettext
|
||||
#endif
|
||||
extern char *gettext (const char *__msgid)
|
||||
_INTL_ASM (libintl_gettext)
|
||||
_INTL_MAY_RETURN_STRING_ARG (1);
|
||||
#endif
|
||||
|
||||
/* Look up MSGID in the DOMAINNAME message catalog for the current
|
||||
LC_MESSAGES locale. */
|
||||
#ifdef _INTL_REDIRECT_INLINE
|
||||
extern char *libintl_dgettext (const char *__domainname, const char *__msgid)
|
||||
_INTL_MAY_RETURN_STRING_ARG (2);
|
||||
static inline char *dgettext (const char *__domainname, const char *__msgid)
|
||||
{
|
||||
return libintl_dgettext (__domainname, __msgid);
|
||||
}
|
||||
#else
|
||||
#ifdef _INTL_REDIRECT_MACROS
|
||||
# define dgettext libintl_dgettext
|
||||
#endif
|
||||
extern char *dgettext (const char *__domainname, const char *__msgid)
|
||||
_INTL_ASM (libintl_dgettext)
|
||||
_INTL_MAY_RETURN_STRING_ARG (2);
|
||||
#endif
|
||||
|
||||
/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
|
||||
locale. */
|
||||
#ifdef _INTL_REDIRECT_INLINE
|
||||
extern char *libintl_dcgettext (const char *__domainname, const char *__msgid,
|
||||
int __category)
|
||||
_INTL_MAY_RETURN_STRING_ARG (2);
|
||||
static inline char *dcgettext (const char *__domainname, const char *__msgid,
|
||||
int __category)
|
||||
{
|
||||
return libintl_dcgettext (__domainname, __msgid, __category);
|
||||
}
|
||||
#else
|
||||
#ifdef _INTL_REDIRECT_MACROS
|
||||
# define dcgettext libintl_dcgettext
|
||||
#endif
|
||||
extern char *dcgettext (const char *__domainname, const char *__msgid,
|
||||
int __category)
|
||||
_INTL_ASM (libintl_dcgettext)
|
||||
_INTL_MAY_RETURN_STRING_ARG (2);
|
||||
#endif
|
||||
|
||||
|
||||
/* Similar to `gettext' but select the plural form corresponding to the
|
||||
number N. */
|
||||
#ifdef _INTL_REDIRECT_INLINE
|
||||
extern char *libintl_ngettext (const char *__msgid1, const char *__msgid2,
|
||||
unsigned long int __n)
|
||||
_INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2);
|
||||
static inline char *ngettext (const char *__msgid1, const char *__msgid2,
|
||||
unsigned long int __n)
|
||||
{
|
||||
return libintl_ngettext (__msgid1, __msgid2, __n);
|
||||
}
|
||||
#else
|
||||
#ifdef _INTL_REDIRECT_MACROS
|
||||
# define ngettext libintl_ngettext
|
||||
#endif
|
||||
extern char *ngettext (const char *__msgid1, const char *__msgid2,
|
||||
unsigned long int __n)
|
||||
_INTL_ASM (libintl_ngettext)
|
||||
_INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2);
|
||||
#endif
|
||||
|
||||
/* Similar to `dgettext' but select the plural form corresponding to the
|
||||
number N. */
|
||||
#ifdef _INTL_REDIRECT_INLINE
|
||||
extern char *libintl_dngettext (const char *__domainname, const char *__msgid1,
|
||||
const char *__msgid2, unsigned long int __n)
|
||||
_INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
|
||||
static inline char *dngettext (const char *__domainname, const char *__msgid1,
|
||||
const char *__msgid2, unsigned long int __n)
|
||||
{
|
||||
return libintl_dngettext (__domainname, __msgid1, __msgid2, __n);
|
||||
}
|
||||
#else
|
||||
#ifdef _INTL_REDIRECT_MACROS
|
||||
# define dngettext libintl_dngettext
|
||||
#endif
|
||||
extern char *dngettext (const char *__domainname,
|
||||
const char *__msgid1, const char *__msgid2,
|
||||
unsigned long int __n)
|
||||
_INTL_ASM (libintl_dngettext)
|
||||
_INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
|
||||
#endif
|
||||
|
||||
/* Similar to `dcgettext' but select the plural form corresponding to the
|
||||
number N. */
|
||||
#ifdef _INTL_REDIRECT_INLINE
|
||||
extern char *libintl_dcngettext (const char *__domainname,
|
||||
const char *__msgid1, const char *__msgid2,
|
||||
unsigned long int __n, int __category)
|
||||
_INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
|
||||
static inline char *dcngettext (const char *__domainname,
|
||||
const char *__msgid1, const char *__msgid2,
|
||||
unsigned long int __n, int __category)
|
||||
{
|
||||
return libintl_dcngettext (__domainname, __msgid1, __msgid2, __n, __category);
|
||||
}
|
||||
#else
|
||||
#ifdef _INTL_REDIRECT_MACROS
|
||||
# define dcngettext libintl_dcngettext
|
||||
#endif
|
||||
extern char *dcngettext (const char *__domainname,
|
||||
const char *__msgid1, const char *__msgid2,
|
||||
unsigned long int __n, int __category)
|
||||
_INTL_ASM (libintl_dcngettext)
|
||||
_INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/* Set the current default message catalog to DOMAINNAME.
|
||||
If DOMAINNAME is null, return the current default.
|
||||
If DOMAINNAME is "", reset to the default of "messages". */
|
||||
#ifdef _INTL_REDIRECT_INLINE
|
||||
extern char *libintl_textdomain (const char *__domainname);
|
||||
static inline char *textdomain (const char *__domainname)
|
||||
{
|
||||
return libintl_textdomain (__domainname);
|
||||
}
|
||||
#else
|
||||
#ifdef _INTL_REDIRECT_MACROS
|
||||
# define textdomain libintl_textdomain
|
||||
#endif
|
||||
extern char *textdomain (const char *__domainname)
|
||||
_INTL_ASM (libintl_textdomain);
|
||||
#endif
|
||||
|
||||
/* Specify that the DOMAINNAME message catalog will be found
|
||||
in DIRNAME rather than in the system locale data base. */
|
||||
#ifdef _INTL_REDIRECT_INLINE
|
||||
extern char *libintl_bindtextdomain (const char *__domainname,
|
||||
const char *__dirname);
|
||||
static inline char *bindtextdomain (const char *__domainname,
|
||||
const char *__dirname)
|
||||
{
|
||||
return libintl_bindtextdomain (__domainname, __dirname);
|
||||
}
|
||||
#else
|
||||
#ifdef _INTL_REDIRECT_MACROS
|
||||
# define bindtextdomain libintl_bindtextdomain
|
||||
#endif
|
||||
extern char *bindtextdomain (const char *__domainname, const char *__dirname)
|
||||
_INTL_ASM (libintl_bindtextdomain);
|
||||
#endif
|
||||
|
||||
/* Specify the character encoding in which the messages from the
|
||||
DOMAINNAME message catalog will be returned. */
|
||||
#ifdef _INTL_REDIRECT_INLINE
|
||||
extern char *libintl_bind_textdomain_codeset (const char *__domainname,
|
||||
const char *__codeset);
|
||||
static inline char *bind_textdomain_codeset (const char *__domainname,
|
||||
const char *__codeset)
|
||||
{
|
||||
return libintl_bind_textdomain_codeset (__domainname, __codeset);
|
||||
}
|
||||
#else
|
||||
#ifdef _INTL_REDIRECT_MACROS
|
||||
# define bind_textdomain_codeset libintl_bind_textdomain_codeset
|
||||
#endif
|
||||
extern char *bind_textdomain_codeset (const char *__domainname,
|
||||
const char *__codeset)
|
||||
_INTL_ASM (libintl_bind_textdomain_codeset);
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/* Support for format strings with positions in *printf(), following the
|
||||
POSIX/XSI specification.
|
||||
Note: These replacements for the *printf() functions are visible only
|
||||
in source files that #include <libintl.h> or #include "gettext.h".
|
||||
Packages that use *printf() in source files that don't refer to _()
|
||||
or gettext() but for which the format string could be the return value
|
||||
of _() or gettext() need to add this #include. Oh well. */
|
||||
|
||||
#if !0
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stddef.h>
|
||||
|
||||
/* Get va_list. */
|
||||
#if (defined __STDC__ && __STDC__) || defined __cplusplus || defined _MSC_VER
|
||||
# include <stdarg.h>
|
||||
#else
|
||||
# include <varargs.h>
|
||||
#endif
|
||||
|
||||
#if !(defined fprintf && defined _GL_STDIO_H) /* don't override gnulib */
|
||||
#undef fprintf
|
||||
#define fprintf libintl_fprintf
|
||||
extern int fprintf (FILE *, const char *, ...);
|
||||
#endif
|
||||
#if !(defined vfprintf && defined _GL_STDIO_H) /* don't override gnulib */
|
||||
#undef vfprintf
|
||||
#define vfprintf libintl_vfprintf
|
||||
extern int vfprintf (FILE *, const char *, va_list);
|
||||
#endif
|
||||
|
||||
#if !(defined printf && defined _GL_STDIO_H) /* don't override gnulib */
|
||||
#undef printf
|
||||
#if defined __NetBSD__ || defined __BEOS__ || defined __CYGWIN__ || defined __MINGW32__
|
||||
/* Don't break __attribute__((format(printf,M,N))).
|
||||
This redefinition is only possible because the libc in NetBSD, Cygwin,
|
||||
mingw does not have a function __printf__.
|
||||
Alternatively, we could have done this redirection only when compiling with
|
||||
__GNUC__, together with a symbol redirection:
|
||||
extern int printf (const char *, ...)
|
||||
__asm__ (#__USER_LABEL_PREFIX__ "libintl_printf");
|
||||
But doing it now would introduce a binary incompatibility with already
|
||||
distributed versions of libintl on these systems. */
|
||||
# define libintl_printf __printf__
|
||||
#endif
|
||||
#define printf libintl_printf
|
||||
extern int printf (const char *, ...);
|
||||
#endif
|
||||
#if !(defined vprintf && defined _GL_STDIO_H) /* don't override gnulib */
|
||||
#undef vprintf
|
||||
#define vprintf libintl_vprintf
|
||||
extern int vprintf (const char *, va_list);
|
||||
#endif
|
||||
|
||||
#if !(defined sprintf && defined _GL_STDIO_H) /* don't override gnulib */
|
||||
#undef sprintf
|
||||
#define sprintf libintl_sprintf
|
||||
extern int sprintf (char *, const char *, ...);
|
||||
#endif
|
||||
#if !(defined vsprintf && defined _GL_STDIO_H) /* don't override gnulib */
|
||||
#undef vsprintf
|
||||
#define vsprintf libintl_vsprintf
|
||||
extern int vsprintf (char *, const char *, va_list);
|
||||
#endif
|
||||
|
||||
#if 1
|
||||
|
||||
#if !(defined snprintf && defined _GL_STDIO_H) /* don't override gnulib */
|
||||
#undef snprintf
|
||||
#define snprintf libintl_snprintf
|
||||
extern int snprintf (char *, size_t, const char *, ...);
|
||||
#endif
|
||||
#if !(defined vsnprintf && defined _GL_STDIO_H) /* don't override gnulib */
|
||||
#undef vsnprintf
|
||||
#define vsnprintf libintl_vsnprintf
|
||||
extern int vsnprintf (char *, size_t, const char *, va_list);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
|
||||
#if !(defined asprintf && defined _GL_STDIO_H) /* don't override gnulib */
|
||||
#undef asprintf
|
||||
#define asprintf libintl_asprintf
|
||||
extern int asprintf (char **, const char *, ...);
|
||||
#endif
|
||||
#if !(defined vasprintf && defined _GL_STDIO_H) /* don't override gnulib */
|
||||
#undef vasprintf
|
||||
#define vasprintf libintl_vasprintf
|
||||
extern int vasprintf (char **, const char *, va_list);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
|
||||
#undef fwprintf
|
||||
#define fwprintf libintl_fwprintf
|
||||
extern int fwprintf (FILE *, const wchar_t *, ...);
|
||||
#undef vfwprintf
|
||||
#define vfwprintf libintl_vfwprintf
|
||||
extern int vfwprintf (FILE *, const wchar_t *, va_list);
|
||||
|
||||
#undef wprintf
|
||||
#define wprintf libintl_wprintf
|
||||
extern int wprintf (const wchar_t *, ...);
|
||||
#undef vwprintf
|
||||
#define vwprintf libintl_vwprintf
|
||||
extern int vwprintf (const wchar_t *, va_list);
|
||||
|
||||
#undef swprintf
|
||||
#define swprintf libintl_swprintf
|
||||
extern int swprintf (wchar_t *, size_t, const wchar_t *, ...);
|
||||
#undef vswprintf
|
||||
#define vswprintf libintl_vswprintf
|
||||
extern int vswprintf (wchar_t *, size_t, const wchar_t *, va_list);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* Support for the locale chosen by the user. */
|
||||
#if (defined __APPLE__ && defined __MACH__) || defined _WIN32 || defined __WIN32__ || defined __CYGWIN__
|
||||
|
||||
#undef setlocale
|
||||
#define setlocale libintl_setlocale
|
||||
extern char *setlocale (int, const char *);
|
||||
|
||||
#if 0
|
||||
|
||||
#undef newlocale
|
||||
#define newlocale libintl_newlocale
|
||||
extern locale_t newlocale (int, const char *, locale_t);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* Support for relocatable packages. */
|
||||
|
||||
/* Sets the original and the current installation prefix of the package.
|
||||
Relocation simply replaces a pathname starting with the original prefix
|
||||
by the corresponding pathname with the current prefix instead. Both
|
||||
prefixes should be directory names without trailing slash (i.e. use ""
|
||||
instead of "/"). */
|
||||
#define libintl_set_relocation_prefix libintl_set_relocation_prefix
|
||||
extern void
|
||||
libintl_set_relocation_prefix (const char *orig_prefix,
|
||||
const char *curr_prefix);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* libintl.h */
|
|
@ -1,4 +1,4 @@
|
|||
# This file contains a table of character encoding aliases,
|
||||
# suitable for operating system 'mingw32'.
|
||||
# It was automatically generated from config.charset.
|
||||
# Packages using this file:
|
||||
# Packages using this file: gettext-runtime gettext-tools
|
||||
|
|
Двоичный файл не отображается.
|
@ -0,0 +1,86 @@
|
|||
#!/bin/sh
|
||||
# Prints a package's identification PACKAGE VERSION or PACKAGE.
|
||||
#
|
||||
# Copyright (C) 2001-2003, 2005 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 3 of the License, 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, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
want_version="$1"
|
||||
|
||||
# NLS nuisances: Letter ranges are different in the Estonian locale.
|
||||
LC_ALL=C
|
||||
|
||||
while true; do
|
||||
if test -f configure; then
|
||||
package=`(grep '^PACKAGE_NAME=' configure; grep '^ *PACKAGE=' configure) | grep -v '=[ ]*$' | sed -e '1q' | sed -e 's/^[^=]*=//' | sed -e "s/^'//" -e "s/'$//"`
|
||||
case "$package" in
|
||||
*[\"\$\`\{\}]*)
|
||||
# Some packages (gcal) retrieve the package name dynamically.
|
||||
package=
|
||||
;;
|
||||
esac
|
||||
if test -n "$package"; then
|
||||
is_gnu=`LC_ALL=C grep "GNU $package" * 2>/dev/null | grep -v '^libtool:'`
|
||||
if test -n "$is_gnu"; then
|
||||
package="GNU $package"
|
||||
fi
|
||||
if test -n "$want_version"; then
|
||||
version=`(grep '^PACKAGE_VERSION=' configure; grep '^ *VERSION=' configure) | grep -v '=[ ]*$' | sed -e '1q' | sed -e 's/^[^=]*=//' | sed -e "s/^'//" -e "s/'$//"`
|
||||
case "$version" in
|
||||
*[\"\$\`\{\}]*)
|
||||
# Some packages (gcal, gcc, clisp) retrieve the version dynamically.
|
||||
version=
|
||||
;;
|
||||
esac
|
||||
if test -n "$version"; then
|
||||
echo "$package $version"
|
||||
else
|
||||
echo "$package"
|
||||
fi
|
||||
else
|
||||
echo "$package"
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
dir=`basename \`pwd\``
|
||||
case "$dir" in
|
||||
i18n)
|
||||
# This directory name, used in GNU make, is not the top level directory.
|
||||
;;
|
||||
*[A-Za-z]*[0-9]*)
|
||||
package=`echo "$dir" | sed -e 's/^\([^0-9]*\)[0-9].*$/\1/' -e 's/[-_]$//'`
|
||||
if test -n "$want_version"; then
|
||||
version=`echo "$dir" | sed -e 's/^[^0-9]*\([0-9].*\)$/\1/'`
|
||||
echo "$package $version"
|
||||
else
|
||||
echo "$package"
|
||||
fi
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
# Go to parent directory
|
||||
last=`/bin/pwd`
|
||||
cd ..
|
||||
curr=`/bin/pwd`
|
||||
if test "$last" = "$curr"; then
|
||||
# Oops, didn't find the package name.
|
||||
if test -n "$want_version"; then
|
||||
echo "PACKAGE VERSION"
|
||||
else
|
||||
echo "PACKAGE"
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
done
|
Двоичный файл не отображается.
|
@ -0,0 +1,436 @@
|
|||
#!/bin/sh
|
||||
# Prints the user's email address, with confirmation from the user.
|
||||
#
|
||||
# Copyright (C) 2001-2003, 2005 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 3 of the License, 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, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Prerequisites for using ${exec_prefix}/lib and ${datarootdir}/locale.
|
||||
prefix="/mingw"
|
||||
exec_prefix="${prefix}"
|
||||
datarootdir="${prefix}/share"
|
||||
datadir="${datarootdir}"
|
||||
# Set variables libdir, localedir.
|
||||
libdir="${exec_prefix}/lib"
|
||||
localedir="${datarootdir}/locale"
|
||||
|
||||
# Support for relocatability.
|
||||
if test "yes" = yes; then
|
||||
orig_installdir="$libdir"/gettext # see Makefile.am's install rule
|
||||
# Determine curr_installdir without caring for symlinked callers.
|
||||
curr_installdir=`echo "$0" | sed -e 's,/[^/]*$,,'`
|
||||
curr_installdir=`cd "$curr_installdir" && pwd`
|
||||
# Compute the original/current installation prefixes by stripping the
|
||||
# trailing directories off the original/current installation directories.
|
||||
while true; do
|
||||
orig_last=`echo "$orig_installdir" | sed -n -e 's,^.*/\([^/]*\)$,\1,p'`
|
||||
curr_last=`echo "$curr_installdir" | 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_installdir=`echo "$orig_installdir" | sed -e 's,/[^/]*$,,'`
|
||||
curr_installdir=`echo "$curr_installdir" | sed -e 's,/[^/]*$,,'`
|
||||
done
|
||||
# Now relocate the directory variables that we use.
|
||||
libdir=`echo "$libdir/" | sed -e "s%^${orig_installdir}/%${curr_installdir}/%" | sed -e 's,/$,,'`
|
||||
localedir=`echo "$localedir/" | sed -e "s%^${orig_installdir}/%${curr_installdir}/%" | sed -e 's,/$,,'`
|
||||
fi
|
||||
|
||||
# Internationalization.
|
||||
. gettext.sh
|
||||
TEXTDOMAIN=gettext-tools
|
||||
export TEXTDOMAIN
|
||||
TEXTDOMAINDIR="$localedir"
|
||||
export TEXTDOMAINDIR
|
||||
|
||||
# Redirect fileno 3 to interactive I/O.
|
||||
exec 3>/dev/tty
|
||||
|
||||
# Output a prompt.
|
||||
if test $# != 0; then
|
||||
echo "$1" 1>&3
|
||||
fi
|
||||
|
||||
# Find the user name on the local machine.
|
||||
user=`id -u -n 2>/dev/null`
|
||||
if test -z "$user"; then
|
||||
user="$USER"
|
||||
if test -z "$user"; then
|
||||
user="$LOGNAME"
|
||||
if test -z "$user"; then
|
||||
user=unknown
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Find the hostname.
|
||||
# hostname on some systems (SVR3.2, old Linux) returns a bogus exit status,
|
||||
# so uname gets run too, so we keep only the first line of output.
|
||||
#host=`(hostname || uname -n) 2>/dev/null | sed 1q`
|
||||
host=`"$libdir"/gettext/hostname --short 2>/dev/null | sed 1q`
|
||||
|
||||
# Find the hostname.
|
||||
hostfqdn=`"$libdir"/gettext/hostname --fqdn 2>/dev/null | sed 1q`
|
||||
|
||||
# Find a list of email addresses from various mailer configuration files.
|
||||
# All mailers use configuration files under $HOME. We handle them in a
|
||||
# last-modified - first-priority order.
|
||||
cd $HOME
|
||||
files=""
|
||||
|
||||
# ----------------------- BEGIN MAILER SPECIFIC CODE -----------------------
|
||||
|
||||
# Mozilla Thunderbird addresses
|
||||
files="$files .thunderbird/*/prefs.js"
|
||||
|
||||
# Mozilla addresses
|
||||
files="$files .mozilla/*/prefs.js"
|
||||
|
||||
# Netscape 4 addresses
|
||||
files="$files .netscape/liprefs.js .netscape/preferences.js"
|
||||
|
||||
# Netscape 3 addresses
|
||||
files="$files .netscape/preferences"
|
||||
|
||||
# Emacs/XEmacs rmail, Emacs/XEmacs gnus, XEmacs vm addresses
|
||||
# XEmacs mew addresses
|
||||
files="$files .emacs .emacs.el"
|
||||
|
||||
# KDE2 addresses
|
||||
files="$files .kde2/share/config/emaildefaults"
|
||||
|
||||
# KDE kmail addresses
|
||||
files="$files .kde2/share/config/kmailrc"
|
||||
|
||||
# GNOME evolution 2 addresses
|
||||
files="$files .gconf/apps/evolution/mail/%gconf.xml"
|
||||
|
||||
# GNOME evolution 1 addresses
|
||||
files="$files evolution/config.xmldb"
|
||||
|
||||
# GNOME balsa addresses
|
||||
files="$files .gnome/balsa"
|
||||
|
||||
# StarOffice and OpenOffice addresses
|
||||
sed_dos2unix='s/\r$//'
|
||||
sed_soffice51='s,StarOffice 5\.1=\(.*\)$,\1/sofficerc,p'
|
||||
sed_soffice52='s,StarOffice 5\.2=\(.*\)$,\1/user/sofficerc,p'
|
||||
sed_ooffice='s,^OpenOffice[^=]*=\(.*\)$,\1/user/config/registry/instance/org/openoffice/UserProfile.xml,p'
|
||||
files="$files Office51/sofficerc Office52/user/sofficerc "`sed -n -e "$sed_dos2unix" -e "$sed_soffice51" -e "$sed_soffice52" -e "$sed_ooffice" .sversionrc 2>/dev/null | sed -e 's,^file://*,/,'`
|
||||
|
||||
# mutt addresses
|
||||
files="$files .muttrc"
|
||||
|
||||
# pine addresses
|
||||
files="$files .pinerc"
|
||||
|
||||
# xfmail addresses
|
||||
files="$files .xfmail/.xfmailrc"
|
||||
|
||||
# tkrat addresses
|
||||
files="$files .ratatosk/ratatoskrc"
|
||||
|
||||
# ----------------------- END MAILER SPECIFIC CODE -----------------------
|
||||
|
||||
# Expand wildcards and remove nonexistent files from the list.
|
||||
nfiles=""
|
||||
for file in $files; do
|
||||
if test -r "$file" && test ! -d "$file"; then
|
||||
nfiles="$nfiles $file"
|
||||
fi
|
||||
done
|
||||
files="$nfiles"
|
||||
|
||||
addresses=""
|
||||
|
||||
if test -n "$files"; then
|
||||
|
||||
for file in `ls -t $files`; do
|
||||
|
||||
case "$file" in
|
||||
|
||||
# ----------------------- BEGIN MAILER SPECIFIC CODE -----------------------
|
||||
|
||||
# Mozilla and Mozilla Thunderbird addresses
|
||||
.mozilla/*/prefs.js | .thunderbird/*/prefs.js)
|
||||
addresses="$addresses "`grep -h '^user_pref("mail\.identity\..*\.useremail", ".*");$' $file 2>/dev/null | sed -e 's/^user_pref("mail\.identity\..*\.useremail", "\(.*\)");$/\1/'`
|
||||
;;
|
||||
|
||||
# Netscape 4 addresses
|
||||
.netscape/liprefs.js | .netscape/preferences.js)
|
||||
addresses="$addresses "`grep -h '^user_pref("mail\.identity\.useremail", ".*");$' $file 2>/dev/null | sed -e 's/^user_pref("mail\.identity\.useremail", "\(.*\)");$/\1/'`
|
||||
;;
|
||||
|
||||
# Netscape 3 addresses
|
||||
.netscape/preferences)
|
||||
addresses="$addresses "`grep -h '^EMAIL_ADDRESS:' $file 2>/dev/null | sed -e 's/^EMAIL_ADDRESS:[ ]*//'`
|
||||
;;
|
||||
|
||||
.emacs | .emacs.el)
|
||||
# Emacs/XEmacs rmail, Emacs/XEmacs gnus, XEmacs vm addresses
|
||||
addresses="$addresses "`grep -h '[ (]user-mail-address "[^"]*"' $file 2>/dev/null | sed -e 's/^.*[ (]user-mail-address "\([^"]*\)".*$/\1/'`
|
||||
# XEmacs mew addresses
|
||||
domains=`grep -h '[ (]mew-mail-domain "[^"]*"' $file 2>/dev/null | sed -e 's/^.*[ (]mew-mail-domain "\([^"]*\)".*$/\1/'`
|
||||
if test -n "$domains"; then
|
||||
for domain in $domains; do
|
||||
addresses="$addresses ${user}@$domain"
|
||||
done
|
||||
fi
|
||||
;;
|
||||
|
||||
# KDE2 addresses
|
||||
.kde2/share/config/emaildefaults)
|
||||
addresses="$addresses "`grep -h '^EmailAddress=' $file 2>/dev/null | sed -e 's/^EmailAddress=//'`
|
||||
;;
|
||||
|
||||
# KDE kmail addresses
|
||||
.kde2/share/config/kmailrc)
|
||||
addresses="$addresses "`grep -h '^Email Address=' $file 2>/dev/null | sed -e 's/^Email Address=//'`
|
||||
;;
|
||||
|
||||
# GNOME evolution 2 addresses
|
||||
.gconf/apps/evolution/mail/%gconf.xml)
|
||||
sedexpr0='s,^.*<addr-spec>\(.*\)</addr-spec>.*$,\1,p'
|
||||
addresses="$addresses "`sed -n -e "$sedexpr0" < $file`
|
||||
;;
|
||||
|
||||
# GNOME evolution 1 addresses
|
||||
evolution/config.xmldb)
|
||||
sedexpr0='s/^.*<entry name="identity_address_[0-9]*" type="string" value="\([^"]*\)".*$/\1/p'
|
||||
sedexpr1='s/\(..\)/\\x\1/g'
|
||||
sedexpr2='s,$,\\n,'
|
||||
addresses="$addresses "`sed -n -e "$sedexpr0" < $file | while read hexstring; do printf \`echo "$hexstring" | sed -e "$sedexpr1" -e "$sedexpr2"\`; done`
|
||||
;;
|
||||
|
||||
# GNOME balsa addresses
|
||||
.gnome/balsa)
|
||||
addresses="$addresses "`grep -h '^Address=' $file 2>/dev/null | sed -e 's/^Address=//'`
|
||||
;;
|
||||
|
||||
# OpenOffice addresses
|
||||
*/UserProfile.xml)
|
||||
addresses="$addresses "`sed -n -e 's,^.*<mail cfg:type="string">\(.*\)</mail>.*$,\1,p' $file 2>/dev/null`
|
||||
;;
|
||||
|
||||
# StarOffice addresses
|
||||
# Not a typo. They really write "Adress" with a single d.
|
||||
# German orthography...
|
||||
*/sofficerc)
|
||||
addresses="$addresses "`grep -h '^User-Adress=' $file 2>/dev/null | sed -e 's/#[^#]*$//' -e 's/^.*#//'`
|
||||
;;
|
||||
|
||||
# mutt addresses
|
||||
.muttrc)
|
||||
mutt_addresses=`grep -h '^set from="[^"]*"[ ]*$' $file 2>/dev/null | sed -e 's/^set from="\([^"]*\)"[ ]*$/\1/'`
|
||||
if test -n "$mutt_addresses"; then
|
||||
addresses="$addresses $mutt_addresses"
|
||||
else
|
||||
# mutt uses $EMAIL as fallback.
|
||||
if test -n "$EMAIL"; then
|
||||
addresses="$addresses $EMAIL"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
|
||||
# pine addresses
|
||||
.pinerc)
|
||||
domains=`grep -h '^user-domain=' $file 2>/dev/null | sed -e 's/^user-domain=//'`
|
||||
if test -n "$domains"; then
|
||||
for domain in $domains; do
|
||||
addresses="$addresses ${user}@$domain"
|
||||
done
|
||||
else
|
||||
# The use-only-domain-name option is only used if the user-domain option is not present.
|
||||
domains=`grep -h '^use-only-domain-name=' $file 2>/dev/null | sed -e 's/^use-only-domain-name=//'`
|
||||
if test "Yes" = "$domains"; then
|
||||
addresses="$addresses ${user}@"`echo "$hostfqdn" | sed -e 's/^[^.]*\.//'`
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
|
||||
# xfmail addresses
|
||||
.xfmail/.xfmailrc)
|
||||
addresses="$addresses "`grep -h '^from=.*<.*>' $file 2>/dev/null | sed -e 's/^.*<\([^<>]*\)>.*$/\1/'`
|
||||
;;
|
||||
|
||||
# tkrat addresses
|
||||
.ratatosk/ratatoskrc)
|
||||
domains=`grep -h '^set option(masquerade_as) ' $file 2>/dev/null | sed -e 's/^set option(masquerade_as) //'`
|
||||
if test -n "$domains"; then
|
||||
for domain in $domains; do
|
||||
addresses="$addresses ${user}@$domain"
|
||||
done
|
||||
else
|
||||
# The domain option is used only if the masquerade_as option is not present.
|
||||
domains=`grep -h '^set option(domain) ' $file 2>/dev/null | sed -e 's/^set option(domain) //'`
|
||||
if test -n "$domains"; then
|
||||
for domain in $domains; do
|
||||
addresses="$addresses ${user}@${host}.$domain"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
|
||||
# ----------------------- END MAILER SPECIFIC CODE -----------------------
|
||||
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
fi
|
||||
|
||||
# Some Debian systems have a file /etc/mailname.
|
||||
if test -r /etc/mailname; then
|
||||
hostmailname=`cat /etc/mailname`
|
||||
if test -n "$hostmailname"; then
|
||||
addresses="$addresses ${user}@$hostmailname"
|
||||
fi
|
||||
fi
|
||||
|
||||
# SuSE Linux >= 8.0 systems have a file /etc/sysconfig/mail.
|
||||
if test -r /etc/sysconfig/mail; then
|
||||
hostmailname=`. /etc/sysconfig/mail && echo "$FROM_HEADER"`
|
||||
if test -n "$hostmailname"; then
|
||||
addresses="$addresses ${user}@$hostmailname"
|
||||
fi
|
||||
fi
|
||||
|
||||
# elm has no user-defined addresses.
|
||||
# mailx has no user-defined addresses.
|
||||
# mh has no user-defined addresses.
|
||||
# They use the system default.
|
||||
addresses="$addresses ${user}@$hostfqdn"
|
||||
|
||||
# Normalize addresses: remove addresses without @, lowercase the part after @,
|
||||
# and remove duplicates.
|
||||
lowercase_sed='{
|
||||
h
|
||||
s/^[^@]*@\(.*\)$/\1/
|
||||
y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
|
||||
x
|
||||
s/^\([^@]*\)@.*/\1@/
|
||||
G
|
||||
s/\
|
||||
//
|
||||
p
|
||||
}'
|
||||
naddresses=""
|
||||
for addr in $addresses; do
|
||||
case "$addr" in
|
||||
"<"*">") addr=`echo "$addr" | sed -e 's/^<//' -e 's/>$//'` ;;
|
||||
esac
|
||||
case "$addr" in
|
||||
*@*)
|
||||
addr=`echo "$addr" | sed -n -e "$lowercase_sed"`
|
||||
case " $naddresses " in
|
||||
*" $addr "*) ;;
|
||||
*) naddresses="$naddresses $addr" ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
done
|
||||
addresses="$naddresses"
|
||||
|
||||
# Now it's time to ask the user.
|
||||
case "$addresses" in
|
||||
" "*" "*)
|
||||
# At least two addresses.
|
||||
lines=""
|
||||
i=0
|
||||
for addr in $addresses; do
|
||||
i=`expr $i + 1`
|
||||
lines="${lines}${i} ${addr}
|
||||
"
|
||||
done
|
||||
while true; do
|
||||
{ gettext "Which is your email address?"; echo; } 1>&3
|
||||
echo "$lines" 1>&3
|
||||
{ gettext "Please choose the number, or enter your email address."; echo; } 1>&3
|
||||
read answer < /dev/tty
|
||||
case "$answer" in
|
||||
*@*) ;;
|
||||
[0-9]*)
|
||||
i=0
|
||||
for addr in $addresses; do
|
||||
i=`expr $i + 1`
|
||||
if test "$i" = "$answer"; then
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
;;
|
||||
esac
|
||||
case "$answer" in
|
||||
"<"*">") answer=`echo "$answer" | sed -e 's/^<//' -e 's/>$//'` ;;
|
||||
esac
|
||||
case "$answer" in
|
||||
*" "*) { gettext "Invalid email address: invalid character."; echo; echo; } 1>&3 ; continue ;;
|
||||
*@*.*) ;;
|
||||
*@*) { gettext "Invalid email address: need a fully qualified host name or domain name."; echo; echo; } 1>&3 ; continue ;;
|
||||
*) { gettext "Invalid email address: missing @"; echo; echo; } 1>&3 ; continue ;;
|
||||
esac
|
||||
addr=`echo "$answer" | sed -n -e "$lowercase_sed"`
|
||||
break
|
||||
done
|
||||
;;
|
||||
" "*)
|
||||
# One address.
|
||||
while true; do
|
||||
{ gettext "Is the following your email address?"; echo; } 1>&3
|
||||
echo " $addresses" 1>&3
|
||||
{ gettext "Please confirm by pressing Return, or enter your email address."; echo; } 1>&3
|
||||
read answer < /dev/tty
|
||||
if test -z "$answer"; then
|
||||
addr=`echo "$addresses" | sed -e 's/^ //'`
|
||||
break
|
||||
fi
|
||||
case "$answer" in
|
||||
"<"*">") answer=`echo "$answer" | sed -e 's/^<//' -e 's/>$//'` ;;
|
||||
esac
|
||||
case "$answer" in
|
||||
*" "*) { gettext "Invalid email address: invalid character."; echo; echo; } 1>&3 ; continue ;;
|
||||
*@*.*) ;;
|
||||
*@*) { gettext "Invalid email address: need a fully qualified host name or domain name."; echo; echo; } 1>&3 ; continue ;;
|
||||
*) { gettext "Invalid email address: missing @"; echo; echo; } 1>&3 ; continue ;;
|
||||
esac
|
||||
addr=`echo "$answer" | sed -n -e "$lowercase_sed"`
|
||||
break
|
||||
done
|
||||
;;
|
||||
"")
|
||||
# No address.
|
||||
{ gettext "Couldn't find out about your email address."; echo; } 1>&3
|
||||
while true; do
|
||||
{ gettext "Please enter your email address."; echo; } 1>&3
|
||||
read answer < /dev/tty
|
||||
case "$answer" in
|
||||
"<"*">") answer=`echo "$answer" | sed -e 's/^<//' -e 's/>$//'` ;;
|
||||
esac
|
||||
case "$answer" in
|
||||
*" "*) { gettext "Invalid email address: invalid character."; echo; echo; } 1>&3 ; continue ;;
|
||||
*@*.*) ;;
|
||||
*@*) { gettext "Invalid email address: need a fully qualified host name or domain name."; echo; echo; } 1>&3 ; continue ;;
|
||||
*) { gettext "Invalid email address: missing @"; echo; echo; } 1>&3 ; continue ;;
|
||||
esac
|
||||
addr=`echo "$answer" | sed -n -e "$lowercase_sed"`
|
||||
break
|
||||
done
|
||||
;;
|
||||
*) echo "internal error" 1>&3 ; exit 1 ;;
|
||||
esac
|
||||
|
||||
# Print to standard output.
|
||||
echo "$addr"
|
Двоичный файл не отображается.
Двоичный файл не отображается.
|
@ -0,0 +1,41 @@
|
|||
# libasprintf.la - a libtool library file
|
||||
# Generated by ltmain.sh (GNU libtool) 2.2.6
|
||||
#
|
||||
# Please DO NOT delete this file!
|
||||
# It is necessary for linking the library.
|
||||
|
||||
# The name that we can dlopen(3).
|
||||
dlname='../bin/libasprintf-0.dll'
|
||||
|
||||
# Names of this library.
|
||||
library_names='libasprintf.dll.a'
|
||||
|
||||
# The name of the static archive.
|
||||
old_library='libasprintf.a'
|
||||
|
||||
# Linker flags that can not go in dependency_libs.
|
||||
inherited_linker_flags=''
|
||||
|
||||
# Libraries that this one depends upon.
|
||||
dependency_libs=''
|
||||
|
||||
# Names of additional weak libraries provided by this library
|
||||
weak_library_names=''
|
||||
|
||||
# Version information for libasprintf.
|
||||
current=0
|
||||
age=0
|
||||
revision=0
|
||||
|
||||
# Is this an already installed library?
|
||||
installed=yes
|
||||
|
||||
# Should we warn about portability when linking against -modules?
|
||||
shouldnotlink=no
|
||||
|
||||
# Files to dlopen/dlpreopen
|
||||
dlopen=''
|
||||
dlpreopen=''
|
||||
|
||||
# Directory that this library needs to be installed in:
|
||||
libdir='/mingw/lib'
|
Двоичный файл не отображается.
|
@ -0,0 +1,41 @@
|
|||
# libgettextlib.la - a libtool library file
|
||||
# Generated by ltmain.sh (GNU libtool) 2.2.6
|
||||
#
|
||||
# Please DO NOT delete this file!
|
||||
# It is necessary for linking the library.
|
||||
|
||||
# The name that we can dlopen(3).
|
||||
dlname='../bin/libgettextlib-0-18-1.dll'
|
||||
|
||||
# Names of this library.
|
||||
library_names='libgettextlib.dll.a'
|
||||
|
||||
# The name of the static archive.
|
||||
old_library='libgettextlib.a'
|
||||
|
||||
# Linker flags that can not go in dependency_libs.
|
||||
inherited_linker_flags=''
|
||||
|
||||
# Libraries that this one depends upon.
|
||||
dependency_libs=' -R/mingw/lib /mingw/lib/libintl.la -L/mingw/lib /mingw/lib/libiconv.la'
|
||||
|
||||
# Names of additional weak libraries provided by this library
|
||||
weak_library_names=''
|
||||
|
||||
# Version information for libgettextlib.
|
||||
current=0
|
||||
age=0
|
||||
revision=0
|
||||
|
||||
# Is this an already installed library?
|
||||
installed=yes
|
||||
|
||||
# Should we warn about portability when linking against -modules?
|
||||
shouldnotlink=no
|
||||
|
||||
# Files to dlopen/dlpreopen
|
||||
dlopen=''
|
||||
dlpreopen=''
|
||||
|
||||
# Directory that this library needs to be installed in:
|
||||
libdir='/mingw/lib'
|
Двоичный файл не отображается.
Двоичный файл не отображается.
|
@ -0,0 +1,41 @@
|
|||
# libgettextpo.la - a libtool library file
|
||||
# Generated by ltmain.sh (GNU libtool) 2.2.6
|
||||
#
|
||||
# Please DO NOT delete this file!
|
||||
# It is necessary for linking the library.
|
||||
|
||||
# The name that we can dlopen(3).
|
||||
dlname='../bin/libgettextpo-0.dll'
|
||||
|
||||
# Names of this library.
|
||||
library_names='libgettextpo.dll.a'
|
||||
|
||||
# The name of the static archive.
|
||||
old_library='libgettextpo.a'
|
||||
|
||||
# Linker flags that can not go in dependency_libs.
|
||||
inherited_linker_flags=''
|
||||
|
||||
# Libraries that this one depends upon.
|
||||
dependency_libs=' -R/mingw/lib /mingw/lib/libintl.la -L/mingw/lib /mingw/lib/libiconv.la'
|
||||
|
||||
# Names of additional weak libraries provided by this library
|
||||
weak_library_names=''
|
||||
|
||||
# Version information for libgettextpo.
|
||||
current=5
|
||||
age=5
|
||||
revision=1
|
||||
|
||||
# Is this an already installed library?
|
||||
installed=yes
|
||||
|
||||
# Should we warn about portability when linking against -modules?
|
||||
shouldnotlink=no
|
||||
|
||||
# Files to dlopen/dlpreopen
|
||||
dlopen=''
|
||||
dlpreopen=''
|
||||
|
||||
# Directory that this library needs to be installed in:
|
||||
libdir='/mingw/lib'
|
Двоичный файл не отображается.
|
@ -0,0 +1,41 @@
|
|||
# libgettextsrc.la - a libtool library file
|
||||
# Generated by ltmain.sh (GNU libtool) 2.2.6
|
||||
#
|
||||
# Please DO NOT delete this file!
|
||||
# It is necessary for linking the library.
|
||||
|
||||
# The name that we can dlopen(3).
|
||||
dlname='../bin/libgettextsrc-0-18-1.dll'
|
||||
|
||||
# Names of this library.
|
||||
library_names='libgettextsrc.dll.a'
|
||||
|
||||
# The name of the static archive.
|
||||
old_library='libgettextsrc.a'
|
||||
|
||||
# Linker flags that can not go in dependency_libs.
|
||||
inherited_linker_flags=''
|
||||
|
||||
# Libraries that this one depends upon.
|
||||
dependency_libs=' -R/mingw/lib /mingw/lib/libgettextlib.la -L/mingw/lib /mingw/lib/libintl.la /mingw/lib/libiconv.la'
|
||||
|
||||
# Names of additional weak libraries provided by this library
|
||||
weak_library_names=''
|
||||
|
||||
# Version information for libgettextsrc.
|
||||
current=0
|
||||
age=0
|
||||
revision=0
|
||||
|
||||
# Is this an already installed library?
|
||||
installed=yes
|
||||
|
||||
# Should we warn about portability when linking against -modules?
|
||||
shouldnotlink=no
|
||||
|
||||
# Files to dlopen/dlpreopen
|
||||
dlopen=''
|
||||
dlpreopen=''
|
||||
|
||||
# Directory that this library needs to be installed in:
|
||||
libdir='/mingw/lib'
|
Двоичный файл не отображается.
Двоичный файл не отображается.
|
@ -0,0 +1,21 @@
|
|||
# codeset.m4 serial 4 (gettext-0.18)
|
||||
dnl Copyright (C) 2000-2002, 2006, 2008-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
|
||||
AC_DEFUN([AM_LANGINFO_CODESET],
|
||||
[
|
||||
AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset],
|
||||
[AC_TRY_LINK([#include <langinfo.h>],
|
||||
[char* cs = nl_langinfo(CODESET); return !cs;],
|
||||
[am_cv_langinfo_codeset=yes],
|
||||
[am_cv_langinfo_codeset=no])
|
||||
])
|
||||
if test $am_cv_langinfo_codeset = yes; then
|
||||
AC_DEFINE([HAVE_LANGINFO_CODESET], [1],
|
||||
[Define if you have <langinfo.h> and nl_langinfo(CODESET).])
|
||||
fi
|
||||
])
|
|
@ -0,0 +1,81 @@
|
|||
# fcntl-o.m4 serial 1
|
||||
dnl Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl Written by Paul Eggert.
|
||||
|
||||
# Test whether the flags O_NOATIME and O_NOFOLLOW actually work.
|
||||
# Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise.
|
||||
# Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise.
|
||||
AC_DEFUN([gl_FCNTL_O_FLAGS],
|
||||
[
|
||||
dnl Persuade glibc <fcntl.h> to define O_NOATIME and O_NOFOLLOW.
|
||||
AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
|
||||
AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h],
|
||||
[AC_RUN_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#ifndef O_NOATIME
|
||||
#define O_NOATIME 0
|
||||
#endif
|
||||
#ifndef O_NOFOLLOW
|
||||
#define O_NOFOLLOW 0
|
||||
#endif
|
||||
static int const constants[] =
|
||||
{
|
||||
O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
|
||||
O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
|
||||
};
|
||||
]],
|
||||
[[
|
||||
int status = !constants;
|
||||
{
|
||||
static char const sym[] = "conftest.sym";
|
||||
if (symlink (".", sym) != 0
|
||||
|| close (open (sym, O_RDONLY | O_NOFOLLOW)) == 0)
|
||||
status |= 32;
|
||||
unlink (sym);
|
||||
}
|
||||
{
|
||||
static char const file[] = "confdefs.h";
|
||||
int fd = open (file, O_RDONLY | O_NOATIME);
|
||||
char c;
|
||||
struct stat st0, st1;
|
||||
if (fd < 0
|
||||
|| fstat (fd, &st0) != 0
|
||||
|| sleep (1) != 0
|
||||
|| read (fd, &c, 1) != 1
|
||||
|| close (fd) != 0
|
||||
|| stat (file, &st1) != 0
|
||||
|| st0.st_atime != st1.st_atime)
|
||||
status |= 64;
|
||||
}
|
||||
return status;]])],
|
||||
[gl_cv_header_working_fcntl_h=yes],
|
||||
[case $? in #(
|
||||
32) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
|
||||
64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
|
||||
96) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
|
||||
*) gl_cv_header_working_fcntl_h='no';;
|
||||
esac],
|
||||
[gl_cv_header_working_fcntl_h=cross-compiling])])
|
||||
|
||||
case $gl_cv_header_working_fcntl_h in #(
|
||||
*O_NOATIME* | no | cross-compiling) ac_val=0;; #(
|
||||
*) ac_val=1;;
|
||||
esac
|
||||
AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val],
|
||||
[Define to 1 if O_NOATIME works.])
|
||||
|
||||
case $gl_cv_header_working_fcntl_h in #(
|
||||
*O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
|
||||
*) ac_val=1;;
|
||||
esac
|
||||
AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val],
|
||||
[Define to 1 if O_NOFOLLOW works.])
|
||||
])
|
|
@ -0,0 +1,383 @@
|
|||
# gettext.m4 serial 63 (gettext-0.18)
|
||||
dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
dnl
|
||||
dnl This file can can be used in projects which are not available under
|
||||
dnl the GNU General Public License or the GNU Library General Public
|
||||
dnl License but which still want to provide support for the GNU gettext
|
||||
dnl functionality.
|
||||
dnl Please note that the actual code of the GNU gettext library is covered
|
||||
dnl by the GNU Library General Public License, and the rest of the GNU
|
||||
dnl gettext package package is covered by the GNU General Public License.
|
||||
dnl They are *not* in the public domain.
|
||||
|
||||
dnl Authors:
|
||||
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
||||
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010.
|
||||
|
||||
dnl Macro to add for using GNU gettext.
|
||||
|
||||
dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
|
||||
dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
|
||||
dnl default (if it is not specified or empty) is 'no-libtool'.
|
||||
dnl INTLSYMBOL should be 'external' for packages with no intl directory,
|
||||
dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory.
|
||||
dnl If INTLSYMBOL is 'use-libtool', then a libtool library
|
||||
dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
|
||||
dnl depending on --{enable,disable}-{shared,static} and on the presence of
|
||||
dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
|
||||
dnl $(top_builddir)/intl/libintl.a will be created.
|
||||
dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
|
||||
dnl implementations (in libc or libintl) without the ngettext() function
|
||||
dnl will be ignored. If NEEDSYMBOL is specified and is
|
||||
dnl 'need-formatstring-macros', then GNU gettext implementations that don't
|
||||
dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
|
||||
dnl INTLDIR is used to find the intl libraries. If empty,
|
||||
dnl the value `$(top_builddir)/intl/' is used.
|
||||
dnl
|
||||
dnl The result of the configuration is one of three cases:
|
||||
dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
|
||||
dnl and used.
|
||||
dnl Catalog format: GNU --> install in $(datadir)
|
||||
dnl Catalog extension: .mo after installation, .gmo in source tree
|
||||
dnl 2) GNU gettext has been found in the system's C library.
|
||||
dnl Catalog format: GNU --> install in $(datadir)
|
||||
dnl Catalog extension: .mo after installation, .gmo in source tree
|
||||
dnl 3) No internationalization, always use English msgid.
|
||||
dnl Catalog format: none
|
||||
dnl Catalog extension: none
|
||||
dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
|
||||
dnl The use of .gmo is historical (it was needed to avoid overwriting the
|
||||
dnl GNU format catalogs when building on a platform with an X/Open gettext),
|
||||
dnl but we keep it in order not to force irrelevant filename changes on the
|
||||
dnl maintainers.
|
||||
dnl
|
||||
AC_DEFUN([AM_GNU_GETTEXT],
|
||||
[
|
||||
dnl Argument checking.
|
||||
ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
|
||||
[errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
|
||||
])])])])])
|
||||
ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
|
||||
[AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])])
|
||||
ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
|
||||
[errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
|
||||
])])])])
|
||||
define([gt_included_intl],
|
||||
ifelse([$1], [external],
|
||||
ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]),
|
||||
[yes]))
|
||||
define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], []))
|
||||
gt_NEEDS_INIT
|
||||
AM_GNU_GETTEXT_NEED([$2])
|
||||
|
||||
AC_REQUIRE([AM_PO_SUBDIRS])dnl
|
||||
ifelse(gt_included_intl, yes, [
|
||||
AC_REQUIRE([AM_INTL_SUBDIR])dnl
|
||||
])
|
||||
|
||||
dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
|
||||
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
||||
AC_REQUIRE([AC_LIB_RPATH])
|
||||
|
||||
dnl Sometimes libintl requires libiconv, so first search for libiconv.
|
||||
dnl Ideally we would do this search only after the
|
||||
dnl if test "$USE_NLS" = "yes"; then
|
||||
dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
|
||||
dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
|
||||
dnl the configure script would need to contain the same shell code
|
||||
dnl again, outside any 'if'. There are two solutions:
|
||||
dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
|
||||
dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
|
||||
dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
|
||||
dnl documented, we avoid it.
|
||||
ifelse(gt_included_intl, yes, , [
|
||||
AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
|
||||
])
|
||||
|
||||
dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation.
|
||||
gt_INTL_MACOSX
|
||||
|
||||
dnl Set USE_NLS.
|
||||
AC_REQUIRE([AM_NLS])
|
||||
|
||||
ifelse(gt_included_intl, yes, [
|
||||
BUILD_INCLUDED_LIBINTL=no
|
||||
USE_INCLUDED_LIBINTL=no
|
||||
])
|
||||
LIBINTL=
|
||||
LTLIBINTL=
|
||||
POSUB=
|
||||
|
||||
dnl Add a version number to the cache macros.
|
||||
case " $gt_needs " in
|
||||
*" need-formatstring-macros "*) gt_api_version=3 ;;
|
||||
*" need-ngettext "*) gt_api_version=2 ;;
|
||||
*) gt_api_version=1 ;;
|
||||
esac
|
||||
gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
|
||||
gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
|
||||
|
||||
dnl If we use NLS figure out what method
|
||||
if test "$USE_NLS" = "yes"; then
|
||||
gt_use_preinstalled_gnugettext=no
|
||||
ifelse(gt_included_intl, yes, [
|
||||
AC_MSG_CHECKING([whether included gettext is requested])
|
||||
AC_ARG_WITH([included-gettext],
|
||||
[ --with-included-gettext use the GNU gettext library included here],
|
||||
nls_cv_force_use_gnu_gettext=$withval,
|
||||
nls_cv_force_use_gnu_gettext=no)
|
||||
AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext])
|
||||
|
||||
nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
|
||||
if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
|
||||
])
|
||||
dnl User does not insist on using GNU NLS library. Figure out what
|
||||
dnl to use. If GNU gettext is available we use this. Else we have
|
||||
dnl to fall back to GNU NLS library.
|
||||
|
||||
if test $gt_api_version -ge 3; then
|
||||
gt_revision_test_code='
|
||||
#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
|
||||
#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
|
||||
#endif
|
||||
changequote(,)dnl
|
||||
typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
|
||||
changequote([,])dnl
|
||||
'
|
||||
else
|
||||
gt_revision_test_code=
|
||||
fi
|
||||
if test $gt_api_version -ge 2; then
|
||||
gt_expression_test_code=' + * ngettext ("", "", 0)'
|
||||
else
|
||||
gt_expression_test_code=
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
|
||||
[AC_TRY_LINK([#include <libintl.h>
|
||||
$gt_revision_test_code
|
||||
extern int _nl_msg_cat_cntr;
|
||||
extern int *_nl_domain_bindings;],
|
||||
[bindtextdomain ("", "");
|
||||
return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings],
|
||||
[eval "$gt_func_gnugettext_libc=yes"],
|
||||
[eval "$gt_func_gnugettext_libc=no"])])
|
||||
|
||||
if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
|
||||
dnl Sometimes libintl requires libiconv, so first search for libiconv.
|
||||
ifelse(gt_included_intl, yes, , [
|
||||
AM_ICONV_LINK
|
||||
])
|
||||
dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
|
||||
dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
|
||||
dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
|
||||
dnl even if libiconv doesn't exist.
|
||||
AC_LIB_LINKFLAGS_BODY([intl])
|
||||
AC_CACHE_CHECK([for GNU gettext in libintl],
|
||||
[$gt_func_gnugettext_libintl],
|
||||
[gt_save_CPPFLAGS="$CPPFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS $INCINTL"
|
||||
gt_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS $LIBINTL"
|
||||
dnl Now see whether libintl exists and does not depend on libiconv.
|
||||
AC_TRY_LINK([#include <libintl.h>
|
||||
$gt_revision_test_code
|
||||
extern int _nl_msg_cat_cntr;
|
||||
extern
|
||||
#ifdef __cplusplus
|
||||
"C"
|
||||
#endif
|
||||
const char *_nl_expand_alias (const char *);],
|
||||
[bindtextdomain ("", "");
|
||||
return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
|
||||
[eval "$gt_func_gnugettext_libintl=yes"],
|
||||
[eval "$gt_func_gnugettext_libintl=no"])
|
||||
dnl Now see whether libintl exists and depends on libiconv.
|
||||
if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
|
||||
LIBS="$LIBS $LIBICONV"
|
||||
AC_TRY_LINK([#include <libintl.h>
|
||||
$gt_revision_test_code
|
||||
extern int _nl_msg_cat_cntr;
|
||||
extern
|
||||
#ifdef __cplusplus
|
||||
"C"
|
||||
#endif
|
||||
const char *_nl_expand_alias (const char *);],
|
||||
[bindtextdomain ("", "");
|
||||
return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
|
||||
[LIBINTL="$LIBINTL $LIBICONV"
|
||||
LTLIBINTL="$LTLIBINTL $LTLIBICONV"
|
||||
eval "$gt_func_gnugettext_libintl=yes"
|
||||
])
|
||||
fi
|
||||
CPPFLAGS="$gt_save_CPPFLAGS"
|
||||
LIBS="$gt_save_LIBS"])
|
||||
fi
|
||||
|
||||
dnl If an already present or preinstalled GNU gettext() is found,
|
||||
dnl use it. But if this macro is used in GNU gettext, and GNU
|
||||
dnl gettext is already preinstalled in libintl, we update this
|
||||
dnl libintl. (Cf. the install rule in intl/Makefile.in.)
|
||||
if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
|
||||
|| { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
|
||||
&& test "$PACKAGE" != gettext-runtime \
|
||||
&& test "$PACKAGE" != gettext-tools; }; then
|
||||
gt_use_preinstalled_gnugettext=yes
|
||||
else
|
||||
dnl Reset the values set by searching for libintl.
|
||||
LIBINTL=
|
||||
LTLIBINTL=
|
||||
INCINTL=
|
||||
fi
|
||||
|
||||
ifelse(gt_included_intl, yes, [
|
||||
if test "$gt_use_preinstalled_gnugettext" != "yes"; then
|
||||
dnl GNU gettext is not found in the C library.
|
||||
dnl Fall back on included GNU gettext library.
|
||||
nls_cv_use_gnu_gettext=yes
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "$nls_cv_use_gnu_gettext" = "yes"; then
|
||||
dnl Mark actions used to generate GNU NLS library.
|
||||
BUILD_INCLUDED_LIBINTL=yes
|
||||
USE_INCLUDED_LIBINTL=yes
|
||||
LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD"
|
||||
LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD"
|
||||
LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
|
||||
fi
|
||||
|
||||
CATOBJEXT=
|
||||
if test "$gt_use_preinstalled_gnugettext" = "yes" \
|
||||
|| test "$nls_cv_use_gnu_gettext" = "yes"; then
|
||||
dnl Mark actions to use GNU gettext tools.
|
||||
CATOBJEXT=.gmo
|
||||
fi
|
||||
])
|
||||
|
||||
if test -n "$INTL_MACOSX_LIBS"; then
|
||||
if test "$gt_use_preinstalled_gnugettext" = "yes" \
|
||||
|| test "$nls_cv_use_gnu_gettext" = "yes"; then
|
||||
dnl Some extra flags are needed during linking.
|
||||
LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
|
||||
LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "$gt_use_preinstalled_gnugettext" = "yes" \
|
||||
|| test "$nls_cv_use_gnu_gettext" = "yes"; then
|
||||
AC_DEFINE([ENABLE_NLS], [1],
|
||||
[Define to 1 if translation of program messages to the user's native language
|
||||
is requested.])
|
||||
else
|
||||
USE_NLS=no
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([whether to use NLS])
|
||||
AC_MSG_RESULT([$USE_NLS])
|
||||
if test "$USE_NLS" = "yes"; then
|
||||
AC_MSG_CHECKING([where the gettext function comes from])
|
||||
if test "$gt_use_preinstalled_gnugettext" = "yes"; then
|
||||
if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
|
||||
gt_source="external libintl"
|
||||
else
|
||||
gt_source="libc"
|
||||
fi
|
||||
else
|
||||
gt_source="included intl directory"
|
||||
fi
|
||||
AC_MSG_RESULT([$gt_source])
|
||||
fi
|
||||
|
||||
if test "$USE_NLS" = "yes"; then
|
||||
|
||||
if test "$gt_use_preinstalled_gnugettext" = "yes"; then
|
||||
if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
|
||||
AC_MSG_CHECKING([how to link with libintl])
|
||||
AC_MSG_RESULT([$LIBINTL])
|
||||
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
|
||||
fi
|
||||
|
||||
dnl For backward compatibility. Some packages may be using this.
|
||||
AC_DEFINE([HAVE_GETTEXT], [1],
|
||||
[Define if the GNU gettext() function is already present or preinstalled.])
|
||||
AC_DEFINE([HAVE_DCGETTEXT], [1],
|
||||
[Define if the GNU dcgettext() function is already present or preinstalled.])
|
||||
fi
|
||||
|
||||
dnl We need to process the po/ directory.
|
||||
POSUB=po
|
||||
fi
|
||||
|
||||
ifelse(gt_included_intl, yes, [
|
||||
dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
|
||||
dnl to 'yes' because some of the testsuite requires it.
|
||||
if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
|
||||
BUILD_INCLUDED_LIBINTL=yes
|
||||
fi
|
||||
|
||||
dnl Make all variables we use known to autoconf.
|
||||
AC_SUBST([BUILD_INCLUDED_LIBINTL])
|
||||
AC_SUBST([USE_INCLUDED_LIBINTL])
|
||||
AC_SUBST([CATOBJEXT])
|
||||
|
||||
dnl For backward compatibility. Some configure.ins may be using this.
|
||||
nls_cv_header_intl=
|
||||
nls_cv_header_libgt=
|
||||
|
||||
dnl For backward compatibility. Some Makefiles may be using this.
|
||||
DATADIRNAME=share
|
||||
AC_SUBST([DATADIRNAME])
|
||||
|
||||
dnl For backward compatibility. Some Makefiles may be using this.
|
||||
INSTOBJEXT=.mo
|
||||
AC_SUBST([INSTOBJEXT])
|
||||
|
||||
dnl For backward compatibility. Some Makefiles may be using this.
|
||||
GENCAT=gencat
|
||||
AC_SUBST([GENCAT])
|
||||
|
||||
dnl For backward compatibility. Some Makefiles may be using this.
|
||||
INTLOBJS=
|
||||
if test "$USE_INCLUDED_LIBINTL" = yes; then
|
||||
INTLOBJS="\$(GETTOBJS)"
|
||||
fi
|
||||
AC_SUBST([INTLOBJS])
|
||||
|
||||
dnl Enable libtool support if the surrounding package wishes it.
|
||||
INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
|
||||
AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
|
||||
])
|
||||
|
||||
dnl For backward compatibility. Some Makefiles may be using this.
|
||||
INTLLIBS="$LIBINTL"
|
||||
AC_SUBST([INTLLIBS])
|
||||
|
||||
dnl Make all documented variables known to autoconf.
|
||||
AC_SUBST([LIBINTL])
|
||||
AC_SUBST([LTLIBINTL])
|
||||
AC_SUBST([POSUB])
|
||||
])
|
||||
|
||||
|
||||
dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized.
|
||||
m4_define([gt_NEEDS_INIT],
|
||||
[
|
||||
m4_divert_text([DEFAULTS], [gt_needs=])
|
||||
m4_define([gt_NEEDS_INIT], [])
|
||||
])
|
||||
|
||||
|
||||
dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL])
|
||||
AC_DEFUN([AM_GNU_GETTEXT_NEED],
|
||||
[
|
||||
m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"])
|
||||
])
|
||||
|
||||
|
||||
dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
|
||||
AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
|
|
@ -0,0 +1,30 @@
|
|||
# glibc2.m4 serial 2
|
||||
dnl Copyright (C) 2000-2002, 2004, 2008-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# Test for the GNU C Library, version 2.0 or newer.
|
||||
# From Bruno Haible.
|
||||
|
||||
AC_DEFUN([gt_GLIBC2],
|
||||
[
|
||||
AC_CACHE_CHECK([whether we are using the GNU C Library 2 or newer],
|
||||
[ac_cv_gnu_library_2],
|
||||
[AC_EGREP_CPP([Lucky GNU user],
|
||||
[
|
||||
#include <features.h>
|
||||
#ifdef __GNU_LIBRARY__
|
||||
#if (__GLIBC__ >= 2)
|
||||
Lucky GNU user
|
||||
#endif
|
||||
#endif
|
||||
],
|
||||
[ac_cv_gnu_library_2=yes],
|
||||
[ac_cv_gnu_library_2=no])
|
||||
]
|
||||
)
|
||||
AC_SUBST([GLIBC2])
|
||||
GLIBC2="$ac_cv_gnu_library_2"
|
||||
]
|
||||
)
|
|
@ -0,0 +1,30 @@
|
|||
# glibc21.m4 serial 4
|
||||
dnl Copyright (C) 2000-2002, 2004, 2008-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# Test for the GNU C Library, version 2.1 or newer.
|
||||
# From Bruno Haible.
|
||||
|
||||
AC_DEFUN([gl_GLIBC21],
|
||||
[
|
||||
AC_CACHE_CHECK([whether we are using the GNU C Library 2.1 or newer],
|
||||
[ac_cv_gnu_library_2_1],
|
||||
[AC_EGREP_CPP([Lucky GNU user],
|
||||
[
|
||||
#include <features.h>
|
||||
#ifdef __GNU_LIBRARY__
|
||||
#if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
|
||||
Lucky GNU user
|
||||
#endif
|
||||
#endif
|
||||
],
|
||||
[ac_cv_gnu_library_2_1=yes],
|
||||
[ac_cv_gnu_library_2_1=no])
|
||||
]
|
||||
)
|
||||
AC_SUBST([GLIBC21])
|
||||
GLIBC21="$ac_cv_gnu_library_2_1"
|
||||
]
|
||||
)
|
|
@ -0,0 +1,214 @@
|
|||
# iconv.m4 serial 11 (gettext-0.18.1)
|
||||
dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
|
||||
AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
|
||||
[
|
||||
dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
|
||||
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
||||
AC_REQUIRE([AC_LIB_RPATH])
|
||||
|
||||
dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
|
||||
dnl accordingly.
|
||||
AC_LIB_LINKFLAGS_BODY([iconv])
|
||||
])
|
||||
|
||||
AC_DEFUN([AM_ICONV_LINK],
|
||||
[
|
||||
dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
|
||||
dnl those with the standalone portable GNU libiconv installed).
|
||||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||||
|
||||
dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
|
||||
dnl accordingly.
|
||||
AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
|
||||
|
||||
dnl Add $INCICONV to CPPFLAGS before performing the following checks,
|
||||
dnl because if the user has installed libiconv and not disabled its use
|
||||
dnl via --without-libiconv-prefix, he wants to use it. The first
|
||||
dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
|
||||
am_save_CPPFLAGS="$CPPFLAGS"
|
||||
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
|
||||
|
||||
AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
|
||||
am_cv_func_iconv="no, consider installing GNU libiconv"
|
||||
am_cv_lib_iconv=no
|
||||
AC_TRY_LINK([#include <stdlib.h>
|
||||
#include <iconv.h>],
|
||||
[iconv_t cd = iconv_open("","");
|
||||
iconv(cd,NULL,NULL,NULL,NULL);
|
||||
iconv_close(cd);],
|
||||
[am_cv_func_iconv=yes])
|
||||
if test "$am_cv_func_iconv" != yes; then
|
||||
am_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS $LIBICONV"
|
||||
AC_TRY_LINK([#include <stdlib.h>
|
||||
#include <iconv.h>],
|
||||
[iconv_t cd = iconv_open("","");
|
||||
iconv(cd,NULL,NULL,NULL,NULL);
|
||||
iconv_close(cd);],
|
||||
[am_cv_lib_iconv=yes]
|
||||
[am_cv_func_iconv=yes])
|
||||
LIBS="$am_save_LIBS"
|
||||
fi
|
||||
])
|
||||
if test "$am_cv_func_iconv" = yes; then
|
||||
AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
|
||||
dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10.
|
||||
am_save_LIBS="$LIBS"
|
||||
if test $am_cv_lib_iconv = yes; then
|
||||
LIBS="$LIBS $LIBICONV"
|
||||
fi
|
||||
AC_TRY_RUN([
|
||||
#include <iconv.h>
|
||||
#include <string.h>
|
||||
int main ()
|
||||
{
|
||||
/* Test against AIX 5.1 bug: Failures are not distinguishable from successful
|
||||
returns. */
|
||||
{
|
||||
iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
|
||||
if (cd_utf8_to_88591 != (iconv_t)(-1))
|
||||
{
|
||||
static const char input[] = "\342\202\254"; /* EURO SIGN */
|
||||
char buf[10];
|
||||
const char *inptr = input;
|
||||
size_t inbytesleft = strlen (input);
|
||||
char *outptr = buf;
|
||||
size_t outbytesleft = sizeof (buf);
|
||||
size_t res = iconv (cd_utf8_to_88591,
|
||||
(char **) &inptr, &inbytesleft,
|
||||
&outptr, &outbytesleft);
|
||||
if (res == 0)
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
/* Test against Solaris 10 bug: Failures are not distinguishable from
|
||||
successful returns. */
|
||||
{
|
||||
iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
|
||||
if (cd_ascii_to_88591 != (iconv_t)(-1))
|
||||
{
|
||||
static const char input[] = "\263";
|
||||
char buf[10];
|
||||
const char *inptr = input;
|
||||
size_t inbytesleft = strlen (input);
|
||||
char *outptr = buf;
|
||||
size_t outbytesleft = sizeof (buf);
|
||||
size_t res = iconv (cd_ascii_to_88591,
|
||||
(char **) &inptr, &inbytesleft,
|
||||
&outptr, &outbytesleft);
|
||||
if (res == 0)
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
#if 0 /* This bug could be worked around by the caller. */
|
||||
/* Test against HP-UX 11.11 bug: Positive return value instead of 0. */
|
||||
{
|
||||
iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
|
||||
if (cd_88591_to_utf8 != (iconv_t)(-1))
|
||||
{
|
||||
static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
|
||||
char buf[50];
|
||||
const char *inptr = input;
|
||||
size_t inbytesleft = strlen (input);
|
||||
char *outptr = buf;
|
||||
size_t outbytesleft = sizeof (buf);
|
||||
size_t res = iconv (cd_88591_to_utf8,
|
||||
(char **) &inptr, &inbytesleft,
|
||||
&outptr, &outbytesleft);
|
||||
if ((int)res > 0)
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
/* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
|
||||
provided. */
|
||||
if (/* Try standardized names. */
|
||||
iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
|
||||
/* Try IRIX, OSF/1 names. */
|
||||
&& iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
|
||||
/* Try AIX names. */
|
||||
&& iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
|
||||
/* Try HP-UX names. */
|
||||
&& iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
|
||||
return 1;
|
||||
return 0;
|
||||
}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
|
||||
[case "$host_os" in
|
||||
aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
|
||||
*) am_cv_func_iconv_works="guessing yes" ;;
|
||||
esac])
|
||||
LIBS="$am_save_LIBS"
|
||||
])
|
||||
case "$am_cv_func_iconv_works" in
|
||||
*no) am_func_iconv=no am_cv_lib_iconv=no ;;
|
||||
*) am_func_iconv=yes ;;
|
||||
esac
|
||||
else
|
||||
am_func_iconv=no am_cv_lib_iconv=no
|
||||
fi
|
||||
if test "$am_func_iconv" = yes; then
|
||||
AC_DEFINE([HAVE_ICONV], [1],
|
||||
[Define if you have the iconv() function and it works.])
|
||||
fi
|
||||
if test "$am_cv_lib_iconv" = yes; then
|
||||
AC_MSG_CHECKING([how to link with libiconv])
|
||||
AC_MSG_RESULT([$LIBICONV])
|
||||
else
|
||||
dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
|
||||
dnl either.
|
||||
CPPFLAGS="$am_save_CPPFLAGS"
|
||||
LIBICONV=
|
||||
LTLIBICONV=
|
||||
fi
|
||||
AC_SUBST([LIBICONV])
|
||||
AC_SUBST([LTLIBICONV])
|
||||
])
|
||||
|
||||
dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to
|
||||
dnl avoid warnings like
|
||||
dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required".
|
||||
dnl This is tricky because of the way 'aclocal' is implemented:
|
||||
dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN.
|
||||
dnl Otherwise aclocal's initial scan pass would miss the macro definition.
|
||||
dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions.
|
||||
dnl Otherwise aclocal would emit many "Use of uninitialized value $1"
|
||||
dnl warnings.
|
||||
m4_define([gl_iconv_AC_DEFUN],
|
||||
m4_version_prereq([2.64],
|
||||
[[AC_DEFUN_ONCE(
|
||||
[$1], [$2])]],
|
||||
[[AC_DEFUN(
|
||||
[$1], [$2])]]))
|
||||
gl_iconv_AC_DEFUN([AM_ICONV],
|
||||
[
|
||||
AM_ICONV_LINK
|
||||
if test "$am_cv_func_iconv" = yes; then
|
||||
AC_MSG_CHECKING([for iconv declaration])
|
||||
AC_CACHE_VAL([am_cv_proto_iconv], [
|
||||
AC_TRY_COMPILE([
|
||||
#include <stdlib.h>
|
||||
#include <iconv.h>
|
||||
extern
|
||||
#ifdef __cplusplus
|
||||
"C"
|
||||
#endif
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
|
||||
#else
|
||||
size_t iconv();
|
||||
#endif
|
||||
], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"])
|
||||
am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
|
||||
am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
|
||||
AC_MSG_RESULT([
|
||||
$am_cv_proto_iconv])
|
||||
AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
|
||||
[Define as const if the declaration of iconv() needs const.])
|
||||
fi
|
||||
])
|
|
@ -0,0 +1,84 @@
|
|||
# intdiv0.m4 serial 3 (gettext-0.18)
|
||||
dnl Copyright (C) 2002, 2007-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
|
||||
AC_DEFUN([gt_INTDIV0],
|
||||
[
|
||||
AC_REQUIRE([AC_PROG_CC])dnl
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||
|
||||
AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
|
||||
gt_cv_int_divbyzero_sigfpe,
|
||||
[
|
||||
gt_cv_int_divbyzero_sigfpe=
|
||||
changequote(,)dnl
|
||||
case "$host_os" in
|
||||
macos* | darwin[6-9]* | darwin[1-9][0-9]*)
|
||||
# On MacOS X 10.2 or newer, just assume the same as when cross-
|
||||
# compiling. If we were to perform the real test, 1 Crash Report
|
||||
# dialog window would pop up.
|
||||
case "$host_cpu" in
|
||||
i[34567]86 | x86_64)
|
||||
gt_cv_int_divbyzero_sigfpe="guessing yes" ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
changequote([,])dnl
|
||||
if test -z "$gt_cv_int_divbyzero_sigfpe"; then
|
||||
AC_TRY_RUN([
|
||||
#include <stdlib.h>
|
||||
#include <signal.h>
|
||||
|
||||
static void
|
||||
sigfpe_handler (int sig)
|
||||
{
|
||||
/* Exit with code 0 if SIGFPE, with code 1 if any other signal. */
|
||||
exit (sig != SIGFPE);
|
||||
}
|
||||
|
||||
int x = 1;
|
||||
int y = 0;
|
||||
int z;
|
||||
int nan;
|
||||
|
||||
int main ()
|
||||
{
|
||||
signal (SIGFPE, sigfpe_handler);
|
||||
/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */
|
||||
#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
|
||||
signal (SIGTRAP, sigfpe_handler);
|
||||
#endif
|
||||
/* Linux/SPARC yields signal SIGILL. */
|
||||
#if defined (__sparc__) && defined (__linux__)
|
||||
signal (SIGILL, sigfpe_handler);
|
||||
#endif
|
||||
|
||||
z = x / y;
|
||||
nan = y / y;
|
||||
exit (1);
|
||||
}
|
||||
], [gt_cv_int_divbyzero_sigfpe=yes], [gt_cv_int_divbyzero_sigfpe=no],
|
||||
[
|
||||
# Guess based on the CPU.
|
||||
changequote(,)dnl
|
||||
case "$host_cpu" in
|
||||
alpha* | i[34567]86 | x86_64 | m68k | s390*)
|
||||
gt_cv_int_divbyzero_sigfpe="guessing yes";;
|
||||
*)
|
||||
gt_cv_int_divbyzero_sigfpe="guessing no";;
|
||||
esac
|
||||
changequote([,])dnl
|
||||
])
|
||||
fi
|
||||
])
|
||||
case "$gt_cv_int_divbyzero_sigfpe" in
|
||||
*yes) value=1;;
|
||||
*) value=0;;
|
||||
esac
|
||||
AC_DEFINE_UNQUOTED([INTDIV0_RAISES_SIGFPE], [$value],
|
||||
[Define if integer division by zero raises signal SIGFPE.])
|
||||
])
|
|
@ -0,0 +1,294 @@
|
|||
# intl.m4 serial 17 (gettext-0.18)
|
||||
dnl Copyright (C) 1995-2009 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
dnl
|
||||
dnl This file can can be used in projects which are not available under
|
||||
dnl the GNU General Public License or the GNU Library General Public
|
||||
dnl License but which still want to provide support for the GNU gettext
|
||||
dnl functionality.
|
||||
dnl Please note that the actual code of the GNU gettext library is covered
|
||||
dnl by the GNU Library General Public License, and the rest of the GNU
|
||||
dnl gettext package package is covered by the GNU General Public License.
|
||||
dnl They are *not* in the public domain.
|
||||
|
||||
dnl Authors:
|
||||
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
||||
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2009.
|
||||
|
||||
AC_PREREQ([2.52])
|
||||
|
||||
dnl Checks for all prerequisites of the intl subdirectory,
|
||||
dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
|
||||
dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
|
||||
AC_DEFUN([AM_INTL_SUBDIR],
|
||||
[
|
||||
AC_REQUIRE([AC_PROG_INSTALL])dnl
|
||||
AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
|
||||
AC_REQUIRE([AC_PROG_CC])dnl
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||
AC_REQUIRE([gt_GLIBC2])dnl
|
||||
AC_REQUIRE([AC_PROG_RANLIB])dnl
|
||||
AC_REQUIRE([gl_VISIBILITY])dnl
|
||||
AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl
|
||||
AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl
|
||||
AC_REQUIRE([gt_TYPE_WCHAR_T])dnl
|
||||
AC_REQUIRE([gt_TYPE_WINT_T])dnl
|
||||
AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
|
||||
AC_REQUIRE([gt_TYPE_INTMAX_T])
|
||||
AC_REQUIRE([gt_PRINTF_POSIX])
|
||||
AC_REQUIRE([gl_GLIBC21])dnl
|
||||
AC_REQUIRE([gl_XSIZE])dnl
|
||||
AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl
|
||||
AC_REQUIRE([gt_INTL_MACOSX])dnl
|
||||
|
||||
dnl Support for automake's --enable-silent-rules.
|
||||
case "$enable_silent_rules" in
|
||||
yes) INTL_DEFAULT_VERBOSITY=0;;
|
||||
no) INTL_DEFAULT_VERBOSITY=1;;
|
||||
*) INTL_DEFAULT_VERBOSITY=1;;
|
||||
esac
|
||||
AC_SUBST([INTL_DEFAULT_VERBOSITY])
|
||||
|
||||
AC_CHECK_TYPE([ptrdiff_t], ,
|
||||
[AC_DEFINE([ptrdiff_t], [long],
|
||||
[Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
|
||||
])
|
||||
AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
|
||||
AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \
|
||||
snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
|
||||
|
||||
dnl Use the _snprintf function only if it is declared (because on NetBSD it
|
||||
dnl is defined as a weak alias of snprintf; we prefer to use the latter).
|
||||
gt_CHECK_DECL(_snprintf, [#include <stdio.h>])
|
||||
gt_CHECK_DECL(_snwprintf, [#include <stdio.h>])
|
||||
|
||||
dnl Use the *_unlocked functions only if they are declared.
|
||||
dnl (because some of them were defined without being declared in Solaris
|
||||
dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
|
||||
dnl on Solaris 2.5.1 to run on Solaris 2.6).
|
||||
dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
|
||||
gt_CHECK_DECL(getc_unlocked, [#include <stdio.h>])
|
||||
|
||||
case $gt_cv_func_printf_posix in
|
||||
*yes) HAVE_POSIX_PRINTF=1 ;;
|
||||
*) HAVE_POSIX_PRINTF=0 ;;
|
||||
esac
|
||||
AC_SUBST([HAVE_POSIX_PRINTF])
|
||||
if test "$ac_cv_func_asprintf" = yes; then
|
||||
HAVE_ASPRINTF=1
|
||||
else
|
||||
HAVE_ASPRINTF=0
|
||||
fi
|
||||
AC_SUBST([HAVE_ASPRINTF])
|
||||
if test "$ac_cv_func_snprintf" = yes; then
|
||||
HAVE_SNPRINTF=1
|
||||
else
|
||||
HAVE_SNPRINTF=0
|
||||
fi
|
||||
AC_SUBST([HAVE_SNPRINTF])
|
||||
if test "$ac_cv_func_newlocale" = yes; then
|
||||
HAVE_NEWLOCALE=1
|
||||
else
|
||||
HAVE_NEWLOCALE=0
|
||||
fi
|
||||
AC_SUBST([HAVE_NEWLOCALE])
|
||||
if test "$ac_cv_func_wprintf" = yes; then
|
||||
HAVE_WPRINTF=1
|
||||
else
|
||||
HAVE_WPRINTF=0
|
||||
fi
|
||||
AC_SUBST([HAVE_WPRINTF])
|
||||
|
||||
AM_LANGINFO_CODESET
|
||||
gt_LC_MESSAGES
|
||||
|
||||
dnl Compilation on mingw and Cygwin needs special Makefile rules, because
|
||||
dnl 1. when we install a shared library, we must arrange to export
|
||||
dnl auxiliary pointer variables for every exported variable,
|
||||
dnl 2. when we install a shared library and a static library simultaneously,
|
||||
dnl the include file specifies __declspec(dllimport) and therefore we
|
||||
dnl must arrange to define the auxiliary pointer variables for the
|
||||
dnl exported variables _also_ in the static library.
|
||||
if test "$enable_shared" = yes; then
|
||||
case "$host_os" in
|
||||
mingw* | cygwin*) is_woe32dll=yes ;;
|
||||
*) is_woe32dll=no ;;
|
||||
esac
|
||||
else
|
||||
is_woe32dll=no
|
||||
fi
|
||||
WOE32DLL=$is_woe32dll
|
||||
AC_SUBST([WOE32DLL])
|
||||
|
||||
dnl On mingw and Cygwin, we can activate special Makefile rules which add
|
||||
dnl version information to the shared libraries and executables.
|
||||
case "$host_os" in
|
||||
mingw* | cygwin*) is_woe32=yes ;;
|
||||
*) is_woe32=no ;;
|
||||
esac
|
||||
WOE32=$is_woe32
|
||||
AC_SUBST([WOE32])
|
||||
if test $WOE32 = yes; then
|
||||
dnl Check for a program that compiles Windows resource files.
|
||||
AC_CHECK_TOOL([WINDRES], [windres])
|
||||
fi
|
||||
|
||||
dnl Determine whether when creating a library, "-lc" should be passed to
|
||||
dnl libtool or not. On many platforms, it is required for the libtool option
|
||||
dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool
|
||||
dnl in the *.la files - makes it impossible to create multithreaded programs,
|
||||
dnl because libtool also reorders the -lc to come before the -pthread, and
|
||||
dnl this disables pthread_create() <http://docs.hp.com/en/1896/pthreads.html>.
|
||||
case "$host_os" in
|
||||
hpux*) LTLIBC="" ;;
|
||||
*) LTLIBC="-lc" ;;
|
||||
esac
|
||||
AC_SUBST([LTLIBC])
|
||||
|
||||
dnl Rename some macros and functions used for locking.
|
||||
AH_BOTTOM([
|
||||
#define __libc_lock_t gl_lock_t
|
||||
#define __libc_lock_define gl_lock_define
|
||||
#define __libc_lock_define_initialized gl_lock_define_initialized
|
||||
#define __libc_lock_init gl_lock_init
|
||||
#define __libc_lock_lock gl_lock_lock
|
||||
#define __libc_lock_unlock gl_lock_unlock
|
||||
#define __libc_lock_recursive_t gl_recursive_lock_t
|
||||
#define __libc_lock_define_recursive gl_recursive_lock_define
|
||||
#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized
|
||||
#define __libc_lock_init_recursive gl_recursive_lock_init
|
||||
#define __libc_lock_lock_recursive gl_recursive_lock_lock
|
||||
#define __libc_lock_unlock_recursive gl_recursive_lock_unlock
|
||||
#define glthread_in_use libintl_thread_in_use
|
||||
#define glthread_lock_init_func libintl_lock_init_func
|
||||
#define glthread_lock_lock_func libintl_lock_lock_func
|
||||
#define glthread_lock_unlock_func libintl_lock_unlock_func
|
||||
#define glthread_lock_destroy_func libintl_lock_destroy_func
|
||||
#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded
|
||||
#define glthread_rwlock_init_func libintl_rwlock_init_func
|
||||
#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded
|
||||
#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func
|
||||
#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded
|
||||
#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func
|
||||
#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded
|
||||
#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func
|
||||
#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded
|
||||
#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func
|
||||
#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded
|
||||
#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func
|
||||
#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded
|
||||
#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func
|
||||
#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded
|
||||
#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func
|
||||
#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded
|
||||
#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func
|
||||
#define glthread_once_func libintl_once_func
|
||||
#define glthread_once_singlethreaded libintl_once_singlethreaded
|
||||
#define glthread_once_multithreaded libintl_once_multithreaded
|
||||
])
|
||||
])
|
||||
|
||||
|
||||
dnl Checks for the core files of the intl subdirectory:
|
||||
dnl dcigettext.c
|
||||
dnl eval-plural.h
|
||||
dnl explodename.c
|
||||
dnl finddomain.c
|
||||
dnl gettextP.h
|
||||
dnl gmo.h
|
||||
dnl hash-string.h hash-string.c
|
||||
dnl l10nflist.c
|
||||
dnl libgnuintl.h.in (except the *printf stuff)
|
||||
dnl loadinfo.h
|
||||
dnl loadmsgcat.c
|
||||
dnl localealias.c
|
||||
dnl log.c
|
||||
dnl plural-exp.h plural-exp.c
|
||||
dnl plural.y
|
||||
dnl Used by libglocale.
|
||||
AC_DEFUN([gt_INTL_SUBDIR_CORE],
|
||||
[
|
||||
AC_REQUIRE([AC_C_INLINE])dnl
|
||||
AC_REQUIRE([AC_TYPE_SIZE_T])dnl
|
||||
AC_REQUIRE([gl_AC_HEADER_STDINT_H])
|
||||
AC_REQUIRE([AC_FUNC_ALLOCA])dnl
|
||||
AC_REQUIRE([AC_FUNC_MMAP])dnl
|
||||
AC_REQUIRE([gt_INTDIV0])dnl
|
||||
AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl
|
||||
AC_REQUIRE([gt_INTTYPES_PRI])dnl
|
||||
AC_REQUIRE([gl_LOCK])dnl
|
||||
|
||||
AC_TRY_LINK(
|
||||
[int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }],
|
||||
[],
|
||||
[AC_DEFINE([HAVE_BUILTIN_EXPECT], [1],
|
||||
[Define to 1 if the compiler understands __builtin_expect.])])
|
||||
|
||||
AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h])
|
||||
AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \
|
||||
stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \
|
||||
argz_stringify argz_next __fsetlocking])
|
||||
|
||||
dnl Use the *_unlocked functions only if they are declared.
|
||||
dnl (because some of them were defined without being declared in Solaris
|
||||
dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
|
||||
dnl on Solaris 2.5.1 to run on Solaris 2.6).
|
||||
dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
|
||||
gt_CHECK_DECL([feof_unlocked], [#include <stdio.h>])
|
||||
gt_CHECK_DECL([fgets_unlocked], [#include <stdio.h>])
|
||||
|
||||
AM_ICONV
|
||||
|
||||
dnl intl/plural.c is generated from intl/plural.y. It requires bison,
|
||||
dnl because plural.y uses bison specific features. It requires at least
|
||||
dnl bison-1.26 because earlier versions generate a plural.c that doesn't
|
||||
dnl compile.
|
||||
dnl bison is only needed for the maintainer (who touches plural.y). But in
|
||||
dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
|
||||
dnl the rule in general Makefile. Now, some people carelessly touch the
|
||||
dnl files or have a broken "make" program, hence the plural.c rule will
|
||||
dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
|
||||
dnl present or too old.
|
||||
AC_CHECK_PROGS([INTLBISON], [bison])
|
||||
if test -z "$INTLBISON"; then
|
||||
ac_verc_fail=yes
|
||||
else
|
||||
dnl Found it, now check the version.
|
||||
AC_MSG_CHECKING([version of bison])
|
||||
changequote(<<,>>)dnl
|
||||
ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
|
||||
case $ac_prog_version in
|
||||
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
||||
1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
|
||||
changequote([,])dnl
|
||||
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
|
||||
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
|
||||
esac
|
||||
AC_MSG_RESULT([$ac_prog_version])
|
||||
fi
|
||||
if test $ac_verc_fail = yes; then
|
||||
INTLBISON=:
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
dnl gt_CHECK_DECL(FUNC, INCLUDES)
|
||||
dnl Check whether a function is declared.
|
||||
AC_DEFUN([gt_CHECK_DECL],
|
||||
[
|
||||
AC_CACHE_CHECK([whether $1 is declared], [ac_cv_have_decl_$1],
|
||||
[AC_TRY_COMPILE([$2], [
|
||||
#ifndef $1
|
||||
char *p = (char *) $1;
|
||||
#endif
|
||||
], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)])
|
||||
if test $ac_cv_have_decl_$1 = yes; then
|
||||
gt_value=1
|
||||
else
|
||||
gt_value=0
|
||||
fi
|
||||
AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value],
|
||||
[Define to 1 if you have the declaration of `$1', and to 0 if you don't.])
|
||||
])
|
|
@ -0,0 +1,19 @@
|
|||
# intldir.m4 serial 2 (gettext-0.18)
|
||||
dnl Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
dnl
|
||||
dnl This file can can be used in projects which are not available under
|
||||
dnl the GNU General Public License or the GNU Library General Public
|
||||
dnl License but which still want to provide support for the GNU gettext
|
||||
dnl functionality.
|
||||
dnl Please note that the actual code of the GNU gettext library is covered
|
||||
dnl by the GNU Library General Public License, and the rest of the GNU
|
||||
dnl gettext package package is covered by the GNU General Public License.
|
||||
dnl They are *not* in the public domain.
|
||||
|
||||
AC_PREREQ([2.52])
|
||||
|
||||
dnl Tells the AM_GNU_GETTEXT macro to consider an intl/ directory.
|
||||
AC_DEFUN([AM_GNU_GETTEXT_INTL_SUBDIR], [])
|
|
@ -0,0 +1,51 @@
|
|||
# intlmacosx.m4 serial 3 (gettext-0.18)
|
||||
dnl Copyright (C) 2004-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
dnl
|
||||
dnl This file can can be used in projects which are not available under
|
||||
dnl the GNU General Public License or the GNU Library General Public
|
||||
dnl License but which still want to provide support for the GNU gettext
|
||||
dnl functionality.
|
||||
dnl Please note that the actual code of the GNU gettext library is covered
|
||||
dnl by the GNU Library General Public License, and the rest of the GNU
|
||||
dnl gettext package package is covered by the GNU General Public License.
|
||||
dnl They are *not* in the public domain.
|
||||
|
||||
dnl Checks for special options needed on MacOS X.
|
||||
dnl Defines INTL_MACOSX_LIBS.
|
||||
AC_DEFUN([gt_INTL_MACOSX],
|
||||
[
|
||||
dnl Check for API introduced in MacOS X 10.2.
|
||||
AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
|
||||
[gt_cv_func_CFPreferencesCopyAppValue],
|
||||
[gt_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
|
||||
AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
|
||||
[CFPreferencesCopyAppValue(NULL, NULL)],
|
||||
[gt_cv_func_CFPreferencesCopyAppValue=yes],
|
||||
[gt_cv_func_CFPreferencesCopyAppValue=no])
|
||||
LIBS="$gt_save_LIBS"])
|
||||
if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
|
||||
AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
|
||||
[Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
|
||||
fi
|
||||
dnl Check for API introduced in MacOS X 10.3.
|
||||
AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
|
||||
[gt_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
|
||||
AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
|
||||
[gt_cv_func_CFLocaleCopyCurrent=yes],
|
||||
[gt_cv_func_CFLocaleCopyCurrent=no])
|
||||
LIBS="$gt_save_LIBS"])
|
||||
if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
|
||||
AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
|
||||
[Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
|
||||
fi
|
||||
INTL_MACOSX_LIBS=
|
||||
if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
|
||||
INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
|
||||
fi
|
||||
AC_SUBST([INTL_MACOSX_LIBS])
|
||||
])
|
|
@ -0,0 +1,33 @@
|
|||
# intmax.m4 serial 5 (gettext-0.18)
|
||||
dnl Copyright (C) 2002-2005, 2008-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
dnl Test whether the system has the 'intmax_t' type, but don't attempt to
|
||||
dnl find a replacement if it is lacking.
|
||||
|
||||
AC_DEFUN([gt_TYPE_INTMAX_T],
|
||||
[
|
||||
AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
|
||||
AC_REQUIRE([gl_AC_HEADER_STDINT_H])
|
||||
AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t],
|
||||
[AC_TRY_COMPILE([
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
#if HAVE_STDINT_H_WITH_UINTMAX
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
#if HAVE_INTTYPES_H_WITH_UINTMAX
|
||||
#include <inttypes.h>
|
||||
#endif
|
||||
], [intmax_t x = -1;
|
||||
return !x;],
|
||||
[gt_cv_c_intmax_t=yes],
|
||||
[gt_cv_c_intmax_t=no])])
|
||||
if test $gt_cv_c_intmax_t = yes; then
|
||||
AC_DEFINE([HAVE_INTMAX_T], [1],
|
||||
[Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
|
||||
fi
|
||||
])
|
|
@ -0,0 +1,36 @@
|
|||
# inttypes-pri.m4 serial 6 (gettext-0.18)
|
||||
dnl Copyright (C) 1997-2002, 2006, 2008-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
|
||||
AC_PREREQ([2.52])
|
||||
|
||||
# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
|
||||
# macros to non-string values. This is the case on AIX 4.3.3.
|
||||
|
||||
AC_DEFUN([gt_INTTYPES_PRI],
|
||||
[
|
||||
AC_CHECK_HEADERS([inttypes.h])
|
||||
if test $ac_cv_header_inttypes_h = yes; then
|
||||
AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
|
||||
[gt_cv_inttypes_pri_broken],
|
||||
[
|
||||
AC_TRY_COMPILE([#include <inttypes.h>
|
||||
#ifdef PRId32
|
||||
char *p = PRId32;
|
||||
#endif
|
||||
], [], [gt_cv_inttypes_pri_broken=no], [gt_cv_inttypes_pri_broken=yes])
|
||||
])
|
||||
fi
|
||||
if test "$gt_cv_inttypes_pri_broken" = yes; then
|
||||
AC_DEFINE_UNQUOTED([PRI_MACROS_BROKEN], [1],
|
||||
[Define if <inttypes.h> exists and defines unusable PRI* macros.])
|
||||
PRI_MACROS_BROKEN=1
|
||||
else
|
||||
PRI_MACROS_BROKEN=0
|
||||
fi
|
||||
AC_SUBST([PRI_MACROS_BROKEN])
|
||||
])
|
|
@ -0,0 +1,26 @@
|
|||
# inttypes_h.m4 serial 9
|
||||
dnl Copyright (C) 1997-2004, 2006, 2008-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Paul Eggert.
|
||||
|
||||
# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
|
||||
# doesn't clash with <sys/types.h>, and declares uintmax_t.
|
||||
|
||||
AC_DEFUN([gl_AC_HEADER_INTTYPES_H],
|
||||
[
|
||||
AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h],
|
||||
[AC_TRY_COMPILE(
|
||||
[#include <sys/types.h>
|
||||
#include <inttypes.h>],
|
||||
[uintmax_t i = (uintmax_t) -1; return !i;],
|
||||
[gl_cv_header_inttypes_h=yes],
|
||||
[gl_cv_header_inttypes_h=no])])
|
||||
if test $gl_cv_header_inttypes_h = yes; then
|
||||
AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1],
|
||||
[Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
|
||||
and declares uintmax_t. ])
|
||||
fi
|
||||
])
|
|
@ -0,0 +1,31 @@
|
|||
# lcmessage.m4 serial 6 (gettext-0.18)
|
||||
dnl Copyright (C) 1995-2002, 2004-2005, 2008-2010 Free Software Foundation,
|
||||
dnl Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
dnl
|
||||
dnl This file can can be used in projects which are not available under
|
||||
dnl the GNU General Public License or the GNU Library General Public
|
||||
dnl License but which still want to provide support for the GNU gettext
|
||||
dnl functionality.
|
||||
dnl Please note that the actual code of the GNU gettext library is covered
|
||||
dnl by the GNU Library General Public License, and the rest of the GNU
|
||||
dnl gettext package package is covered by the GNU General Public License.
|
||||
dnl They are *not* in the public domain.
|
||||
|
||||
dnl Authors:
|
||||
dnl Ulrich Drepper <drepper@cygnus.com>, 1995.
|
||||
|
||||
# Check whether LC_MESSAGES is available in <locale.h>.
|
||||
|
||||
AC_DEFUN([gt_LC_MESSAGES],
|
||||
[
|
||||
AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES],
|
||||
[AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
|
||||
[gt_cv_val_LC_MESSAGES=yes], [gt_cv_val_LC_MESSAGES=no])])
|
||||
if test $gt_cv_val_LC_MESSAGES = yes; then
|
||||
AC_DEFINE([HAVE_LC_MESSAGES], [1],
|
||||
[Define if your <locale.h> file defines LC_MESSAGES.])
|
||||
fi
|
||||
])
|
|
@ -0,0 +1,110 @@
|
|||
# lib-ld.m4 serial 4 (gettext-0.18)
|
||||
dnl Copyright (C) 1996-2003, 2009-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl Subroutines of libtool.m4,
|
||||
dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
|
||||
dnl with libtool.m4.
|
||||
|
||||
dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
|
||||
AC_DEFUN([AC_LIB_PROG_LD_GNU],
|
||||
[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld],
|
||||
[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
|
||||
case `$LD -v 2>&1 </dev/null` in
|
||||
*GNU* | *'with BFD'*)
|
||||
acl_cv_prog_gnu_ld=yes ;;
|
||||
*)
|
||||
acl_cv_prog_gnu_ld=no ;;
|
||||
esac])
|
||||
with_gnu_ld=$acl_cv_prog_gnu_ld
|
||||
])
|
||||
|
||||
dnl From libtool-1.4. Sets the variable LD.
|
||||
AC_DEFUN([AC_LIB_PROG_LD],
|
||||
[AC_ARG_WITH([gnu-ld],
|
||||
[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
|
||||
test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
|
||||
AC_REQUIRE([AC_PROG_CC])dnl
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||
# Prepare PATH_SEPARATOR.
|
||||
# The user is always right.
|
||||
if test "${PATH_SEPARATOR+set}" != set; then
|
||||
echo "#! /bin/sh" >conf$$.sh
|
||||
echo "exit 0" >>conf$$.sh
|
||||
chmod +x conf$$.sh
|
||||
if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
|
||||
PATH_SEPARATOR=';'
|
||||
else
|
||||
PATH_SEPARATOR=:
|
||||
fi
|
||||
rm -f conf$$.sh
|
||||
fi
|
||||
ac_prog=ld
|
||||
if test "$GCC" = yes; then
|
||||
# Check if gcc -print-prog-name=ld gives a path.
|
||||
AC_MSG_CHECKING([for ld used by GCC])
|
||||
case $host in
|
||||
*-*-mingw*)
|
||||
# gcc leaves a trailing carriage return which upsets mingw
|
||||
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
|
||||
*)
|
||||
ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
|
||||
esac
|
||||
case $ac_prog in
|
||||
# Accept absolute paths.
|
||||
[[\\/]* | [A-Za-z]:[\\/]*)]
|
||||
[re_direlt='/[^/][^/]*/\.\./']
|
||||
# Canonicalize the path of ld
|
||||
ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
|
||||
while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
|
||||
ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
|
||||
done
|
||||
test -z "$LD" && LD="$ac_prog"
|
||||
;;
|
||||
"")
|
||||
# If it fails, then pretend we aren't using GCC.
|
||||
ac_prog=ld
|
||||
;;
|
||||
*)
|
||||
# If it is relative, then search for the first ld in PATH.
|
||||
with_gnu_ld=unknown
|
||||
;;
|
||||
esac
|
||||
elif test "$with_gnu_ld" = yes; then
|
||||
AC_MSG_CHECKING([for GNU ld])
|
||||
else
|
||||
AC_MSG_CHECKING([for non-GNU ld])
|
||||
fi
|
||||
AC_CACHE_VAL([acl_cv_path_LD],
|
||||
[if test -z "$LD"; then
|
||||
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
|
||||
for ac_dir in $PATH; do
|
||||
test -z "$ac_dir" && ac_dir=.
|
||||
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
|
||||
acl_cv_path_LD="$ac_dir/$ac_prog"
|
||||
# Check to see if the program is GNU ld. I'd rather use --version,
|
||||
# but apparently some GNU ld's only accept -v.
|
||||
# Break only if it was the GNU/non-GNU ld that we prefer.
|
||||
case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
|
||||
*GNU* | *'with BFD'*)
|
||||
test "$with_gnu_ld" != no && break ;;
|
||||
*)
|
||||
test "$with_gnu_ld" != yes && break ;;
|
||||
esac
|
||||
fi
|
||||
done
|
||||
IFS="$ac_save_ifs"
|
||||
else
|
||||
acl_cv_path_LD="$LD" # Let the user override the test with a path.
|
||||
fi])
|
||||
LD="$acl_cv_path_LD"
|
||||
if test -n "$LD"; then
|
||||
AC_MSG_RESULT([$LD])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
|
||||
AC_LIB_PROG_LD_GNU
|
||||
])
|
|
@ -0,0 +1,774 @@
|
|||
# lib-link.m4 serial 21 (gettext-0.18)
|
||||
dnl Copyright (C) 2001-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
|
||||
AC_PREREQ([2.54])
|
||||
|
||||
dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
|
||||
dnl the libraries corresponding to explicit and implicit dependencies.
|
||||
dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
|
||||
dnl augments the CPPFLAGS variable.
|
||||
dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
|
||||
dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
|
||||
AC_DEFUN([AC_LIB_LINKFLAGS],
|
||||
[
|
||||
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
||||
AC_REQUIRE([AC_LIB_RPATH])
|
||||
pushdef([Name],[translit([$1],[./-], [___])])
|
||||
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
|
||||
AC_LIB_LINKFLAGS_BODY([$1], [$2])
|
||||
ac_cv_lib[]Name[]_libs="$LIB[]NAME"
|
||||
ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
|
||||
ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
|
||||
ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
|
||||
])
|
||||
LIB[]NAME="$ac_cv_lib[]Name[]_libs"
|
||||
LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
|
||||
INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
|
||||
LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
|
||||
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
|
||||
AC_SUBST([LIB]NAME)
|
||||
AC_SUBST([LTLIB]NAME)
|
||||
AC_SUBST([LIB]NAME[_PREFIX])
|
||||
dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
|
||||
dnl results of this search when this library appears as a dependency.
|
||||
HAVE_LIB[]NAME=yes
|
||||
popdef([NAME])
|
||||
popdef([Name])
|
||||
])
|
||||
|
||||
dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message])
|
||||
dnl searches for libname and the libraries corresponding to explicit and
|
||||
dnl implicit dependencies, together with the specified include files and
|
||||
dnl the ability to compile and link the specified testcode. The missing-message
|
||||
dnl defaults to 'no' and may contain additional hints for the user.
|
||||
dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME}
|
||||
dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and
|
||||
dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
|
||||
dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
|
||||
dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
|
||||
dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
|
||||
AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
|
||||
[
|
||||
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
||||
AC_REQUIRE([AC_LIB_RPATH])
|
||||
pushdef([Name],[translit([$1],[./-], [___])])
|
||||
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
|
||||
dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
|
||||
dnl accordingly.
|
||||
AC_LIB_LINKFLAGS_BODY([$1], [$2])
|
||||
|
||||
dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
|
||||
dnl because if the user has installed lib[]Name and not disabled its use
|
||||
dnl via --without-lib[]Name-prefix, he wants to use it.
|
||||
ac_save_CPPFLAGS="$CPPFLAGS"
|
||||
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
|
||||
|
||||
AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
|
||||
ac_save_LIBS="$LIBS"
|
||||
dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS,
|
||||
dnl because these -l options might require -L options that are present in
|
||||
dnl LIBS. -l options benefit only from the -L options listed before it.
|
||||
dnl Otherwise, add it to the front of LIBS, because it may be a static
|
||||
dnl library that depends on another static library that is present in LIBS.
|
||||
dnl Static libraries benefit only from the static libraries listed after
|
||||
dnl it.
|
||||
case " $LIB[]NAME" in
|
||||
*" -l"*) LIBS="$LIBS $LIB[]NAME" ;;
|
||||
*) LIBS="$LIB[]NAME $LIBS" ;;
|
||||
esac
|
||||
AC_TRY_LINK([$3], [$4],
|
||||
[ac_cv_lib[]Name=yes],
|
||||
[ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
|
||||
LIBS="$ac_save_LIBS"
|
||||
])
|
||||
if test "$ac_cv_lib[]Name" = yes; then
|
||||
HAVE_LIB[]NAME=yes
|
||||
AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.])
|
||||
AC_MSG_CHECKING([how to link with lib[]$1])
|
||||
AC_MSG_RESULT([$LIB[]NAME])
|
||||
else
|
||||
HAVE_LIB[]NAME=no
|
||||
dnl If $LIB[]NAME didn't lead to a usable library, we don't need
|
||||
dnl $INC[]NAME either.
|
||||
CPPFLAGS="$ac_save_CPPFLAGS"
|
||||
LIB[]NAME=
|
||||
LTLIB[]NAME=
|
||||
LIB[]NAME[]_PREFIX=
|
||||
fi
|
||||
AC_SUBST([HAVE_LIB]NAME)
|
||||
AC_SUBST([LIB]NAME)
|
||||
AC_SUBST([LTLIB]NAME)
|
||||
AC_SUBST([LIB]NAME[_PREFIX])
|
||||
popdef([NAME])
|
||||
popdef([Name])
|
||||
])
|
||||
|
||||
dnl Determine the platform dependent parameters needed to use rpath:
|
||||
dnl acl_libext,
|
||||
dnl acl_shlibext,
|
||||
dnl acl_hardcode_libdir_flag_spec,
|
||||
dnl acl_hardcode_libdir_separator,
|
||||
dnl acl_hardcode_direct,
|
||||
dnl acl_hardcode_minus_L.
|
||||
AC_DEFUN([AC_LIB_RPATH],
|
||||
[
|
||||
dnl Tell automake >= 1.10 to complain if config.rpath is missing.
|
||||
m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
|
||||
AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
|
||||
AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
|
||||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
|
||||
AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
|
||||
AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [
|
||||
CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
|
||||
${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
|
||||
. ./conftest.sh
|
||||
rm -f ./conftest.sh
|
||||
acl_cv_rpath=done
|
||||
])
|
||||
wl="$acl_cv_wl"
|
||||
acl_libext="$acl_cv_libext"
|
||||
acl_shlibext="$acl_cv_shlibext"
|
||||
acl_libname_spec="$acl_cv_libname_spec"
|
||||
acl_library_names_spec="$acl_cv_library_names_spec"
|
||||
acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
|
||||
acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
|
||||
acl_hardcode_direct="$acl_cv_hardcode_direct"
|
||||
acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
|
||||
dnl Determine whether the user wants rpath handling at all.
|
||||
AC_ARG_ENABLE([rpath],
|
||||
[ --disable-rpath do not hardcode runtime library paths],
|
||||
:, enable_rpath=yes)
|
||||
])
|
||||
|
||||
dnl AC_LIB_FROMPACKAGE(name, package)
|
||||
dnl declares that libname comes from the given package. The configure file
|
||||
dnl will then not have a --with-libname-prefix option but a
|
||||
dnl --with-package-prefix option. Several libraries can come from the same
|
||||
dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
|
||||
dnl macro call that searches for libname.
|
||||
AC_DEFUN([AC_LIB_FROMPACKAGE],
|
||||
[
|
||||
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
define([acl_frompackage_]NAME, [$2])
|
||||
popdef([NAME])
|
||||
pushdef([PACK],[$2])
|
||||
pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
define([acl_libsinpackage_]PACKUP,
|
||||
m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1])
|
||||
popdef([PACKUP])
|
||||
popdef([PACK])
|
||||
])
|
||||
|
||||
dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
|
||||
dnl the libraries corresponding to explicit and implicit dependencies.
|
||||
dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
|
||||
dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
|
||||
dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
|
||||
AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
|
||||
[
|
||||
AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
|
||||
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
|
||||
pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
|
||||
dnl Autoconf >= 2.61 supports dots in --with options.
|
||||
pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)])
|
||||
dnl By default, look in $includedir and $libdir.
|
||||
use_additional=yes
|
||||
AC_LIB_WITH_FINAL_PREFIX([
|
||||
eval additional_includedir=\"$includedir\"
|
||||
eval additional_libdir=\"$libdir\"
|
||||
])
|
||||
AC_ARG_WITH(P_A_C_K[-prefix],
|
||||
[[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib
|
||||
--without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]],
|
||||
[
|
||||
if test "X$withval" = "Xno"; then
|
||||
use_additional=no
|
||||
else
|
||||
if test "X$withval" = "X"; then
|
||||
AC_LIB_WITH_FINAL_PREFIX([
|
||||
eval additional_includedir=\"$includedir\"
|
||||
eval additional_libdir=\"$libdir\"
|
||||
])
|
||||
else
|
||||
additional_includedir="$withval/include"
|
||||
additional_libdir="$withval/$acl_libdirstem"
|
||||
if test "$acl_libdirstem2" != "$acl_libdirstem" \
|
||||
&& ! test -d "$withval/$acl_libdirstem"; then
|
||||
additional_libdir="$withval/$acl_libdirstem2"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
])
|
||||
dnl Search the library and its dependencies in $additional_libdir and
|
||||
dnl $LDFLAGS. Using breadth-first-seach.
|
||||
LIB[]NAME=
|
||||
LTLIB[]NAME=
|
||||
INC[]NAME=
|
||||
LIB[]NAME[]_PREFIX=
|
||||
dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been
|
||||
dnl computed. So it has to be reset here.
|
||||
HAVE_LIB[]NAME=
|
||||
rpathdirs=
|
||||
ltrpathdirs=
|
||||
names_already_handled=
|
||||
names_next_round='$1 $2'
|
||||
while test -n "$names_next_round"; do
|
||||
names_this_round="$names_next_round"
|
||||
names_next_round=
|
||||
for name in $names_this_round; do
|
||||
already_handled=
|
||||
for n in $names_already_handled; do
|
||||
if test "$n" = "$name"; then
|
||||
already_handled=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$already_handled"; then
|
||||
names_already_handled="$names_already_handled $name"
|
||||
dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
|
||||
dnl or AC_LIB_HAVE_LINKFLAGS call.
|
||||
uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
|
||||
eval value=\"\$HAVE_LIB$uppername\"
|
||||
if test -n "$value"; then
|
||||
if test "$value" = yes; then
|
||||
eval value=\"\$LIB$uppername\"
|
||||
test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
|
||||
eval value=\"\$LTLIB$uppername\"
|
||||
test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
|
||||
else
|
||||
dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
|
||||
dnl that this library doesn't exist. So just drop it.
|
||||
:
|
||||
fi
|
||||
else
|
||||
dnl Search the library lib$name in $additional_libdir and $LDFLAGS
|
||||
dnl and the already constructed $LIBNAME/$LTLIBNAME.
|
||||
found_dir=
|
||||
found_la=
|
||||
found_so=
|
||||
found_a=
|
||||
eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
|
||||
if test -n "$acl_shlibext"; then
|
||||
shrext=".$acl_shlibext" # typically: shrext=.so
|
||||
else
|
||||
shrext=
|
||||
fi
|
||||
if test $use_additional = yes; then
|
||||
dir="$additional_libdir"
|
||||
dnl The same code as in the loop below:
|
||||
dnl First look for a shared library.
|
||||
if test -n "$acl_shlibext"; then
|
||||
if test -f "$dir/$libname$shrext"; then
|
||||
found_dir="$dir"
|
||||
found_so="$dir/$libname$shrext"
|
||||
else
|
||||
if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
|
||||
ver=`(cd "$dir" && \
|
||||
for f in "$libname$shrext".*; do echo "$f"; done \
|
||||
| sed -e "s,^$libname$shrext\\\\.,," \
|
||||
| sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
|
||||
| sed 1q ) 2>/dev/null`
|
||||
if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
|
||||
found_dir="$dir"
|
||||
found_so="$dir/$libname$shrext.$ver"
|
||||
fi
|
||||
else
|
||||
eval library_names=\"$acl_library_names_spec\"
|
||||
for f in $library_names; do
|
||||
if test -f "$dir/$f"; then
|
||||
found_dir="$dir"
|
||||
found_so="$dir/$f"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
dnl Then look for a static library.
|
||||
if test "X$found_dir" = "X"; then
|
||||
if test -f "$dir/$libname.$acl_libext"; then
|
||||
found_dir="$dir"
|
||||
found_a="$dir/$libname.$acl_libext"
|
||||
fi
|
||||
fi
|
||||
if test "X$found_dir" != "X"; then
|
||||
if test -f "$dir/$libname.la"; then
|
||||
found_la="$dir/$libname.la"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test "X$found_dir" = "X"; then
|
||||
for x in $LDFLAGS $LTLIB[]NAME; do
|
||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||
case "$x" in
|
||||
-L*)
|
||||
dir=`echo "X$x" | sed -e 's/^X-L//'`
|
||||
dnl First look for a shared library.
|
||||
if test -n "$acl_shlibext"; then
|
||||
if test -f "$dir/$libname$shrext"; then
|
||||
found_dir="$dir"
|
||||
found_so="$dir/$libname$shrext"
|
||||
else
|
||||
if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
|
||||
ver=`(cd "$dir" && \
|
||||
for f in "$libname$shrext".*; do echo "$f"; done \
|
||||
| sed -e "s,^$libname$shrext\\\\.,," \
|
||||
| sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
|
||||
| sed 1q ) 2>/dev/null`
|
||||
if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
|
||||
found_dir="$dir"
|
||||
found_so="$dir/$libname$shrext.$ver"
|
||||
fi
|
||||
else
|
||||
eval library_names=\"$acl_library_names_spec\"
|
||||
for f in $library_names; do
|
||||
if test -f "$dir/$f"; then
|
||||
found_dir="$dir"
|
||||
found_so="$dir/$f"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
dnl Then look for a static library.
|
||||
if test "X$found_dir" = "X"; then
|
||||
if test -f "$dir/$libname.$acl_libext"; then
|
||||
found_dir="$dir"
|
||||
found_a="$dir/$libname.$acl_libext"
|
||||
fi
|
||||
fi
|
||||
if test "X$found_dir" != "X"; then
|
||||
if test -f "$dir/$libname.la"; then
|
||||
found_la="$dir/$libname.la"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
if test "X$found_dir" != "X"; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
if test "X$found_dir" != "X"; then
|
||||
dnl Found the library.
|
||||
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
|
||||
if test "X$found_so" != "X"; then
|
||||
dnl Linking with a shared library. We attempt to hardcode its
|
||||
dnl directory into the executable's runpath, unless it's the
|
||||
dnl standard /usr/lib.
|
||||
if test "$enable_rpath" = no \
|
||||
|| test "X$found_dir" = "X/usr/$acl_libdirstem" \
|
||||
|| test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
|
||||
dnl No hardcoding is needed.
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
||||
else
|
||||
dnl Use an explicit option to hardcode DIR into the resulting
|
||||
dnl binary.
|
||||
dnl Potentially add DIR to ltrpathdirs.
|
||||
dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
|
||||
haveit=
|
||||
for x in $ltrpathdirs; do
|
||||
if test "X$x" = "X$found_dir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
ltrpathdirs="$ltrpathdirs $found_dir"
|
||||
fi
|
||||
dnl The hardcoding into $LIBNAME is system dependent.
|
||||
if test "$acl_hardcode_direct" = yes; then
|
||||
dnl Using DIR/libNAME.so during linking hardcodes DIR into the
|
||||
dnl resulting binary.
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
||||
else
|
||||
if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
|
||||
dnl Use an explicit option to hardcode DIR into the resulting
|
||||
dnl binary.
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
||||
dnl Potentially add DIR to rpathdirs.
|
||||
dnl The rpathdirs will be appended to $LIBNAME at the end.
|
||||
haveit=
|
||||
for x in $rpathdirs; do
|
||||
if test "X$x" = "X$found_dir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
rpathdirs="$rpathdirs $found_dir"
|
||||
fi
|
||||
else
|
||||
dnl Rely on "-L$found_dir".
|
||||
dnl But don't add it if it's already contained in the LDFLAGS
|
||||
dnl or the already constructed $LIBNAME
|
||||
haveit=
|
||||
for x in $LDFLAGS $LIB[]NAME; do
|
||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||
if test "X$x" = "X-L$found_dir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
|
||||
fi
|
||||
if test "$acl_hardcode_minus_L" != no; then
|
||||
dnl FIXME: Not sure whether we should use
|
||||
dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
|
||||
dnl here.
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
||||
else
|
||||
dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
|
||||
dnl here, because this doesn't fit in flags passed to the
|
||||
dnl compiler. So give up. No hardcoding. This affects only
|
||||
dnl very old systems.
|
||||
dnl FIXME: Not sure whether we should use
|
||||
dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
|
||||
dnl here.
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
else
|
||||
if test "X$found_a" != "X"; then
|
||||
dnl Linking with a static library.
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
|
||||
else
|
||||
dnl We shouldn't come here, but anyway it's good to have a
|
||||
dnl fallback.
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
|
||||
fi
|
||||
fi
|
||||
dnl Assume the include files are nearby.
|
||||
additional_includedir=
|
||||
case "$found_dir" in
|
||||
*/$acl_libdirstem | */$acl_libdirstem/)
|
||||
basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
|
||||
if test "$name" = '$1'; then
|
||||
LIB[]NAME[]_PREFIX="$basedir"
|
||||
fi
|
||||
additional_includedir="$basedir/include"
|
||||
;;
|
||||
*/$acl_libdirstem2 | */$acl_libdirstem2/)
|
||||
basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
|
||||
if test "$name" = '$1'; then
|
||||
LIB[]NAME[]_PREFIX="$basedir"
|
||||
fi
|
||||
additional_includedir="$basedir/include"
|
||||
;;
|
||||
esac
|
||||
if test "X$additional_includedir" != "X"; then
|
||||
dnl Potentially add $additional_includedir to $INCNAME.
|
||||
dnl But don't add it
|
||||
dnl 1. if it's the standard /usr/include,
|
||||
dnl 2. if it's /usr/local/include and we are using GCC on Linux,
|
||||
dnl 3. if it's already present in $CPPFLAGS or the already
|
||||
dnl constructed $INCNAME,
|
||||
dnl 4. if it doesn't exist as a directory.
|
||||
if test "X$additional_includedir" != "X/usr/include"; then
|
||||
haveit=
|
||||
if test "X$additional_includedir" = "X/usr/local/include"; then
|
||||
if test -n "$GCC"; then
|
||||
case $host_os in
|
||||
linux* | gnu* | k*bsd*-gnu) haveit=yes;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
if test -z "$haveit"; then
|
||||
for x in $CPPFLAGS $INC[]NAME; do
|
||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||
if test "X$x" = "X-I$additional_includedir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
if test -d "$additional_includedir"; then
|
||||
dnl Really add $additional_includedir to $INCNAME.
|
||||
INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
dnl Look for dependencies.
|
||||
if test -n "$found_la"; then
|
||||
dnl Read the .la file. It defines the variables
|
||||
dnl dlname, library_names, old_library, dependency_libs, current,
|
||||
dnl age, revision, installed, dlopen, dlpreopen, libdir.
|
||||
save_libdir="$libdir"
|
||||
case "$found_la" in
|
||||
*/* | *\\*) . "$found_la" ;;
|
||||
*) . "./$found_la" ;;
|
||||
esac
|
||||
libdir="$save_libdir"
|
||||
dnl We use only dependency_libs.
|
||||
for dep in $dependency_libs; do
|
||||
case "$dep" in
|
||||
-L*)
|
||||
additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
|
||||
dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
|
||||
dnl But don't add it
|
||||
dnl 1. if it's the standard /usr/lib,
|
||||
dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
|
||||
dnl 3. if it's already present in $LDFLAGS or the already
|
||||
dnl constructed $LIBNAME,
|
||||
dnl 4. if it doesn't exist as a directory.
|
||||
if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
|
||||
&& test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
|
||||
haveit=
|
||||
if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
|
||||
|| test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
|
||||
if test -n "$GCC"; then
|
||||
case $host_os in
|
||||
linux* | gnu* | k*bsd*-gnu) haveit=yes;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
if test -z "$haveit"; then
|
||||
haveit=
|
||||
for x in $LDFLAGS $LIB[]NAME; do
|
||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||
if test "X$x" = "X-L$additional_libdir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
if test -d "$additional_libdir"; then
|
||||
dnl Really add $additional_libdir to $LIBNAME.
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
|
||||
fi
|
||||
fi
|
||||
haveit=
|
||||
for x in $LDFLAGS $LTLIB[]NAME; do
|
||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||
if test "X$x" = "X-L$additional_libdir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
if test -d "$additional_libdir"; then
|
||||
dnl Really add $additional_libdir to $LTLIBNAME.
|
||||
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
-R*)
|
||||
dir=`echo "X$dep" | sed -e 's/^X-R//'`
|
||||
if test "$enable_rpath" != no; then
|
||||
dnl Potentially add DIR to rpathdirs.
|
||||
dnl The rpathdirs will be appended to $LIBNAME at the end.
|
||||
haveit=
|
||||
for x in $rpathdirs; do
|
||||
if test "X$x" = "X$dir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
rpathdirs="$rpathdirs $dir"
|
||||
fi
|
||||
dnl Potentially add DIR to ltrpathdirs.
|
||||
dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
|
||||
haveit=
|
||||
for x in $ltrpathdirs; do
|
||||
if test "X$x" = "X$dir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
ltrpathdirs="$ltrpathdirs $dir"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
-l*)
|
||||
dnl Handle this in the next round.
|
||||
names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
|
||||
;;
|
||||
*.la)
|
||||
dnl Handle this in the next round. Throw away the .la's
|
||||
dnl directory; it is already contained in a preceding -L
|
||||
dnl option.
|
||||
names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
|
||||
;;
|
||||
*)
|
||||
dnl Most likely an immediate library name.
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
|
||||
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
else
|
||||
dnl Didn't find the library; assume it is in the system directories
|
||||
dnl known to the linker and runtime loader. (All the system
|
||||
dnl directories known to the linker should also be known to the
|
||||
dnl runtime loader, otherwise the system is severely misconfigured.)
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
|
||||
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
done
|
||||
if test "X$rpathdirs" != "X"; then
|
||||
if test -n "$acl_hardcode_libdir_separator"; then
|
||||
dnl Weird platform: only the last -rpath option counts, the user must
|
||||
dnl pass all path elements in one option. We can arrange that for a
|
||||
dnl single library, but not when more than one $LIBNAMEs are used.
|
||||
alldirs=
|
||||
for found_dir in $rpathdirs; do
|
||||
alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
|
||||
done
|
||||
dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
|
||||
acl_save_libdir="$libdir"
|
||||
libdir="$alldirs"
|
||||
eval flag=\"$acl_hardcode_libdir_flag_spec\"
|
||||
libdir="$acl_save_libdir"
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
|
||||
else
|
||||
dnl The -rpath options are cumulative.
|
||||
for found_dir in $rpathdirs; do
|
||||
acl_save_libdir="$libdir"
|
||||
libdir="$found_dir"
|
||||
eval flag=\"$acl_hardcode_libdir_flag_spec\"
|
||||
libdir="$acl_save_libdir"
|
||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
if test "X$ltrpathdirs" != "X"; then
|
||||
dnl When using libtool, the option that works for both libraries and
|
||||
dnl executables is -R. The -R options are cumulative.
|
||||
for found_dir in $ltrpathdirs; do
|
||||
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
|
||||
done
|
||||
fi
|
||||
popdef([P_A_C_K])
|
||||
popdef([PACKLIBS])
|
||||
popdef([PACKUP])
|
||||
popdef([PACK])
|
||||
popdef([NAME])
|
||||
])
|
||||
|
||||
dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
|
||||
dnl unless already present in VAR.
|
||||
dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
|
||||
dnl contains two or three consecutive elements that belong together.
|
||||
AC_DEFUN([AC_LIB_APPENDTOVAR],
|
||||
[
|
||||
for element in [$2]; do
|
||||
haveit=
|
||||
for x in $[$1]; do
|
||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||
if test "X$x" = "X$element"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
[$1]="${[$1]}${[$1]:+ }$element"
|
||||
fi
|
||||
done
|
||||
])
|
||||
|
||||
dnl For those cases where a variable contains several -L and -l options
|
||||
dnl referring to unknown libraries and directories, this macro determines the
|
||||
dnl necessary additional linker options for the runtime path.
|
||||
dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
|
||||
dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
|
||||
dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
|
||||
dnl otherwise linking without libtool is assumed.
|
||||
AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
|
||||
[
|
||||
AC_REQUIRE([AC_LIB_RPATH])
|
||||
AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
|
||||
$1=
|
||||
if test "$enable_rpath" != no; then
|
||||
if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
|
||||
dnl Use an explicit option to hardcode directories into the resulting
|
||||
dnl binary.
|
||||
rpathdirs=
|
||||
next=
|
||||
for opt in $2; do
|
||||
if test -n "$next"; then
|
||||
dir="$next"
|
||||
dnl No need to hardcode the standard /usr/lib.
|
||||
if test "X$dir" != "X/usr/$acl_libdirstem" \
|
||||
&& test "X$dir" != "X/usr/$acl_libdirstem2"; then
|
||||
rpathdirs="$rpathdirs $dir"
|
||||
fi
|
||||
next=
|
||||
else
|
||||
case $opt in
|
||||
-L) next=yes ;;
|
||||
-L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
|
||||
dnl No need to hardcode the standard /usr/lib.
|
||||
if test "X$dir" != "X/usr/$acl_libdirstem" \
|
||||
&& test "X$dir" != "X/usr/$acl_libdirstem2"; then
|
||||
rpathdirs="$rpathdirs $dir"
|
||||
fi
|
||||
next= ;;
|
||||
*) next= ;;
|
||||
esac
|
||||
fi
|
||||
done
|
||||
if test "X$rpathdirs" != "X"; then
|
||||
if test -n ""$3""; then
|
||||
dnl libtool is used for linking. Use -R options.
|
||||
for dir in $rpathdirs; do
|
||||
$1="${$1}${$1:+ }-R$dir"
|
||||
done
|
||||
else
|
||||
dnl The linker is used for linking directly.
|
||||
if test -n "$acl_hardcode_libdir_separator"; then
|
||||
dnl Weird platform: only the last -rpath option counts, the user
|
||||
dnl must pass all path elements in one option.
|
||||
alldirs=
|
||||
for dir in $rpathdirs; do
|
||||
alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
|
||||
done
|
||||
acl_save_libdir="$libdir"
|
||||
libdir="$alldirs"
|
||||
eval flag=\"$acl_hardcode_libdir_flag_spec\"
|
||||
libdir="$acl_save_libdir"
|
||||
$1="$flag"
|
||||
else
|
||||
dnl The -rpath options are cumulative.
|
||||
for dir in $rpathdirs; do
|
||||
acl_save_libdir="$libdir"
|
||||
libdir="$dir"
|
||||
eval flag=\"$acl_hardcode_libdir_flag_spec\"
|
||||
libdir="$acl_save_libdir"
|
||||
$1="${$1}${$1:+ }$flag"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([$1])
|
||||
])
|
|
@ -0,0 +1,224 @@
|
|||
# lib-prefix.m4 serial 7 (gettext-0.18)
|
||||
dnl Copyright (C) 2001-2005, 2008-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
|
||||
dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
|
||||
dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
|
||||
dnl require excessive bracketing.
|
||||
ifdef([AC_HELP_STRING],
|
||||
[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
|
||||
[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
|
||||
|
||||
dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
|
||||
dnl to access previously installed libraries. The basic assumption is that
|
||||
dnl a user will want packages to use other packages he previously installed
|
||||
dnl with the same --prefix option.
|
||||
dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
|
||||
dnl libraries, but is otherwise very convenient.
|
||||
AC_DEFUN([AC_LIB_PREFIX],
|
||||
[
|
||||
AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
|
||||
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
||||
dnl By default, look in $includedir and $libdir.
|
||||
use_additional=yes
|
||||
AC_LIB_WITH_FINAL_PREFIX([
|
||||
eval additional_includedir=\"$includedir\"
|
||||
eval additional_libdir=\"$libdir\"
|
||||
])
|
||||
AC_LIB_ARG_WITH([lib-prefix],
|
||||
[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
|
||||
--without-lib-prefix don't search for libraries in includedir and libdir],
|
||||
[
|
||||
if test "X$withval" = "Xno"; then
|
||||
use_additional=no
|
||||
else
|
||||
if test "X$withval" = "X"; then
|
||||
AC_LIB_WITH_FINAL_PREFIX([
|
||||
eval additional_includedir=\"$includedir\"
|
||||
eval additional_libdir=\"$libdir\"
|
||||
])
|
||||
else
|
||||
additional_includedir="$withval/include"
|
||||
additional_libdir="$withval/$acl_libdirstem"
|
||||
fi
|
||||
fi
|
||||
])
|
||||
if test $use_additional = yes; then
|
||||
dnl Potentially add $additional_includedir to $CPPFLAGS.
|
||||
dnl But don't add it
|
||||
dnl 1. if it's the standard /usr/include,
|
||||
dnl 2. if it's already present in $CPPFLAGS,
|
||||
dnl 3. if it's /usr/local/include and we are using GCC on Linux,
|
||||
dnl 4. if it doesn't exist as a directory.
|
||||
if test "X$additional_includedir" != "X/usr/include"; then
|
||||
haveit=
|
||||
for x in $CPPFLAGS; do
|
||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||
if test "X$x" = "X-I$additional_includedir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
if test "X$additional_includedir" = "X/usr/local/include"; then
|
||||
if test -n "$GCC"; then
|
||||
case $host_os in
|
||||
linux* | gnu* | k*bsd*-gnu) haveit=yes;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
if test -z "$haveit"; then
|
||||
if test -d "$additional_includedir"; then
|
||||
dnl Really add $additional_includedir to $CPPFLAGS.
|
||||
CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
dnl Potentially add $additional_libdir to $LDFLAGS.
|
||||
dnl But don't add it
|
||||
dnl 1. if it's the standard /usr/lib,
|
||||
dnl 2. if it's already present in $LDFLAGS,
|
||||
dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
|
||||
dnl 4. if it doesn't exist as a directory.
|
||||
if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
|
||||
haveit=
|
||||
for x in $LDFLAGS; do
|
||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||
if test "X$x" = "X-L$additional_libdir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
|
||||
if test -n "$GCC"; then
|
||||
case $host_os in
|
||||
linux*) haveit=yes;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
if test -z "$haveit"; then
|
||||
if test -d "$additional_libdir"; then
|
||||
dnl Really add $additional_libdir to $LDFLAGS.
|
||||
LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
|
||||
dnl acl_final_exec_prefix, containing the values to which $prefix and
|
||||
dnl $exec_prefix will expand at the end of the configure script.
|
||||
AC_DEFUN([AC_LIB_PREPARE_PREFIX],
|
||||
[
|
||||
dnl Unfortunately, prefix and exec_prefix get only finally determined
|
||||
dnl at the end of configure.
|
||||
if test "X$prefix" = "XNONE"; then
|
||||
acl_final_prefix="$ac_default_prefix"
|
||||
else
|
||||
acl_final_prefix="$prefix"
|
||||
fi
|
||||
if test "X$exec_prefix" = "XNONE"; then
|
||||
acl_final_exec_prefix='${prefix}'
|
||||
else
|
||||
acl_final_exec_prefix="$exec_prefix"
|
||||
fi
|
||||
acl_save_prefix="$prefix"
|
||||
prefix="$acl_final_prefix"
|
||||
eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
|
||||
prefix="$acl_save_prefix"
|
||||
])
|
||||
|
||||
dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
|
||||
dnl variables prefix and exec_prefix bound to the values they will have
|
||||
dnl at the end of the configure script.
|
||||
AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
|
||||
[
|
||||
acl_save_prefix="$prefix"
|
||||
prefix="$acl_final_prefix"
|
||||
acl_save_exec_prefix="$exec_prefix"
|
||||
exec_prefix="$acl_final_exec_prefix"
|
||||
$1
|
||||
exec_prefix="$acl_save_exec_prefix"
|
||||
prefix="$acl_save_prefix"
|
||||
])
|
||||
|
||||
dnl AC_LIB_PREPARE_MULTILIB creates
|
||||
dnl - a variable acl_libdirstem, containing the basename of the libdir, either
|
||||
dnl "lib" or "lib64" or "lib/64",
|
||||
dnl - a variable acl_libdirstem2, as a secondary possible value for
|
||||
dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or
|
||||
dnl "lib/amd64".
|
||||
AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
|
||||
[
|
||||
dnl There is no formal standard regarding lib and lib64.
|
||||
dnl On glibc systems, the current practice is that on a system supporting
|
||||
dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
|
||||
dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine
|
||||
dnl the compiler's default mode by looking at the compiler's library search
|
||||
dnl path. If at least one of its elements ends in /lib64 or points to a
|
||||
dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI.
|
||||
dnl Otherwise we use the default, namely "lib".
|
||||
dnl On Solaris systems, the current practice is that on a system supporting
|
||||
dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
|
||||
dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
|
||||
dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
acl_libdirstem=lib
|
||||
acl_libdirstem2=
|
||||
case "$host_os" in
|
||||
solaris*)
|
||||
dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
|
||||
dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>.
|
||||
dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
|
||||
dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
|
||||
dnl symlink is missing, so we set acl_libdirstem2 too.
|
||||
AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
|
||||
[AC_EGREP_CPP([sixtyfour bits], [
|
||||
#ifdef _LP64
|
||||
sixtyfour bits
|
||||
#endif
|
||||
], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no])
|
||||
])
|
||||
if test $gl_cv_solaris_64bit = yes; then
|
||||
acl_libdirstem=lib/64
|
||||
case "$host_cpu" in
|
||||
sparc*) acl_libdirstem2=lib/sparcv9 ;;
|
||||
i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
|
||||
esac
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
|
||||
if test -n "$searchpath"; then
|
||||
acl_save_IFS="${IFS= }"; IFS=":"
|
||||
for searchdir in $searchpath; do
|
||||
if test -d "$searchdir"; then
|
||||
case "$searchdir" in
|
||||
*/lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
|
||||
*/../ | */.. )
|
||||
# Better ignore directories of this form. They are misleading.
|
||||
;;
|
||||
*) searchdir=`cd "$searchdir" && pwd`
|
||||
case "$searchdir" in
|
||||
*/lib64 ) acl_libdirstem=lib64 ;;
|
||||
esac ;;
|
||||
esac
|
||||
fi
|
||||
done
|
||||
IFS="$acl_save_IFS"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
|
||||
])
|
|
@ -0,0 +1,37 @@
|
|||
# lock.m4 serial 10 (gettext-0.18)
|
||||
dnl Copyright (C) 2005-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
|
||||
AC_DEFUN([gl_LOCK],
|
||||
[
|
||||
AC_REQUIRE([gl_THREADLIB])
|
||||
if test "$gl_threads_api" = posix; then
|
||||
# OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the
|
||||
# pthread_rwlock_* functions.
|
||||
AC_CHECK_TYPE([pthread_rwlock_t],
|
||||
[AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1],
|
||||
[Define if the POSIX multithreading library has read/write locks.])],
|
||||
[],
|
||||
[#include <pthread.h>])
|
||||
# glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro.
|
||||
AC_TRY_COMPILE([#include <pthread.h>],
|
||||
[#if __FreeBSD__ == 4
|
||||
error "No, in FreeBSD 4.0 recursive mutexes actually don't work."
|
||||
#else
|
||||
int x = (int)PTHREAD_MUTEX_RECURSIVE;
|
||||
return !x;
|
||||
#endif],
|
||||
[AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], [1],
|
||||
[Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE.])])
|
||||
fi
|
||||
gl_PREREQ_LOCK
|
||||
])
|
||||
|
||||
# Prerequisites of lib/lock.c.
|
||||
AC_DEFUN([gl_PREREQ_LOCK], [
|
||||
AC_REQUIRE([AC_C_INLINE])
|
||||
])
|
|
@ -0,0 +1,106 @@
|
|||
# longlong.m4 serial 14
|
||||
dnl Copyright (C) 1999-2007, 2009-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Paul Eggert.
|
||||
|
||||
# Define HAVE_LONG_LONG_INT if 'long long int' works.
|
||||
# This fixes a bug in Autoconf 2.61, but can be removed once we
|
||||
# assume 2.62 everywhere.
|
||||
|
||||
# Note: If the type 'long long int' exists but is only 32 bits large
|
||||
# (as on some very old compilers), HAVE_LONG_LONG_INT will not be
|
||||
# defined. In this case you can treat 'long long int' like 'long int'.
|
||||
|
||||
AC_DEFUN([AC_TYPE_LONG_LONG_INT],
|
||||
[
|
||||
AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
|
||||
[AC_LINK_IFELSE(
|
||||
[_AC_TYPE_LONG_LONG_SNIPPET],
|
||||
[dnl This catches a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
|
||||
dnl If cross compiling, assume the bug isn't important, since
|
||||
dnl nobody cross compiles for this platform as far as we know.
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[@%:@include <limits.h>
|
||||
@%:@ifndef LLONG_MAX
|
||||
@%:@ define HALF \
|
||||
(1LL << (sizeof (long long int) * CHAR_BIT - 2))
|
||||
@%:@ define LLONG_MAX (HALF - 1 + HALF)
|
||||
@%:@endif]],
|
||||
[[long long int n = 1;
|
||||
int i;
|
||||
for (i = 0; ; i++)
|
||||
{
|
||||
long long int m = n << i;
|
||||
if (m >> i != n)
|
||||
return 1;
|
||||
if (LLONG_MAX / 2 < m)
|
||||
break;
|
||||
}
|
||||
return 0;]])],
|
||||
[ac_cv_type_long_long_int=yes],
|
||||
[ac_cv_type_long_long_int=no],
|
||||
[ac_cv_type_long_long_int=yes])],
|
||||
[ac_cv_type_long_long_int=no])])
|
||||
if test $ac_cv_type_long_long_int = yes; then
|
||||
AC_DEFINE([HAVE_LONG_LONG_INT], [1],
|
||||
[Define to 1 if the system has the type `long long int'.])
|
||||
fi
|
||||
])
|
||||
|
||||
# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works.
|
||||
# This fixes a bug in Autoconf 2.61, but can be removed once we
|
||||
# assume 2.62 everywhere.
|
||||
|
||||
# Note: If the type 'unsigned long long int' exists but is only 32 bits
|
||||
# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT
|
||||
# will not be defined. In this case you can treat 'unsigned long long int'
|
||||
# like 'unsigned long int'.
|
||||
|
||||
AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
|
||||
[
|
||||
AC_CACHE_CHECK([for unsigned long long int],
|
||||
[ac_cv_type_unsigned_long_long_int],
|
||||
[AC_LINK_IFELSE(
|
||||
[_AC_TYPE_LONG_LONG_SNIPPET],
|
||||
[ac_cv_type_unsigned_long_long_int=yes],
|
||||
[ac_cv_type_unsigned_long_long_int=no])])
|
||||
if test $ac_cv_type_unsigned_long_long_int = yes; then
|
||||
AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1],
|
||||
[Define to 1 if the system has the type `unsigned long long int'.])
|
||||
fi
|
||||
])
|
||||
|
||||
# Expands to a C program that can be used to test for simultaneous support
|
||||
# of 'long long' and 'unsigned long long'. We don't want to say that
|
||||
# 'long long' is available if 'unsigned long long' is not, or vice versa,
|
||||
# because too many programs rely on the symmetry between signed and unsigned
|
||||
# integer types (excluding 'bool').
|
||||
AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET],
|
||||
[
|
||||
AC_LANG_PROGRAM(
|
||||
[[/* For now, do not test the preprocessor; as of 2007 there are too many
|
||||
implementations with broken preprocessors. Perhaps this can
|
||||
be revisited in 2012. In the meantime, code should not expect
|
||||
#if to work with literals wider than 32 bits. */
|
||||
/* Test literals. */
|
||||
long long int ll = 9223372036854775807ll;
|
||||
long long int nll = -9223372036854775807LL;
|
||||
unsigned long long int ull = 18446744073709551615ULL;
|
||||
/* Test constant expressions. */
|
||||
typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
|
||||
? 1 : -1)];
|
||||
typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
|
||||
? 1 : -1)];
|
||||
int i = 63;]],
|
||||
[[/* Test availability of runtime routines for shift and division. */
|
||||
long long int llmax = 9223372036854775807ll;
|
||||
unsigned long long int ullmax = 18446744073709551615ull;
|
||||
return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
|
||||
| (llmax / ll) | (llmax % ll)
|
||||
| (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
|
||||
| (ullmax / ull) | (ullmax % ull));]])
|
||||
])
|
|
@ -0,0 +1,32 @@
|
|||
# nls.m4 serial 5 (gettext-0.18)
|
||||
dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation,
|
||||
dnl Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
dnl
|
||||
dnl This file can can be used in projects which are not available under
|
||||
dnl the GNU General Public License or the GNU Library General Public
|
||||
dnl License but which still want to provide support for the GNU gettext
|
||||
dnl functionality.
|
||||
dnl Please note that the actual code of the GNU gettext library is covered
|
||||
dnl by the GNU Library General Public License, and the rest of the GNU
|
||||
dnl gettext package package is covered by the GNU General Public License.
|
||||
dnl They are *not* in the public domain.
|
||||
|
||||
dnl Authors:
|
||||
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
||||
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
|
||||
|
||||
AC_PREREQ([2.50])
|
||||
|
||||
AC_DEFUN([AM_NLS],
|
||||
[
|
||||
AC_MSG_CHECKING([whether NLS is requested])
|
||||
dnl Default is enabled NLS
|
||||
AC_ARG_ENABLE([nls],
|
||||
[ --disable-nls do not use Native Language Support],
|
||||
USE_NLS=$enableval, USE_NLS=yes)
|
||||
AC_MSG_RESULT([$USE_NLS])
|
||||
AC_SUBST([USE_NLS])
|
||||
])
|
|
@ -0,0 +1,449 @@
|
|||
# po.m4 serial 17 (gettext-0.18)
|
||||
dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
dnl
|
||||
dnl This file can can be used in projects which are not available under
|
||||
dnl the GNU General Public License or the GNU Library General Public
|
||||
dnl License but which still want to provide support for the GNU gettext
|
||||
dnl functionality.
|
||||
dnl Please note that the actual code of the GNU gettext library is covered
|
||||
dnl by the GNU Library General Public License, and the rest of the GNU
|
||||
dnl gettext package package is covered by the GNU General Public License.
|
||||
dnl They are *not* in the public domain.
|
||||
|
||||
dnl Authors:
|
||||
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
||||
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
|
||||
|
||||
AC_PREREQ([2.50])
|
||||
|
||||
dnl Checks for all prerequisites of the po subdirectory.
|
||||
AC_DEFUN([AM_PO_SUBDIRS],
|
||||
[
|
||||
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
||||
AC_REQUIRE([AC_PROG_INSTALL])dnl
|
||||
AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
|
||||
AC_REQUIRE([AM_NLS])dnl
|
||||
|
||||
dnl Release version of the gettext macros. This is used to ensure that
|
||||
dnl the gettext macros and po/Makefile.in.in are in sync.
|
||||
AC_SUBST([GETTEXT_MACRO_VERSION], [0.18])
|
||||
|
||||
dnl Perform the following tests also if --disable-nls has been given,
|
||||
dnl because they are needed for "make dist" to work.
|
||||
|
||||
dnl Search for GNU msgfmt in the PATH.
|
||||
dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
|
||||
dnl The second test excludes FreeBSD msgfmt.
|
||||
AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
|
||||
[$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
|
||||
(if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
|
||||
:)
|
||||
AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT])
|
||||
|
||||
dnl Test whether it is GNU msgfmt >= 0.15.
|
||||
changequote(,)dnl
|
||||
case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
|
||||
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
|
||||
*) MSGFMT_015=$MSGFMT ;;
|
||||
esac
|
||||
changequote([,])dnl
|
||||
AC_SUBST([MSGFMT_015])
|
||||
changequote(,)dnl
|
||||
case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
|
||||
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
|
||||
*) GMSGFMT_015=$GMSGFMT ;;
|
||||
esac
|
||||
changequote([,])dnl
|
||||
AC_SUBST([GMSGFMT_015])
|
||||
|
||||
dnl Search for GNU xgettext 0.12 or newer in the PATH.
|
||||
dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
|
||||
dnl The second test excludes FreeBSD xgettext.
|
||||
AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
|
||||
[$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
|
||||
(if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
|
||||
:)
|
||||
dnl Remove leftover from FreeBSD xgettext call.
|
||||
rm -f messages.po
|
||||
|
||||
dnl Test whether it is GNU xgettext >= 0.15.
|
||||
changequote(,)dnl
|
||||
case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
|
||||
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
|
||||
*) XGETTEXT_015=$XGETTEXT ;;
|
||||
esac
|
||||
changequote([,])dnl
|
||||
AC_SUBST([XGETTEXT_015])
|
||||
|
||||
dnl Search for GNU msgmerge 0.11 or newer in the PATH.
|
||||
AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
|
||||
[$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
|
||||
|
||||
dnl Installation directories.
|
||||
dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we
|
||||
dnl have to define it here, so that it can be used in po/Makefile.
|
||||
test -n "$localedir" || localedir='${datadir}/locale'
|
||||
AC_SUBST([localedir])
|
||||
|
||||
dnl Support for AM_XGETTEXT_OPTION.
|
||||
test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
|
||||
AC_SUBST([XGETTEXT_EXTRA_OPTIONS])
|
||||
|
||||
AC_CONFIG_COMMANDS([po-directories], [[
|
||||
for ac_file in $CONFIG_FILES; do
|
||||
# Support "outfile[:infile[:infile...]]"
|
||||
case "$ac_file" in
|
||||
*:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
|
||||
esac
|
||||
# PO directories have a Makefile.in generated from Makefile.in.in.
|
||||
case "$ac_file" in */Makefile.in)
|
||||
# Adjust a relative srcdir.
|
||||
ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
|
||||
ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
|
||||
ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
|
||||
# In autoconf-2.13 it is called $ac_given_srcdir.
|
||||
# In autoconf-2.50 it is called $srcdir.
|
||||
test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
|
||||
case "$ac_given_srcdir" in
|
||||
.) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
|
||||
/*) top_srcdir="$ac_given_srcdir" ;;
|
||||
*) top_srcdir="$ac_dots$ac_given_srcdir" ;;
|
||||
esac
|
||||
# Treat a directory as a PO directory if and only if it has a
|
||||
# POTFILES.in file. This allows packages to have multiple PO
|
||||
# directories under different names or in different locations.
|
||||
if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
|
||||
rm -f "$ac_dir/POTFILES"
|
||||
test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
|
||||
cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
|
||||
POMAKEFILEDEPS="POTFILES.in"
|
||||
# ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
|
||||
# on $ac_dir but don't depend on user-specified configuration
|
||||
# parameters.
|
||||
if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
|
||||
# The LINGUAS file contains the set of available languages.
|
||||
if test -n "$OBSOLETE_ALL_LINGUAS"; then
|
||||
test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
|
||||
fi
|
||||
ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
|
||||
# Hide the ALL_LINGUAS assigment from automake < 1.5.
|
||||
eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
|
||||
POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
|
||||
else
|
||||
# The set of available languages was given in configure.in.
|
||||
# Hide the ALL_LINGUAS assigment from automake < 1.5.
|
||||
eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
|
||||
fi
|
||||
# Compute POFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
|
||||
# Compute UPDATEPOFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
|
||||
# Compute DUMMYPOFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
|
||||
# Compute GMOFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
|
||||
case "$ac_given_srcdir" in
|
||||
.) srcdirpre= ;;
|
||||
*) srcdirpre='$(srcdir)/' ;;
|
||||
esac
|
||||
POFILES=
|
||||
UPDATEPOFILES=
|
||||
DUMMYPOFILES=
|
||||
GMOFILES=
|
||||
for lang in $ALL_LINGUAS; do
|
||||
POFILES="$POFILES $srcdirpre$lang.po"
|
||||
UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
|
||||
DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
|
||||
GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
|
||||
done
|
||||
# CATALOGS depends on both $ac_dir and the user's LINGUAS
|
||||
# environment variable.
|
||||
INST_LINGUAS=
|
||||
if test -n "$ALL_LINGUAS"; then
|
||||
for presentlang in $ALL_LINGUAS; do
|
||||
useit=no
|
||||
if test "%UNSET%" != "$LINGUAS"; then
|
||||
desiredlanguages="$LINGUAS"
|
||||
else
|
||||
desiredlanguages="$ALL_LINGUAS"
|
||||
fi
|
||||
for desiredlang in $desiredlanguages; do
|
||||
# Use the presentlang catalog if desiredlang is
|
||||
# a. equal to presentlang, or
|
||||
# b. a variant of presentlang (because in this case,
|
||||
# presentlang can be used as a fallback for messages
|
||||
# which are not translated in the desiredlang catalog).
|
||||
case "$desiredlang" in
|
||||
"$presentlang"*) useit=yes;;
|
||||
esac
|
||||
done
|
||||
if test $useit = yes; then
|
||||
INST_LINGUAS="$INST_LINGUAS $presentlang"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
CATALOGS=
|
||||
if test -n "$INST_LINGUAS"; then
|
||||
for lang in $INST_LINGUAS; do
|
||||
CATALOGS="$CATALOGS $lang.gmo"
|
||||
done
|
||||
fi
|
||||
test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
|
||||
sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
|
||||
for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
|
||||
if test -f "$f"; then
|
||||
case "$f" in
|
||||
*.orig | *.bak | *~) ;;
|
||||
*) cat "$f" >> "$ac_dir/Makefile" ;;
|
||||
esac
|
||||
fi
|
||||
done
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done]],
|
||||
[# Capture the value of obsolete ALL_LINGUAS because we need it to compute
|
||||
# POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
|
||||
# from automake < 1.5.
|
||||
eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
|
||||
# Capture the value of LINGUAS because we need it to compute CATALOGS.
|
||||
LINGUAS="${LINGUAS-%UNSET%}"
|
||||
])
|
||||
])
|
||||
|
||||
dnl Postprocesses a Makefile in a directory containing PO files.
|
||||
AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
|
||||
[
|
||||
# When this code is run, in config.status, two variables have already been
|
||||
# set:
|
||||
# - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
|
||||
# - LINGUAS is the value of the environment variable LINGUAS at configure
|
||||
# time.
|
||||
|
||||
changequote(,)dnl
|
||||
# Adjust a relative srcdir.
|
||||
ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
|
||||
ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
|
||||
ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
|
||||
# In autoconf-2.13 it is called $ac_given_srcdir.
|
||||
# In autoconf-2.50 it is called $srcdir.
|
||||
test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
|
||||
case "$ac_given_srcdir" in
|
||||
.) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
|
||||
/*) top_srcdir="$ac_given_srcdir" ;;
|
||||
*) top_srcdir="$ac_dots$ac_given_srcdir" ;;
|
||||
esac
|
||||
|
||||
# Find a way to echo strings without interpreting backslash.
|
||||
if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
|
||||
gt_echo='echo'
|
||||
else
|
||||
if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
|
||||
gt_echo='printf %s\n'
|
||||
else
|
||||
echo_func () {
|
||||
cat <<EOT
|
||||
$*
|
||||
EOT
|
||||
}
|
||||
gt_echo='echo_func'
|
||||
fi
|
||||
fi
|
||||
|
||||
# A sed script that extracts the value of VARIABLE from a Makefile.
|
||||
sed_x_variable='
|
||||
# Test if the hold space is empty.
|
||||
x
|
||||
s/P/P/
|
||||
x
|
||||
ta
|
||||
# Yes it was empty. Look if we have the expected variable definition.
|
||||
/^[ ]*VARIABLE[ ]*=/{
|
||||
# Seen the first line of the variable definition.
|
||||
s/^[ ]*VARIABLE[ ]*=//
|
||||
ba
|
||||
}
|
||||
bd
|
||||
:a
|
||||
# Here we are processing a line from the variable definition.
|
||||
# Remove comment, more precisely replace it with a space.
|
||||
s/#.*$/ /
|
||||
# See if the line ends in a backslash.
|
||||
tb
|
||||
:b
|
||||
s/\\$//
|
||||
# Print the line, without the trailing backslash.
|
||||
p
|
||||
tc
|
||||
# There was no trailing backslash. The end of the variable definition is
|
||||
# reached. Clear the hold space.
|
||||
s/^.*$//
|
||||
x
|
||||
bd
|
||||
:c
|
||||
# A trailing backslash means that the variable definition continues in the
|
||||
# next line. Put a nonempty string into the hold space to indicate this.
|
||||
s/^.*$/P/
|
||||
x
|
||||
:d
|
||||
'
|
||||
changequote([,])dnl
|
||||
|
||||
# Set POTFILES to the value of the Makefile variable POTFILES.
|
||||
sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`
|
||||
POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
|
||||
# Compute POTFILES_DEPS as
|
||||
# $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
|
||||
POTFILES_DEPS=
|
||||
for file in $POTFILES; do
|
||||
POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
|
||||
done
|
||||
POMAKEFILEDEPS=""
|
||||
|
||||
if test -n "$OBSOLETE_ALL_LINGUAS"; then
|
||||
test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
|
||||
fi
|
||||
if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
|
||||
# The LINGUAS file contains the set of available languages.
|
||||
ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
|
||||
POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
|
||||
else
|
||||
# Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
|
||||
sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
|
||||
ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
|
||||
fi
|
||||
# Hide the ALL_LINGUAS assigment from automake < 1.5.
|
||||
eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
|
||||
# Compute POFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
|
||||
# Compute UPDATEPOFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
|
||||
# Compute DUMMYPOFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
|
||||
# Compute GMOFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
|
||||
# Compute PROPERTIESFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
|
||||
# Compute CLASSFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
|
||||
# Compute QMFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
|
||||
# Compute MSGFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
|
||||
# Compute RESOURCESDLLFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
|
||||
case "$ac_given_srcdir" in
|
||||
.) srcdirpre= ;;
|
||||
*) srcdirpre='$(srcdir)/' ;;
|
||||
esac
|
||||
POFILES=
|
||||
UPDATEPOFILES=
|
||||
DUMMYPOFILES=
|
||||
GMOFILES=
|
||||
PROPERTIESFILES=
|
||||
CLASSFILES=
|
||||
QMFILES=
|
||||
MSGFILES=
|
||||
RESOURCESDLLFILES=
|
||||
for lang in $ALL_LINGUAS; do
|
||||
POFILES="$POFILES $srcdirpre$lang.po"
|
||||
UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
|
||||
DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
|
||||
GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
|
||||
PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
|
||||
CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
|
||||
QMFILES="$QMFILES $srcdirpre$lang.qm"
|
||||
frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
|
||||
MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
|
||||
frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
|
||||
RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
|
||||
done
|
||||
# CATALOGS depends on both $ac_dir and the user's LINGUAS
|
||||
# environment variable.
|
||||
INST_LINGUAS=
|
||||
if test -n "$ALL_LINGUAS"; then
|
||||
for presentlang in $ALL_LINGUAS; do
|
||||
useit=no
|
||||
if test "%UNSET%" != "$LINGUAS"; then
|
||||
desiredlanguages="$LINGUAS"
|
||||
else
|
||||
desiredlanguages="$ALL_LINGUAS"
|
||||
fi
|
||||
for desiredlang in $desiredlanguages; do
|
||||
# Use the presentlang catalog if desiredlang is
|
||||
# a. equal to presentlang, or
|
||||
# b. a variant of presentlang (because in this case,
|
||||
# presentlang can be used as a fallback for messages
|
||||
# which are not translated in the desiredlang catalog).
|
||||
case "$desiredlang" in
|
||||
"$presentlang"*) useit=yes;;
|
||||
esac
|
||||
done
|
||||
if test $useit = yes; then
|
||||
INST_LINGUAS="$INST_LINGUAS $presentlang"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
CATALOGS=
|
||||
JAVACATALOGS=
|
||||
QTCATALOGS=
|
||||
TCLCATALOGS=
|
||||
CSHARPCATALOGS=
|
||||
if test -n "$INST_LINGUAS"; then
|
||||
for lang in $INST_LINGUAS; do
|
||||
CATALOGS="$CATALOGS $lang.gmo"
|
||||
JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
|
||||
QTCATALOGS="$QTCATALOGS $lang.qm"
|
||||
frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
|
||||
TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
|
||||
frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
|
||||
CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
|
||||
done
|
||||
fi
|
||||
|
||||
sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
|
||||
if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
|
||||
# Add dependencies that cannot be formulated as a simple suffix rule.
|
||||
for lang in $ALL_LINGUAS; do
|
||||
frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
|
||||
cat >> "$ac_file.tmp" <<EOF
|
||||
$frobbedlang.msg: $lang.po
|
||||
@echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
|
||||
\$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
|
||||
EOF
|
||||
done
|
||||
fi
|
||||
if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
|
||||
# Add dependencies that cannot be formulated as a simple suffix rule.
|
||||
for lang in $ALL_LINGUAS; do
|
||||
frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
|
||||
cat >> "$ac_file.tmp" <<EOF
|
||||
$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
|
||||
@echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
|
||||
\$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
|
||||
EOF
|
||||
done
|
||||
fi
|
||||
if test -n "$POMAKEFILEDEPS"; then
|
||||
cat >> "$ac_file.tmp" <<EOF
|
||||
Makefile: $POMAKEFILEDEPS
|
||||
EOF
|
||||
fi
|
||||
mv "$ac_file.tmp" "$ac_file"
|
||||
])
|
||||
|
||||
dnl Initializes the accumulator used by AM_XGETTEXT_OPTION.
|
||||
AC_DEFUN([AM_XGETTEXT_OPTION_INIT],
|
||||
[
|
||||
XGETTEXT_EXTRA_OPTIONS=
|
||||
])
|
||||
|
||||
dnl Registers an option to be passed to xgettext in the po subdirectory.
|
||||
AC_DEFUN([AM_XGETTEXT_OPTION],
|
||||
[
|
||||
AC_REQUIRE([AM_XGETTEXT_OPTION_INIT])
|
||||
XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1"
|
||||
])
|
|
@ -0,0 +1,45 @@
|
|||
# printf-posix.m4 serial 5 (gettext-0.18)
|
||||
dnl Copyright (C) 2003, 2007, 2009-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
dnl Test whether the printf() function supports POSIX/XSI format strings with
|
||||
dnl positions.
|
||||
|
||||
AC_DEFUN([gt_PRINTF_POSIX],
|
||||
[
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings],
|
||||
gt_cv_func_printf_posix,
|
||||
[
|
||||
AC_TRY_RUN([
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
/* The string "%2$d %1$d", with dollar characters protected from the shell's
|
||||
dollar expansion (possibly an autoconf bug). */
|
||||
static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
|
||||
static char buf[100];
|
||||
int main ()
|
||||
{
|
||||
sprintf (buf, format, 33, 55);
|
||||
return (strcmp (buf, "55 33") != 0);
|
||||
}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no,
|
||||
[
|
||||
AC_EGREP_CPP([notposix], [
|
||||
#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__
|
||||
notposix
|
||||
#endif
|
||||
],
|
||||
[gt_cv_func_printf_posix="guessing no"],
|
||||
[gt_cv_func_printf_posix="guessing yes"])
|
||||
])
|
||||
])
|
||||
case $gt_cv_func_printf_posix in
|
||||
*yes)
|
||||
AC_DEFINE([HAVE_POSIX_PRINTF], [1],
|
||||
[Define if your printf() function supports format strings with positions.])
|
||||
;;
|
||||
esac
|
||||
])
|
|
@ -0,0 +1,92 @@
|
|||
# progtest.m4 serial 6 (gettext-0.18)
|
||||
dnl Copyright (C) 1996-2003, 2005, 2008-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
dnl
|
||||
dnl This file can can be used in projects which are not available under
|
||||
dnl the GNU General Public License or the GNU Library General Public
|
||||
dnl License but which still want to provide support for the GNU gettext
|
||||
dnl functionality.
|
||||
dnl Please note that the actual code of the GNU gettext library is covered
|
||||
dnl by the GNU Library General Public License, and the rest of the GNU
|
||||
dnl gettext package package is covered by the GNU General Public License.
|
||||
dnl They are *not* in the public domain.
|
||||
|
||||
dnl Authors:
|
||||
dnl Ulrich Drepper <drepper@cygnus.com>, 1996.
|
||||
|
||||
AC_PREREQ([2.50])
|
||||
|
||||
# Search path for a program which passes the given test.
|
||||
|
||||
dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
|
||||
dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
|
||||
AC_DEFUN([AM_PATH_PROG_WITH_TEST],
|
||||
[
|
||||
# Prepare PATH_SEPARATOR.
|
||||
# The user is always right.
|
||||
if test "${PATH_SEPARATOR+set}" != set; then
|
||||
echo "#! /bin/sh" >conf$$.sh
|
||||
echo "exit 0" >>conf$$.sh
|
||||
chmod +x conf$$.sh
|
||||
if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
|
||||
PATH_SEPARATOR=';'
|
||||
else
|
||||
PATH_SEPARATOR=:
|
||||
fi
|
||||
rm -f conf$$.sh
|
||||
fi
|
||||
|
||||
# Find out how to test for executable files. Don't use a zero-byte file,
|
||||
# as systems may use methods other than mode bits to determine executability.
|
||||
cat >conf$$.file <<_ASEOF
|
||||
#! /bin/sh
|
||||
exit 0
|
||||
_ASEOF
|
||||
chmod +x conf$$.file
|
||||
if test -x conf$$.file >/dev/null 2>&1; then
|
||||
ac_executable_p="test -x"
|
||||
else
|
||||
ac_executable_p="test -f"
|
||||
fi
|
||||
rm -f conf$$.file
|
||||
|
||||
# Extract the first word of "$2", so it can be a program name with args.
|
||||
set dummy $2; ac_word=[$]2
|
||||
AC_MSG_CHECKING([for $ac_word])
|
||||
AC_CACHE_VAL([ac_cv_path_$1],
|
||||
[case "[$]$1" in
|
||||
[[\\/]]* | ?:[[\\/]]*)
|
||||
ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
|
||||
for ac_dir in ifelse([$5], , $PATH, [$5]); do
|
||||
IFS="$ac_save_IFS"
|
||||
test -z "$ac_dir" && ac_dir=.
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
|
||||
echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
|
||||
if [$3]; then
|
||||
ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
|
||||
break 2
|
||||
fi
|
||||
fi
|
||||
done
|
||||
done
|
||||
IFS="$ac_save_IFS"
|
||||
dnl If no 4th arg is given, leave the cache variable unset,
|
||||
dnl so AC_PATH_PROGS will keep looking.
|
||||
ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
|
||||
])dnl
|
||||
;;
|
||||
esac])dnl
|
||||
$1="$ac_cv_path_$1"
|
||||
if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
|
||||
AC_MSG_RESULT([$][$1])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
AC_SUBST([$1])dnl
|
||||
])
|
|
@ -0,0 +1,75 @@
|
|||
# size_max.m4 serial 9
|
||||
dnl Copyright (C) 2003, 2005-2006, 2008-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
|
||||
AC_DEFUN([gl_SIZE_MAX],
|
||||
[
|
||||
AC_CHECK_HEADERS([stdint.h])
|
||||
dnl First test whether the system already has SIZE_MAX.
|
||||
AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [
|
||||
gl_cv_size_max=
|
||||
AC_EGREP_CPP([Found it], [
|
||||
#include <limits.h>
|
||||
#if HAVE_STDINT_H
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
#ifdef SIZE_MAX
|
||||
Found it
|
||||
#endif
|
||||
], [gl_cv_size_max=yes])
|
||||
if test -z "$gl_cv_size_max"; then
|
||||
dnl Define it ourselves. Here we assume that the type 'size_t' is not wider
|
||||
dnl than the type 'unsigned long'. Try hard to find a definition that can
|
||||
dnl be used in a preprocessor #if, i.e. doesn't contain a cast.
|
||||
AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1],
|
||||
[#include <stddef.h>
|
||||
#include <limits.h>], [size_t_bits_minus_1=])
|
||||
AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)],
|
||||
[#include <stddef.h>], [fits_in_uint=])
|
||||
if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then
|
||||
if test $fits_in_uint = 1; then
|
||||
dnl Even though SIZE_MAX fits in an unsigned int, it must be of type
|
||||
dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'.
|
||||
AC_TRY_COMPILE([#include <stddef.h>
|
||||
extern size_t foo;
|
||||
extern unsigned long foo;
|
||||
], [], [fits_in_uint=0])
|
||||
fi
|
||||
dnl We cannot use 'expr' to simplify this expression, because 'expr'
|
||||
dnl works only with 'long' integers in the host environment, while we
|
||||
dnl might be cross-compiling from a 32-bit platform to a 64-bit platform.
|
||||
if test $fits_in_uint = 1; then
|
||||
gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)"
|
||||
else
|
||||
gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)"
|
||||
fi
|
||||
else
|
||||
dnl Shouldn't happen, but who knows...
|
||||
gl_cv_size_max='((size_t)~(size_t)0)'
|
||||
fi
|
||||
fi
|
||||
])
|
||||
if test "$gl_cv_size_max" != yes; then
|
||||
AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max],
|
||||
[Define as the maximum value of type 'size_t', if the system doesn't define it.])
|
||||
fi
|
||||
dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after
|
||||
dnl <stdint.h>. Remember that the #undef in AH_VERBATIM gets replaced with
|
||||
dnl #define by AC_DEFINE_UNQUOTED.
|
||||
AH_VERBATIM([SIZE_MAX],
|
||||
[/* Define as the maximum value of type 'size_t', if the system doesn't define
|
||||
it. */
|
||||
#ifndef SIZE_MAX
|
||||
# undef SIZE_MAX
|
||||
#endif])
|
||||
])
|
||||
|
||||
dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
|
||||
dnl Remove this when we can assume autoconf >= 2.61.
|
||||
m4_ifdef([AC_COMPUTE_INT], [], [
|
||||
AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
|
||||
])
|
|
@ -0,0 +1,26 @@
|
|||
# stdint_h.m4 serial 8
|
||||
dnl Copyright (C) 1997-2004, 2006, 2008-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Paul Eggert.
|
||||
|
||||
# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
|
||||
# doesn't clash with <sys/types.h>, and declares uintmax_t.
|
||||
|
||||
AC_DEFUN([gl_AC_HEADER_STDINT_H],
|
||||
[
|
||||
AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h],
|
||||
[AC_TRY_COMPILE(
|
||||
[#include <sys/types.h>
|
||||
#include <stdint.h>],
|
||||
[uintmax_t i = (uintmax_t) -1; return !i;],
|
||||
[gl_cv_header_stdint_h=yes],
|
||||
[gl_cv_header_stdint_h=no])])
|
||||
if test $gl_cv_header_stdint_h = yes; then
|
||||
AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1],
|
||||
[Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
|
||||
and declares uintmax_t. ])
|
||||
fi
|
||||
])
|
|
@ -0,0 +1,347 @@
|
|||
# threadlib.m4 serial 5 (gettext-0.18)
|
||||
dnl Copyright (C) 2005-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
|
||||
dnl gl_THREADLIB
|
||||
dnl ------------
|
||||
dnl Tests for a multithreading library to be used.
|
||||
dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS,
|
||||
dnl USE_PTH_THREADS, USE_WIN32_THREADS
|
||||
dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use
|
||||
dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with
|
||||
dnl libtool).
|
||||
dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for
|
||||
dnl programs that really need multithread functionality. The difference
|
||||
dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak
|
||||
dnl symbols, typically LIBTHREAD="" whereas LIBMULTITHREAD="-lpthread".
|
||||
dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for
|
||||
dnl multithread-safe programs.
|
||||
|
||||
AC_DEFUN([gl_THREADLIB_EARLY],
|
||||
[
|
||||
AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
|
||||
])
|
||||
|
||||
dnl The guts of gl_THREADLIB_EARLY. Needs to be expanded only once.
|
||||
|
||||
AC_DEFUN([gl_THREADLIB_EARLY_BODY],
|
||||
[
|
||||
dnl Ordering constraints: This macro modifies CPPFLAGS in a way that
|
||||
dnl influences the result of the autoconf tests that test for *_unlocked
|
||||
dnl declarations, on AIX 5 at least. Therefore it must come early.
|
||||
AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl
|
||||
AC_BEFORE([$0], [gl_ARGP])dnl
|
||||
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems.
|
||||
dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes
|
||||
dnl AC_GNU_SOURCE.
|
||||
m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
|
||||
[AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
|
||||
[AC_REQUIRE([AC_GNU_SOURCE])])
|
||||
dnl Check for multithreading.
|
||||
m4_divert_text([DEFAULTS], [gl_use_threads_default=])
|
||||
AC_ARG_ENABLE([threads],
|
||||
AC_HELP_STRING([--enable-threads={posix|solaris|pth|win32}], [specify multithreading API])
|
||||
AC_HELP_STRING([--disable-threads], [build without multithread safety]),
|
||||
[gl_use_threads=$enableval],
|
||||
[if test -n "$gl_use_threads_default"; then
|
||||
gl_use_threads="$gl_use_threads_default"
|
||||
else
|
||||
changequote(,)dnl
|
||||
case "$host_os" in
|
||||
dnl Disable multithreading by default on OSF/1, because it interferes
|
||||
dnl with fork()/exec(): When msgexec is linked with -lpthread, its
|
||||
dnl child process gets an endless segmentation fault inside execvp().
|
||||
dnl Disable multithreading by default on Cygwin 1.5.x, because it has
|
||||
dnl bugs that lead to endless loops or crashes. See
|
||||
dnl <http://cygwin.com/ml/cygwin/2009-08/msg00283.html>.
|
||||
osf*) gl_use_threads=no ;;
|
||||
cygwin*)
|
||||
case `uname -r` in
|
||||
1.[0-5].*) gl_use_threads=no ;;
|
||||
*) gl_use_threads=yes ;;
|
||||
esac
|
||||
;;
|
||||
*) gl_use_threads=yes ;;
|
||||
esac
|
||||
changequote([,])dnl
|
||||
fi
|
||||
])
|
||||
if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
|
||||
# For using <pthread.h>:
|
||||
case "$host_os" in
|
||||
osf*)
|
||||
# On OSF/1, the compiler needs the flag -D_REENTRANT so that it
|
||||
# groks <pthread.h>. cc also understands the flag -pthread, but
|
||||
# we don't use it because 1. gcc-2.95 doesn't understand -pthread,
|
||||
# 2. putting a flag into CPPFLAGS that has an effect on the linker
|
||||
# causes the AC_TRY_LINK test below to succeed unexpectedly,
|
||||
# leading to wrong values of LIBTHREAD and LTLIBTHREAD.
|
||||
CPPFLAGS="$CPPFLAGS -D_REENTRANT"
|
||||
;;
|
||||
esac
|
||||
# Some systems optimize for single-threaded programs by default, and
|
||||
# need special flags to disable these optimizations. For example, the
|
||||
# definition of 'errno' in <errno.h>.
|
||||
case "$host_os" in
|
||||
aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
|
||||
solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
|
||||
esac
|
||||
fi
|
||||
])
|
||||
|
||||
dnl The guts of gl_THREADLIB. Needs to be expanded only once.
|
||||
|
||||
AC_DEFUN([gl_THREADLIB_BODY],
|
||||
[
|
||||
AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
|
||||
gl_threads_api=none
|
||||
LIBTHREAD=
|
||||
LTLIBTHREAD=
|
||||
LIBMULTITHREAD=
|
||||
LTLIBMULTITHREAD=
|
||||
if test "$gl_use_threads" != no; then
|
||||
dnl Check whether the compiler and linker support weak declarations.
|
||||
AC_CACHE_CHECK([whether imported symbols can be declared weak],
|
||||
[gl_cv_have_weak],
|
||||
[gl_cv_have_weak=no
|
||||
dnl First, test whether the compiler accepts it syntactically.
|
||||
AC_TRY_LINK([extern void xyzzy ();
|
||||
#pragma weak xyzzy], [xyzzy();], [gl_cv_have_weak=maybe])
|
||||
if test $gl_cv_have_weak = maybe; then
|
||||
dnl Second, test whether it actually works. On Cygwin 1.7.2, with
|
||||
dnl gcc 4.3, symbols declared weak always evaluate to the address 0.
|
||||
AC_TRY_RUN([
|
||||
#include <stdio.h>
|
||||
#pragma weak fputs
|
||||
int main ()
|
||||
{
|
||||
return (fputs == NULL);
|
||||
}], [gl_cv_have_weak=yes], [gl_cv_have_weak=no],
|
||||
[dnl When cross-compiling, assume that only ELF platforms support
|
||||
dnl weak symbols.
|
||||
AC_EGREP_CPP([Extensible Linking Format],
|
||||
[#ifdef __ELF__
|
||||
Extensible Linking Format
|
||||
#endif
|
||||
],
|
||||
[gl_cv_have_weak="guessing yes"],
|
||||
[gl_cv_have_weak="guessing no"])
|
||||
])
|
||||
fi
|
||||
])
|
||||
if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
|
||||
# On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
|
||||
# it groks <pthread.h>. It's added above, in gl_THREADLIB_EARLY_BODY.
|
||||
AC_CHECK_HEADER([pthread.h],
|
||||
[gl_have_pthread_h=yes], [gl_have_pthread_h=no])
|
||||
if test "$gl_have_pthread_h" = yes; then
|
||||
# Other possible tests:
|
||||
# -lpthreads (FSU threads, PCthreads)
|
||||
# -lgthreads
|
||||
gl_have_pthread=
|
||||
# Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
|
||||
# in libc. IRIX 6.5 has the first one in both libc and libpthread, but
|
||||
# the second one only in libpthread, and lock.c needs it.
|
||||
AC_TRY_LINK([#include <pthread.h>],
|
||||
[pthread_mutex_lock((pthread_mutex_t*)0);
|
||||
pthread_mutexattr_init((pthread_mutexattr_t*)0);],
|
||||
[gl_have_pthread=yes])
|
||||
# Test for libpthread by looking for pthread_kill. (Not pthread_self,
|
||||
# since it is defined as a macro on OSF/1.)
|
||||
if test -n "$gl_have_pthread"; then
|
||||
# The program links fine without libpthread. But it may actually
|
||||
# need to link with libpthread in order to create multiple threads.
|
||||
AC_CHECK_LIB([pthread], [pthread_kill],
|
||||
[LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
|
||||
# On Solaris and HP-UX, most pthread functions exist also in libc.
|
||||
# Therefore pthread_in_use() needs to actually try to create a
|
||||
# thread: pthread_create from libc will fail, whereas
|
||||
# pthread_create will actually create a thread.
|
||||
case "$host_os" in
|
||||
solaris* | hpux*)
|
||||
AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1],
|
||||
[Define if the pthread_in_use() detection is hard.])
|
||||
esac
|
||||
])
|
||||
else
|
||||
# Some library is needed. Try libpthread and libc_r.
|
||||
AC_CHECK_LIB([pthread], [pthread_kill],
|
||||
[gl_have_pthread=yes
|
||||
LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
|
||||
LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread])
|
||||
if test -z "$gl_have_pthread"; then
|
||||
# For FreeBSD 4.
|
||||
AC_CHECK_LIB([c_r], [pthread_kill],
|
||||
[gl_have_pthread=yes
|
||||
LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
|
||||
LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r])
|
||||
fi
|
||||
fi
|
||||
if test -n "$gl_have_pthread"; then
|
||||
gl_threads_api=posix
|
||||
AC_DEFINE([USE_POSIX_THREADS], [1],
|
||||
[Define if the POSIX multithreading library can be used.])
|
||||
if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
|
||||
if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
|
||||
AC_DEFINE([USE_POSIX_THREADS_WEAK], [1],
|
||||
[Define if references to the POSIX multithreading library should be made weak.])
|
||||
LIBTHREAD=
|
||||
LTLIBTHREAD=
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test -z "$gl_have_pthread"; then
|
||||
if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then
|
||||
gl_have_solaristhread=
|
||||
gl_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -lthread"
|
||||
AC_TRY_LINK([#include <thread.h>
|
||||
#include <synch.h>],
|
||||
[thr_self();],
|
||||
[gl_have_solaristhread=yes])
|
||||
LIBS="$gl_save_LIBS"
|
||||
if test -n "$gl_have_solaristhread"; then
|
||||
gl_threads_api=solaris
|
||||
LIBTHREAD=-lthread
|
||||
LTLIBTHREAD=-lthread
|
||||
LIBMULTITHREAD="$LIBTHREAD"
|
||||
LTLIBMULTITHREAD="$LTLIBTHREAD"
|
||||
AC_DEFINE([USE_SOLARIS_THREADS], [1],
|
||||
[Define if the old Solaris multithreading library can be used.])
|
||||
if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
|
||||
AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1],
|
||||
[Define if references to the old Solaris multithreading library should be made weak.])
|
||||
LIBTHREAD=
|
||||
LTLIBTHREAD=
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test "$gl_use_threads" = pth; then
|
||||
gl_save_CPPFLAGS="$CPPFLAGS"
|
||||
AC_LIB_LINKFLAGS([pth])
|
||||
gl_have_pth=
|
||||
gl_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -lpth"
|
||||
AC_TRY_LINK([#include <pth.h>], [pth_self();], [gl_have_pth=yes])
|
||||
LIBS="$gl_save_LIBS"
|
||||
if test -n "$gl_have_pth"; then
|
||||
gl_threads_api=pth
|
||||
LIBTHREAD="$LIBPTH"
|
||||
LTLIBTHREAD="$LTLIBPTH"
|
||||
LIBMULTITHREAD="$LIBTHREAD"
|
||||
LTLIBMULTITHREAD="$LTLIBTHREAD"
|
||||
AC_DEFINE([USE_PTH_THREADS], [1],
|
||||
[Define if the GNU Pth multithreading library can be used.])
|
||||
if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
|
||||
if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
|
||||
AC_DEFINE([USE_PTH_THREADS_WEAK], [1],
|
||||
[Define if references to the GNU Pth multithreading library should be made weak.])
|
||||
LIBTHREAD=
|
||||
LTLIBTHREAD=
|
||||
fi
|
||||
fi
|
||||
else
|
||||
CPPFLAGS="$gl_save_CPPFLAGS"
|
||||
fi
|
||||
fi
|
||||
if test -z "$gl_have_pthread"; then
|
||||
if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then
|
||||
if { case "$host_os" in
|
||||
mingw*) true;;
|
||||
*) false;;
|
||||
esac
|
||||
}; then
|
||||
gl_threads_api=win32
|
||||
AC_DEFINE([USE_WIN32_THREADS], [1],
|
||||
[Define if the Win32 multithreading API can be used.])
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
AC_MSG_CHECKING([for multithread API to use])
|
||||
AC_MSG_RESULT([$gl_threads_api])
|
||||
AC_SUBST([LIBTHREAD])
|
||||
AC_SUBST([LTLIBTHREAD])
|
||||
AC_SUBST([LIBMULTITHREAD])
|
||||
AC_SUBST([LTLIBMULTITHREAD])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_THREADLIB],
|
||||
[
|
||||
AC_REQUIRE([gl_THREADLIB_EARLY])
|
||||
AC_REQUIRE([gl_THREADLIB_BODY])
|
||||
])
|
||||
|
||||
|
||||
dnl gl_DISABLE_THREADS
|
||||
dnl ------------------
|
||||
dnl Sets the gl_THREADLIB default so that threads are not used by default.
|
||||
dnl The user can still override it at installation time, by using the
|
||||
dnl configure option '--enable-threads'.
|
||||
|
||||
AC_DEFUN([gl_DISABLE_THREADS], [
|
||||
m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no])
|
||||
])
|
||||
|
||||
|
||||
dnl Survey of platforms:
|
||||
dnl
|
||||
dnl Platform Available Compiler Supports test-lock
|
||||
dnl flavours option weak result
|
||||
dnl --------------- --------- --------- -------- ---------
|
||||
dnl Linux 2.4/glibc posix -lpthread Y OK
|
||||
dnl
|
||||
dnl GNU Hurd/glibc posix
|
||||
dnl
|
||||
dnl FreeBSD 5.3 posix -lc_r Y
|
||||
dnl posix -lkse ? Y
|
||||
dnl posix -lpthread ? Y
|
||||
dnl posix -lthr Y
|
||||
dnl
|
||||
dnl FreeBSD 5.2 posix -lc_r Y
|
||||
dnl posix -lkse Y
|
||||
dnl posix -lthr Y
|
||||
dnl
|
||||
dnl FreeBSD 4.0,4.10 posix -lc_r Y OK
|
||||
dnl
|
||||
dnl NetBSD 1.6 --
|
||||
dnl
|
||||
dnl OpenBSD 3.4 posix -lpthread Y OK
|
||||
dnl
|
||||
dnl MacOS X 10.[123] posix -lpthread Y OK
|
||||
dnl
|
||||
dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK
|
||||
dnl solaris -lthread Y Sol 7,8: 0.0; Sol 9: OK
|
||||
dnl
|
||||
dnl HP-UX 11 posix -lpthread N (cc) OK
|
||||
dnl Y (gcc)
|
||||
dnl
|
||||
dnl IRIX 6.5 posix -lpthread Y 0.5
|
||||
dnl
|
||||
dnl AIX 4.3,5.1 posix -lpthread N AIX 4: 0.5; AIX 5: OK
|
||||
dnl
|
||||
dnl OSF/1 4.0,5.1 posix -pthread (cc) N OK
|
||||
dnl -lpthread (gcc) Y
|
||||
dnl
|
||||
dnl Cygwin posix -lpthread Y OK
|
||||
dnl
|
||||
dnl Any of the above pth -lpth 0.0
|
||||
dnl
|
||||
dnl Mingw win32 N OK
|
||||
dnl
|
||||
dnl BeOS 5 --
|
||||
dnl
|
||||
dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is
|
||||
dnl turned off:
|
||||
dnl OK if all three tests terminate OK,
|
||||
dnl 0.5 if the first test terminates OK but the second one loops endlessly,
|
||||
dnl 0.0 if the first test already loops endlessly.
|
|
@ -0,0 +1,30 @@
|
|||
# uintmax_t.m4 serial 12
|
||||
dnl Copyright (C) 1997-2004, 2007-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Paul Eggert.
|
||||
|
||||
AC_PREREQ([2.13])
|
||||
|
||||
# Define uintmax_t to 'unsigned long' or 'unsigned long long'
|
||||
# if it is not already defined in <stdint.h> or <inttypes.h>.
|
||||
|
||||
AC_DEFUN([gl_AC_TYPE_UINTMAX_T],
|
||||
[
|
||||
AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
|
||||
AC_REQUIRE([gl_AC_HEADER_STDINT_H])
|
||||
if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
|
||||
AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
|
||||
test $ac_cv_type_unsigned_long_long_int = yes \
|
||||
&& ac_type='unsigned long long' \
|
||||
|| ac_type='unsigned long'
|
||||
AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type],
|
||||
[Define to unsigned long or unsigned long long
|
||||
if <stdint.h> and <inttypes.h> don't define.])
|
||||
else
|
||||
AC_DEFINE([HAVE_UINTMAX_T], [1],
|
||||
[Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.])
|
||||
fi
|
||||
])
|
|
@ -0,0 +1,74 @@
|
|||
# visibility.m4 serial 3 (gettext-0.18)
|
||||
dnl Copyright (C) 2005, 2008-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
|
||||
dnl Tests whether the compiler supports the command-line option
|
||||
dnl -fvisibility=hidden and the function and variable attributes
|
||||
dnl __attribute__((__visibility__("hidden"))) and
|
||||
dnl __attribute__((__visibility__("default"))).
|
||||
dnl Does *not* test for __visibility__("protected") - which has tricky
|
||||
dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on
|
||||
dnl MacOS X.
|
||||
dnl Does *not* test for __visibility__("internal") - which has processor
|
||||
dnl dependent semantics.
|
||||
dnl Does *not* test for #pragma GCC visibility push(hidden) - which is
|
||||
dnl "really only recommended for legacy code".
|
||||
dnl Set the variable CFLAG_VISIBILITY.
|
||||
dnl Defines and sets the variable HAVE_VISIBILITY.
|
||||
|
||||
AC_DEFUN([gl_VISIBILITY],
|
||||
[
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
CFLAG_VISIBILITY=
|
||||
HAVE_VISIBILITY=0
|
||||
if test -n "$GCC"; then
|
||||
dnl First, check whether -Werror can be added to the command line, or
|
||||
dnl whether it leads to an error because of some other option that the
|
||||
dnl user has put into $CC $CFLAGS $CPPFLAGS.
|
||||
AC_MSG_CHECKING([whether the -Werror option is usable])
|
||||
AC_CACHE_VAL([gl_cv_cc_vis_werror], [
|
||||
gl_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -Werror"
|
||||
AC_TRY_COMPILE([], [],
|
||||
[gl_cv_cc_vis_werror=yes],
|
||||
[gl_cv_cc_vis_werror=no])
|
||||
CFLAGS="$gl_save_CFLAGS"])
|
||||
AC_MSG_RESULT([$gl_cv_cc_vis_werror])
|
||||
dnl Now check whether visibility declarations are supported.
|
||||
AC_MSG_CHECKING([for simple visibility declarations])
|
||||
AC_CACHE_VAL([gl_cv_cc_visibility], [
|
||||
gl_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -fvisibility=hidden"
|
||||
dnl We use the option -Werror and a function dummyfunc, because on some
|
||||
dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning
|
||||
dnl "visibility attribute not supported in this configuration; ignored"
|
||||
dnl at the first function definition in every compilation unit, and we
|
||||
dnl don't want to use the option in this case.
|
||||
if test $gl_cv_cc_vis_werror = yes; then
|
||||
CFLAGS="$CFLAGS -Werror"
|
||||
fi
|
||||
AC_TRY_COMPILE(
|
||||
[extern __attribute__((__visibility__("hidden"))) int hiddenvar;
|
||||
extern __attribute__((__visibility__("default"))) int exportedvar;
|
||||
extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
|
||||
extern __attribute__((__visibility__("default"))) int exportedfunc (void);
|
||||
void dummyfunc (void) {}],
|
||||
[],
|
||||
[gl_cv_cc_visibility=yes],
|
||||
[gl_cv_cc_visibility=no])
|
||||
CFLAGS="$gl_save_CFLAGS"])
|
||||
AC_MSG_RESULT([$gl_cv_cc_visibility])
|
||||
if test $gl_cv_cc_visibility = yes; then
|
||||
CFLAG_VISIBILITY="-fvisibility=hidden"
|
||||
HAVE_VISIBILITY=1
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([CFLAG_VISIBILITY])
|
||||
AC_SUBST([HAVE_VISIBILITY])
|
||||
AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
|
||||
[Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
|
||||
])
|
|
@ -0,0 +1,20 @@
|
|||
# wchar_t.m4 serial 3 (gettext-0.18)
|
||||
dnl Copyright (C) 2002-2003, 2008-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
dnl Test whether <stddef.h> has the 'wchar_t' type.
|
||||
dnl Prerequisite: AC_PROG_CC
|
||||
|
||||
AC_DEFUN([gt_TYPE_WCHAR_T],
|
||||
[
|
||||
AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t],
|
||||
[AC_TRY_COMPILE([#include <stddef.h>
|
||||
wchar_t foo = (wchar_t)'\0';], ,
|
||||
[gt_cv_c_wchar_t=yes], [gt_cv_c_wchar_t=no])])
|
||||
if test $gt_cv_c_wchar_t = yes; then
|
||||
AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.])
|
||||
fi
|
||||
])
|
|
@ -0,0 +1,28 @@
|
|||
# wint_t.m4 serial 4 (gettext-0.18)
|
||||
dnl Copyright (C) 2003, 2007-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
dnl Test whether <wchar.h> has the 'wint_t' type.
|
||||
dnl Prerequisite: AC_PROG_CC
|
||||
|
||||
AC_DEFUN([gt_TYPE_WINT_T],
|
||||
[
|
||||
AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t],
|
||||
[AC_TRY_COMPILE([
|
||||
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||||
<wchar.h>.
|
||||
BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
|
||||
before <wchar.h>. */
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <wchar.h>
|
||||
wint_t foo = (wchar_t)'\0';], ,
|
||||
[gt_cv_c_wint_t=yes], [gt_cv_c_wint_t=no])])
|
||||
if test $gt_cv_c_wint_t = yes; then
|
||||
AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.])
|
||||
fi
|
||||
])
|
|
@ -0,0 +1,13 @@
|
|||
# xsize.m4 serial 4
|
||||
dnl Copyright (C) 2003-2004, 2008-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
AC_DEFUN([gl_XSIZE],
|
||||
[
|
||||
dnl Prerequisites of lib/xsize.h.
|
||||
AC_REQUIRE([gl_SIZE_MAX])
|
||||
AC_REQUIRE([AC_C_INLINE])
|
||||
AC_CHECK_HEADERS([stdint.h])
|
||||
])
|
|
@ -0,0 +1,843 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||||
<title>GNU gettext FAQ</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1 style="text-align: center;">Frequently Asked Questions<br>
|
||||
for GNU gettext
|
||||
</h1>
|
||||
<h1 style="text-align: center;">Questions</h1>
|
||||
<h3>General</h3>
|
||||
<ul>
|
||||
<li><a href="#general_mailinglist">Where is the mailing list?</a></li>
|
||||
<li><a href="#general_source">Where is the newest gettext source?</a></li>
|
||||
<li><a href="#general_announce">I want to be notified of new gettext
|
||||
releases.</a></li>
|
||||
</ul>
|
||||
<h3>Problems building GNU gettext</h3>
|
||||
<ul>
|
||||
<li><a href="#building_solaris_libasprintf">On Solaris, I get a build
|
||||
error “text relocations remain” in the <span
|
||||
style="font-family: monospace;">libasprintf</span> subdirectory</a></li>
|
||||
<li><a href="#building_install">“make install” fails</a></li>
|
||||
</ul>
|
||||
<h3>Problems integrating GNU gettext</h3>
|
||||
<ul>
|
||||
<li><a href="#integrating_howto">How do I make use of <span
|
||||
style="font-family: monospace;">gettext()</span> in my package?</a></li>
|
||||
<li><a href="#integrating_undefined">I get a linker error “undefined
|
||||
reference to libintl_gettext”</a></li>
|
||||
<li><a href="#integrating_abuse_gettextize">gettextize adds multiple
|
||||
references to the same directories/files
|
||||
to <span style="font-family: monospace;">Makefile.am</span> and </a><span
|
||||
style="font-family: monospace;"><a href="#integrating_abuse_gettextize">configure.ac</a><br>
|
||||
</span></li>
|
||||
<li><a href="#integrating_noop">My program compiles and links fine,
|
||||
but doesn't output translated
|
||||
strings.</a><br>
|
||||
</li>
|
||||
</ul>
|
||||
<h3>GNU gettext on Windows</h3>
|
||||
<ul>
|
||||
<li><a href="#windows_woe32">What does Woe32 mean?</a></li>
|
||||
<li><a href="#windows_howto">How do I compile, link and run a program
|
||||
that uses the gettext()
|
||||
function?</a><br>
|
||||
</li>
|
||||
<li><a href="#windows_setenv">Setting the <span
|
||||
style="font-family: monospace;">LANG</span>
|
||||
environment variable doesn't have any effect</a></li>
|
||||
</ul>
|
||||
<h3>Other</h3>
|
||||
<ul>
|
||||
<li><a href="#newline">What does this mean: “`msgid' and `msgstr'
|
||||
entries do not both
|
||||
end with '\n'”</a></li>
|
||||
<li><a href="#translit">German umlauts are displayed like “ge"andert”
|
||||
instead of
|
||||
“geändert”</a></li>
|
||||
<li><a href="#localename">The <span style="font-family: monospace;">LANGUAGE</span>
|
||||
environment variable is ignored after I set <span
|
||||
style="font-family: monospace;">LANG=en</span></a></li>
|
||||
<li><a href="#nonascii_strings">I use accented characters in my
|
||||
source code. How do I tell the
|
||||
C/C++ compiler in which encoding it is (like <span
|
||||
style="font-family: monospace;">xgettext</span>'s <span
|
||||
style="font-family: monospace;">--from-code</span> option)?</a></li>
|
||||
</ul>
|
||||
<h1 style="text-align: center;">Answers</h1>
|
||||
<h3>General</h3>
|
||||
<h4><a name="general_mailinglist"></a>Where is the mailing list?</h4>
|
||||
Three mailing lists are available: <br>
|
||||
<ul>
|
||||
<li><span style="font-family: monospace;">bug-gnu-gettext@gnu.org</span><br>
|
||||
This mailing list is for discussion of features and bugs of the GNU
|
||||
gettext <span style="font-style: italic;">software</span>, including
|
||||
libintl, the gettext-tools, and its autoconf macros.</li>
|
||||
<li><span style="font-family: monospace;">translation-i18n@lists.sourceforge.net</span><br>
|
||||
This mailing list is for methodology questions around
|
||||
internationalization, and for discussions of translator tools,
|
||||
including but not limited to GNU gettext.</li>
|
||||
<li><span style="font-family: monospace;">coordinator@translationproject.org</span><br>
|
||||
This is the email address of the <a
|
||||
href="http://translationproject.org/">Free Translation Project</a>,
|
||||
that is the project which manages the translated message
|
||||
catalogs for many free software packages. Note that KDE and GNOME
|
||||
packages are not part of this project; they have their own translation
|
||||
projects: <a href="http://i18n.kde.org/">i18n.kde.org</a> and <a
|
||||
href="http://developer.gnome.org/projects/gtp/">gtp</a>.<br>
|
||||
</li>
|
||||
</ul>
|
||||
The <span style="font-family: monospace;">bug-gnu-gettext</span> list
|
||||
is archived as part of the <a
|
||||
href="http://mail.gnu.org/archive/html/bug-gnu-utils/"><span
|
||||
style="font-family: monospace;">bug-gnu-utils</span></a> archives. <span
|
||||
style="font-family: monospace;">bug-gnu-gettext</span> cannot be
|
||||
subscribed on its own; to receive its contents by mail, subscribe to <span
|
||||
style="font-family: monospace;">bug-gnu-utils</span>.<br>
|
||||
<h4><a name="general_source"></a>Where is the newest gettext source?</h4>
|
||||
The newest gettext release is available on <span
|
||||
style="font-family: monospace;">ftp.gnu.org</span> and its mirrors, in
|
||||
<a href="http://ftp.gnu.org/gnu/gettext/">http://ftp.gnu.org/gnu/gettext/</a>.<br>
|
||||
<br>
|
||||
Prereleases are announced on the <a
|
||||
href="http://mail.gnu.org/pipermail/autotools-announce"><span
|
||||
style="font-family: monospace;">autotools-announce</span> mailing list</a>.
|
||||
Note that prereleases are meant for testing and not meant for use in
|
||||
production environments. Please don't use the “gettextize” program of a
|
||||
prerelease on projects which you share with other programmers via CVS.<br>
|
||||
<br>
|
||||
If you want to live on the bleeding edge, you can also use the
|
||||
development sources. Instructions for retrieving the gettext CVS are
|
||||
found <a href="http://savannah.gnu.org/projects/gettext">here</a>.
|
||||
Note that building from CVS requires special tools (autoconf, automake,
|
||||
m4, groff, bison, etc.) and requires that you pay attention to the <span
|
||||
style="font-family: monospace;">README-alpha</span> and <span
|
||||
style="font-family: monospace;">autogen.sh</span> files in the CVS.<br>
|
||||
<h4><a name="general_announce"></a>I want to be notified of new gettext
|
||||
releases.</h4>
|
||||
If you are interested in stable gettext releases, you can follow the <a
|
||||
href="http://mail.gnu.org/pipermail/info-gnu"><span
|
||||
style="font-family: monospace;">info-gnu</span> mailing list</a>. It
|
||||
is also available as a newsgroup <a
|
||||
href="nntp://news.gmane.org/gmane.org.fsf.announce"><span
|
||||
style="font-family: monospace;">gmane.org.fsf.announce</span></a>
|
||||
through <a href="http://www.gmane.org/"><span
|
||||
style="font-family: monospace;">gmane.org</span></a>.<br>
|
||||
<br>
|
||||
You can also periodically check the download location.<br>
|
||||
<br>
|
||||
If you are interested in testing prereleases as well, you can subscribe
|
||||
to the <a href="http://mail.gnu.org/pipermail/autotools-announce"><span
|
||||
style="font-family: monospace;">autotools-announce</span> mailing
|
||||
list</a>.<br>
|
||||
<h3>Problems building GNU gettext</h3>
|
||||
<h4><a name="building_solaris_libasprintf"></a>On Solaris, I get a
|
||||
build error “text relocations remain” in the <span
|
||||
style="font-family: monospace;">libasprintf</span> subdirectory</h4>
|
||||
libtool (or more precisely, the version of libtool that was available
|
||||
at the time the gettext release waas made) doesn't support linking C++
|
||||
libraries with some versions of GCC. As a workaround, you can configure
|
||||
gettext with the option <span style="font-family: monospace;">--disable-libasprintf</span>.<br>
|
||||
<h4><a name="building_install"></a>“make install” fails</h4>
|
||||
“<span style="font-family: monospace;">make install DESTDIR=<span
|
||||
style="font-style: italic;">/some/tempdir</span></span>” can fail with
|
||||
an error message relating to <span style="font-family: monospace;">libgettextlib</span>
|
||||
or <span style="font-family: monospace;">libgettextsrc</span>, or can
|
||||
silently fail to install <span style="font-family: monospace;">libgettextsrc</span>.
|
||||
On some platforms, this is due to limitations of libtool regarding <span
|
||||
style="font-family: monospace;">DESTDIR</span>. On other platforms, it
|
||||
is due to the way the system handles shared libraries, and libtool
|
||||
cannot work around it. Fortunately, on Linux and other glibc based
|
||||
systems, <span style="font-family: monospace;">DESTDIR</span> is
|
||||
supported if no different version of gettext is already installed (i.e.
|
||||
it works if you uninstall the older gettext before building and
|
||||
installing the newer one, or if you do a plain “<span
|
||||
style="font-family: monospace;">make install</span>” before “<span
|
||||
style="font-family: monospace;">make install DESTDIR=<span
|
||||
style="font-style: italic;">/some/tempdir</span></span>”). On other
|
||||
systems, when <span style="font-family: monospace;">DESTDIR</span>
|
||||
does not work, you can still do “<span style="font-family: monospace;">make
|
||||
install</span>” and copy the installed files to <span
|
||||
style="font-family: monospace;"><span style="font-style: italic;">/some/tempdir</span></span>
|
||||
afterwards.<br>
|
||||
<br>
|
||||
If “<span style="font-family: monospace;">make install</span>” without <span
|
||||
style="font-family: monospace;">DESTDIR</span> fails, it's a bug which
|
||||
you are welcome to report to the usual bug report address.
|
||||
<h3>Problems integrating GNU gettext</h3>
|
||||
<h4><a name="integrating_howto"></a>How do I make use of <span
|
||||
style="font-family: monospace;">gettext()</span> in my package?</h4>
|
||||
It's not as difficult as it sounds. Here's the recipe for C or C++
|
||||
based packages.<br>
|
||||
<ul>
|
||||
<li>Add an invocation of <span style="font-family: monospace;">AM_GNU_GETTEXT([external])</span>
|
||||
to the package's <span style="font-family: monospace;">configure.{ac,in}</span>
|
||||
file.</li>
|
||||
<li>Invoke “<span style="font-family: monospace;">gettextize --copy</span>”.
|
||||
It will do most of the autoconf/automake related work for you.</li>
|
||||
<li>Add the <span style="font-family: monospace;">gettext.h</span>
|
||||
file to the package's source directory, and include it in all source
|
||||
files that contain translatable strings or do output via <span
|
||||
style="font-family: monospace;">printf</span> or <span
|
||||
style="font-family: monospace;">fprintf</span>.</li>
|
||||
<li>In the source file defining the main() function of the program,
|
||||
add these lines to the header<br>
|
||||
<div style="margin-left: 40px;"><code><span
|
||||
style="font-family: monospace;">#include <locale.h></span><br
|
||||
style="font-family: monospace;">
|
||||
<span style="font-family: monospace;">#include "gettext.h"</span></code><br>
|
||||
</div>
|
||||
and these lines near the beginning of the main() function:<br>
|
||||
<div style="margin-left: 40px;"><code><span
|
||||
style="font-family: monospace;">setlocale (LC_ALL, "");</span><br
|
||||
style="font-family: monospace;">
|
||||
<span style="font-family: monospace;">bindtextdomain (PACKAGE,
|
||||
LOCALEDIR);</span><br style="font-family: monospace;">
|
||||
<span style="font-family: monospace;">textdomain (PACKAGE);</span></code><br>
|
||||
</div>
|
||||
</li>
|
||||
<li>Mark all strings that should be translated with _(), like this: <span
|
||||
style="font-family: monospace;">_("No errors found.")</span>. While
|
||||
doing this, try to turn the strings into good English, one entire
|
||||
sentence per string, not more than one paragraph per string, and use
|
||||
format strings instead of string concatenation. This is needed so that
|
||||
the translators can provide accurate translations.</li>
|
||||
<li>In every source file containing translatable strings, add these lines
|
||||
to the header:<br>
|
||||
<div style="margin-left: 40px;"><code><span
|
||||
style="font-family: monospace;">#include "gettext.h"</span><br
|
||||
style="font-family: monospace;">
|
||||
<span style="font-family: monospace;">#define _(string) gettext (string)</span></code><br>
|
||||
</div>
|
||||
</li>
|
||||
<li>In the freshly created <span style="font-family: monospace;">po/</span>
|
||||
directory, set up the <span style="font-family: monospace;">POTFILES.in</span>
|
||||
file, and do a “<span style="font-family: monospace;">make update-po</span>”.
|
||||
Then distribute the generated <span style="font-family: monospace;">.pot</span>
|
||||
file to your nearest translation project.</li>
|
||||
<li>Shortly before a release, integrate the translators' <span
|
||||
style="font-family: monospace;">.po</span> files into the <span
|
||||
style="font-family: monospace;">po/</span> directory and do “<span
|
||||
style="font-family: monospace;">make update-po</span>” again.<br>
|
||||
</li>
|
||||
</ul>
|
||||
You find detailed descriptions of how this all works in the GNU gettext
|
||||
manual, chapters “The Maintainer's View” and “Preparing Program
|
||||
Sources”.
|
||||
<h4><a name="integrating_undefined"></a>I get a linker error “undefined
|
||||
reference to libintl_gettext”</h4>
|
||||
This error means that the program uses the <span
|
||||
style="font-family: monospace;">gettext()</span> function after having
|
||||
included the <span style="font-family: monospace;"><libintl.h></span>
|
||||
file from GNU gettext (which remaps it to <span
|
||||
style="font-family: monospace;">libintl_gettext()</span>), however at
|
||||
link time a function of this name could not be linked in. (It is
|
||||
expected to come from the <span style="font-family: monospace;">libintl</span>
|
||||
library, installed by GNU gettext.)<br>
|
||||
<br>
|
||||
There are many possible reasons for this error, but in any case you
|
||||
should consider the <span style="font-family: monospace;">-I</span>, <span
|
||||
style="font-family: monospace;">-L</span> and <span
|
||||
style="font-family: monospace;">-l</span> options passed to the
|
||||
compiler. In packages using <span style="font-family: monospace;">autoconf</span>
|
||||
generated configure scripts, <span style="font-family: monospace;">-I</span>
|
||||
options come from the <span style="font-family: monospace;">CFLAGS</span>
|
||||
and <span style="font-family: monospace;">CPPFLAGS</span> variables
|
||||
(in Makefiles also <span style="font-family: monospace;">DEFS</span>
|
||||
and <span style="font-family: monospace;">INCLUDES</span>), <span
|
||||
style="font-family: monospace;">-L</span> options come from the <span
|
||||
style="font-family: monospace;">LDFLAGS</span> variable, and <span
|
||||
style="font-family: monospace;">-l</span> options come from the <span
|
||||
style="font-family: monospace;">LIBS</span> variable. The first thing
|
||||
you should check are the values of these variables in your environment
|
||||
and in the package's <span style="font-family: monospace;">config.status</span>
|
||||
autoconfiguration result.<br>
|
||||
<br>
|
||||
To find the cause of the error, a little analysis is needed. Does the
|
||||
program's final link command contains the option “-lintl”?<br>
|
||||
<ul>
|
||||
<li>If yes:<br>
|
||||
Find out where the <span style="font-family: monospace;">libintl</span>
|
||||
comes from. To do this, you have to check for <span
|
||||
style="font-family: monospace;">libintl.a</span> and <span
|
||||
style="font-family: monospace;">libintl.so*</span> (<span
|
||||
style="font-family: monospace;">libintl.dylib</span> on MacOS X) in
|
||||
each directory given as a -L option, as well as in the compiler's
|
||||
implicit search directories. (You get these implicit search directories
|
||||
for gcc by using “<span style="font-family: monospace;">gcc -v</span>”
|
||||
instead of “<span style="font-family: monospace;">gcc</span>” in the
|
||||
final link command line; compilers other than GCC usually look in <span
|
||||
style="font-family: monospace;">/usr/lib</span> and <span
|
||||
style="font-family: monospace;">/lib</span>.) A shell command like<br>
|
||||
<div style="margin-left: 40px;"><code>$ for d in /usr/local/lib
|
||||
/usr/lib /lib; do ls -l $d/libintl.*; done</code><br>
|
||||
</div>
|
||||
will show where the <span style="font-family: monospace;">libintl</span>
|
||||
comes from. By looking at the dates and whether each library defines <span
|
||||
style="font-family: monospace;">libintl_gettext</span> (via “<span
|
||||
style="font-family: monospace;">nm <span style="font-style: italic;">path</span>/libintl.so
|
||||
| grep libintl_gettext</span>”) you can now distinguish three possible
|
||||
causes of the error:<br>
|
||||
<ul>
|
||||
<li>Some older libintl is used instead of the newer one. The fix
|
||||
is to remove the old library or to reorganize your -L options.</li>
|
||||
<li>The used libintl is the new one, and it doesn't contain
|
||||
libintl_gettext. This would be a bug in gettext. If this is the case,
|
||||
please report it to the usual bug report address.</li>
|
||||
<li>The used libintl is a static library (libintl.a), there are
|
||||
no uses of gettext in .o files before the “-lintl” but there are some
|
||||
after the “-lintl”. In this case the fix is to move the “-lintl” to the
|
||||
end or near the end of the link command line. The only libintl
|
||||
dependency that needs to be mentioned after “-lintl” is “-liconv”.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>If no:<br>
|
||||
In this case it's likely a bug in the package you are building: The
|
||||
package's Makefiles should make sure that “-lintl” is used where needed.<br>
|
||||
Test whether libintl was found by configure. You can check this by doing<br>
|
||||
<div style="margin-left: 40px;"><code>$ grep
|
||||
'\(INTLLIBS\|LIBINTL\)' config.status</code><br>
|
||||
</div>
|
||||
and looking whether the value of this autoconf variable is non-empty.<br>
|
||||
<ul>
|
||||
<li>If yes: It should be the responsibility of the Makefile to
|
||||
use the value of this variable in the link command line. Does the
|
||||
Makefile.in rule for linking the program use <span
|
||||
style="font-family: monospace;">@INTLLIBS@</span> or <span
|
||||
style="font-family: monospace;">@LIBINTL@</span>?<br>
|
||||
<ul>
|
||||
<li>If no: It's a Makefile.am/in bug.</li>
|
||||
<li>If yes: Something strange is going on. You need to dig
|
||||
deeper.</li>
|
||||
</ul>
|
||||
Note that <span style="font-family: monospace;">@INTLLIBS@</span> is
|
||||
for <span style="font-family: monospace;">gettext.m4</span> versions
|
||||
<= 0.10.40 and <span style="font-family: monospace;">@LIBINTL@</span>
|
||||
is for <span style="font-family: monospace;">gettext.m4</span>
|
||||
versions >= 0.11, depending on which <span
|
||||
style="font-family: monospace;">gettext.m4</span> was used to build
|
||||
the package's <span style="font-family: monospace;">configure</span> -
|
||||
regardless of which gettext you have now installed.</li>
|
||||
<li>If no: So libintl was not found.<br>
|
||||
Take a look at the package's <span style="font-family: monospace;">configure.in/ac</span>.
|
||||
Does it invoke AM_GNU_GETTEXT?<br>
|
||||
<ul>
|
||||
<li>If no: The gettext maintainers take no responsibilities for
|
||||
lookalikes named CY_GNU_GETTEXT, AM_GLIB_GNU_GETTEXT, AM_GNOME_GETTEXT
|
||||
and similar, or for homebrewn autoconf checks. Complain to the package
|
||||
maintainer.</li>
|
||||
<li>If yes: It looks like the <span
|
||||
style="font-family: monospace;">-I</span> and <span
|
||||
style="font-family: monospace;">-L</span> options were inconsistent.
|
||||
You should have a <span style="font-family: monospace;">-I<span
|
||||
style="font-style: italic;">somedir</span>/include</span> in the <span
|
||||
style="font-family: monospace;">CFLAGS</span> or <span
|
||||
style="font-family: monospace;">CPPFLAGS</span> if and only if you
|
||||
also have a <span style="font-family: monospace;">-L<span
|
||||
style="font-style: italic;">somedir</span>/lib</span> in the <span
|
||||
style="font-family: monospace;">LDFLAGS</span>. And <span
|
||||
style="font-family: monospace;"><span style="font-style: italic;">somedir</span>/include</span>
|
||||
should contain a <span style="font-family: monospace;">libintl.h</span>
|
||||
if and only if <span style="font-family: monospace;"><span
|
||||
style="font-style: italic;">somedir</span>/lib</span> contains <span
|
||||
style="font-family: monospace;">libintl.{a,so}</span>.<br>
|
||||
This case can also happen if you have configured a GCC < 3.2 with
|
||||
the same <span style="font-family: monospace;">--prefix</span> option
|
||||
as you used for GNU libiconv or GNU gettext. This is fatal, because
|
||||
these versions of GCC implicitly use <span
|
||||
style="font-family: monospace;">-L<span style="font-style: italic;">prefix</span>/lib</span>
|
||||
but <span style="font-weight: bold; font-style: italic;">not</span><br
|
||||
style="font-weight: bold; font-style: italic;">
|
||||
<span style="font-family: monospace;">-I<span
|
||||
style="font-style: italic;">prefix</span>/include</span>. The
|
||||
workaround is to use a different <span style="font-family: monospace;">--prefix</span>
|
||||
for GCC.<br>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<h4><a name="integrating_abuse_gettextize"></a>gettextize adds multiple
|
||||
references to the same directories/files
|
||||
to <span style="font-family: monospace;">Makefile.am</span> and <span
|
||||
style="font-family: monospace;">configure.ac</span></h4>
|
||||
If <span style="font-family: monospace;">gettextize</span> is used on
|
||||
a package, then the <span style="font-family: monospace;">po/</span>, <span
|
||||
style="font-family: monospace;">intl/</span>, <span
|
||||
style="font-family: monospace;">m4/</span> directories of the package
|
||||
are removed, and then <span style="font-family: monospace;">gettextize</span>
|
||||
is invoked on the package again, it will re-add the <span
|
||||
style="font-family: monospace;">po/</span>, <span
|
||||
style="font-family: monospace;">intl/</span>, <span
|
||||
style="font-family: monospace;">m4/</span> directories and change <span
|
||||
style="font-family: monospace;">Makefile.am</span>, <span
|
||||
style="font-family: monospace;">configure.ac</span> and <span
|
||||
style="font-family: monospace;">ChangeLog</span> accordingly. This is
|
||||
normal. The second use of <span style="font-family: monospace;">gettextize</span>
|
||||
here is an abuse of the program. <span style="font-family: monospace;">gettextize</span>
|
||||
is a wizard intended to transform a <span style="font-style: italic;">working
|
||||
source package</span> into a <span style="font-style: italic;">working
|
||||
source package</span> that uses the newest version of gettext. If you
|
||||
start out from a nonfunctional source package (it is nonfunctional
|
||||
since you have omitted some directories), you cannot expect that <span
|
||||
style="font-family: monospace;">gettextize</span> corrects it.<br>
|
||||
<br>
|
||||
Often this question arises in packages that use CVS. See the section
|
||||
“CVS Issues / Integrating with CVS” of the GNU gettext documentation.
|
||||
This section mentions a program <span style="font-family: monospace;">autopoint</span>
|
||||
which is designed to reconstruct those files and directories created by
|
||||
<span style="font-family: monospace;">gettextize</span> that can be
|
||||
omitted from a CVS repository.<br>
|
||||
<h4><a name="integrating_noop"></a>My program compiles and links fine,
|
||||
but doesn't output translated
|
||||
strings.</h4>
|
||||
There are several possible reasons. Here is a checklist that allows you
|
||||
to determine the cause.<br>
|
||||
<ol>
|
||||
<li>Check that the environment variables LC_ALL, LC_MESSAGES,
|
||||
LC_CTYPE, LANG, LANGUAGE together specify a valid locale and language.<br>
|
||||
To check this, run the commands<br>
|
||||
<div style="margin-left: 40px;"><code>$ gettext --version</code><br>
|
||||
<code>$ gettext --help</code><br>
|
||||
</div>
|
||||
You should see at least some output in your desired language. If not,
|
||||
either<br>
|
||||
<ul>
|
||||
<li>You have chosen a too exotic language. <span
|
||||
style="font-family: monospace;">gettext</span> is localized to 33
|
||||
languages. Choose a less exotic language, such as Galician or
|
||||
Ukrainian. Or<br>
|
||||
</li>
|
||||
<li>There is a problem with your environment variables. Possibly
|
||||
LC_ALL points to a locale that is not installed, or LC_MESSAGES and
|
||||
LC_CTYPE are inconsistent.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Check that your program contains a <span
|
||||
style="font-family: monospace;">setlocale</span> call.<br>
|
||||
To check this, run your program under ltrace. For example,<br>
|
||||
<div style="margin-left: 40px;"><code>$ ltrace ./myprog</code><br>
|
||||
<code>...</code><br>
|
||||
<code>setlocale(6,
|
||||
"")
|
||||
= "de_DE.UTF-8"</code><br>
|
||||
</div>
|
||||
If you have no ltrace, you can also do this check by running your
|
||||
program under the debugger. For example,<br>
|
||||
<div style="margin-left: 40px;"><code>$ gdb ./myprog</code><br>
|
||||
<code>(gdb) break main</code><br>
|
||||
<code>(gdb) run</code><br>
|
||||
<code>Breakpoint 1, main ()</code><br>
|
||||
<code>(gdb) break setlocale</code><br>
|
||||
<code>(gdb) continue</code><br>
|
||||
<code>Breakpoint 2, setlocale ()</code><br>
|
||||
<code>;; OK, the breakpoint has been hit, setlocale() is being
|
||||
called.</code><br>
|
||||
</div>
|
||||
Either way, check that the return value of <span
|
||||
style="font-family: monospace;">setlocale()</span> is non-NULL. A NULL
|
||||
return value indicates a failure. </li>
|
||||
<li>Check that your program contains a <span
|
||||
style="font-family: monospace;">textdomain</span> call, a <span
|
||||
style="font-family: monospace;">bindtextdomain</span> call referring
|
||||
to the same message domain, and then really calls the <span
|
||||
style="font-family: monospace;">gettext</span>, <span
|
||||
style="font-family: monospace;">dgettext</span> or <span
|
||||
style="font-family: monospace;">dcgettext</span> function.<br>
|
||||
To check this, run the program under ltrace. For example,<br>
|
||||
<div style="margin-left: 40px;"><code>$ ltrace ./myprog</code><br>
|
||||
<code>...</code><br>
|
||||
<code>textdomain("hello-c")
|
||||
= "hello-c"</code><br>
|
||||
<code>bindtextdomain("hello-c", "/opt/share"...) = "/opt/share"...</code><br>
|
||||
<code>dcgettext(0, 0x08048691, 5, 0x0804a200, 0x08048689) =
|
||||
0x4001721f</code><br>
|
||||
</div>
|
||||
If you have no ltrace, you can also do this check by running your
|
||||
program under the debugger. For example,<br>
|
||||
<div style="margin-left: 40px;"><code>$ gdb ./myprog</code><br>
|
||||
<code>(gdb) break main</code><br>
|
||||
<code>(gdb) run</code><br>
|
||||
<code>Breakpoint 1, main ()</code><br>
|
||||
<code>(gdb) break textdomain</code><br>
|
||||
<code>(gdb) break bindtextdomain</code><br>
|
||||
<code>(gdb) break gettext</code><br>
|
||||
<code>(gdb) break dgettext</code><br>
|
||||
<code>(gdb) break dcgettext</code><br>
|
||||
<code>(gdb) continue</code><br>
|
||||
<code>Breakpoint 2, textdomain ()</code><br>
|
||||
<code>(gdb) continue</code><br>
|
||||
<code>Breakpoint 3, bindtextdomain ()</code><br>
|
||||
<code>(gdb) continue</code><br>
|
||||
<code>Breakpoint 6, dcgettext ()</code><br>
|
||||
</div>
|
||||
Note that here <span style="font-family: monospace;">dcgettext()</span>
|
||||
is called instead of the <span style="font-family: monospace;">gettext()</span>
|
||||
function mentioned in the source code; this is due to an optimization
|
||||
in <span style="font-family: monospace;"><libintl.h></span>.<br>
|
||||
When using libintl on a non-glibc system, you have to add a prefix “<span
|
||||
style="font-family: monospace;">libintl_</span>” to all the function
|
||||
names mentioned here, because that's what the functions are really
|
||||
named, under the hood.<br>
|
||||
If <span style="font-family: monospace;">gettext</span>/<span
|
||||
style="font-family: monospace;">dgettext</span>/<span
|
||||
style="font-family: monospace;">dcgettext</span> is not called at all,
|
||||
the possible cause might be that some autoconf or Makefile macrology
|
||||
has turned off internationalization entirely (like the <span
|
||||
style="font-family: monospace;">--disable-nls</span> configuration
|
||||
option usually does).<br>
|
||||
</li>
|
||||
<li>Check that the <span style="font-family: monospace;">.mo</span>
|
||||
file that contains the translation is really there where the program
|
||||
expects it.<br>
|
||||
To check this, run the program under strace and look at the <span
|
||||
style="font-family: monospace;">open()</span> calls. For example,<br>
|
||||
<div style="margin-left: 40px;"><code>$ strace ./myprog 2>&1
|
||||
| grep '^open('</code><br>
|
||||
<code>open("/etc/ld.so.preload", O_RDONLY) = -1
|
||||
ENOENT (No such file or directory)</code><br>
|
||||
<code>open("/etc/ld.so.cache",
|
||||
O_RDONLY) = 5</code><br>
|
||||
<code>open("/lib/libc.so.6",
|
||||
O_RDONLY) = 5</code><br>
|
||||
<code>open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE)
|
||||
= 5</code><br>
|
||||
<code>open("/usr/share/locale/locale.alias", O_RDONLY) = 5</code><br>
|
||||
<code>open("/opt/share/locale/de/LC_MESSAGES/hello-c.mo", O_RDONLY)
|
||||
= 5</code><br>
|
||||
<code>...</code><br>
|
||||
</div>
|
||||
A nonnegative <span style="font-family: monospace;">open()</span>
|
||||
return value means that the file has been found.<br>
|
||||
If you have no strace, you can also guess the <span
|
||||
style="font-family: monospace;">.mo</span> file's location: it is<br>
|
||||
<div style="margin-left: 40px;"><span
|
||||
style="font-family: monospace;"><span style="font-style: italic;">localedir</span>/<span
|
||||
style="font-style: italic;">lang</span>/LC_MESSAGES/<span
|
||||
style="font-style: italic;">domain</span>.mo</span><br>
|
||||
</div>
|
||||
where <span style="font-style: italic;">domain</span> is the argument
|
||||
passed to <span style="font-family: monospace;">textdomain()</span>, <span
|
||||
style="font-style: italic;">localedir</span> is the second argument
|
||||
passed to <span style="font-family: monospace;">bindtextdomain()</span>,
|
||||
and <span style="font-style: italic;">lang</span> is the language (<span
|
||||
style="font-style: italic;">LL</span>) or language and territory (<span
|
||||
style="font-style: italic;">LL</span>_<span style="font-style: italic;">CC</span>),
|
||||
depending on the environment variables checked in step 1.</li>
|
||||
<li>Check that the .mo file contains a translation for the string
|
||||
that is being asked for.<br>
|
||||
To do this, you need to convert the .mo file back to PO file format,
|
||||
through the command<br>
|
||||
<div style="margin-left: 40px;"><code>$ msgunfmt </code><span
|
||||
style="font-family: monospace;"><span style="font-style: italic;">localedir</span>/<span
|
||||
style="font-style: italic;">lang</span>/LC_MESSAGES/<span
|
||||
style="font-style: italic;">domain</span>.mo</span><br>
|
||||
<code></code></div>
|
||||
and look for an <span style="font-family: monospace;">msgid</span>
|
||||
that matches the given string.<br>
|
||||
</li>
|
||||
</ol>
|
||||
<h3>GNU gettext on Windows</h3>
|
||||
<h4><a name="windows_woe32"></a>What does Woe32 mean?</h4>
|
||||
“Woe32” denotes the Windows 32-bit operating systems for x86: Windows
|
||||
NT/2000/XP/Vista and Windows 95/98/ME. Microsoft uses the term “Win32” to
|
||||
denote these; this is a psychological trick in order to make everyone
|
||||
believe that these OSes are a “win” for the user. However, for most
|
||||
users and developers, they are a source of woes, which is why I call
|
||||
them “Woe32”.<br>
|
||||
<h4><a name="windows_howto"></a>How do I compile, link and run a
|
||||
program that uses the gettext()
|
||||
function?</h4>
|
||||
When you use RedHat's cygwin environment, it's as on Unix:<br>
|
||||
<ul>
|
||||
<li>You need to add an <span style="font-family: monospace;">-I</span>
|
||||
option to the compilation command line, so that the compiler finds the <span
|
||||
style="font-family: monospace;">libintl.h</span> include file, and</li>
|
||||
<li>You need to add an <span style="font-family: monospace;">-L</span>
|
||||
option to the link command line, so that the linker finds the <span
|
||||
style="font-family: monospace;">libintl</span> library.</li>
|
||||
</ul>
|
||||
When you use the Mingw environment (either from within cygwin, with <span
|
||||
style="font-family: monospace;">CC="gcc -mno-cygwin"</span>, or from
|
||||
MSYS, with <span style="font-family: monospace;">CC="gcc"</span>), I
|
||||
don't know the details.<br>
|
||||
<br>
|
||||
When you use the Microsoft Visual C/C++ (MSVC) compiler, you will
|
||||
likely use the precompiled Woe32 binaries. For running a program that
|
||||
uses gettext(), one needs the <span style="font-family: monospace;">.bin.woe32.zip</span>
|
||||
packages of <span style="font-family: monospace;">gettext-runtime</span>
|
||||
and <span style="font-family: monospace;">libiconv</span>. As a
|
||||
developer, you'll also need the <span style="font-family: monospace;">xgettext</span>
|
||||
and <span style="font-family: monospace;">msgfmt</span> programs that
|
||||
are contained in the <span style="font-family: monospace;">.bin.woe32.zip</span>
|
||||
package of <span style="font-family: monospace;">gettext-tools</span>.
|
||||
Then<br>
|
||||
<ul>
|
||||
<li>You need to add an <span style="font-family: monospace;">-MD</span>
|
||||
option to all compilation and link command lines. MSVC has six
|
||||
different, mutually incompatible, compilation models (<span
|
||||
style="font-family: monospace;">-ML</span>, <span
|
||||
style="font-family: monospace;">-MT</span>, <span
|
||||
style="font-family: monospace;">-MD</span>, <span
|
||||
style="font-family: monospace;">-MLd</span>, <span
|
||||
style="font-family: monospace;">-MTd</span>, <span
|
||||
style="font-family: monospace;">-MDd</span>); the default is <span
|
||||
style="font-family: monospace;">-ML</span>. <span
|
||||
style="font-family: monospace;">intl.dll</span> uses the <span
|
||||
style="font-family: monospace;">-MD</span> model, therefore the rest
|
||||
of the program must use <span style="font-family: monospace;">-MD</span>
|
||||
as well.<br>
|
||||
</li>
|
||||
<li>You need to add an <span style="font-family: monospace;">-I</span>
|
||||
option to the compilation command line, so that the compiler finds the <span
|
||||
style="font-family: monospace;">libintl.h</span> include file.<br>
|
||||
</li>
|
||||
<li>You need to add an <span style="font-family: monospace;">-L</span>
|
||||
option to the link command line, so that the linker finds the <span
|
||||
style="font-family: monospace;">intl.lib</span> library.</li>
|
||||
<li>You need to copy the <span style="font-family: monospace;">intl.dll</span>
|
||||
and <span style="font-family: monospace;">iconv.dll</span> to the
|
||||
directory where your <span style="font-family: monospace;">.exe</span>
|
||||
files are created, so that they will be found at runtime.<br>
|
||||
</li>
|
||||
</ul>
|
||||
<h4><a name="windows_setenv"></a>Setting the <span
|
||||
style="font-family: monospace;">LANG</span>
|
||||
environment variable doesn't have any effect</h4>
|
||||
If neither LC_ALL, LC_MESSAGES nor LANGUAGES is set, it's the LANG
|
||||
environment variable which determines the language into which gettext()
|
||||
translates the messages.<br>
|
||||
<br>
|
||||
You can test your program by setting the LANG environment variable from
|
||||
outside the program. In a Windows command interpreter:<br>
|
||||
<div style="margin-left: 40px;"><code>set LANG=de_DE</code><br>
|
||||
<code>.\myprog.exe</code><br>
|
||||
</div>
|
||||
Or in a Cygwin shell:<br>
|
||||
<div style="margin-left: 40px;"><code>$ env LANG=de_DE ./myprog.exe</code><br>
|
||||
</div>
|
||||
<br>
|
||||
If this test fails, look at the question “My program compiles and links
|
||||
fine, but doesn't output translated
|
||||
strings.” above.<br>
|
||||
<br>
|
||||
If this test succeeds, the problem is related in the way you set the
|
||||
environment variable. Here is a checklist:<br>
|
||||
<ul>
|
||||
<li>Check that you are using the <span
|
||||
style="font-family: monospace;">-MD</span> option in all compilation
|
||||
and link command lines. Otherwise you might end up calling the <span
|
||||
style="font-family: monospace;">putenv()</span> function from
|
||||
Microsoft's <span style="font-family: monospace;">libc.lib</span>,
|
||||
whereas <span style="font-family: monospace;">intl.dll</span> is using
|
||||
the <span style="font-family: monospace;">getenv()</span> function
|
||||
from Mictosoft's <span style="font-family: monospace;">msvcrt.lib</span>.</li>
|
||||
<li>Check that you set the environment variable using <span
|
||||
style="font-style: italic;">both</span> <span
|
||||
style="font-family: monospace;">SetEnvironmentVariable()</span> and <span
|
||||
style="font-family: monospace;">putenv()</span>. A convenient way to
|
||||
do so, and to deal with the fact that some Unix systems have <span
|
||||
style="font-family: monospace;">setenv()</span> and some don't, is the
|
||||
following function.<br>
|
||||
<br>
|
||||
<div style="margin-left: 40px;"><code>#include <string.h></code><br>
|
||||
<code>#include <stdlib.h></code><br>
|
||||
<code>#if defined _WIN32</code><br>
|
||||
<code># include <windows.h></code><br>
|
||||
<code>#endif</code><br>
|
||||
<code></code><br>
|
||||
<code>int my_setenv (const char * name, const char * value) {</code><br>
|
||||
<code> size_t namelen = strlen(name);</code><br>
|
||||
<code> size_t valuelen = (value==NULL ? 0 : strlen(value));</code><br>
|
||||
<code>#if defined _WIN32</code><br>
|
||||
<code> /* On Woe32, each process has two copies of the
|
||||
environment variables,</code><br>
|
||||
<code> one managed by the OS and one
|
||||
managed by the C library. We set</code><br>
|
||||
<code> the value in both locations, so that
|
||||
other software that looks in</code><br>
|
||||
<code> one place or the other is guaranteed
|
||||
to see the value. Even if it's</code><br>
|
||||
<code> a bit slow. See also</code><br>
|
||||
<code> <<a
|
||||
href="http://article.gmane.org/gmane.comp.gnu.mingw.user/8272">http://article.gmane.org/gmane.comp.gnu.mingw.user/8272</a>></code><br>
|
||||
<code> <<a
|
||||
href="http://article.gmane.org/gmane.comp.gnu.mingw.user/8273">http://article.gmane.org/gmane.comp.gnu.mingw.user/8273</a>></code><br>
|
||||
<code> <<a
|
||||
href="http://www.cygwin.com/ml/cygwin/1999-04/msg00478.html">http://www.cygwin.com/ml/cygwin/1999-04/msg00478.html</a>>
|
||||
*/</code><br>
|
||||
<code> if (!SetEnvironmentVariableA(name,value))</code><br>
|
||||
<code> return -1; </code><br>
|
||||
<code>#endif</code><br>
|
||||
<code>#if defined(HAVE_PUTENV)</code><br>
|
||||
<code> char* buffer = (char*)malloc(namelen+1+valuelen+1);</code><br>
|
||||
<code> if (!buffer)</code><br>
|
||||
<code> return -1; /* no need to set errno =
|
||||
ENOMEM */</code><br>
|
||||
<code> memcpy(buffer,name,namelen);</code><br>
|
||||
<code> if (value != NULL) {</code><br>
|
||||
<code> buffer[namelen] = '=';</code><br>
|
||||
<code> memcpy(buffer+namelen+1,value,valuelen);</code><br>
|
||||
<code> buffer[namelen+1+valuelen] = 0;</code><br>
|
||||
<code> } else</code><br>
|
||||
<code> buffer[namelen] = 0;</code><br>
|
||||
<code> return putenv(buffer);</code><br>
|
||||
<code>#elif defined(HAVE_SETENV)</code><br>
|
||||
<code> return setenv(name,value,1);</code><br>
|
||||
<code>#else</code><br>
|
||||
<code> /* Uh oh, neither putenv() nor setenv() ... */</code><br>
|
||||
<code> return -1;</code><br>
|
||||
<code>#endif</code><br>
|
||||
<code>}</code><br>
|
||||
<code></code></div>
|
||||
<br>
|
||||
</li>
|
||||
</ul>
|
||||
<h3>Other</h3>
|
||||
<h4><a name="newline"></a>What does this mean: “`msgid' and `msgstr'
|
||||
entries do not both end
|
||||
with '\n'”</h4>
|
||||
It means that when the original string ends in a newline, your
|
||||
translation must also end in a newline. And if the original string does
|
||||
not end in a newline, then your translation should likewise not have a
|
||||
newline at the end.<br>
|
||||
<h4><a name="translit"></a>German umlauts are displayed like
|
||||
“ge"andert” instead of “geändert”</h4>
|
||||
This symptom occurs when the <span style="font-family: monospace;">LC_CTYPE</span>
|
||||
facet of the locale is not set; then gettext() doesn't know which
|
||||
character set to use, and converts all messages to ASCII, as far as
|
||||
possible.<br>
|
||||
<br>
|
||||
If the program is doing<br>
|
||||
<code><br>
|
||||
setlocale (LC_MESSAGES, "");<br>
|
||||
<br>
|
||||
</code>then change it to<br>
|
||||
<code><br>
|
||||
setlocale (LC_CTYPE, "");<br>
|
||||
setlocale (LC_MESSAGES, "");<br>
|
||||
</code><br>
|
||||
or do both of these in a single call:<br>
|
||||
<code><br>
|
||||
setlocale (LC_ALL, "");<br>
|
||||
</code><br>
|
||||
If the program is already doing<br>
|
||||
<code><br>
|
||||
setlocale (LC_ALL, "");<br>
|
||||
</code><br>
|
||||
then the symptom can still occur if the user has not set <span
|
||||
style="font-family: monospace;">LANG</span>, but instead has set <span
|
||||
style="font-family: monospace;">LC_MESSAGES</span> to a valid locale
|
||||
and has set <span style="font-family: monospace;">LC_CTYPE</span> to
|
||||
nothing or an invalid locale. The fix for the user is then to set <span
|
||||
style="font-family: monospace;">LANG</span> instead of <span
|
||||
style="font-family: monospace;">LC_MESSAGES</span>.<br>
|
||||
<h4><a name="localename"></a>The <span style="font-family: monospace;">LANGUAGE</span>
|
||||
environment variable is ignored after I set <span
|
||||
style="font-family: monospace;">LANG=en</span></h4>
|
||||
This is because “en” is a language name, but not a valid locale name.
|
||||
The <span style="font-family: monospace;">ABOUT-NLS</span> file
|
||||
says:<br>
|
||||
<blockquote>
|
||||
In the <span style="font-family: monospace;">LANGUAGE</span>
|
||||
environment variable, but not in the <span
|
||||
style="font-family: monospace;">LANG</span> environment variable, <span
|
||||
style="font-style: italic;">LL</span>_<span style="font-style: italic;">CC</span><span
|
||||
style="font-family: monospace;"> </span>combinations can be
|
||||
abbreviated as <span style="font-style: italic;">LL</span> to
|
||||
denote the language's main dialect.</blockquote>
|
||||
Why is <span style="font-family: monospace;">LANG=en</span> not
|
||||
allowed? Because <span style="font-family: monospace;">LANG</span> is
|
||||
a setting for the entire locale, including monetary information, and
|
||||
this depends on the country: en_GB, en_AU, en_ZA all have different
|
||||
currencies.<br>
|
||||
<h4><a name="nonascii_strings"></a>I use accented characters in my
|
||||
source code. How do I tell the
|
||||
C/C++ compiler in which encoding it is (like <span
|
||||
style="font-family: monospace;">xgettext</span>'s <span
|
||||
style="font-family: monospace;">--from-code</span> option)?</h4>
|
||||
Short answer: If you want your program to be useful to other people,
|
||||
then <span style="font-style: italic;">don't use accented characters</span>
|
||||
(or other non-ASCII characters) in string literals <span
|
||||
style="font-style: italic;">in the source code</span>. Instead, use
|
||||
only ASCII for string literals, and use <span
|
||||
style="font-family: monospace;">gettext()</span> to retrieve their
|
||||
display-ready form.<br>
|
||||
<br>
|
||||
Long explanation:<br>
|
||||
The reason is that the ISO C standard specifies that the character set
|
||||
at compilation time can be different from the character set at
|
||||
execution time.<br>
|
||||
The character encoding at compilation time is the one which determines
|
||||
how the source files are interpreted and also how string literals are
|
||||
stored in the compiled code. This character encoding is generally
|
||||
unspecified; for recent versions of GCC, it depends on the LC_CTYPE
|
||||
locale in effect during the compilation process.<br>
|
||||
The character encoding at execution time is the one which determines
|
||||
how standard functions like <span style="font-family: monospace;">isprint()</span>,
|
||||
<span style="font-family: monospace;">wcwidth()</span> etc. work and
|
||||
how strings written to standard output should be encoded. This
|
||||
character encoding is specified by POSIX to depend on the LC_CTYPE
|
||||
locale in effect when the program is executed; see also the description
|
||||
in the <span style="font-family: monospace;">ABOUT-NLS</span> file.<br>
|
||||
Strings in the compiled code are not magically converted between the
|
||||
time the program is compiled and the time it is run.<br>
|
||||
<br>
|
||||
Therefore what could you do to get accented characters to work?<br>
|
||||
<br>
|
||||
Can you ensure that the execution character set is the same as the
|
||||
compilation character set? Even if your program is to be used only in a
|
||||
single country, this is not realistically possible. For example, in
|
||||
Germany there are currently three character encodings in use: UTF-8,
|
||||
ISO-8859-15 and ISO-8859-1. Therefore you would have to explicitly
|
||||
convert the accented strings from the compilation character set to the
|
||||
execution character set at runtime, for example through iconv().<br>
|
||||
<br>
|
||||
Can you ensure that the compilation character set is the one in which
|
||||
your source files are stored? This is not realistically possible
|
||||
either: For compilers other than GCC, there is no way to specify the
|
||||
compilation character set. So let's assume for a moment that everyone
|
||||
uses GCC; then you will specify the LC_CTYPE or LC_ALL environment
|
||||
variable in the Makefile. But for this you have to assume that everyone
|
||||
has a locale in a given encoding. Be it UTF-8 or ISO-8859-1 - this is
|
||||
not realistic. People often have no locale installed besides the one
|
||||
they use.<br>
|
||||
<br>
|
||||
Use of wide strings <span style="font-family: monospace;">L"..."</span>
|
||||
doesn't help solving the problem, because on systems like FreeBSD or
|
||||
Solaris, the way how wide string literals are stored in compiled code
|
||||
depends on the compilation character set, just as it does for
|
||||
narrow strings <span style="font-family: monospace;">"..."</span>.
|
||||
Moreover, wide strings have problems of their own.<br>
|
||||
<br>
|
||||
Use of ISO C 99 Unicode escapes "\u<span style="font-style: italic;">xxxx</span>"
|
||||
doesn't help either because these characters are converted to the
|
||||
compilation character set at compile time; so again, since you can't
|
||||
guarantee that the compilation character set is not ASCII, you're
|
||||
risking compilation errors just as if the real character had been used
|
||||
in the source instead of the Unicode escape.<br>
|
||||
<br>
|
||||
So, in summary, there is no way to make accented characters in string
|
||||
literals work in C/C++.<br>
|
||||
<br>
|
||||
You might then wonder what <span style="font-family: monospace;">xgettext</span>'s
|
||||
<span style="font-family: monospace;">--from-code</span> option is good
|
||||
for. The answer is<br>
|
||||
<ol>
|
||||
<li>For the comments in C/C++ source code. The compiler ignores them.<br>
|
||||
</li>
|
||||
<li>For other programming languages like Java, for which the compiler
|
||||
converts all string literals to UTF-8.</li>
|
||||
</ol>
|
||||
<br>
|
||||
<hr style="width: 100%; height: 2px;">
|
||||
<address>GNU gettext FAQ<br>
|
||||
Bruno Haible <<a href="mailto:bruno@clisp.org">bruno@clisp.org</a>></address>
|
||||
<p>Last modified: 24 February 2004
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,189 @@
|
|||
<!-- Creator : groff version 1.18.1 -->
|
||||
<html>
|
||||
<head>
|
||||
<meta name="generator" content="groff -Thtml, see www.gnu.org">
|
||||
<meta name="Content-Style" content="text/css">
|
||||
<title>AUTOPOINT</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1 align=center>AUTOPOINT</h1>
|
||||
<a href="#NAME">NAME</a><br>
|
||||
<a href="#SYNOPSIS">SYNOPSIS</a><br>
|
||||
<a href="#DESCRIPTION">DESCRIPTION</a><br>
|
||||
<a href="#OPTIONS">OPTIONS</a><br>
|
||||
<a href="#AUTHOR">AUTHOR</a><br>
|
||||
<a href="#REPORTING BUGS">REPORTING BUGS</a><br>
|
||||
<a href="#SEE ALSO">SEE ALSO</a><br>
|
||||
|
||||
<hr>
|
||||
<a name="NAME"></a>
|
||||
<h2>NAME</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>autopoint − copies standard gettext
|
||||
infrastructure</p>
|
||||
</td>
|
||||
</table>
|
||||
<a name="SYNOPSIS"></a>
|
||||
<h2>SYNOPSIS</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p><b>autopoint</b> [<i>OPTION</i>]...</p>
|
||||
</td>
|
||||
</table>
|
||||
<a name="DESCRIPTION"></a>
|
||||
<h2>DESCRIPTION</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>Copies standard gettext infrastructure files into a
|
||||
source package.</p>
|
||||
</td>
|
||||
</table>
|
||||
<a name="OPTIONS"></a>
|
||||
<h2>OPTIONS</h2>
|
||||
<!-- TABS -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="5" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="8%">
|
||||
|
||||
<p><b>−−help</b></p>
|
||||
</td>
|
||||
<td width="13%"></td>
|
||||
<td width="35%">
|
||||
|
||||
<p>print this help and exit</p>
|
||||
</td>
|
||||
<td width="30%">
|
||||
</td>
|
||||
</table>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p><b>−−version</b></p></td>
|
||||
</table>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="21%"></td>
|
||||
<td width="77%">
|
||||
<p>print version information and exit</p>
|
||||
</td>
|
||||
</table>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p><b>−f</b>, <b>−−force</b></p></td>
|
||||
</table>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="21%"></td>
|
||||
<td width="77%">
|
||||
<p>force overwriting of files that already exist</p>
|
||||
</td>
|
||||
</table>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p><b>−n</b>,
|
||||
<b>−−dry−run</b></p></td>
|
||||
</table>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="21%"></td>
|
||||
<td width="77%">
|
||||
<p>print modifications but don’t perform them</p>
|
||||
</td>
|
||||
</table>
|
||||
<a name="AUTHOR"></a>
|
||||
<h2>AUTHOR</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>Written by Bruno Haible</p>
|
||||
</td>
|
||||
</table>
|
||||
<a name="REPORTING BUGS"></a>
|
||||
<h2>REPORTING BUGS</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>Report bugs to <bug-gnu-gettext@gnu.org>.</p>
|
||||
<!-- INDENTATION -->
|
||||
<p>Uses a versions archive in git format. Copyright (C)
|
||||
2002-2010 Free Software Foundation, Inc. License GPLv3+: GNU
|
||||
GPL version 3 or later
|
||||
<http://gnu.org/licenses/gpl.html> This is free
|
||||
software: you are free to change and redistribute it. There
|
||||
is NO WARRANTY, to the extent permitted by law.</p>
|
||||
</td>
|
||||
</table>
|
||||
<a name="SEE ALSO"></a>
|
||||
<h2>SEE ALSO</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>The full documentation for <b>autopoint</b> is maintained
|
||||
as a Texinfo manual. If the <b>info</b> and <b>autopoint</b>
|
||||
programs are properly installed at your site, the
|
||||
command</p>
|
||||
</td>
|
||||
</table>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="20%"></td>
|
||||
<td width="79%">
|
||||
<p><b>info autopoint</b></p>
|
||||
</td>
|
||||
</table>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>should give you access to the complete manual.</p>
|
||||
</td>
|
||||
</table>
|
||||
<hr>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,165 @@
|
|||
<!-- Creator : groff version 1.18.1 -->
|
||||
<html>
|
||||
<head>
|
||||
<meta name="generator" content="groff -Thtml, see www.gnu.org">
|
||||
<meta name="Content-Style" content="text/css">
|
||||
<title>BIND_TEXTDOMAIN_CODESET</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1 align=center>BIND_TEXTDOMAIN_CODESET</h1>
|
||||
<a href="#NAME">NAME</a><br>
|
||||
<a href="#SYNOPSIS">SYNOPSIS</a><br>
|
||||
<a href="#DESCRIPTION">DESCRIPTION</a><br>
|
||||
<a href="#RETURN VALUE">RETURN VALUE</a><br>
|
||||
<a href="#ERRORS">ERRORS</a><br>
|
||||
<a href="#BUGS">BUGS</a><br>
|
||||
<a href="#SEE ALSO">SEE ALSO</a><br>
|
||||
|
||||
<hr>
|
||||
<a name="NAME"></a>
|
||||
<h2>NAME</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>bind_textdomain_codeset − set encoding of message
|
||||
translations</p>
|
||||
</td>
|
||||
</table>
|
||||
<a name="SYNOPSIS"></a>
|
||||
<h2>SYNOPSIS</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<pre><b>#include <libintl.h>
|
||||
|
||||
char * bind_textdomain_codeset (const char *</b> <i>domainname</i><b>,
|
||||
const char *</b> <i>codeset</i><b>);
|
||||
</b></pre>
|
||||
</td>
|
||||
</table>
|
||||
<a name="DESCRIPTION"></a>
|
||||
<h2>DESCRIPTION</h2>
|
||||
<!-- INDENTATION -->
|
||||
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>The <b>bind_textdomain_codeset</b> function sets the
|
||||
output codeset for message catalogs for domain
|
||||
<i>domainname</i>.</p>
|
||||
<!-- INDENTATION -->
|
||||
<p>A message domain is a set of translatable <i>msgid</i>
|
||||
messages. Usually, every software package has its own
|
||||
message domain.</p>
|
||||
<!-- INDENTATION -->
|
||||
<p>By default, the <b>gettext</b> family of functions
|
||||
returns translated messages in the locale’s character
|
||||
encoding, which can be retrieved as
|
||||
<b>nl_langinfo(CODESET)</b>. The need for calling
|
||||
<b>bind_textdomain_codeset</b> arises for programs which
|
||||
store strings in a locale independent way (e.g. UTF-8) and
|
||||
want to avoid an extra character set conversion on the
|
||||
returned translated messages.</p>
|
||||
<!-- INDENTATION -->
|
||||
<p><i>domainname</i> must be a non-empty string.</p>
|
||||
<!-- INDENTATION -->
|
||||
<p>If <i>codeset</i> is not NULL, it must be a valid
|
||||
encoding name which can be used for the <b>iconv_open</b>
|
||||
function. The <b>bind_textdomain_codeset</b> function sets
|
||||
the output codeset for message catalogs belonging to domain
|
||||
<i>domainname</i> to <i>codeset</i>. The function makes
|
||||
copies of the argument strings as needed.</p>
|
||||
<!-- INDENTATION -->
|
||||
<p>If <i>codeset</i> is NULL, the function returns the
|
||||
previously set codeset for domain <i>domainname</i>. The
|
||||
default is NULL, denoting the locale’s character
|
||||
encoding.</p>
|
||||
</td>
|
||||
</table>
|
||||
<a name="RETURN VALUE"></a>
|
||||
<h2>RETURN VALUE</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>If successful, the <b>bind_textdomain_codeset</b>
|
||||
function returns the current codeset for domain
|
||||
<i>domainname</i>, after possibly changing it. The resulting
|
||||
string is valid until the next
|
||||
<b>bind_textdomain_codeset</b> call for the same
|
||||
<i>domainname</i> and must not be modified or freed. If a
|
||||
memory allocation failure occurs, it sets <b>errno</b> to
|
||||
<b>ENOMEM</b> and returns NULL. If no codeset has been set
|
||||
for domain <i>domainname</i>, it returns NULL.</p>
|
||||
</td>
|
||||
</table>
|
||||
<a name="ERRORS"></a>
|
||||
<h2>ERRORS</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>The following error can occur, among others:</p>
|
||||
</td>
|
||||
</table>
|
||||
<!-- TABS -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="5" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="8%">
|
||||
|
||||
<p><b>ENOMEM</b></p>
|
||||
</td>
|
||||
<td width="13%"></td>
|
||||
<td width="41%">
|
||||
|
||||
<p>Not enough memory available.</p>
|
||||
</td>
|
||||
<td width="24%">
|
||||
</td>
|
||||
</table>
|
||||
<a name="BUGS"></a>
|
||||
<h2>BUGS</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>The return type ought to be <b>const char *</b>, but is
|
||||
<b>char *</b> to avoid warnings in C code predating ANSI
|
||||
C.</p>
|
||||
</td>
|
||||
</table>
|
||||
<a name="SEE ALSO"></a>
|
||||
<h2>SEE ALSO</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p><b>gettext</b>(3), <b>dgettext</b>(3),
|
||||
<b>dcgettext</b>(3), <b>ngettext</b>(3),
|
||||
<b>dngettext</b>(3), <b>dcngettext</b>(3),
|
||||
<b>textdomain</b>(3), <b>nl_langinfo</b>(3),
|
||||
<b>iconv_open</b>(3)</p>
|
||||
</td>
|
||||
</table>
|
||||
<hr>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,160 @@
|
|||
<!-- Creator : groff version 1.18.1 -->
|
||||
<html>
|
||||
<head>
|
||||
<meta name="generator" content="groff -Thtml, see www.gnu.org">
|
||||
<meta name="Content-Style" content="text/css">
|
||||
<title>BINDTEXTDOMAIN</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1 align=center>BINDTEXTDOMAIN</h1>
|
||||
<a href="#NAME">NAME</a><br>
|
||||
<a href="#SYNOPSIS">SYNOPSIS</a><br>
|
||||
<a href="#DESCRIPTION">DESCRIPTION</a><br>
|
||||
<a href="#RETURN VALUE">RETURN VALUE</a><br>
|
||||
<a href="#ERRORS">ERRORS</a><br>
|
||||
<a href="#BUGS">BUGS</a><br>
|
||||
<a href="#SEE ALSO">SEE ALSO</a><br>
|
||||
|
||||
<hr>
|
||||
<a name="NAME"></a>
|
||||
<h2>NAME</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>bindtextdomain − set directory containing message
|
||||
catalogs</p>
|
||||
</td>
|
||||
</table>
|
||||
<a name="SYNOPSIS"></a>
|
||||
<h2>SYNOPSIS</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<pre><b>#include <libintl.h>
|
||||
|
||||
char * bindtextdomain (const char *</b> <i>domainname</i><b>, const char *</b> <i>dirname</i><b>);
|
||||
</b></pre>
|
||||
</td>
|
||||
</table>
|
||||
<a name="DESCRIPTION"></a>
|
||||
<h2>DESCRIPTION</h2>
|
||||
<!-- INDENTATION -->
|
||||
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>The <b>bindtextdomain</b> function sets the base
|
||||
directory of the hierarchy containing message catalogs for a
|
||||
given message domain.</p>
|
||||
<!-- INDENTATION -->
|
||||
<p>A message domain is a set of translatable <i>msgid</i>
|
||||
messages. Usually, every software package has its own
|
||||
message domain. The need for calling <b>bindtextdomain</b>
|
||||
arises because packages are not always installed with the
|
||||
same prefix as the <libintl.h> header and the
|
||||
libc/libintl libraries.</p>
|
||||
<!-- INDENTATION -->
|
||||
<p>Message catalogs will be expected at the pathnames
|
||||
<i>dirname</i>/<i>locale</i>/<i>category</i>/<i>domainname</i>.mo,
|
||||
where <i>locale</i> is a locale name and <i>category</i> is
|
||||
a locale facet such as <b>LC_MESSAGES</b>.</p>
|
||||
<!-- INDENTATION -->
|
||||
<p><i>domainname</i> must be a non-empty string.</p>
|
||||
<!-- INDENTATION -->
|
||||
<p>If <i>dirname</i> is not NULL, the base directory for
|
||||
message catalogs belonging to domain <i>domainname</i> is
|
||||
set to <i>dirname</i>. The function makes copies of the
|
||||
argument strings as needed. If the program wishes to call
|
||||
the <b>chdir</b> function, it is important that
|
||||
<i>dirname</i> be an absolute pathname; otherwise it cannot
|
||||
be guaranteed that the message catalogs will be found.</p>
|
||||
<!-- INDENTATION -->
|
||||
<p>If <i>dirname</i> is NULL, the function returns the
|
||||
previously set base directory for domain
|
||||
<i>domainname</i>.</p>
|
||||
</td>
|
||||
</table>
|
||||
<a name="RETURN VALUE"></a>
|
||||
<h2>RETURN VALUE</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>If successful, the <b>bindtextdomain</b> function returns
|
||||
the current base directory for domain <i>domainname</i>,
|
||||
after possibly changing it. The resulting string is valid
|
||||
until the next <b>bindtextdomain</b> call for the same
|
||||
<i>domainname</i> and must not be modified or freed. If a
|
||||
memory allocation failure occurs, it sets <b>errno</b> to
|
||||
<b>ENOMEM</b> and returns NULL.</p>
|
||||
</td>
|
||||
</table>
|
||||
<a name="ERRORS"></a>
|
||||
<h2>ERRORS</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>The following error can occur, among others:</p>
|
||||
</td>
|
||||
</table>
|
||||
<!-- TABS -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="5" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="8%">
|
||||
|
||||
<p><b>ENOMEM</b></p>
|
||||
</td>
|
||||
<td width="13%"></td>
|
||||
<td width="41%">
|
||||
|
||||
<p>Not enough memory available.</p>
|
||||
</td>
|
||||
<td width="24%">
|
||||
</td>
|
||||
</table>
|
||||
<a name="BUGS"></a>
|
||||
<h2>BUGS</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>The return type ought to be <b>const char *</b>, but is
|
||||
<b>char *</b> to avoid warnings in C code predating ANSI
|
||||
C.</p>
|
||||
</td>
|
||||
</table>
|
||||
<a name="SEE ALSO"></a>
|
||||
<h2>SEE ALSO</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p><b>gettext</b>(3), <b>dgettext</b>(3),
|
||||
<b>dcgettext</b>(3), <b>ngettext</b>(3),
|
||||
<b>dngettext</b>(3), <b>dcngettext</b>(3),
|
||||
<b>textdomain</b>(3), <b>realpath</b>(3)</p>
|
||||
</td>
|
||||
</table>
|
||||
<hr>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,8 @@
|
|||
<HTML>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
<I>GNU.Gettext Namespace</I><P>
|
||||
|
||||
<A HREF="GNU_Gettext_GettextResourceManager.html" TARGET="contents">GettextResourceManager</A><BR>
|
||||
<A HREF="GNU_Gettext_GettextResourceSet.html" TARGET="contents">GettextResourceSet</A><BR>
|
||||
</BODY>
|
||||
</HTML>
|
|
@ -0,0 +1,305 @@
|
|||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>GNU.Gettext.GettextResourceManager Class</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
<H3>GNU.Gettext.GettextResourceManager Class</H3>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<TABLE COLS="1" ROWS="1" WIDTH="100%">
|
||||
<TR><TD BGCOLOR="#C0C0C0"><PRE>public class GettextResourceManager: System.Resources.ResourceManager</PRE></TD></TR>
|
||||
</TABLE>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Base Types</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
System.Resources.ResourceManager<BR>
|
||||
GettextResourceManager<P>
|
||||
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Library</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
GNU.Gettext
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Summary</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
|
||||
Each instance of this class can be used to lookup translations for a
|
||||
given resource name. For each <CODE>CultureInfo</CODE>, it performs the lookup
|
||||
in several assemblies, from most specific over territory-neutral to
|
||||
language-neutral.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>See Also</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<A HREF="GNU_Gettext.html" TARGET="members">GNU.Gettext Namespace</A>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Members</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<P>
|
||||
|
||||
GettextResourceManager Constructors<P>
|
||||
|
||||
<A HREF="#GettextResourceManager%28System.String%29%20Constructor" TARGET="contents">GettextResourceManager(System.String) Constructor</A><BR>
|
||||
<A HREF="#GettextResourceManager%28System.String%2C%20System.Reflection.Assembly%29%20Constructor" TARGET="contents">GettextResourceManager(System.String, System.Reflection.Assembly) Constructor</A><BR>
|
||||
<P>
|
||||
|
||||
GettextResourceManager Methods<P>
|
||||
|
||||
<A HREF="#GettextResourceManager.GetPluralString%28System.String%2C%20System.String%2C%20long%2C%20System.Globalization.CultureInfo%29%20Method" TARGET="contents">GettextResourceManager.GetPluralString(System.String, System.String, long, System.Globalization.CultureInfo) Method</A><BR>
|
||||
<A HREF="#GettextResourceManager.GetPluralString%28System.String%2C%20System.String%2C%20long%29%20Method" TARGET="contents">GettextResourceManager.GetPluralString(System.String, System.String, long) Method</A><BR>
|
||||
<A HREF="#GettextResourceManager.GetString%28System.String%2C%20System.Globalization.CultureInfo%29%20Method" TARGET="contents">GettextResourceManager.GetString(System.String, System.Globalization.CultureInfo) Method</A><BR>
|
||||
<A HREF="#GettextResourceManager.GetString%28System.String%29%20Method" TARGET="contents">GettextResourceManager.GetString(System.String) Method</A><BR>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<HR>
|
||||
|
||||
<A NAME="GettextResourceManager%28System.String%29%20Constructor"><H3>GettextResourceManager(System.String) Constructor</H3>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<TABLE COLS="1" ROWS="1" WIDTH="100%">
|
||||
<TR><TD BGCOLOR="#C0C0C0"><PRE>public GettextResourceManager(System.String baseName);</PRE></TD></TR>
|
||||
</TABLE>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Summary</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
|
||||
Constructor.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Parameters</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<DL>
|
||||
<DT>baseName</DT>
|
||||
<DD>the resource name, also the assembly base
|
||||
name</DD>
|
||||
</DL>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>See Also</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<A HREF="GNU_Gettext_GettextResourceManager.html" TARGET="contents">GNU.Gettext.GettextResourceManager Class</A>, <A HREF="GNU_Gettext.html" TARGET="members">GNU.Gettext Namespace</A>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<HR>
|
||||
|
||||
<A NAME="GettextResourceManager%28System.String%2C%20System.Reflection.Assembly%29%20Constructor"><H3>GettextResourceManager(System.String, System.Reflection.Assembly) Constructor</H3>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<TABLE COLS="1" ROWS="1" WIDTH="100%">
|
||||
<TR><TD BGCOLOR="#C0C0C0"><PRE>public GettextResourceManager(System.String baseName, System.Reflection.Assembly assembly);</PRE></TD></TR>
|
||||
</TABLE>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Summary</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
|
||||
Constructor.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Parameters</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<DL>
|
||||
<DT>baseName</DT>
|
||||
<DD>the resource name, also the assembly base
|
||||
name</DD>
|
||||
</DL>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>See Also</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<A HREF="GNU_Gettext_GettextResourceManager.html" TARGET="contents">GNU.Gettext.GettextResourceManager Class</A>, <A HREF="GNU_Gettext.html" TARGET="members">GNU.Gettext Namespace</A>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<HR>
|
||||
|
||||
<A NAME="GettextResourceManager.GetPluralString%28System.String%2C%20System.String%2C%20long%2C%20System.Globalization.CultureInfo%29%20Method"><H3>GettextResourceManager.GetPluralString(System.String, System.String, long, System.Globalization.CultureInfo) Method</H3>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<TABLE COLS="1" ROWS="1" WIDTH="100%">
|
||||
<TR><TD BGCOLOR="#C0C0C0"><PRE>public virtual System.String GetPluralString(System.String msgid, System.String msgidPlural, long n, System.Globalization.CultureInfo culture);</PRE></TD></TR>
|
||||
</TABLE>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Summary</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
|
||||
Returns the translation of <I>msgid</I> and
|
||||
<I>msgidPlural</I> in a given culture, choosing the right
|
||||
plural form depending on the number <I>n</I>.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Parameters</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<DL>
|
||||
<DT>msgid</DT>
|
||||
<DD>the key string to be translated, an ASCII
|
||||
string</DD>
|
||||
<DT>msgidPlural</DT>
|
||||
<DD>the English plural of <I>msgid</I>,
|
||||
an ASCII string</DD>
|
||||
<DT>n</DT>
|
||||
<DD>the number, should be >= 0</DD>
|
||||
</DL>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Return Value</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
the translation, or <I>msgid</I> or
|
||||
<I>msgidPlural</I> if none is found
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>See Also</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<A HREF="GNU_Gettext_GettextResourceManager.html" TARGET="contents">GNU.Gettext.GettextResourceManager Class</A>, <A HREF="GNU_Gettext.html" TARGET="members">GNU.Gettext Namespace</A>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<HR>
|
||||
|
||||
<A NAME="GettextResourceManager.GetPluralString%28System.String%2C%20System.String%2C%20long%29%20Method"><H3>GettextResourceManager.GetPluralString(System.String, System.String, long) Method</H3>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<TABLE COLS="1" ROWS="1" WIDTH="100%">
|
||||
<TR><TD BGCOLOR="#C0C0C0"><PRE>public virtual System.String GetPluralString(System.String msgid, System.String msgidPlural, long n);</PRE></TD></TR>
|
||||
</TABLE>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Summary</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
|
||||
Returns the translation of <I>msgid</I> and
|
||||
<I>msgidPlural</I> in the current culture, choosing the
|
||||
right plural form depending on the number <I>n</I>.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Parameters</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<DL>
|
||||
<DT>msgid</DT>
|
||||
<DD>the key string to be translated, an ASCII
|
||||
string</DD>
|
||||
<DT>msgidPlural</DT>
|
||||
<DD>the English plural of <I>msgid</I>,
|
||||
an ASCII string</DD>
|
||||
<DT>n</DT>
|
||||
<DD>the number, should be >= 0</DD>
|
||||
</DL>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Return Value</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
the translation, or <I>msgid</I> or
|
||||
<I>msgidPlural</I> if none is found
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>See Also</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<A HREF="GNU_Gettext_GettextResourceManager.html" TARGET="contents">GNU.Gettext.GettextResourceManager Class</A>, <A HREF="GNU_Gettext.html" TARGET="members">GNU.Gettext Namespace</A>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<HR>
|
||||
|
||||
<A NAME="GettextResourceManager.GetString%28System.String%2C%20System.Globalization.CultureInfo%29%20Method"><H3>GettextResourceManager.GetString(System.String, System.Globalization.CultureInfo) Method</H3>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<TABLE COLS="1" ROWS="1" WIDTH="100%">
|
||||
<TR><TD BGCOLOR="#C0C0C0"><PRE>public override System.String GetString(System.String msgid, System.Globalization.CultureInfo culture);</PRE></TD></TR>
|
||||
</TABLE>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Summary</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
|
||||
Returns the translation of <I>msgid</I> in a given culture.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Parameters</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<DL>
|
||||
<DT>msgid</DT>
|
||||
<DD>the key string to be translated, an ASCII
|
||||
string</DD>
|
||||
</DL>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Return Value</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
the translation of <I>msgid</I>, or
|
||||
<I>msgid</I> if none is found
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>See Also</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<A HREF="GNU_Gettext_GettextResourceManager.html" TARGET="contents">GNU.Gettext.GettextResourceManager Class</A>, <A HREF="GNU_Gettext.html" TARGET="members">GNU.Gettext Namespace</A>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<HR>
|
||||
|
||||
<A NAME="GettextResourceManager.GetString%28System.String%29%20Method"><H3>GettextResourceManager.GetString(System.String) Method</H3>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<TABLE COLS="1" ROWS="1" WIDTH="100%">
|
||||
<TR><TD BGCOLOR="#C0C0C0"><PRE>public override System.String GetString(System.String msgid);</PRE></TD></TR>
|
||||
</TABLE>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Summary</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
|
||||
Returns the translation of <I>msgid</I> in the current
|
||||
culture.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Parameters</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<DL>
|
||||
<DT>msgid</DT>
|
||||
<DD>the key string to be translated, an ASCII
|
||||
string</DD>
|
||||
</DL>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Return Value</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
the translation of <I>msgid</I>, or
|
||||
<I>msgid</I> if none is found
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>See Also</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<A HREF="GNU_Gettext_GettextResourceManager.html" TARGET="contents">GNU.Gettext.GettextResourceManager Class</A>, <A HREF="GNU_Gettext.html" TARGET="members">GNU.Gettext Namespace</A>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
|
@ -0,0 +1,356 @@
|
|||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>GNU.Gettext.GettextResourceSet Class</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
<H3>GNU.Gettext.GettextResourceSet Class</H3>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<TABLE COLS="1" ROWS="1" WIDTH="100%">
|
||||
<TR><TD BGCOLOR="#C0C0C0"><PRE>public class GettextResourceSet: System.Resources.ResourceSet</PRE></TD></TR>
|
||||
</TABLE>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Base Types</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
System.Resources.ResourceSet<BR>
|
||||
GettextResourceSet<P>
|
||||
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Library</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
GNU.Gettext
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Summary</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
|
||||
Each instance of this class encapsulates a single PO file.
|
||||
<P>
|
||||
|
||||
|
||||
This API of this class is not meant to be used directly; use
|
||||
<CODE>GettextResourceManager</CODE> instead.
|
||||
<P>
|
||||
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>See Also</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<A HREF="GNU_Gettext.html" TARGET="members">GNU.Gettext Namespace</A>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Members</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<P>
|
||||
|
||||
GettextResourceSet Constructors<P>
|
||||
|
||||
<A HREF="#GettextResourceSet%28%29%20Constructor" TARGET="contents">GettextResourceSet() Constructor</A><BR>
|
||||
<A HREF="#GettextResourceSet%28System.Resources.IResourceReader%29%20Constructor" TARGET="contents">GettextResourceSet(System.Resources.IResourceReader) Constructor</A><BR>
|
||||
<A HREF="#GettextResourceSet%28System.IO.Stream%29%20Constructor" TARGET="contents">GettextResourceSet(System.IO.Stream) Constructor</A><BR>
|
||||
<A HREF="#GettextResourceSet%28System.String%29%20Constructor" TARGET="contents">GettextResourceSet(System.String) Constructor</A><BR>
|
||||
<P>
|
||||
|
||||
GettextResourceSet Methods<P>
|
||||
|
||||
<A HREF="#GettextResourceSet.GetPluralString%20Method" TARGET="contents">GettextResourceSet.GetPluralString Method</A><BR>
|
||||
<A HREF="#GettextResourceSet.GetString%28System.String%29%20Method" TARGET="contents">GettextResourceSet.GetString(System.String) Method</A><BR>
|
||||
<A HREF="#GettextResourceSet.GetString%28System.String%2C%20bool%29%20Method" TARGET="contents">GettextResourceSet.GetString(System.String, bool) Method</A><BR>
|
||||
<A HREF="#GettextResourceSet.PluralEval%20Method" TARGET="contents">GettextResourceSet.PluralEval Method</A><BR>
|
||||
<P>
|
||||
|
||||
GettextResourceSet Properties<P>
|
||||
|
||||
<A HREF="#GettextResourceSet.Keys%20Property" TARGET="contents">GettextResourceSet.Keys Property</A><BR>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<HR>
|
||||
|
||||
<A NAME="GettextResourceSet%28%29%20Constructor"><H3>GettextResourceSet() Constructor</H3>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<TABLE COLS="1" ROWS="1" WIDTH="100%">
|
||||
<TR><TD BGCOLOR="#C0C0C0"><PRE>protected GettextResourceSet();</PRE></TD></TR>
|
||||
</TABLE>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Summary</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
|
||||
Creates a new message catalog. When using this constructor, you
|
||||
must override the <CODE>ReadResources</CODE> method, in order to initialize
|
||||
the <CODE>Table</CODE> property. The message catalog will support plural
|
||||
forms only if the <CODE>ReadResources</CODE> method installs values of type
|
||||
<CODE>String[]</CODE> and if the <CODE>PluralEval</CODE> method is overridden.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>See Also</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<A HREF="GNU_Gettext_GettextResourceSet.html" TARGET="contents">GNU.Gettext.GettextResourceSet Class</A>, <A HREF="GNU_Gettext.html" TARGET="members">GNU.Gettext Namespace</A>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<HR>
|
||||
|
||||
<A NAME="GettextResourceSet%28System.Resources.IResourceReader%29%20Constructor"><H3>GettextResourceSet(System.Resources.IResourceReader) Constructor</H3>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<TABLE COLS="1" ROWS="1" WIDTH="100%">
|
||||
<TR><TD BGCOLOR="#C0C0C0"><PRE>public GettextResourceSet(System.Resources.IResourceReader reader);</PRE></TD></TR>
|
||||
</TABLE>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Summary</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
|
||||
Creates a new message catalog, by reading the string/value pairs from
|
||||
the given <I>reader</I>. The message catalog will support
|
||||
plural forms only if the reader can produce values of type
|
||||
<CODE>String[]</CODE> and if the <CODE>PluralEval</CODE> method is overridden.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>See Also</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<A HREF="GNU_Gettext_GettextResourceSet.html" TARGET="contents">GNU.Gettext.GettextResourceSet Class</A>, <A HREF="GNU_Gettext.html" TARGET="members">GNU.Gettext Namespace</A>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<HR>
|
||||
|
||||
<A NAME="GettextResourceSet%28System.IO.Stream%29%20Constructor"><H3>GettextResourceSet(System.IO.Stream) Constructor</H3>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<TABLE COLS="1" ROWS="1" WIDTH="100%">
|
||||
<TR><TD BGCOLOR="#C0C0C0"><PRE>public GettextResourceSet(System.IO.Stream stream);</PRE></TD></TR>
|
||||
</TABLE>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Summary</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
|
||||
Creates a new message catalog, by reading the string/value pairs from
|
||||
the given <I>stream</I>, which should have the format of
|
||||
a <CODE>.resources</CODE> file. The message catalog will not support plural
|
||||
forms.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>See Also</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<A HREF="GNU_Gettext_GettextResourceSet.html" TARGET="contents">GNU.Gettext.GettextResourceSet Class</A>, <A HREF="GNU_Gettext.html" TARGET="members">GNU.Gettext Namespace</A>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<HR>
|
||||
|
||||
<A NAME="GettextResourceSet%28System.String%29%20Constructor"><H3>GettextResourceSet(System.String) Constructor</H3>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<TABLE COLS="1" ROWS="1" WIDTH="100%">
|
||||
<TR><TD BGCOLOR="#C0C0C0"><PRE>public GettextResourceSet(System.String fileName);</PRE></TD></TR>
|
||||
</TABLE>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Summary</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
|
||||
Creates a new message catalog, by reading the string/value pairs from
|
||||
the file with the given <I>fileName</I>. The file should
|
||||
be in the format of a <CODE>.resources</CODE> file. The message catalog will
|
||||
not support plural forms.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>See Also</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<A HREF="GNU_Gettext_GettextResourceSet.html" TARGET="contents">GNU.Gettext.GettextResourceSet Class</A>, <A HREF="GNU_Gettext.html" TARGET="members">GNU.Gettext Namespace</A>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<HR>
|
||||
|
||||
<A NAME="GettextResourceSet.GetPluralString%20Method"><H3>GettextResourceSet.GetPluralString Method</H3>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<TABLE COLS="1" ROWS="1" WIDTH="100%">
|
||||
<TR><TD BGCOLOR="#C0C0C0"><PRE>public virtual System.String GetPluralString(System.String msgid, System.String msgidPlural, long n);</PRE></TD></TR>
|
||||
</TABLE>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Summary</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
|
||||
Returns the translation of <I>msgid</I> and
|
||||
<I>msgidPlural</I>, choosing the right plural form
|
||||
depending on the number <I>n</I>.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Parameters</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<DL>
|
||||
<DT>msgid</DT>
|
||||
<DD>the key string to be translated, an ASCII
|
||||
string</DD>
|
||||
<DT>msgidPlural</DT>
|
||||
<DD>the English plural of <I>msgid</I>,
|
||||
an ASCII string</DD>
|
||||
<DT>n</DT>
|
||||
<DD>the number, should be >= 0</DD>
|
||||
</DL>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Return Value</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
the translation, or <CODE>null</CODE> if none is found
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>See Also</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<A HREF="GNU_Gettext_GettextResourceSet.html" TARGET="contents">GNU.Gettext.GettextResourceSet Class</A>, <A HREF="GNU_Gettext.html" TARGET="members">GNU.Gettext Namespace</A>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<HR>
|
||||
|
||||
<A NAME="GettextResourceSet.GetString%28System.String%29%20Method"><H3>GettextResourceSet.GetString(System.String) Method</H3>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<TABLE COLS="1" ROWS="1" WIDTH="100%">
|
||||
<TR><TD BGCOLOR="#C0C0C0"><PRE>public override System.String GetString(System.String msgid);</PRE></TD></TR>
|
||||
</TABLE>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Summary</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
|
||||
Returns the translation of <I>msgid</I>.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Parameters</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<DL>
|
||||
<DT>msgid</DT>
|
||||
<DD>the key string to be translated, an ASCII
|
||||
string</DD>
|
||||
</DL>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Return Value</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
the translation of <I>msgid</I>, or <CODE>null</CODE> if
|
||||
none is found
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>See Also</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<A HREF="GNU_Gettext_GettextResourceSet.html" TARGET="contents">GNU.Gettext.GettextResourceSet Class</A>, <A HREF="GNU_Gettext.html" TARGET="members">GNU.Gettext Namespace</A>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<HR>
|
||||
|
||||
<A NAME="GettextResourceSet.GetString%28System.String%2C%20bool%29%20Method"><H3>GettextResourceSet.GetString(System.String, bool) Method</H3>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<TABLE COLS="1" ROWS="1" WIDTH="100%">
|
||||
<TR><TD BGCOLOR="#C0C0C0"><PRE>public override System.String GetString(System.String msgid, bool ignoreCase);</PRE></TD></TR>
|
||||
</TABLE>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Summary</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
|
||||
Returns the translation of <I>msgid</I>, with possibly
|
||||
case-insensitive lookup.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Parameters</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<DL>
|
||||
<DT>msgid</DT>
|
||||
<DD>the key string to be translated, an ASCII
|
||||
string</DD>
|
||||
</DL>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Return Value</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
the translation of <I>msgid</I>, or <CODE>null</CODE> if
|
||||
none is found
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>See Also</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<A HREF="GNU_Gettext_GettextResourceSet.html" TARGET="contents">GNU.Gettext.GettextResourceSet Class</A>, <A HREF="GNU_Gettext.html" TARGET="members">GNU.Gettext Namespace</A>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<HR>
|
||||
|
||||
<A NAME="GettextResourceSet.PluralEval%20Method"><H3>GettextResourceSet.PluralEval Method</H3>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<TABLE COLS="1" ROWS="1" WIDTH="100%">
|
||||
<TR><TD BGCOLOR="#C0C0C0"><PRE>protected virtual long PluralEval(long n);</PRE></TD></TR>
|
||||
</TABLE>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Summary</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
|
||||
Returns the index of the plural form to be chosen for a given number.
|
||||
The default implementation is the Germanic plural formula:
|
||||
zero for <I>n</I> == 1, one for <I>n</I> != 1.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>See Also</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<A HREF="GNU_Gettext_GettextResourceSet.html" TARGET="contents">GNU.Gettext.GettextResourceSet Class</A>, <A HREF="GNU_Gettext.html" TARGET="members">GNU.Gettext Namespace</A>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<HR>
|
||||
|
||||
<A NAME="GettextResourceSet.Keys%20Property"><H3>GettextResourceSet.Keys Property</H3>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<TABLE COLS="1" ROWS="1" WIDTH="100%">
|
||||
<TR><TD BGCOLOR="#C0C0C0"><PRE>public virtual System.Collections.ICollection Keys { get; }</PRE></TD></TR>
|
||||
</TABLE>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>Summary</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
|
||||
Returns the keys of this resource set, i.e. the strings for which
|
||||
<CODE>GetObject()</CODE> can return a non-null value.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H4>See Also</H4>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<A HREF="GNU_Gettext_GettextResourceSet.html" TARGET="contents">GNU.Gettext.GettextResourceSet Class</A>, <A HREF="GNU_Gettext.html" TARGET="members">GNU.Gettext Namespace</A>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
|
@ -0,0 +1,11 @@
|
|||
<HTML>
|
||||
<HEAD><TITLE>-</TITLE></HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
<H1>-</H1>
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<A HREF="GNU_Gettext.html" TARGET="members">GNU.Gettext Namespace</A><BR>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
|
@ -0,0 +1,10 @@
|
|||
<HTML>
|
||||
<HEAD><TITLE>-</TITLE></HEAD>
|
||||
<FRAMESET COLS="150,*">
|
||||
<FRAMESET ROWS="50%,50%">
|
||||
<FRAME SRC="namespaces.html" NAME="namespaces">
|
||||
<FRAME SRC="GNU_Gettext.html" NAME="members">
|
||||
</FRAMESET>
|
||||
<FRAME SRC="begin.html" NAME="contents">
|
||||
</FRAMESET>
|
||||
</HTML>
|
|
@ -0,0 +1,6 @@
|
|||
<HTML>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
<I>Namespaces</I><P>
|
||||
<A HREF="GNU_Gettext.html" TARGET="members">GNU.Gettext</A><BR>
|
||||
</BODY>
|
||||
</HTML>
|
|
@ -0,0 +1,213 @@
|
|||
<!-- Creator : groff version 1.18.1 -->
|
||||
<html>
|
||||
<head>
|
||||
<meta name="generator" content="groff -Thtml, see www.gnu.org">
|
||||
<meta name="Content-Style" content="text/css">
|
||||
<title>ENVSUBST</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1 align=center>ENVSUBST</h1>
|
||||
<a href="#NAME">NAME</a><br>
|
||||
<a href="#SYNOPSIS">SYNOPSIS</a><br>
|
||||
<a href="#DESCRIPTION">DESCRIPTION</a><br>
|
||||
<a href="#AUTHOR">AUTHOR</a><br>
|
||||
<a href="#REPORTING BUGS">REPORTING BUGS</a><br>
|
||||
<a href="#COPYRIGHT">COPYRIGHT</a><br>
|
||||
<a href="#SEE ALSO">SEE ALSO</a><br>
|
||||
|
||||
<hr>
|
||||
<a name="NAME"></a>
|
||||
<h2>NAME</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>envsubst − substitutes environment variables in
|
||||
shell format strings</p>
|
||||
</td>
|
||||
</table>
|
||||
<a name="SYNOPSIS"></a>
|
||||
<h2>SYNOPSIS</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p><b>envsubst</b> [<i>OPTION</i>] [<i>SHELL-FORMAT</i>]</p>
|
||||
</td>
|
||||
</table>
|
||||
<a name="DESCRIPTION"></a>
|
||||
<h2>DESCRIPTION</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>Substitutes the values of environment variables.</p>
|
||||
</td>
|
||||
</table>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="4%"></td>
|
||||
<td width="95%">
|
||||
<p><b>Operation mode:</b></p></td>
|
||||
</table>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p><b>−v</b>, <b>−−variables</b></p></td>
|
||||
</table>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="21%"></td>
|
||||
<td width="77%">
|
||||
<p>output the variables occurring in SHELL-FORMAT</p>
|
||||
</td>
|
||||
</table>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="4%"></td>
|
||||
<td width="95%">
|
||||
<p><b>Informative output:</b></p></td>
|
||||
</table>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p><b>−h</b>, <b>−−help</b></p></td>
|
||||
</table>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="21%"></td>
|
||||
<td width="77%">
|
||||
<p>display this help and exit</p>
|
||||
</td>
|
||||
</table>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p><b>−V</b>, <b>−−version</b></p></td>
|
||||
</table>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="21%"></td>
|
||||
<td width="77%">
|
||||
<p>output version information and exit</p>
|
||||
</td>
|
||||
</table>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>In normal operation mode, standard input is copied to
|
||||
standard output, with references to environment variables of
|
||||
the form $VARIABLE or ${VARIABLE} being replaced with the
|
||||
corresponding values. If a SHELL-FORMAT is given, only those
|
||||
environment variables that are referenced in SHELL-FORMAT
|
||||
are substituted; otherwise all environment variables
|
||||
references occurring in standard input are substituted.</p>
|
||||
<!-- INDENTATION -->
|
||||
<p>When <b>−−variables</b> is used, standard
|
||||
input is ignored, and the output consists of the environment
|
||||
variables that are referenced in SHELL-FORMAT, one per
|
||||
line.</p>
|
||||
</td>
|
||||
</table>
|
||||
<a name="AUTHOR"></a>
|
||||
<h2>AUTHOR</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>Written by Bruno Haible.</p>
|
||||
</td>
|
||||
</table>
|
||||
<a name="REPORTING BUGS"></a>
|
||||
<h2>REPORTING BUGS</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>Report bugs to <bug-gnu-gettext@gnu.org>.</p>
|
||||
</td>
|
||||
</table>
|
||||
<a name="COPYRIGHT"></a>
|
||||
<h2>COPYRIGHT</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>Copyright © 2003-2007 Free Software Foundation, Inc.
|
||||
License GPLv3+: GNU GPL version 3 or later
|
||||
<http://gnu.org/licenses/gpl.html><br>
|
||||
This is free software: you are free to change and
|
||||
redistribute it. There is NO WARRANTY, to the extent
|
||||
permitted by law.</p>
|
||||
</td>
|
||||
</table>
|
||||
<a name="SEE ALSO"></a>
|
||||
<h2>SEE ALSO</h2>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>The full documentation for <b>envsubst</b> is maintained
|
||||
as a Texinfo manual. If the <b>info</b> and <b>envsubst</b>
|
||||
programs are properly installed at your site, the
|
||||
command</p>
|
||||
</td>
|
||||
</table>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="20%"></td>
|
||||
<td width="79%">
|
||||
<p><b>info envsubst</b></p>
|
||||
</td>
|
||||
</table>
|
||||
<!-- INDENTATION -->
|
||||
<table width="100%" border=0 rules="none" frame="void"
|
||||
cols="2" cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="10%"></td>
|
||||
<td width="89%">
|
||||
<p>should give you access to the complete manual.</p>
|
||||
</td>
|
||||
</table>
|
||||
<hr>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,49 @@
|
|||
This directory contains simple examples of the use of GNU gettext.
|
||||
Each example is a simple "hello world" program with a very small message
|
||||
catalog, written in a particular programming language for a particular
|
||||
environment.
|
||||
|
||||
Example Language GUI Environment
|
||||
|
||||
hello-c C
|
||||
hello-c-gnome C GNOME
|
||||
hello-c++ C++
|
||||
hello-c++-qt C++ Qt
|
||||
hello-c++-kde C++ KDE
|
||||
hello-c++-gnome C++ GNOME
|
||||
hello-c++-wxwidgets C++ wxWidgets
|
||||
hello-objc ObjectiveC
|
||||
hello-objc-gnustep ObjectiveC GNUstep
|
||||
hello-objc-gnome ObjectiveC GNOME
|
||||
hello-sh Shell
|
||||
hello-python Python
|
||||
hello-clisp Lisp
|
||||
hello-librep librep
|
||||
hello-guile Scheme
|
||||
hello-smalltalk Smalltalk
|
||||
hello-java Java
|
||||
hello-java-awt Java AWT
|
||||
hello-java-swing Java Swing
|
||||
hello-java-qtjambi Java Qt
|
||||
hello-csharp C#
|
||||
hello-csharp-forms C# Forms
|
||||
hello-gawk awk
|
||||
hello-pascal Pascal
|
||||
hello-ycp YCP libyui
|
||||
hello-tcl Tcl
|
||||
hello-tcl-tk Tcl Tk
|
||||
hello-perl Perl
|
||||
hello-php PHP
|
||||
|
||||
Before building an example, you need to
|
||||
1. Build and install the GNU gettext package, as described in the INSTALL
|
||||
file.
|
||||
2. cd to the example and do
|
||||
./autogen.sh
|
||||
3. Then you can build the example as usual:
|
||||
./configure --prefix=/some/prefix
|
||||
make
|
||||
make install
|
||||
and see it work by executing
|
||||
/some/prefix/bin/hello
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
# csharpcomp.m4 serial 8
|
||||
dnl Copyright (C) 2003-2005, 2007, 2009-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# Prerequisites of csharpcomp.sh.
|
||||
# Checks for a C# compiler.
|
||||
# Sets at most one of HAVE_CSCC, HAVE_MCS, HAVE_CSC.
|
||||
# Sets HAVE_CSHARPCOMP to nonempty if csharpcomp.sh will work.
|
||||
# Also sets CSHARPCOMPFLAGS.
|
||||
AC_DEFUN([gt_CSHARPCOMP],
|
||||
[
|
||||
AC_REQUIRE([gt_CSHARP_CHOICE])
|
||||
AC_MSG_CHECKING([for C[#] compiler])
|
||||
HAVE_CSHARPCOMP=1
|
||||
pushdef([AC_MSG_CHECKING],[:])dnl
|
||||
pushdef([AC_CHECKING],[:])dnl
|
||||
pushdef([AC_MSG_RESULT],[:])dnl
|
||||
AC_CHECK_PROG([HAVE_CSCC_IN_PATH], [cscc], [yes])
|
||||
AC_CHECK_PROG([HAVE_MCS_IN_PATH], [mcs], [yes])
|
||||
AC_CHECK_PROG([HAVE_CSC_IN_PATH], [csc], [yes])
|
||||
popdef([AC_MSG_RESULT])dnl
|
||||
popdef([AC_CHECKING])dnl
|
||||
popdef([AC_MSG_CHECKING])dnl
|
||||
for impl in "$CSHARP_CHOICE" pnet mono sscli no; do
|
||||
case "$impl" in
|
||||
pnet)
|
||||
if test -n "$HAVE_CSCC_IN_PATH" \
|
||||
&& cscc --version >/dev/null 2>/dev/null \
|
||||
&& (
|
||||
# See if pnetlib is well installed.
|
||||
echo 'class ConfTest { static void Main() { } }' > conftest.cs
|
||||
cscc -o conftest.exe conftest.cs 2>/dev/null
|
||||
error=$?
|
||||
rm -f conftest.cs conftest.exe
|
||||
exit $error
|
||||
); then
|
||||
HAVE_CSCC=1
|
||||
ac_result="cscc"
|
||||
break
|
||||
fi
|
||||
;;
|
||||
mono)
|
||||
if test -n "$HAVE_MCS_IN_PATH" \
|
||||
&& mcs --version >/dev/null 2>/dev/null \
|
||||
&& mcs --version 2>/dev/null | grep Mono >/dev/null; then
|
||||
HAVE_MCS=1
|
||||
ac_result="mcs"
|
||||
break
|
||||
fi
|
||||
;;
|
||||
sscli)
|
||||
if test -n "$HAVE_CSC_IN_PATH" \
|
||||
&& csc -help >/dev/null 2>/dev/null \
|
||||
&& { if csc -help 2>/dev/null | grep -i chicken > /dev/null; then false; else true; fi; }; then
|
||||
HAVE_CSC=1
|
||||
ac_result="csc"
|
||||
break
|
||||
fi
|
||||
;;
|
||||
no)
|
||||
HAVE_CSHARPCOMP=
|
||||
ac_result="no"
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
AC_MSG_RESULT([$ac_result])
|
||||
AC_SUBST([HAVE_CSCC])
|
||||
AC_SUBST([HAVE_MCS])
|
||||
AC_SUBST([HAVE_CSC])
|
||||
dnl Provide a default for CSHARPCOMPFLAGS.
|
||||
if test -z "${CSHARPCOMPFLAGS+set}"; then
|
||||
CSHARPCOMPFLAGS="-O -g"
|
||||
fi
|
||||
AC_SUBST([CSHARPCOMPFLAGS])
|
||||
])
|
|
@ -0,0 +1,158 @@
|
|||
#!/bin/sh
|
||||
# Compile a C# program.
|
||||
|
||||
# Copyright (C) 2003-2006, 2009-2010 Free Software Foundation, Inc.
|
||||
# Written by Bruno Haible <bruno@clisp.org>, 2003.
|
||||
#
|
||||
# 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 3 of the License, 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, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# This uses the same choices as csharpcomp.c, but instead of relying on the
|
||||
# environment settings at run time, it uses the environment variables
|
||||
# present at configuration time.
|
||||
#
|
||||
# This is a separate shell script, because the various C# compilers have
|
||||
# different command line options.
|
||||
#
|
||||
# Usage: /bin/sh csharpcomp.sh [OPTION] SOURCE.cs ... RES.resource ...
|
||||
# Options:
|
||||
# -o PROGRAM.exe or -o LIBRARY.dll
|
||||
# set the output assembly name
|
||||
# -L DIRECTORY search for C# libraries also in DIRECTORY
|
||||
# -l LIBRARY reference the C# library LIBRARY.dll
|
||||
# -O optimize
|
||||
# -g generate debugging information
|
||||
|
||||
# func_tmpdir
|
||||
# creates a temporary directory.
|
||||
# Sets variable
|
||||
# - tmp pathname of freshly created temporary directory
|
||||
func_tmpdir ()
|
||||
{
|
||||
# Use the environment variable TMPDIR, falling back to /tmp. This allows
|
||||
# users to specify a different temporary directory, for example, if their
|
||||
# /tmp is filled up or too small.
|
||||
: ${TMPDIR=/tmp}
|
||||
{
|
||||
# Use the mktemp program if available. If not available, hide the error
|
||||
# message.
|
||||
tmp=`(umask 077 && mktemp -d -q "$TMPDIR/gtXXXXXX") 2>/dev/null` &&
|
||||
test -n "$tmp" && test -d "$tmp"
|
||||
} ||
|
||||
{
|
||||
# Use a simple mkdir command. It is guaranteed to fail if the directory
|
||||
# already exists. $RANDOM is bash specific and expands to empty in shells
|
||||
# other than bash, ksh and zsh. Its use does not increase security;
|
||||
# rather, it minimizes the probability of failure in a very cluttered /tmp
|
||||
# directory.
|
||||
tmp=$TMPDIR/gt$$-$RANDOM
|
||||
(umask 077 && mkdir "$tmp")
|
||||
} ||
|
||||
{
|
||||
echo "$0: cannot create a temporary directory in $TMPDIR" >&2
|
||||
{ (exit 1); exit 1; }
|
||||
}
|
||||
}
|
||||
|
||||
sed_quote_subst='s/\([|&;<>()$`"'"'"'*?[#~=% \\]\)/\\\1/g'
|
||||
options_cscc=
|
||||
options_mcs=
|
||||
options_csc="-nologo"
|
||||
sources=
|
||||
while test $# != 0; do
|
||||
case "$1" in
|
||||
-o)
|
||||
case "$2" in
|
||||
*.dll)
|
||||
options_cscc="$options_cscc -shared"
|
||||
options_mcs="$options_mcs -target:library"
|
||||
options_csc="$options_csc -target:library"
|
||||
;;
|
||||
*.exe)
|
||||
options_csc="$options_csc -target:exe"
|
||||
;;
|
||||
esac
|
||||
options_cscc="$options_cscc -o "`echo "$2" | sed -e "$sed_quote_subst"`
|
||||
options_mcs="$options_mcs -out:"`echo "$2" | sed -e "$sed_quote_subst"`
|
||||
options_csc="$options_csc -out:"`echo "$2" | sed -e "$sed_quote_subst"`
|
||||
shift
|
||||
;;
|
||||
-L)
|
||||
options_cscc="$options_cscc -L "`echo "$2" | sed -e "$sed_quote_subst"`
|
||||
options_mcs="$options_mcs -lib:"`echo "$2" | sed -e "$sed_quote_subst"`
|
||||
options_csc="$options_csc -lib:"`echo "$2" | sed -e "$sed_quote_subst"`
|
||||
shift
|
||||
;;
|
||||
-l)
|
||||
options_cscc="$options_cscc -l "`echo "$2" | sed -e "$sed_quote_subst"`
|
||||
options_mcs="$options_mcs -reference:"`echo "$2" | sed -e "$sed_quote_subst"`
|
||||
options_csc="$options_csc -reference:"`echo "$2" | sed -e "$sed_quote_subst"`".dll"
|
||||
shift
|
||||
;;
|
||||
-O)
|
||||
options_cscc="$options_cscc -O"
|
||||
options_csc="$options_csc -optimize+"
|
||||
;;
|
||||
-g)
|
||||
options_cscc="$options_cscc -g"
|
||||
options_mcs="$options_mcs -debug"
|
||||
options_csc="$options_csc -debug+"
|
||||
;;
|
||||
-*)
|
||||
echo "csharpcomp: unknown option '$1'" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
*.resources)
|
||||
options_cscc="$options_cscc -fresources="`echo "$1" | sed -e "$sed_quote_subst"`
|
||||
options_mcs="$options_mcs -resource:"`echo "$1" | sed -e "$sed_quote_subst"`
|
||||
options_csc="$options_csc -resource:"`echo "$1" | sed -e "$sed_quote_subst"`
|
||||
;;
|
||||
*.cs)
|
||||
sources="$sources "`echo "$1" | sed -e "$sed_quote_subst"`
|
||||
;;
|
||||
*)
|
||||
echo "csharpcomp: unknown type of argument '$1'" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if test -n "@HAVE_CSCC@"; then
|
||||
test -z "$CSHARP_VERBOSE" || echo cscc $options_cscc $sources
|
||||
exec cscc $options_cscc $sources
|
||||
else
|
||||
if test -n "@HAVE_MCS@"; then
|
||||
# mcs prints it errors and warnings to stdout, not stderr. Furthermore it
|
||||
# adds a useless line "Compilation succeeded..." at the end. Correct both.
|
||||
sed_drop_success_line='${
|
||||
/^Compilation succeeded/d
|
||||
}'
|
||||
func_tmpdir
|
||||
trap 'rm -rf "$tmp"' 1 2 3 15
|
||||
test -z "$CSHARP_VERBOSE" || echo mcs $options_mcs $sources
|
||||
mcs $options_mcs $sources > "$tmp"/mcs.err
|
||||
result=$?
|
||||
sed -e "$sed_drop_success_line" < "$tmp"/mcs.err >&2
|
||||
rm -rf "$tmp"
|
||||
exit $result
|
||||
else
|
||||
if test -n "@HAVE_CSC@"; then
|
||||
test -z "$CSHARP_VERBOSE" || echo csc $options_csc $sources
|
||||
exec csc $options_csc $sources
|
||||
else
|
||||
echo 'C# compiler not found, try installing pnet, then reconfigure' 1>&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
Двоичный файл не отображается.
|
@ -0,0 +1,86 @@
|
|||
# csharpexec.m4 serial 4
|
||||
dnl Copyright (C) 2003-2005, 2009-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# Prerequisites of csharpexec.sh.
|
||||
# Checks for a C# execution engine.
|
||||
# gt_CSHARPEXEC or gt_CSHARPEXEC(testexecutable, its-directory)
|
||||
# Sets at most one of HAVE_ILRUN, HAVE_MONO, HAVE_CLIX.
|
||||
# Sets HAVE_CSHARPEXEC to nonempty if csharpexec.sh will work.
|
||||
AC_DEFUN([gt_CSHARPEXEC],
|
||||
[
|
||||
AC_REQUIRE([gt_CSHARP_CHOICE])
|
||||
AC_MSG_CHECKING([for C[#] program execution engine])
|
||||
AC_EGREP_CPP([yes], [
|
||||
#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
|
||||
yes
|
||||
#endif
|
||||
], MONO_PATH_SEPARATOR=';', MONO_PATH_SEPARATOR=':')
|
||||
HAVE_CSHARPEXEC=1
|
||||
pushdef([AC_MSG_CHECKING],[:])dnl
|
||||
pushdef([AC_CHECKING],[:])dnl
|
||||
pushdef([AC_MSG_RESULT],[:])dnl
|
||||
AC_CHECK_PROG([HAVE_ILRUN_IN_PATH], [ilrun], [yes])
|
||||
AC_CHECK_PROG([HAVE_MONO_IN_PATH], [mono], [yes])
|
||||
AC_CHECK_PROG([HAVE_CLIX_IN_PATH], [clix], [yes])
|
||||
popdef([AC_MSG_RESULT])dnl
|
||||
popdef([AC_CHECKING])dnl
|
||||
popdef([AC_MSG_CHECKING])dnl
|
||||
for impl in "$CSHARP_CHOICE" pnet mono no; do
|
||||
case "$impl" in
|
||||
pnet)
|
||||
if test -n "$HAVE_ILRUN_IN_PATH" \
|
||||
&& ilrun --version >/dev/null 2>/dev/null \
|
||||
ifelse([$1], , , [&& ilrun $2/$1 >/dev/null 2>/dev/null]); then
|
||||
HAVE_ILRUN=1
|
||||
ac_result="ilrun"
|
||||
break
|
||||
fi
|
||||
;;
|
||||
mono)
|
||||
if test -n "$HAVE_MONO_IN_PATH" \
|
||||
&& mono --version >/dev/null 2>/dev/null \
|
||||
ifelse([$1], , , [&& mono $2/$1 >/dev/null 2>/dev/null]); then
|
||||
HAVE_MONO=1
|
||||
ac_result="mono"
|
||||
break
|
||||
fi
|
||||
;;
|
||||
sscli)
|
||||
if test -n "$HAVE_CLIX_IN_PATH" \
|
||||
ifelse([$1], , , [&& clix $2/$1 >/dev/null 2>/dev/null]); then
|
||||
HAVE_CLIX=1
|
||||
case $host_os in
|
||||
cygwin* | mingw* | pw32*)
|
||||
CLIX_PATH_VAR=PATH
|
||||
;;
|
||||
darwin* | rhapsody*)
|
||||
CLIX_PATH_VAR=DYLD_LIBRARY_PATH
|
||||
;;
|
||||
*)
|
||||
CLIX_PATH_VAR=LD_LIBRARY_PATH
|
||||
;;
|
||||
esac
|
||||
eval CLIX_PATH=\"\$CLIX_PATH_VAR\"
|
||||
ac_result="clix"
|
||||
break
|
||||
fi
|
||||
;;
|
||||
no)
|
||||
HAVE_CSHARPEXEC=
|
||||
ac_result="no"
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
AC_MSG_RESULT([$ac_result])
|
||||
AC_SUBST([MONO_PATH])
|
||||
AC_SUBST([MONO_PATH_SEPARATOR])
|
||||
AC_SUBST([CLIX_PATH_VAR])
|
||||
AC_SUBST([CLIX_PATH])
|
||||
AC_SUBST([HAVE_ILRUN])
|
||||
AC_SUBST([HAVE_MONO])
|
||||
AC_SUBST([HAVE_CLIX])
|
||||
])
|
|
@ -0,0 +1,95 @@
|
|||
#!/bin/sh
|
||||
# Execute a C# program.
|
||||
|
||||
# Copyright (C) 2003, 2005, 2009, 2010 Free Software Foundation, Inc.
|
||||
# Written by Bruno Haible <bruno@clisp.org>, 2003.
|
||||
#
|
||||
# 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 3 of the License, 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, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# This uses the same choices as csharpexec.c, but instead of relying on the
|
||||
# environment settings at run time, it uses the environment variables
|
||||
# present at configuration time.
|
||||
#
|
||||
# This is a separate shell script, because the various C# interpreters have
|
||||
# different command line options.
|
||||
#
|
||||
# Usage: /bin/sh csharpexec.sh [OPTION] program.exe [ARGUMENTS]
|
||||
# Options:
|
||||
# -L DIRECTORY search for C# libraries also in DIRECTORY
|
||||
|
||||
sed_quote_subst='s/\([|&;<>()$`"'"'"'*?[#~=% \\]\)/\\\1/g'
|
||||
options_ilrun=
|
||||
libdirs_mono=
|
||||
prog=
|
||||
while test $# != 0; do
|
||||
case "$1" in
|
||||
-L)
|
||||
options_ilrun="$options_ilrun -L "`echo "$2" | sed -e "$sed_quote_subst"`
|
||||
libdirs_mono="${libdirs_mono:+$libdirs_mono@MONO_PATH_SEPARATOR@}$2"
|
||||
shift
|
||||
;;
|
||||
-*)
|
||||
echo "csharpexec: unknown option '$1'" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
prog="$1"
|
||||
break
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
if test -z "$prog"; then
|
||||
echo "csharpexec: no program specified" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
case "$prog" in
|
||||
*.exe) ;;
|
||||
*)
|
||||
echo "csharpexec: program is not a .exe" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
if test -n "@HAVE_ILRUN@"; then
|
||||
test -z "$CSHARP_VERBOSE" || echo ilrun $options_ilrun "$@"
|
||||
exec ilrun $options_ilrun "$@"
|
||||
else
|
||||
if test -n "@HAVE_MONO@"; then
|
||||
CONF_MONO_PATH='@MONO_PATH@'
|
||||
if test -n "$libdirs_mono"; then
|
||||
MONO_PATH="$libdirs_mono${CONF_MONO_PATH:+@MONO_PATH_SEPARATOR@$CONF_MONO_PATH}"
|
||||
else
|
||||
MONO_PATH="$CONF_MONO_PATH"
|
||||
fi
|
||||
export MONO_PATH
|
||||
test -z "$CSHARP_VERBOSE" || echo mono "$@"
|
||||
exec mono "$@"
|
||||
else
|
||||
if test -n "@HAVE_CLIX@"; then
|
||||
CONF_CLIX_PATH='@CLIX_PATH@'
|
||||
if test -n "$libdirs_mono"; then
|
||||
@CLIX_PATH_VAR@="$libdirs_mono${CONF_CLIX_PATH:+@MONO_PATH_SEPARATOR@$CONF_CLIX_PATH}"
|
||||
else
|
||||
@CLIX_PATH_VAR@="$CONF_CLIX_PATH"
|
||||
fi
|
||||
export @CLIX_PATH_VAR@
|
||||
test -z "$CSHARP_VERBOSE" || echo clix "$@"
|
||||
exec clix "$@"
|
||||
else
|
||||
echo 'C# virtual machine not found, try installing pnet, then reconfigure' 1>&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
|
@ -0,0 +1,74 @@
|
|||
# gcj.m4 serial 2 (gettext-0.17)
|
||||
dnl Copyright (C) 2002, 2006 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# Check for a Java compiler that creates executables.
|
||||
# Assigns the variables GCJ and GCJFLAGS, and set HAVE_GCJ to nonempty,
|
||||
# if found. Otherwise sets HAVE_GCJ to empty.
|
||||
|
||||
AC_DEFUN([gt_GCJ],
|
||||
[
|
||||
AC_ARG_VAR([GCJ], [Java native code compiler command])
|
||||
AC_ARG_VAR([GCJFLAGS], [Java native code compiler flags])
|
||||
|
||||
AC_MSG_CHECKING([for Java to native code compiler])
|
||||
# Search for the gcj command or use the one provided by the user.
|
||||
if test -z "$GCJ"; then
|
||||
pushdef([AC_MSG_CHECKING],[:])dnl
|
||||
pushdef([AC_CHECKING],[:])dnl
|
||||
pushdef([AC_MSG_RESULT],[:])dnl
|
||||
AC_CHECK_TOOL([GCJ], [gcj], [none])
|
||||
popdef([AC_MSG_RESULT])dnl
|
||||
popdef([AC_CHECKING])dnl
|
||||
popdef([AC_MSG_CHECKING])dnl
|
||||
fi
|
||||
# Choose GCJFLAGS or use the one provided by the user.
|
||||
if test "$GCJ" != none; then
|
||||
test "${GCJFLAGS+set}" != set || GCJFLAGS="-O2 -g"
|
||||
fi
|
||||
# Check whether the version is ok and it can create executables.
|
||||
ac_gcj_link="$GCJ $GCJFLAGS conftest.java --main=conftest -o conftest$ac_exeext"
|
||||
changequote(,)dnl
|
||||
if test "$GCJ" != none \
|
||||
&& $GCJ --version 2>/dev/null | sed -e 's,^[^0-9]*,,' -e 1q | grep '^[3-9]' >/dev/null \
|
||||
&& (
|
||||
# See if libgcj.so is well installed and if exception handling works.
|
||||
cat > conftest.java <<EOF
|
||||
public class conftest {
|
||||
public static void main (String[] args) {
|
||||
try {
|
||||
java.util.ResourceBundle.getBundle("foobar");
|
||||
} catch (Exception e) {
|
||||
}
|
||||
System.exit(0);
|
||||
}
|
||||
}
|
||||
EOF
|
||||
changequote([,])dnl
|
||||
AC_TRY_EVAL([ac_gcj_link])
|
||||
error=$?
|
||||
if test $error = 0 && test "$cross_compiling" != yes; then
|
||||
# Run conftest and catch its exit status, but silently.
|
||||
error=`./conftest >/dev/null 2>&1; echo $?`
|
||||
test $error = 0 || error=1
|
||||
rm -f core conftest.core
|
||||
fi
|
||||
rm -f conftest.java conftest$ac_exeext
|
||||
exit $error
|
||||
); then
|
||||
:
|
||||
else
|
||||
GCJ=none
|
||||
fi
|
||||
AC_MSG_RESULT($GCJ)
|
||||
if test "$GCJ" != none; then
|
||||
HAVE_GCJ=1
|
||||
else
|
||||
HAVE_GCJ=
|
||||
fi
|
||||
AC_SUBST(GCJ)
|
||||
AC_SUBST(GCJFLAGS)
|
||||
AC_SUBST(HAVE_GCJ)
|
||||
])
|
|
@ -0,0 +1,637 @@
|
|||
# javacomp.m4 serial 12
|
||||
dnl Copyright (C) 2001-2003, 2006-2007, 2009-2010 Free Software Foundation,
|
||||
dnl Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# Prerequisites of javacomp.sh.
|
||||
# gt_JAVACOMP([source-version], [target-version])
|
||||
# Sets HAVE_JAVACOMP to nonempty if javacomp.sh will allow Java source code
|
||||
# according to source-version to be compiled to Java bytecode classes in the
|
||||
# target-version format.
|
||||
#
|
||||
# source-version can be: support for
|
||||
# 1.3 inner classes
|
||||
# 1.4 assert keyword
|
||||
# 1.5 generic classes and methods
|
||||
# 1.6 (not yet supported)
|
||||
#
|
||||
# target-version can be: classfile version:
|
||||
# 1.1 45.3
|
||||
# 1.2 46.0
|
||||
# 1.3 47.0
|
||||
# 1.4 48.0
|
||||
# 1.5 49.0
|
||||
# 1.6 50.0
|
||||
# The classfile version of a .class file can be determined through the "file"
|
||||
# command. More portably, the classfile major version can be determined through
|
||||
# "od -A n -t d1 -j 7 -N 1 classfile".
|
||||
# target-version can also be omitted. In this case, the required target-version
|
||||
# is determined from the found JVM (see macro gt_JAVAEXEC):
|
||||
# target-version for JVM
|
||||
# 1.1 JDK 1.1, jview
|
||||
# 1.2 JDK/JRE 1.2
|
||||
# 1.3 JDK/JRE 1.3, gij 3.3, 3.4
|
||||
# 1.4 JDK/JRE 1.4, gij 4.0, 4.1
|
||||
# 1.5 JDK/JRE 1.5
|
||||
# 1.6 JDK/JRE 1.6
|
||||
# Note: gij >= 3.3 can in some cases handle classes compiled with -target 1.4,
|
||||
# and gij >= 4.1 can in some cases partially handle classes compiled with
|
||||
# -target 1.5, but I have no idea how complete this support is.
|
||||
#
|
||||
# Specifying target-version is useful when building a library (.jar) that is
|
||||
# useful outside the given package. Omitting target-version is useful when
|
||||
# building an application.
|
||||
#
|
||||
# It is unreasonable to ask for:
|
||||
# - target-version < 1.4 with source-version >= 1.4, or
|
||||
# - target-version < 1.5 with source-version >= 1.5, or
|
||||
# - target-version < 1.6 with source-version >= 1.6,
|
||||
# because even Sun's javac doesn't support these combinations.
|
||||
#
|
||||
# It is redundant to ask for a target-version > source-version, since the
|
||||
# smaller target-version = source-version will also always work and newer JVMs
|
||||
# support the older target-versions too. Except for the case
|
||||
# target-version = 1.4, source-version = 1.3, which allows gcj versions 3.0
|
||||
# to 3.2 to be used.
|
||||
|
||||
AC_DEFUN([gt_JAVACOMP],
|
||||
[
|
||||
ifelse([$2], [], [AC_REQUIRE([gt_JAVAEXEC])], [])
|
||||
AC_EGREP_CPP([yes], [
|
||||
#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
|
||||
yes
|
||||
#endif
|
||||
], CLASSPATH_SEPARATOR=';', CLASSPATH_SEPARATOR=':')
|
||||
source_version=$1
|
||||
test -n "$source_version" || {
|
||||
AC_MSG_ERROR([missing source-version argument to gt_@&t@JAVACOMP])
|
||||
}
|
||||
ifelse([$2], [],
|
||||
[if test -n "$HAVE_JAVAEXEC"; then
|
||||
dnl Use $CONF_JAVA to determine the JVM's version.
|
||||
changequote(,)dnl
|
||||
cat > conftestver.java <<EOF
|
||||
public class conftestver {
|
||||
public static void main (String[] args) {
|
||||
System.out.println(System.getProperty("java.specification.version"));
|
||||
}
|
||||
}
|
||||
EOF
|
||||
changequote([,])dnl
|
||||
dnl A precompiled version of conftestver.java, compiled with
|
||||
dnl "javac -target 1.1". This avoids having to compile conftestver.java
|
||||
dnl during each test for a suitable Java compiler.
|
||||
dnl For the conversion from binary to this ASCII encapsulation, avoiding
|
||||
dnl to assume the presence of uudecode, use the command
|
||||
dnl $ od -A n -t o1 < conftestver.class | tr ' ' '\012'| sort | uniq | sed -e '/^$/d' -e 's,^,\\,' | tr -d '\012'
|
||||
dnl and the long tr command in opposite direction.
|
||||
dnl Finally move the position corresponding to \055 to the last position,
|
||||
dnl to work around a coreutils-5.x bug.
|
||||
echo 'yzwx!$!I!D,!)!3+!4!5*!6,!4!7,!8!9)!:)!;"!(MeienN"!$FGW"!%Ojab"!2QeibRohZblVYZgb"!%hYei"!9FXQfYpYKgYidKUnleidLGW"!,Ujol_bPegb"!3_jicnbmnpblJfYpY/!*!+)!</!=!>"!=fYpYJmkb_ece_YnejiJpblmeji/!?!@)!A/!B!C"!._jicnbmnpbl"!3fYpYKgYidKSZfb_n"!3fYpYKgYidKUqmnbh"!$jon"!8QfYpYKejKTleinUnlbYhL"!.dbnTljkblnq"!EFQfYpYKgYidKUnleidLGQfYpYKgYidKUnleidL"!6fYpYKejKTleinUnlbYh"!)kleingi"!8FQfYpYKgYidKUnleidLGW!D!(!)!!!!!#!"!*!+!"!,!!!@!"!"!!!&Hu!"r!!!"!.!!!(!"!!!"!+!/!0!"!,!!!F!#!"!!!/s!#5$v!%t!&r!!!"!.!!!,!#!!!$!.!%!"!1!!!#!2' \
|
||||
| tr -d '\012\015' \
|
||||
| tr '!"#$%&()*+,./0123456789:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyzI' '\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\046\050\051\052\056\057\073\074\076\103\106\114\116\117\120\123\124\126\133\141\142\143\144\145\146\147\151\152\154\155\156\157\160\162\163\164\165\166\171\261\262\266\267\270\272\276\312\376\055' \
|
||||
> conftestver.class
|
||||
target_version=`{
|
||||
unset JAVA_HOME
|
||||
echo "$as_me:__oline__: CLASSPATH=.${CLASSPATH:+$CLASSPATH_SEPARATOR$CLASSPATH} $CONF_JAVA conftestver" >&AS_MESSAGE_LOG_FD
|
||||
CLASSPATH=.${CLASSPATH:+$CLASSPATH_SEPARATOR$CLASSPATH} $CONF_JAVA conftestver 2>&AS_MESSAGE_LOG_FD
|
||||
}`
|
||||
case "$target_version" in
|
||||
1.1 | 1.2 | 1.3 | 1.4 | 1.5 | 1.6) ;;
|
||||
null)
|
||||
dnl JDK 1.1.X returns null.
|
||||
target_version=1.1 ;;
|
||||
*) AC_MSG_WARN([unknown target-version $target_version, please update gt_@&t@JAVACOMP macro])
|
||||
target_version=1.1 ;;
|
||||
esac
|
||||
else
|
||||
target_version="1.1"
|
||||
fi
|
||||
],
|
||||
[target_version=$2])
|
||||
case "$source_version" in
|
||||
1.3) goodcode='class conftest {}'
|
||||
failcode='class conftestfail { static { assert(true); } }' ;;
|
||||
1.4) goodcode='class conftest { static { assert(true); } }'
|
||||
failcode='class conftestfail<T> { T foo() { return null; } }' ;;
|
||||
1.5) goodcode='class conftest<T> { T foo() { return null; } }'
|
||||
failcode='class conftestfail syntax error' ;;
|
||||
*) AC_MSG_ERROR([invalid source-version argument to gt_@&t@JAVACOMP: $source_version]) ;;
|
||||
esac
|
||||
case "$target_version" in
|
||||
1.1) cfversion=45 ;;
|
||||
1.2) cfversion=46 ;;
|
||||
1.3) cfversion=47 ;;
|
||||
1.4) cfversion=48 ;;
|
||||
1.5) cfversion=49 ;;
|
||||
1.6) cfversion=50 ;;
|
||||
*) AC_MSG_ERROR([invalid target-version argument to gt_@&t@JAVACOMP: $target_version]) ;;
|
||||
esac
|
||||
# Function to output the classfile version of a file (8th byte) in decimal.
|
||||
if od -A x < /dev/null >/dev/null 2>/dev/null; then
|
||||
# Use POSIX od.
|
||||
func_classfile_version ()
|
||||
{
|
||||
od -A n -t d1 -j 7 -N 1 "[$]1"
|
||||
}
|
||||
else
|
||||
# Use BSD hexdump.
|
||||
func_classfile_version ()
|
||||
{
|
||||
dd if="[$]1" bs=1 count=1 skip=7 2>/dev/null | hexdump -e '1/1 "%3d "'
|
||||
echo
|
||||
}
|
||||
fi
|
||||
AC_MSG_CHECKING([for Java compiler])
|
||||
dnl
|
||||
dnl The support of GNU gcj for target-version and source-version:
|
||||
dnl
|
||||
dnl gcj 3.0.4 to 4.2 does not have a way to specify the target-version.
|
||||
dnl It always assumes target-version=1.4 but labels the class files as 1.1.
|
||||
dnl One consequence of this is that gcj compiles GetURL.java to invalid
|
||||
dnl bytecode, which crashes with a VerifyError when executed by Sun Java
|
||||
dnl 1.3.1. The bug is registered as java/7066, see
|
||||
dnl http://gcc.gnu.org/bugzilla/show_bug.cgi?id=7066
|
||||
dnl gcj 4.3 and newer has an option -ftarget=1.X.
|
||||
dnl
|
||||
dnl For gcj < 3.3, the source-version always is 1.3.
|
||||
dnl For 3.3 <= gcj < 4.3, the source-version defaults to 1.4; option
|
||||
dnl "-fno-assert" switches to source-version 1.3.
|
||||
dnl gcj >= 4.3 has an option -fsource=1.X.
|
||||
dnl
|
||||
dnl The support of Sun javac for target-version and source-version:
|
||||
dnl
|
||||
dnl javac 1.3: -target 1.1 1.2 1.3 default: 1.1
|
||||
dnl source always: 1.3
|
||||
dnl
|
||||
dnl javac 1.4: -target 1.1 1.2 1.3 1.4 default: 1.2
|
||||
dnl -source 1.3 1.4 default: 1.3
|
||||
dnl -target 1.1/1.2/1.3 only possible with -source 1.3 or no -source
|
||||
dnl
|
||||
dnl javac 1.5: -target 1.1 1.2 1.3 1.4 1.5 default: 1.5
|
||||
dnl -source 1.3 1.4 1.5 default: 1.5
|
||||
dnl -target 1.1/1.2/1.3 only possible with -source 1.3
|
||||
dnl -target 1.4 only possible with -source 1.3/1.4
|
||||
dnl
|
||||
dnl javac 1.6: -target 1.1 1.2 1.3 1.4 1.5 1.6 default: 1.6
|
||||
dnl -source 1.3 1.4 1.5 1.6 default: 1.5
|
||||
dnl -target 1.1/1.2/1.3 only possible with -source 1.3
|
||||
dnl -target 1.4 only possible with -source 1.3/1.4
|
||||
dnl -target 1.5 only possible with -source 1.3/1.4/1.5 or no -source
|
||||
dnl
|
||||
dnl The support of jikes for target-version and source-version:
|
||||
dnl
|
||||
dnl jikes 1.14 does not have a way to specify the target-version. It
|
||||
dnl always assumes target-version=1.1.
|
||||
dnl
|
||||
dnl For jikes 1.14, the source-version always is 1.3.
|
||||
dnl
|
||||
CONF_JAVAC=
|
||||
HAVE_JAVAC_ENVVAR=
|
||||
HAVE_GCJ_C=
|
||||
HAVE_JAVAC=
|
||||
HAVE_JIKES=
|
||||
HAVE_JAVACOMP=
|
||||
changequote(,)dnl
|
||||
cat > conftestlib.java <<EOF
|
||||
public class conftestlib {
|
||||
public static void main (String[] args) {
|
||||
}
|
||||
}
|
||||
EOF
|
||||
changequote([,])dnl
|
||||
echo "$goodcode" > conftest.java
|
||||
echo "$failcode" > conftestfail.java
|
||||
dnl If the user has set the JAVAC environment variable, use that, if it
|
||||
dnl satisfies the constraints (possibly after adding -target and -source
|
||||
dnl options).
|
||||
if test -n "$JAVAC"; then
|
||||
dnl Try the original $JAVAC.
|
||||
if $JAVAC --version 2>/dev/null | sed -e 1q | grep gcj > /dev/null; then
|
||||
dnl It's a version of gcj.
|
||||
changequote(,)dnl
|
||||
if $JAVAC --version 2>/dev/null | sed -e 's,^[^0-9]*,,' -e 1q | sed -e '/^4\.[012]/d' | grep '^[4-9]' >/dev/null; then
|
||||
changequote([,])dnl
|
||||
dnl It's a version of gcj >= 4.3. Assume the classfile versions are correct.
|
||||
dnl Try $JAVAC.
|
||||
rm -f conftest.class
|
||||
if { echo "$as_me:__oline__: $JAVAC -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
$JAVAC -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class \
|
||||
&& expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD; then
|
||||
dnl Try adding -fsource option if it is useful.
|
||||
rm -f conftest.class
|
||||
rm -f conftestfail.class
|
||||
if { echo "$as_me:__oline__: $JAVAC -fsource=$source_version -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
$JAVAC -fsource="$source_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class \
|
||||
&& expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD \
|
||||
&& { echo "$as_me:__oline__: $JAVAC -d . conftestfail.java" >&AS_MESSAGE_LOG_FD
|
||||
$JAVAC -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftestfail.class \
|
||||
&& ! { echo "$as_me:__oline__: $JAVAC -fsource=$source_version -d . conftestfail.java" >&AS_MESSAGE_LOG_FD
|
||||
$JAVAC -fsource="$source_version" -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
}; then
|
||||
CONF_JAVAC="$JAVAC -fsource=$source_version"
|
||||
HAVE_JAVAC_ENVVAR=1
|
||||
HAVE_JAVACOMP=1
|
||||
else
|
||||
CONF_JAVAC="$JAVAC"
|
||||
HAVE_JAVAC_ENVVAR=1
|
||||
HAVE_JAVACOMP=1
|
||||
fi
|
||||
else
|
||||
dnl Try with -fsource and -ftarget options.
|
||||
rm -f conftest.class
|
||||
rm -f conftestfail.class
|
||||
if { echo "$as_me:__oline__: $JAVAC -fsource=$source_version -ftarget=$target_version -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
$JAVAC -fsource="$source_version" -ftarget="$target_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class \
|
||||
&& expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD; then
|
||||
CONF_JAVAC="$JAVAC -fsource=$source_version -ftarget=$target_version"
|
||||
HAVE_JAVAC_ENVVAR=1
|
||||
HAVE_JAVACOMP=1
|
||||
fi
|
||||
fi
|
||||
else
|
||||
dnl It's a version of gcj < 4.3. Ignore the version of conftest.class.
|
||||
if test "$target_version" = 1.4 && test "$source_version" = 1.4; then
|
||||
dnl Try $JAVAC.
|
||||
rm -f conftest.class
|
||||
if { echo "$as_me:__oline__: $JAVAC -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
$JAVAC -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class; then
|
||||
CONF_JAVAC="$JAVAC"
|
||||
HAVE_JAVAC_ENVVAR=1
|
||||
HAVE_JAVACOMP=1
|
||||
fi
|
||||
else
|
||||
if test "$target_version" = 1.4 && test "$source_version" = 1.3; then
|
||||
dnl Try $JAVAC and "$JAVAC -fno-assert". But add -fno-assert only if
|
||||
dnl it makes a difference. (It could already be part of $JAVAC.)
|
||||
javac_works=
|
||||
rm -f conftest.class
|
||||
if { echo "$as_me:__oline__: $JAVAC -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
$JAVAC -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class; then
|
||||
javac_works=1
|
||||
fi
|
||||
javac_noassert_works=
|
||||
rm -f conftest.class
|
||||
if { echo "$as_me:__oline__: $JAVAC -fno-assert -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
$JAVAC -fno-assert -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class; then
|
||||
javac_noassert_works=1
|
||||
fi
|
||||
if test -n "$javac_works" && test -n "$javac_noassert_works"; then
|
||||
rm -f conftestfail.class
|
||||
if { echo "$as_me:__oline__: $JAVAC -d . conftestfail.java" >&AS_MESSAGE_LOG_FD
|
||||
$JAVAC -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftestfail.class \
|
||||
&& ! { echo "$as_me:__oline__: $JAVAC -fno-assert -d . conftestfail.java" >&AS_MESSAGE_LOG_FD
|
||||
$JAVAC -fno-assert -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
}; then
|
||||
dnl "$JAVAC -fno-assert" works better than $JAVAC.
|
||||
javac_works=
|
||||
fi
|
||||
fi
|
||||
if test -n "$javac_works"; then
|
||||
CONF_JAVAC="$JAVAC"
|
||||
HAVE_JAVAC_ENVVAR=1
|
||||
HAVE_JAVACOMP=1
|
||||
else
|
||||
if test -n "$javac_noassert_works"; then
|
||||
CONF_JAVAC="$JAVAC -fno-assert"
|
||||
HAVE_JAVAC_ENVVAR=1
|
||||
HAVE_JAVACOMP=1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
else
|
||||
dnl It's not gcj. Assume the classfile versions are correct.
|
||||
dnl Try $JAVAC.
|
||||
rm -f conftest.class
|
||||
if { echo "$as_me:__oline__: $JAVAC -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
$JAVAC -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class \
|
||||
&& expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD; then
|
||||
dnl Try adding -source option if it is useful.
|
||||
rm -f conftest.class
|
||||
rm -f conftestfail.class
|
||||
if { echo "$as_me:__oline__: $JAVAC -source $source_version -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
$JAVAC -source "$source_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class \
|
||||
&& expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD \
|
||||
&& { echo "$as_me:__oline__: $JAVAC -d . conftestfail.java" >&AS_MESSAGE_LOG_FD
|
||||
$JAVAC -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftestfail.class \
|
||||
&& ! { echo "$as_me:__oline__: $JAVAC -source $source_version -d . conftestfail.java" >&AS_MESSAGE_LOG_FD
|
||||
$JAVAC -source "$source_version" -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
}; then
|
||||
CONF_JAVAC="$JAVAC -source $source_version"
|
||||
HAVE_JAVAC_ENVVAR=1
|
||||
HAVE_JAVACOMP=1
|
||||
else
|
||||
CONF_JAVAC="$JAVAC"
|
||||
HAVE_JAVAC_ENVVAR=1
|
||||
HAVE_JAVACOMP=1
|
||||
fi
|
||||
else
|
||||
dnl Try with -target option alone. (Sun javac 1.3.1 has the -target
|
||||
dnl option but no -source option.)
|
||||
rm -f conftest.class
|
||||
if { echo "$as_me:__oline__: $JAVAC -target $target_version -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
$JAVAC -target "$target_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class \
|
||||
&& expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD; then
|
||||
dnl Try adding -source option if it is useful.
|
||||
rm -f conftest.class
|
||||
rm -f conftestfail.class
|
||||
if { echo "$as_me:__oline__: $JAVAC -target $target_version -source $source_version -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
$JAVAC -target "$target_version" -source "$source_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class \
|
||||
&& expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD \
|
||||
&& { echo "$as_me:__oline__: $JAVAC -target $target_version -d . conftestfail.java" >&AS_MESSAGE_LOG_FD
|
||||
$JAVAC -target "$target_version" -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftestfail.class \
|
||||
&& ! { echo "$as_me:__oline__: $JAVAC -target $target_version -source $source_version -d . conftestfail.java" >&AS_MESSAGE_LOG_FD
|
||||
$JAVAC -target "$target_version" -source "$source_version" -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
}; then
|
||||
CONF_JAVAC="$JAVAC -target $target_version -source $source_version"
|
||||
HAVE_JAVAC_ENVVAR=1
|
||||
HAVE_JAVACOMP=1
|
||||
else
|
||||
CONF_JAVAC="$JAVAC -target $target_version"
|
||||
HAVE_JAVAC_ENVVAR=1
|
||||
HAVE_JAVACOMP=1
|
||||
fi
|
||||
else
|
||||
dnl Maybe this -target option requires a -source option? Try with
|
||||
dnl -target and -source options. (Supported by Sun javac 1.4 and
|
||||
dnl higher.)
|
||||
rm -f conftest.class
|
||||
if { echo "$as_me:__oline__: $JAVAC -target $target_version -source $source_version -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
$JAVAC -target "$target_version" -source "$source_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class \
|
||||
&& expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD; then
|
||||
CONF_JAVAC="$JAVAC -target $target_version -source $source_version"
|
||||
HAVE_JAVAC_ENVVAR=1
|
||||
HAVE_JAVACOMP=1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test -z "$HAVE_JAVACOMP"; then
|
||||
pushdef([AC_MSG_CHECKING],[:])dnl
|
||||
pushdef([AC_CHECKING],[:])dnl
|
||||
pushdef([AC_MSG_RESULT],[:])dnl
|
||||
AC_CHECK_PROG([HAVE_GCJ_IN_PATH], [gcj], [yes])
|
||||
AC_CHECK_PROG([HAVE_JAVAC_IN_PATH], [javac], [yes])
|
||||
AC_CHECK_PROG([HAVE_JIKES_IN_PATH], [jikes], [yes])
|
||||
popdef([AC_MSG_RESULT])dnl
|
||||
popdef([AC_CHECKING])dnl
|
||||
popdef([AC_MSG_CHECKING])dnl
|
||||
if test -z "$HAVE_JAVACOMP" && test -n "$HAVE_GCJ_IN_PATH"; then
|
||||
dnl Test for a good gcj version (>= 3.0).
|
||||
changequote(,)dnl
|
||||
if gcj --version 2>/dev/null | sed -e 's,^[^0-9]*,,' -e 1q | sed -e '/^3\.[01]/d' | grep '^[3-9]' >/dev/null; then
|
||||
changequote([,])dnl
|
||||
dnl See if libgcj.jar is well installed.
|
||||
if { echo "$as_me:__oline__: gcj -C -d . conftestlib.java" >&AS_MESSAGE_LOG_FD
|
||||
gcj -C -d . conftestlib.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
}; then
|
||||
dnl OK, gcj works.
|
||||
changequote(,)dnl
|
||||
if gcj --version 2>/dev/null | sed -e 's,^[^0-9]*,,' -e 1q | sed -e '/^4\.[012]/d' | grep '^[4-9]' >/dev/null; then
|
||||
changequote([,])dnl
|
||||
dnl It's a version of gcj >= 4.3. Assume the classfile versions are correct.
|
||||
dnl Try gcj.
|
||||
rm -f conftest.class
|
||||
if { echo "$as_me:__oline__: gcj -C -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
gcj -C -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class \
|
||||
&& expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD; then
|
||||
dnl Try adding -fsource option if it is useful.
|
||||
rm -f conftest.class
|
||||
rm -f conftestfail.class
|
||||
if { echo "$as_me:__oline__: gcj -C -fsource=$source_version -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
gcj -C -fsource="$source_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class \
|
||||
&& expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD \
|
||||
&& { echo "$as_me:__oline__: gcj -C -d . conftestfail.java" >&AS_MESSAGE_LOG_FD
|
||||
gcj -C -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftestfail.class \
|
||||
&& ! { echo "$as_me:__oline__: gcj -C -fsource=$source_version -d . conftestfail.java" >&AS_MESSAGE_LOG_FD
|
||||
gcj -C -fsource="$source_version" -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
}; then
|
||||
CONF_JAVAC="gcj -C -fsource=$source_version"
|
||||
HAVE_JAVAC_ENVVAR=1
|
||||
HAVE_JAVACOMP=1
|
||||
else
|
||||
CONF_JAVAC="gcj -C"
|
||||
HAVE_JAVAC_ENVVAR=1
|
||||
HAVE_JAVACOMP=1
|
||||
fi
|
||||
else
|
||||
dnl Try with -fsource and -ftarget options.
|
||||
rm -f conftest.class
|
||||
rm -f conftestfail.class
|
||||
if { echo "$as_me:__oline__: gcj -C -fsource=$source_version -ftarget=$target_version -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
gcj -C -fsource="$source_version" -ftarget="$target_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class \
|
||||
&& expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD; then
|
||||
CONF_JAVAC="gcj -C -fsource=$source_version -ftarget=$target_version"
|
||||
HAVE_JAVAC_ENVVAR=1
|
||||
HAVE_JAVACOMP=1
|
||||
fi
|
||||
fi
|
||||
else
|
||||
dnl It's a version of gcj < 4.3. Ignore the version of conftest.class.
|
||||
dnl Now test whether it supports the desired target-version and
|
||||
dnl source-version.
|
||||
if test "$target_version" = 1.4 && test "$source_version" = 1.4; then
|
||||
rm -f conftest.class
|
||||
if { echo "$as_me:__oline__: gcj -C -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
gcj -C -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class; then
|
||||
CONF_JAVAC="gcj -C"
|
||||
HAVE_GCJ_C=1
|
||||
HAVE_JAVACOMP=1
|
||||
fi
|
||||
else
|
||||
if test "$target_version" = 1.4 && test "$source_version" = 1.3; then
|
||||
dnl Try gcj and "gcj -fno-assert". But add -fno-assert only if
|
||||
dnl it works (not gcj < 3.3).
|
||||
rm -f conftest.class
|
||||
if { echo "$as_me:__oline__: gcj -C -fno-assert -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
gcj -C -fno-assert -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class; then
|
||||
CONF_JAVAC="gcj -C -fno-assert"
|
||||
HAVE_GCJ_C=1
|
||||
HAVE_JAVACOMP=1
|
||||
else
|
||||
rm -f conftest.class
|
||||
if { echo "$as_me:__oline__: gcj -C -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
gcj -C -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class; then
|
||||
CONF_JAVAC="gcj -C"
|
||||
HAVE_GCJ_C=1
|
||||
HAVE_JAVACOMP=1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test -z "$HAVE_JAVACOMP" && test -n "$HAVE_JAVAC_IN_PATH"; then
|
||||
dnl Test whether javac is usable.
|
||||
if { javac -version >/dev/null 2>/dev/null || test $? -le 2; } \
|
||||
&& ( if javac -help 2>&1 >/dev/null | grep at.dms.kjc.Main >/dev/null && javac -help 2>/dev/null | grep 'released.*2000' >/dev/null ; then exit 1; else exit 0; fi ); then
|
||||
dnl OK, javac works.
|
||||
dnl Now test whether it supports the desired target-version and
|
||||
dnl source-version.
|
||||
rm -f conftest.class
|
||||
if { echo "$as_me:__oline__: javac -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
javac -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class \
|
||||
&& expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD; then
|
||||
dnl Try adding -source option if it is useful.
|
||||
rm -f conftest.class
|
||||
rm -f conftestfail.class
|
||||
if { echo "$as_me:__oline__: javac -source $source_version -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
javac -source "$source_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class \
|
||||
&& expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD \
|
||||
&& { echo "$as_me:__oline__: javac -d . conftestfail.java" >&AS_MESSAGE_LOG_FD
|
||||
javac -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftestfail.class \
|
||||
&& ! { echo "$as_me:__oline__: javac -source $source_version -d . conftestfail.java" >&AS_MESSAGE_LOG_FD
|
||||
javac -source "$source_version" -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
}; then
|
||||
CONF_JAVAC="javac -source $source_version"
|
||||
HAVE_JAVAC=1
|
||||
HAVE_JAVACOMP=1
|
||||
else
|
||||
CONF_JAVAC="javac"
|
||||
HAVE_JAVAC=1
|
||||
HAVE_JAVACOMP=1
|
||||
fi
|
||||
else
|
||||
dnl Try with -target option alone. (Sun javac 1.3.1 has the -target
|
||||
dnl option but no -source option.)
|
||||
rm -f conftest.class
|
||||
if { echo "$as_me:__oline__: javac -target $target_version -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
javac -target "$target_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class \
|
||||
&& expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD; then
|
||||
dnl Try adding -source option if it is useful.
|
||||
rm -f conftest.class
|
||||
rm -f conftestfail.class
|
||||
if { echo "$as_me:__oline__: javac -target $target_version -source $source_version -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
javac -target "$target_version" -source "$source_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class \
|
||||
&& expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD \
|
||||
&& { echo "$as_me:__oline__: javac -target $target_version -d . conftestfail.java" >&AS_MESSAGE_LOG_FD
|
||||
javac -target "$target_version" -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftestfail.class \
|
||||
&& ! { echo "$as_me:__oline__: javac -target $target_version -source $source_version -d . conftestfail.java" >&AS_MESSAGE_LOG_FD
|
||||
javac -target "$target_version" -source "$source_version" -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
}; then
|
||||
CONF_JAVAC="javac -target $target_version -source $source_version"
|
||||
HAVE_JAVAC=1
|
||||
HAVE_JAVACOMP=1
|
||||
else
|
||||
CONF_JAVAC="javac -target $target_version"
|
||||
HAVE_JAVAC=1
|
||||
HAVE_JAVACOMP=1
|
||||
fi
|
||||
else
|
||||
dnl Maybe this -target option requires a -source option? Try with
|
||||
dnl -target and -source options. (Supported by Sun javac 1.4 and
|
||||
dnl higher.)
|
||||
rm -f conftest.class
|
||||
if { echo "$as_me:__oline__: javac -target $target_version -source $source_version -d . conftest.java" >&AS_MESSAGE_LOG_FD
|
||||
javac -target "$target_version" -source "$source_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
} \
|
||||
&& test -f conftest.class \
|
||||
&& expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD; then
|
||||
CONF_JAVAC="javac -target $target_version -source $source_version"
|
||||
HAVE_JAVAC=1
|
||||
HAVE_JAVACOMP=1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test -z "$HAVE_JAVACOMP" && test -n "$HAVE_JIKES_IN_PATH"; then
|
||||
dnl Test whether jikes is usable.
|
||||
if { jikes >/dev/null 2>/dev/null || test $? = 1; } \
|
||||
&& (
|
||||
# See if the existing CLASSPATH is sufficient to make jikes work.
|
||||
unset JAVA_HOME
|
||||
jikes conftestlib.java >&AS_MESSAGE_LOG_FD 2>&1
|
||||
error=$?
|
||||
rm -f conftestlib.class
|
||||
exit $error
|
||||
); then
|
||||
dnl OK, jikes works.
|
||||
dnl Now test whether it supports the desired target-version and
|
||||
dnl source-version.
|
||||
if test "$source_version" = 1.3; then
|
||||
CONF_JAVAC="jikes"
|
||||
HAVE_JIKES=1
|
||||
HAVE_JAVACOMP=1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
rm -f conftest*.java conftest*.class
|
||||
if test -n "$HAVE_JAVACOMP"; then
|
||||
ac_result="$CONF_JAVAC"
|
||||
else
|
||||
ac_result="no"
|
||||
fi
|
||||
AC_MSG_RESULT([$ac_result])
|
||||
AC_SUBST([CONF_JAVAC])
|
||||
AC_SUBST([CLASSPATH])
|
||||
AC_SUBST([CLASSPATH_SEPARATOR])
|
||||
AC_SUBST([HAVE_JAVAC_ENVVAR])
|
||||
AC_SUBST([HAVE_GCJ_C])
|
||||
AC_SUBST([HAVE_JAVAC])
|
||||
AC_SUBST([HAVE_JIKES])
|
||||
])
|
|
@ -0,0 +1,75 @@
|
|||
#!/bin/sh
|
||||
# Compile a Java program.
|
||||
|
||||
# Copyright (C) 2001-2002, 2006, 2009-2010 Free Software Foundation, Inc.
|
||||
# Written by Bruno Haible <haible@clisp.cons.org>, 2001.
|
||||
#
|
||||
# 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 3 of the License, 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, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# This uses the same choices as javacomp.c, but instead of relying on the
|
||||
# environment settings at run time, it uses the environment variables
|
||||
# present at configuration time.
|
||||
#
|
||||
# This is a separate shell script, because it must be able to unset JAVA_HOME
|
||||
# in some cases, which a simple shell command cannot do.
|
||||
#
|
||||
# The extra CLASSPATH must have been set prior to calling this script.
|
||||
# Options that can be passed are -O, -g and "-d DIRECTORY".
|
||||
|
||||
CONF_JAVAC='@CONF_JAVAC@'
|
||||
CONF_CLASSPATH='@CLASSPATH@'
|
||||
if test -n "@HAVE_JAVAC_ENVVAR@"; then
|
||||
# Combine given CLASSPATH and configured CLASSPATH.
|
||||
if test -n "$CLASSPATH"; then
|
||||
CLASSPATH="$CLASSPATH${CONF_CLASSPATH:+@CLASSPATH_SEPARATOR@$CONF_CLASSPATH}"
|
||||
else
|
||||
CLASSPATH="$CONF_CLASSPATH"
|
||||
fi
|
||||
export CLASSPATH
|
||||
test -z "$JAVA_VERBOSE" || echo "$CONF_JAVAC $@"
|
||||
exec $CONF_JAVAC "$@"
|
||||
else
|
||||
unset JAVA_HOME
|
||||
if test -n "@HAVE_GCJ_C@"; then
|
||||
# In this case, $CONF_JAVAC starts with "gcj -C".
|
||||
CLASSPATH="$CLASSPATH"
|
||||
export CLASSPATH
|
||||
test -z "$JAVA_VERBOSE" || echo "$CONF_JAVAC $@"
|
||||
exec $CONF_JAVAC "$@"
|
||||
else
|
||||
if test -n "@HAVE_JAVAC@"; then
|
||||
# In this case, $CONF_JAVAC starts with "javac".
|
||||
CLASSPATH="$CLASSPATH"
|
||||
export CLASSPATH
|
||||
test -z "$JAVA_VERBOSE" || echo "$CONF_JAVAC $@"
|
||||
exec $CONF_JAVAC "$@"
|
||||
else
|
||||
if test -n "@HAVE_JIKES@"; then
|
||||
# In this case, $CONF_JAVAC starts with "jikes".
|
||||
# Combine given CLASSPATH and configured CLASSPATH.
|
||||
if test -n "$CLASSPATH"; then
|
||||
CLASSPATH="$CLASSPATH${CONF_CLASSPATH:+@CLASSPATH_SEPARATOR@$CONF_CLASSPATH}"
|
||||
else
|
||||
CLASSPATH="$CONF_CLASSPATH"
|
||||
fi
|
||||
export CLASSPATH
|
||||
test -z "$JAVA_VERBOSE" || echo "$CONF_JAVAC $@"
|
||||
exec $CONF_JAVAC "$@"
|
||||
else
|
||||
echo 'Java compiler not found, try installing gcj or set $JAVAC, then reconfigure' 1>&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
|
@ -0,0 +1,104 @@
|
|||
# javaexec.m4 serial 5
|
||||
dnl Copyright (C) 2001-2003, 2006, 2009-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# Prerequisites of javaexec.sh.
|
||||
# gt_JAVAEXEC or gt_JAVAEXEC(testclass, its-directory)
|
||||
# Sets HAVE_JAVAEXEC to nonempty if javaexec.sh will work.
|
||||
|
||||
AC_DEFUN([gt_JAVAEXEC],
|
||||
[
|
||||
AC_MSG_CHECKING([for Java virtual machine])
|
||||
AC_EGREP_CPP([yes], [
|
||||
#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
|
||||
yes
|
||||
#endif
|
||||
], CLASSPATH_SEPARATOR=';', CLASSPATH_SEPARATOR=':')
|
||||
CONF_JAVA=
|
||||
HAVE_JAVA_ENVVAR=
|
||||
HAVE_GIJ=
|
||||
HAVE_JAVA=
|
||||
HAVE_JRE=
|
||||
HAVE_JVIEW=
|
||||
HAVE_JAVAEXEC=1
|
||||
if test -n "$JAVA"; then
|
||||
HAVE_JAVA_ENVVAR=1
|
||||
CONF_JAVA="$JAVA"
|
||||
else
|
||||
pushdef([AC_MSG_CHECKING],[:])dnl
|
||||
pushdef([AC_CHECKING],[:])dnl
|
||||
pushdef([AC_MSG_RESULT],[:])dnl
|
||||
AC_CHECK_PROG([HAVE_GIJ_IN_PATH], [gij], [yes])
|
||||
AC_CHECK_PROG([HAVE_JAVA_IN_PATH], [java], [yes])
|
||||
AC_CHECK_PROG([HAVE_JRE_IN_PATH], [jre], [yes])
|
||||
AC_CHECK_PROG([HAVE_JVIEW_IN_PATH], [jview], [yes])
|
||||
popdef([AC_MSG_RESULT])dnl
|
||||
popdef([AC_CHECKING])dnl
|
||||
popdef([AC_MSG_CHECKING])dnl
|
||||
ifelse([$1], , , [
|
||||
save_CLASSPATH="$CLASSPATH"
|
||||
CLASSPATH="$2"${CLASSPATH+"$CLASSPATH_SEPARATOR$CLASSPATH"}
|
||||
])
|
||||
export CLASSPATH
|
||||
if test -n "$HAVE_GIJ_IN_PATH" \
|
||||
&& gij --version >/dev/null 2>/dev/null \
|
||||
ifelse([$1], , , [&& {
|
||||
echo "$as_me:__oline__: gij $1" >&AS_MESSAGE_LOG_FD
|
||||
gij $1 >&AS_MESSAGE_LOG_FD 2>&1
|
||||
}]); then
|
||||
HAVE_GIJ=1
|
||||
CONF_JAVA="gij"
|
||||
else
|
||||
if test -n "$HAVE_JAVA_IN_PATH" \
|
||||
&& java -version >/dev/null 2>/dev/null \
|
||||
ifelse([$1], , , [&& {
|
||||
echo "$as_me:__oline__: gij $1" >&AS_MESSAGE_LOG_FD
|
||||
java $1 >&AS_MESSAGE_LOG_FD 2>&1
|
||||
}]); then
|
||||
HAVE_JAVA=1
|
||||
CONF_JAVA="java"
|
||||
else
|
||||
if test -n "$HAVE_JRE_IN_PATH" \
|
||||
&& (jre >/dev/null 2>/dev/null || test $? = 1) \
|
||||
ifelse([$1], , , [&& {
|
||||
echo "$as_me:__oline__: gij $1" >&AS_MESSAGE_LOG_FD
|
||||
jre $1 >&AS_MESSAGE_LOG_FD 2>&1
|
||||
}]); then
|
||||
HAVE_JRE=1
|
||||
CONF_JAVA="jre"
|
||||
else
|
||||
if test -n "$HAVE_JVIEW_IN_PATH" \
|
||||
&& (jview -? >/dev/null 2>/dev/null || test $? = 1) \
|
||||
ifelse([$1], , , [&& {
|
||||
echo "$as_me:__oline__: gij $1" >&AS_MESSAGE_LOG_FD
|
||||
jview $1 >&AS_MESSAGE_LOG_FD 2>&1
|
||||
}]); then
|
||||
HAVE_JVIEW=1
|
||||
CONF_JAVA="jview"
|
||||
else
|
||||
HAVE_JAVAEXEC=
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
ifelse([$1], , , [
|
||||
CLASSPATH="$save_CLASSPATH"
|
||||
])
|
||||
fi
|
||||
if test -n "$HAVE_JAVAEXEC"; then
|
||||
ac_result="$CONF_JAVA"
|
||||
else
|
||||
ac_result="no"
|
||||
fi
|
||||
AC_MSG_RESULT([$ac_result])
|
||||
AC_SUBST([CONF_JAVA])
|
||||
AC_SUBST([CLASSPATH])
|
||||
AC_SUBST([CLASSPATH_SEPARATOR])
|
||||
AC_SUBST([HAVE_JAVA_ENVVAR])
|
||||
AC_SUBST([HAVE_GIJ])
|
||||
AC_SUBST([HAVE_JAVA])
|
||||
AC_SUBST([HAVE_JRE])
|
||||
AC_SUBST([HAVE_JVIEW])
|
||||
])
|
|
@ -0,0 +1,70 @@
|
|||
#!/bin/sh
|
||||
# Execute a Java program.
|
||||
|
||||
# Copyright (C) 2001, 2006, 2009, 2010 Free Software Foundation, Inc.
|
||||
# Written by Bruno Haible <haible@clisp.cons.org>, 2001.
|
||||
#
|
||||
# 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 3 of the License, 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, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# This uses the same choices as javaexec.c, but instead of relying on the
|
||||
# environment settings at run time, it uses the environment variables
|
||||
# present at configuration time.
|
||||
#
|
||||
# This is a separate shell script, because it must be able to unset JAVA_HOME
|
||||
# in some cases, which a simple shell command cannot do.
|
||||
#
|
||||
# The extra CLASSPATH must have been set prior to calling this script.
|
||||
|
||||
CONF_JAVA='@CONF_JAVA@'
|
||||
CONF_CLASSPATH='@CLASSPATH@'
|
||||
if test -n "@HAVE_JAVA_ENVVAR@"; then
|
||||
# Combine given CLASSPATH and configured CLASSPATH.
|
||||
if test -n "$CLASSPATH"; then
|
||||
CLASSPATH="$CLASSPATH${CONF_CLASSPATH:+@CLASSPATH_SEPARATOR@$CONF_CLASSPATH}"
|
||||
else
|
||||
CLASSPATH="$CONF_CLASSPATH"
|
||||
fi
|
||||
export CLASSPATH
|
||||
test -z "$JAVA_VERBOSE" || echo "$CONF_JAVA $@"
|
||||
exec $CONF_JAVA "$@"
|
||||
else
|
||||
unset JAVA_HOME
|
||||
export CLASSPATH
|
||||
if test -n "@HAVE_GIJ@"; then
|
||||
# In this case, $CONF_JAVA is "gij".
|
||||
test -z "$JAVA_VERBOSE" || echo "$CONF_JAVA $@"
|
||||
exec $CONF_JAVA "$@"
|
||||
else
|
||||
if test -n "@HAVE_JAVA@"; then
|
||||
# In this case, $CONF_JAVA is "java".
|
||||
test -z "$JAVA_VERBOSE" || echo "$CONF_JAVA $@"
|
||||
exec $CONF_JAVA "$@"
|
||||
else
|
||||
if test -n "@HAVE_JRE@"; then
|
||||
# In this case, $CONF_JAVA is "jre".
|
||||
test -z "$JAVA_VERBOSE" || echo "$CONF_JAVA $@"
|
||||
exec $CONF_JAVA "$@"
|
||||
else
|
||||
if test -n "@HAVE_JVIEW@"; then
|
||||
# In this case, $CONF_JAVA is "jview".
|
||||
test -z "$JAVA_VERBOSE" || echo "$CONF_JAVA $@"
|
||||
exec $CONF_JAVA "$@"
|
||||
else
|
||||
echo 'Java virtual machine not found, try installing gij or set $JAVA, then reconfigure' 1>&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче