URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/trunk/gnu-dev
- from Rev 727 to Rev 728
- ↔ Reverse comparison
Rev 727 → Rev 728
/or1k-gcc/intl/config.intl.in
0,0 → 1,12
# This file records the configuration of libintl in a form that |
# can be read back in by a configure script in a sister directory. |
# See config/gettext.m4 for its use. |
|
USE_NLS='@USE_NLS@' |
LIBINTL='@LIBINTL@' |
LIBINTL_DEP='@LIBINTL_DEP@' |
INCINTL='@INCINTL@' |
|
XGETTEXT='@XGETTEXT@' |
GMSGFMT='@GMSGFMT@' |
POSUB='@POSUB@' |
/or1k-gcc/intl/plural-exp.h
0,0 → 1,126
/* Expression parsing and evaluation for plural form selection. |
Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. |
Written by Ulrich Drepper <drepper@cygnus.com>, 2000. |
|
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 _PLURAL_EXP_H |
#define _PLURAL_EXP_H |
|
#ifndef PARAMS |
# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES |
# define PARAMS(args) args |
# else |
# define PARAMS(args) () |
# endif |
#endif |
|
#ifndef internal_function |
# define internal_function |
#endif |
|
#ifndef attribute_hidden |
# define attribute_hidden |
#endif |
|
|
/* This is the representation of the expressions to determine the |
plural form. */ |
struct expression |
{ |
int nargs; /* Number of arguments. */ |
enum operator |
{ |
/* Without arguments: */ |
var, /* The variable "n". */ |
num, /* Decimal number. */ |
/* Unary operators: */ |
lnot, /* Logical NOT. */ |
/* Binary operators: */ |
mult, /* Multiplication. */ |
divide, /* Division. */ |
module, /* Modulo operation. */ |
plus, /* Addition. */ |
minus, /* Subtraction. */ |
less_than, /* Comparison. */ |
greater_than, /* Comparison. */ |
less_or_equal, /* Comparison. */ |
greater_or_equal, /* Comparison. */ |
equal, /* Comparison for equality. */ |
not_equal, /* Comparison for inequality. */ |
land, /* Logical AND. */ |
lor, /* Logical OR. */ |
/* Ternary operators: */ |
qmop /* Question mark operator. */ |
} operation; |
union |
{ |
unsigned long int num; /* Number value for `num'. */ |
struct expression *args[3]; /* Up to three arguments. */ |
} val; |
}; |
|
/* This is the data structure to pass information to the parser and get |
the result in a thread-safe way. */ |
struct parse_args |
{ |
const char *cp; |
struct expression *res; |
}; |
|
|
/* Names for the libintl functions are a problem. This source code is used |
1. in the GNU C Library library, |
2. in the GNU libintl library, |
3. in the GNU gettext tools. |
The function names in each situation must be different, to allow for |
binary incompatible changes in 'struct expression'. Furthermore, |
1. in the GNU C Library library, the names have a __ prefix, |
2.+3. in the GNU libintl library and in the GNU gettext tools, the names |
must follow ANSI C and not start with __. |
So we have to distinguish the three cases. */ |
#ifdef _LIBC |
# define FREE_EXPRESSION __gettext_free_exp |
# define PLURAL_PARSE __gettextparse |
# define GERMANIC_PLURAL __gettext_germanic_plural |
# define EXTRACT_PLURAL_EXPRESSION __gettext_extract_plural |
#elif defined (IN_LIBINTL) |
# define FREE_EXPRESSION libintl_gettext_free_exp |
# define PLURAL_PARSE libintl_gettextparse |
# define GERMANIC_PLURAL libintl_gettext_germanic_plural |
# define EXTRACT_PLURAL_EXPRESSION libintl_gettext_extract_plural |
#else |
# define FREE_EXPRESSION free_plural_expression |
# define PLURAL_PARSE parse_plural_expression |
# define GERMANIC_PLURAL germanic_plural |
# define EXTRACT_PLURAL_EXPRESSION extract_plural_expression |
#endif |
|
extern void FREE_EXPRESSION PARAMS ((struct expression *exp)) |
internal_function; |
extern int PLURAL_PARSE PARAMS ((void *arg)); |
extern struct expression GERMANIC_PLURAL attribute_hidden; |
extern void EXTRACT_PLURAL_EXPRESSION PARAMS ((const char *nullentry, |
struct expression **pluralp, |
unsigned long int *npluralsp)) |
internal_function; |
|
#if !defined (_LIBC) && !defined (IN_LIBINTL) |
extern unsigned long int plural_eval PARAMS ((struct expression *pexp, |
unsigned long int n)); |
#endif |
|
#endif /* _PLURAL_EXP_H */ |
/or1k-gcc/intl/configure
0,0 → 1,7961
#! /bin/sh |
# Guess values for system-dependent variables and create Makefiles. |
# Generated by GNU Autoconf 2.64. |
# |
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, |
# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software |
# Foundation, Inc. |
# |
# This configure script is free software; the Free Software Foundation |
# gives unlimited permission to copy, distribute and modify it. |
## -------------------- ## |
## M4sh Initialization. ## |
## -------------------- ## |
|
# Be more Bourne compatible |
DUALCASE=1; export DUALCASE # for MKS sh |
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : |
emulate sh |
NULLCMD=: |
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which |
# is contrary to our usage. Disable this feature. |
alias -g '${1+"$@"}'='"$@"' |
setopt NO_GLOB_SUBST |
else |
case `(set -o) 2>/dev/null` in #( |
*posix*) : |
set -o posix ;; #( |
*) : |
;; |
esac |
fi |
|
|
as_nl=' |
' |
export as_nl |
# Printing a long string crashes Solaris 7 /usr/bin/printf. |
as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' |
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo |
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo |
# Prefer a ksh shell builtin over an external printf program on Solaris, |
# but without wasting forks for bash or zsh. |
if test -z "$BASH_VERSION$ZSH_VERSION" \ |
&& (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then |
as_echo='print -r --' |
as_echo_n='print -rn --' |
elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then |
as_echo='printf %s\n' |
as_echo_n='printf %s' |
else |
if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then |
as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' |
as_echo_n='/usr/ucb/echo -n' |
else |
as_echo_body='eval expr "X$1" : "X\\(.*\\)"' |
as_echo_n_body='eval |
arg=$1; |
case $arg in #( |
*"$as_nl"*) |
expr "X$arg" : "X\\(.*\\)$as_nl"; |
arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; |
esac; |
expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" |
' |
export as_echo_n_body |
as_echo_n='sh -c $as_echo_n_body as_echo' |
fi |
export as_echo_body |
as_echo='sh -c $as_echo_body as_echo' |
fi |
|
# The user is always right. |
if test "${PATH_SEPARATOR+set}" != set; then |
PATH_SEPARATOR=: |
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { |
(PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || |
PATH_SEPARATOR=';' |
} |
fi |
|
|
# IFS |
# We need space, tab and new line, in precisely that order. Quoting is |
# there to prevent editors from complaining about space-tab. |
# (If _AS_PATH_WALK were called with IFS unset, it would disable word |
# splitting by setting IFS to empty value.) |
IFS=" "" $as_nl" |
|
# Find who we are. Look in the path if we contain no directory separator. |
case $0 in #(( |
*[\\/]* ) as_myself=$0 ;; |
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break |
done |
IFS=$as_save_IFS |
|
;; |
esac |
# We did not find ourselves, most probably we were run as `sh COMMAND' |
# in which case we are not to be found in the path. |
if test "x$as_myself" = x; then |
as_myself=$0 |
fi |
if test ! -f "$as_myself"; then |
$as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 |
exit 1 |
fi |
|
# Unset variables that we do not need and which cause bugs (e.g. in |
# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" |
# suppresses any "Segmentation fault" message there. '((' could |
# trigger a bug in pdksh 5.2.14. |
for as_var in BASH_ENV ENV MAIL MAILPATH |
do eval test x\${$as_var+set} = xset \ |
&& ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : |
done |
PS1='$ ' |
PS2='> ' |
PS4='+ ' |
|
# NLS nuisances. |
LC_ALL=C |
export LC_ALL |
LANGUAGE=C |
export LANGUAGE |
|
# CDPATH. |
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH |
|
if test "x$CONFIG_SHELL" = x; then |
as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : |
emulate sh |
NULLCMD=: |
# Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which |
# is contrary to our usage. Disable this feature. |
alias -g '\${1+\"\$@\"}'='\"\$@\"' |
setopt NO_GLOB_SUBST |
else |
case \`(set -o) 2>/dev/null\` in #( |
*posix*) : |
set -o posix ;; #( |
*) : |
;; |
esac |
fi |
" |
as_required="as_fn_return () { (exit \$1); } |
as_fn_success () { as_fn_return 0; } |
as_fn_failure () { as_fn_return 1; } |
as_fn_ret_success () { return 0; } |
as_fn_ret_failure () { return 1; } |
|
exitcode=0 |
as_fn_success || { exitcode=1; echo as_fn_success failed.; } |
as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } |
as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } |
as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } |
if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : |
|
else |
exitcode=1; echo positional parameters were not saved. |
fi |
test x\$exitcode = x0 || exit 1" |
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO |
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO |
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && |
test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 |
test \$(( 1 + 1 )) = 2 || exit 1" |
if (eval "$as_required") 2>/dev/null; then : |
as_have_required=yes |
else |
as_have_required=no |
fi |
if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : |
|
else |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
as_found=false |
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
as_found=: |
case $as_dir in #( |
/*) |
for as_base in sh bash ksh sh5; do |
# Try only shells that exist, to save several forks. |
as_shell=$as_dir/$as_base |
if { test -f "$as_shell" || test -f "$as_shell.exe"; } && |
{ $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : |
CONFIG_SHELL=$as_shell as_have_required=yes |
if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : |
break 2 |
fi |
fi |
done;; |
esac |
as_found=false |
done |
$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && |
{ $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : |
CONFIG_SHELL=$SHELL as_have_required=yes |
fi; } |
IFS=$as_save_IFS |
|
|
if test "x$CONFIG_SHELL" != x; then : |
# We cannot yet assume a decent shell, so we have to provide a |
# neutralization value for shells without unset; and this also |
# works around shells that cannot unset nonexistent variables. |
BASH_ENV=/dev/null |
ENV=/dev/null |
(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV |
export CONFIG_SHELL |
exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} |
fi |
|
if test x$as_have_required = xno; then : |
$as_echo "$0: This script requires a shell more modern than all" |
$as_echo "$0: the shells that I found on your system." |
if test x${ZSH_VERSION+set} = xset ; then |
$as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" |
$as_echo "$0: be upgraded to zsh 4.3.4 or later." |
else |
$as_echo "$0: Please tell bug-autoconf@gnu.org about your system, |
$0: including any error possibly output before this |
$0: message. Then install a modern shell, or manually run |
$0: the script under such a shell if you do have one." |
fi |
exit 1 |
fi |
fi |
fi |
SHELL=${CONFIG_SHELL-/bin/sh} |
export SHELL |
# Unset more variables known to interfere with behavior of common tools. |
CLICOLOR_FORCE= GREP_OPTIONS= |
unset CLICOLOR_FORCE GREP_OPTIONS |
|
## --------------------- ## |
## M4sh Shell Functions. ## |
## --------------------- ## |
# as_fn_unset VAR |
# --------------- |
# Portably unset VAR. |
as_fn_unset () |
{ |
{ eval $1=; unset $1;} |
} |
as_unset=as_fn_unset |
|
# as_fn_set_status STATUS |
# ----------------------- |
# Set $? to STATUS, without forking. |
as_fn_set_status () |
{ |
return $1 |
} # as_fn_set_status |
|
# as_fn_exit STATUS |
# ----------------- |
# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. |
as_fn_exit () |
{ |
set +e |
as_fn_set_status $1 |
exit $1 |
} # as_fn_exit |
|
# as_fn_mkdir_p |
# ------------- |
# Create "$as_dir" as a directory, including parents if necessary. |
as_fn_mkdir_p () |
{ |
|
case $as_dir in #( |
-*) as_dir=./$as_dir;; |
esac |
test -d "$as_dir" || eval $as_mkdir_p || { |
as_dirs= |
while :; do |
case $as_dir in #( |
*\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( |
*) as_qdir=$as_dir;; |
esac |
as_dirs="'$as_qdir' $as_dirs" |
as_dir=`$as_dirname -- "$as_dir" || |
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ |
X"$as_dir" : 'X\(//\)[^/]' \| \ |
X"$as_dir" : 'X\(//\)$' \| \ |
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || |
$as_echo X"$as_dir" | |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ |
s//\1/ |
q |
} |
/^X\(\/\/\)[^/].*/{ |
s//\1/ |
q |
} |
/^X\(\/\/\)$/{ |
s//\1/ |
q |
} |
/^X\(\/\).*/{ |
s//\1/ |
q |
} |
s/.*/./; q'` |
test -d "$as_dir" && break |
done |
test -z "$as_dirs" || eval "mkdir $as_dirs" |
} || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" |
|
|
} # as_fn_mkdir_p |
# as_fn_append VAR VALUE |
# ---------------------- |
# Append the text in VALUE to the end of the definition contained in VAR. Take |
# advantage of any shell optimizations that allow amortized linear growth over |
# repeated appends, instead of the typical quadratic growth present in naive |
# implementations. |
if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : |
eval 'as_fn_append () |
{ |
eval $1+=\$2 |
}' |
else |
as_fn_append () |
{ |
eval $1=\$$1\$2 |
} |
fi # as_fn_append |
|
# as_fn_arith ARG... |
# ------------------ |
# Perform arithmetic evaluation on the ARGs, and store the result in the |
# global $as_val. Take advantage of shells that can avoid forks. The arguments |
# must be portable across $(()) and expr. |
if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : |
eval 'as_fn_arith () |
{ |
as_val=$(( $* )) |
}' |
else |
as_fn_arith () |
{ |
as_val=`expr "$@" || test $? -eq 1` |
} |
fi # as_fn_arith |
|
|
# as_fn_error ERROR [LINENO LOG_FD] |
# --------------------------------- |
# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are |
# provided, also output the error to LOG_FD, referencing LINENO. Then exit the |
# script with status $?, using 1 if that was 0. |
as_fn_error () |
{ |
as_status=$?; test $as_status -eq 0 && as_status=1 |
if test "$3"; then |
as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack |
$as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 |
fi |
$as_echo "$as_me: error: $1" >&2 |
as_fn_exit $as_status |
} # as_fn_error |
|
if expr a : '\(a\)' >/dev/null 2>&1 && |
test "X`expr 00001 : '.*\(...\)'`" = X001; then |
as_expr=expr |
else |
as_expr=false |
fi |
|
if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then |
as_basename=basename |
else |
as_basename=false |
fi |
|
if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then |
as_dirname=dirname |
else |
as_dirname=false |
fi |
|
as_me=`$as_basename -- "$0" || |
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ |
X"$0" : 'X\(//\)$' \| \ |
X"$0" : 'X\(/\)' \| . 2>/dev/null || |
$as_echo X/"$0" | |
sed '/^.*\/\([^/][^/]*\)\/*$/{ |
s//\1/ |
q |
} |
/^X\/\(\/\/\)$/{ |
s//\1/ |
q |
} |
/^X\/\(\/\).*/{ |
s//\1/ |
q |
} |
s/.*/./; q'` |
|
# Avoid depending upon Character Ranges. |
as_cr_letters='abcdefghijklmnopqrstuvwxyz' |
as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' |
as_cr_Letters=$as_cr_letters$as_cr_LETTERS |
as_cr_digits='0123456789' |
as_cr_alnum=$as_cr_Letters$as_cr_digits |
|
|
as_lineno_1=$LINENO as_lineno_1a=$LINENO |
as_lineno_2=$LINENO as_lineno_2a=$LINENO |
eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && |
test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { |
# Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) |
sed -n ' |
p |
/[$]LINENO/= |
' <$as_myself | |
sed ' |
s/[$]LINENO.*/&-/ |
t lineno |
b |
:lineno |
N |
:loop |
s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ |
t loop |
s/-\n.*// |
' >$as_me.lineno && |
chmod +x "$as_me.lineno" || |
{ $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } |
|
# Don't try to exec as it changes $[0], causing all sort of problems |
# (the dirname of $[0] is not the place where we might find the |
# original and so on. Autoconf is especially sensitive to this). |
. "./$as_me.lineno" |
# Exit status is that of the last command. |
exit |
} |
|
ECHO_C= ECHO_N= ECHO_T= |
case `echo -n x` in #((((( |
-n*) |
case `echo 'xy\c'` in |
*c*) ECHO_T=' ';; # ECHO_T is single tab character. |
xy) ECHO_C='\c';; |
*) echo `echo ksh88 bug on AIX 6.1` > /dev/null |
ECHO_T=' ';; |
esac;; |
*) |
ECHO_N='-n';; |
esac |
|
rm -f conf$$ conf$$.exe conf$$.file |
if test -d conf$$.dir; then |
rm -f conf$$.dir/conf$$.file |
else |
rm -f conf$$.dir |
mkdir conf$$.dir 2>/dev/null |
fi |
if (echo >conf$$.file) 2>/dev/null; then |
if ln -s conf$$.file conf$$ 2>/dev/null; then |
as_ln_s='ln -s' |
# ... but there are two gotchas: |
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. |
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. |
# In both cases, we have to default to `cp -p'. |
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || |
as_ln_s='cp -p' |
elif ln conf$$.file conf$$ 2>/dev/null; then |
as_ln_s=ln |
else |
as_ln_s='cp -p' |
fi |
else |
as_ln_s='cp -p' |
fi |
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file |
rmdir conf$$.dir 2>/dev/null |
|
if mkdir -p . 2>/dev/null; then |
as_mkdir_p='mkdir -p "$as_dir"' |
else |
test -d ./-p && rmdir ./-p |
as_mkdir_p=false |
fi |
|
if test -x / >/dev/null 2>&1; then |
as_test_x='test -x' |
else |
if ls -dL / >/dev/null 2>&1; then |
as_ls_L_option=L |
else |
as_ls_L_option= |
fi |
as_test_x=' |
eval sh -c '\'' |
if test -d "$1"; then |
test -d "$1/."; |
else |
case $1 in #( |
-*)set "./$1";; |
esac; |
case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( |
???[sx]*):;;*)false;;esac;fi |
'\'' sh |
' |
fi |
as_executable_p=$as_test_x |
|
# Sed expression to map a string onto a valid CPP name. |
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" |
|
# Sed expression to map a string onto a valid variable name. |
as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" |
|
|
exec 7<&0 </dev/null 6>&1 |
|
# Name of the host. |
# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, |
# so uname gets run too. |
ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` |
|
# |
# Initializations. |
# |
ac_default_prefix=/usr/local |
ac_clean_files= |
ac_config_libobj_dir=. |
LIBOBJS= |
cross_compiling=no |
subdirs= |
MFLAGS= |
MAKEFLAGS= |
|
# Identity of this package. |
PACKAGE_NAME= |
PACKAGE_TARNAME= |
PACKAGE_VERSION= |
PACKAGE_STRING= |
PACKAGE_BUGREPORT= |
PACKAGE_URL= |
|
ac_unique_file="gettext.c" |
# Factoring default headers for most tests. |
ac_includes_default="\ |
#include <stdio.h> |
#ifdef HAVE_SYS_TYPES_H |
# include <sys/types.h> |
#endif |
#ifdef HAVE_SYS_STAT_H |
# include <sys/stat.h> |
#endif |
#ifdef STDC_HEADERS |
# include <stdlib.h> |
# include <stddef.h> |
#else |
# ifdef HAVE_STDLIB_H |
# include <stdlib.h> |
# endif |
#endif |
#ifdef HAVE_STRING_H |
# if !defined STDC_HEADERS && defined HAVE_MEMORY_H |
# include <memory.h> |
# endif |
# include <string.h> |
#endif |
#ifdef HAVE_STRINGS_H |
# include <strings.h> |
#endif |
#ifdef HAVE_INTTYPES_H |
# include <inttypes.h> |
#endif |
#ifdef HAVE_STDINT_H |
# include <stdint.h> |
#endif |
#ifdef HAVE_UNISTD_H |
# include <unistd.h> |
#endif" |
|
ac_subst_vars='LTLIBOBJS |
LIBOBJS |
INCINTL |
LIBINTL_DEP |
MAINT |
AUTOHEADER |
AUTOCONF |
ACLOCAL |
POSUB |
LTLIBINTL |
LIBINTL |
INTLLIBS |
INTL_LIBTOOL_SUFFIX_PREFIX |
INTLOBJS |
GENCAT |
INSTOBJEXT |
DATADIRNAME |
CATOBJEXT |
USE_INCLUDED_LIBINTL |
BUILD_INCLUDED_LIBINTL |
INTLBISON |
LTLIBICONV |
LIBICONV |
GLIBC21 |
ALLOCA |
EGREP |
GREP |
CPP |
RANLIB |
host_os |
host_vendor |
host_cpu |
host |
build_os |
build_vendor |
build_cpu |
build |
OBJEXT |
EXEEXT |
ac_ct_CC |
CPPFLAGS |
LDFLAGS |
CFLAGS |
CC |
MSGMERGE |
XGETTEXT |
GMSGFMT |
MSGFMT |
USE_NLS |
MKINSTALLDIRS |
INSTALL_DATA |
INSTALL_SCRIPT |
INSTALL_PROGRAM |
SET_MAKE |
target_alias |
host_alias |
build_alias |
LIBS |
ECHO_T |
ECHO_N |
ECHO_C |
DEFS |
mandir |
localedir |
libdir |
psdir |
pdfdir |
dvidir |
htmldir |
infodir |
docdir |
oldincludedir |
includedir |
localstatedir |
sharedstatedir |
sysconfdir |
datadir |
datarootdir |
libexecdir |
sbindir |
bindir |
program_transform_name |
prefix |
exec_prefix |
PACKAGE_URL |
PACKAGE_BUGREPORT |
PACKAGE_STRING |
PACKAGE_VERSION |
PACKAGE_TARNAME |
PACKAGE_NAME |
PATH_SEPARATOR |
SHELL' |
ac_subst_files='' |
ac_user_opts=' |
enable_option_checking |
enable_nls |
with_gnu_ld |
enable_rpath |
with_libiconv_prefix |
with_included_gettext |
with_libintl_prefix |
enable_maintainer_mode |
' |
ac_precious_vars='build_alias |
host_alias |
target_alias |
CC |
CFLAGS |
LDFLAGS |
LIBS |
CPPFLAGS |
CPP' |
|
|
# Initialize some variables set by options. |
ac_init_help= |
ac_init_version=false |
ac_unrecognized_opts= |
ac_unrecognized_sep= |
# The variables have the same names as the options, with |
# dashes changed to underlines. |
cache_file=/dev/null |
exec_prefix=NONE |
no_create= |
no_recursion= |
prefix=NONE |
program_prefix=NONE |
program_suffix=NONE |
program_transform_name=s,x,x, |
silent= |
site= |
srcdir= |
verbose= |
x_includes=NONE |
x_libraries=NONE |
|
# Installation directory options. |
# These are left unexpanded so users can "make install exec_prefix=/foo" |
# and all the variables that are supposed to be based on exec_prefix |
# by default will actually change. |
# Use braces instead of parens because sh, perl, etc. also accept them. |
# (The list follows the same order as the GNU Coding Standards.) |
bindir='${exec_prefix}/bin' |
sbindir='${exec_prefix}/sbin' |
libexecdir='${exec_prefix}/libexec' |
datarootdir='${prefix}/share' |
datadir='${datarootdir}' |
sysconfdir='${prefix}/etc' |
sharedstatedir='${prefix}/com' |
localstatedir='${prefix}/var' |
includedir='${prefix}/include' |
oldincludedir='/usr/include' |
docdir='${datarootdir}/doc/${PACKAGE}' |
infodir='${datarootdir}/info' |
htmldir='${docdir}' |
dvidir='${docdir}' |
pdfdir='${docdir}' |
psdir='${docdir}' |
libdir='${exec_prefix}/lib' |
localedir='${datarootdir}/locale' |
mandir='${datarootdir}/man' |
|
ac_prev= |
ac_dashdash= |
for ac_option |
do |
# If the previous option needs an argument, assign it. |
if test -n "$ac_prev"; then |
eval $ac_prev=\$ac_option |
ac_prev= |
continue |
fi |
|
case $ac_option in |
*=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; |
*) ac_optarg=yes ;; |
esac |
|
# Accept the important Cygnus configure options, so we can diagnose typos. |
|
case $ac_dashdash$ac_option in |
--) |
ac_dashdash=yes ;; |
|
-bindir | --bindir | --bindi | --bind | --bin | --bi) |
ac_prev=bindir ;; |
-bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) |
bindir=$ac_optarg ;; |
|
-build | --build | --buil | --bui | --bu) |
ac_prev=build_alias ;; |
-build=* | --build=* | --buil=* | --bui=* | --bu=*) |
build_alias=$ac_optarg ;; |
|
-cache-file | --cache-file | --cache-fil | --cache-fi \ |
| --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) |
ac_prev=cache_file ;; |
-cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ |
| --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) |
cache_file=$ac_optarg ;; |
|
--config-cache | -C) |
cache_file=config.cache ;; |
|
-datadir | --datadir | --datadi | --datad) |
ac_prev=datadir ;; |
-datadir=* | --datadir=* | --datadi=* | --datad=*) |
datadir=$ac_optarg ;; |
|
-datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ |
| --dataroo | --dataro | --datar) |
ac_prev=datarootdir ;; |
-datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ |
| --dataroot=* | --dataroo=* | --dataro=* | --datar=*) |
datarootdir=$ac_optarg ;; |
|
-disable-* | --disable-*) |
ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` |
# Reject names that are not valid shell variable names. |
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && |
as_fn_error "invalid feature name: $ac_useropt" |
ac_useropt_orig=$ac_useropt |
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` |
case $ac_user_opts in |
*" |
"enable_$ac_useropt" |
"*) ;; |
*) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" |
ac_unrecognized_sep=', ';; |
esac |
eval enable_$ac_useropt=no ;; |
|
-docdir | --docdir | --docdi | --doc | --do) |
ac_prev=docdir ;; |
-docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) |
docdir=$ac_optarg ;; |
|
-dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) |
ac_prev=dvidir ;; |
-dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) |
dvidir=$ac_optarg ;; |
|
-enable-* | --enable-*) |
ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` |
# Reject names that are not valid shell variable names. |
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && |
as_fn_error "invalid feature name: $ac_useropt" |
ac_useropt_orig=$ac_useropt |
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` |
case $ac_user_opts in |
*" |
"enable_$ac_useropt" |
"*) ;; |
*) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" |
ac_unrecognized_sep=', ';; |
esac |
eval enable_$ac_useropt=\$ac_optarg ;; |
|
-exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ |
| --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ |
| --exec | --exe | --ex) |
ac_prev=exec_prefix ;; |
-exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ |
| --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ |
| --exec=* | --exe=* | --ex=*) |
exec_prefix=$ac_optarg ;; |
|
-gas | --gas | --ga | --g) |
# Obsolete; use --with-gas. |
with_gas=yes ;; |
|
-help | --help | --hel | --he | -h) |
ac_init_help=long ;; |
-help=r* | --help=r* | --hel=r* | --he=r* | -hr*) |
ac_init_help=recursive ;; |
-help=s* | --help=s* | --hel=s* | --he=s* | -hs*) |
ac_init_help=short ;; |
|
-host | --host | --hos | --ho) |
ac_prev=host_alias ;; |
-host=* | --host=* | --hos=* | --ho=*) |
host_alias=$ac_optarg ;; |
|
-htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) |
ac_prev=htmldir ;; |
-htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ |
| --ht=*) |
htmldir=$ac_optarg ;; |
|
-includedir | --includedir | --includedi | --included | --include \ |
| --includ | --inclu | --incl | --inc) |
ac_prev=includedir ;; |
-includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ |
| --includ=* | --inclu=* | --incl=* | --inc=*) |
includedir=$ac_optarg ;; |
|
-infodir | --infodir | --infodi | --infod | --info | --inf) |
ac_prev=infodir ;; |
-infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) |
infodir=$ac_optarg ;; |
|
-libdir | --libdir | --libdi | --libd) |
ac_prev=libdir ;; |
-libdir=* | --libdir=* | --libdi=* | --libd=*) |
libdir=$ac_optarg ;; |
|
-libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ |
| --libexe | --libex | --libe) |
ac_prev=libexecdir ;; |
-libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ |
| --libexe=* | --libex=* | --libe=*) |
libexecdir=$ac_optarg ;; |
|
-localedir | --localedir | --localedi | --localed | --locale) |
ac_prev=localedir ;; |
-localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) |
localedir=$ac_optarg ;; |
|
-localstatedir | --localstatedir | --localstatedi | --localstated \ |
| --localstate | --localstat | --localsta | --localst | --locals) |
ac_prev=localstatedir ;; |
-localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ |
| --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) |
localstatedir=$ac_optarg ;; |
|
-mandir | --mandir | --mandi | --mand | --man | --ma | --m) |
ac_prev=mandir ;; |
-mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) |
mandir=$ac_optarg ;; |
|
-nfp | --nfp | --nf) |
# Obsolete; use --without-fp. |
with_fp=no ;; |
|
-no-create | --no-create | --no-creat | --no-crea | --no-cre \ |
| --no-cr | --no-c | -n) |
no_create=yes ;; |
|
-no-recursion | --no-recursion | --no-recursio | --no-recursi \ |
| --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) |
no_recursion=yes ;; |
|
-oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ |
| --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ |
| --oldin | --oldi | --old | --ol | --o) |
ac_prev=oldincludedir ;; |
-oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ |
| --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ |
| --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) |
oldincludedir=$ac_optarg ;; |
|
-prefix | --prefix | --prefi | --pref | --pre | --pr | --p) |
ac_prev=prefix ;; |
-prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) |
prefix=$ac_optarg ;; |
|
-program-prefix | --program-prefix | --program-prefi | --program-pref \ |
| --program-pre | --program-pr | --program-p) |
ac_prev=program_prefix ;; |
-program-prefix=* | --program-prefix=* | --program-prefi=* \ |
| --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) |
program_prefix=$ac_optarg ;; |
|
-program-suffix | --program-suffix | --program-suffi | --program-suff \ |
| --program-suf | --program-su | --program-s) |
ac_prev=program_suffix ;; |
-program-suffix=* | --program-suffix=* | --program-suffi=* \ |
| --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) |
program_suffix=$ac_optarg ;; |
|
-program-transform-name | --program-transform-name \ |
| --program-transform-nam | --program-transform-na \ |
| --program-transform-n | --program-transform- \ |
| --program-transform | --program-transfor \ |
| --program-transfo | --program-transf \ |
| --program-trans | --program-tran \ |
| --progr-tra | --program-tr | --program-t) |
ac_prev=program_transform_name ;; |
-program-transform-name=* | --program-transform-name=* \ |
| --program-transform-nam=* | --program-transform-na=* \ |
| --program-transform-n=* | --program-transform-=* \ |
| --program-transform=* | --program-transfor=* \ |
| --program-transfo=* | --program-transf=* \ |
| --program-trans=* | --program-tran=* \ |
| --progr-tra=* | --program-tr=* | --program-t=*) |
program_transform_name=$ac_optarg ;; |
|
-pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) |
ac_prev=pdfdir ;; |
-pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) |
pdfdir=$ac_optarg ;; |
|
-psdir | --psdir | --psdi | --psd | --ps) |
ac_prev=psdir ;; |
-psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) |
psdir=$ac_optarg ;; |
|
-q | -quiet | --quiet | --quie | --qui | --qu | --q \ |
| -silent | --silent | --silen | --sile | --sil) |
silent=yes ;; |
|
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) |
ac_prev=sbindir ;; |
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ |
| --sbi=* | --sb=*) |
sbindir=$ac_optarg ;; |
|
-sharedstatedir | --sharedstatedir | --sharedstatedi \ |
| --sharedstated | --sharedstate | --sharedstat | --sharedsta \ |
| --sharedst | --shareds | --shared | --share | --shar \ |
| --sha | --sh) |
ac_prev=sharedstatedir ;; |
-sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ |
| --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ |
| --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ |
| --sha=* | --sh=*) |
sharedstatedir=$ac_optarg ;; |
|
-site | --site | --sit) |
ac_prev=site ;; |
-site=* | --site=* | --sit=*) |
site=$ac_optarg ;; |
|
-srcdir | --srcdir | --srcdi | --srcd | --src | --sr) |
ac_prev=srcdir ;; |
-srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) |
srcdir=$ac_optarg ;; |
|
-sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ |
| --syscon | --sysco | --sysc | --sys | --sy) |
ac_prev=sysconfdir ;; |
-sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ |
| --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) |
sysconfdir=$ac_optarg ;; |
|
-target | --target | --targe | --targ | --tar | --ta | --t) |
ac_prev=target_alias ;; |
-target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) |
target_alias=$ac_optarg ;; |
|
-v | -verbose | --verbose | --verbos | --verbo | --verb) |
verbose=yes ;; |
|
-version | --version | --versio | --versi | --vers | -V) |
ac_init_version=: ;; |
|
-with-* | --with-*) |
ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` |
# Reject names that are not valid shell variable names. |
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && |
as_fn_error "invalid package name: $ac_useropt" |
ac_useropt_orig=$ac_useropt |
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` |
case $ac_user_opts in |
*" |
"with_$ac_useropt" |
"*) ;; |
*) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" |
ac_unrecognized_sep=', ';; |
esac |
eval with_$ac_useropt=\$ac_optarg ;; |
|
-without-* | --without-*) |
ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` |
# Reject names that are not valid shell variable names. |
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && |
as_fn_error "invalid package name: $ac_useropt" |
ac_useropt_orig=$ac_useropt |
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` |
case $ac_user_opts in |
*" |
"with_$ac_useropt" |
"*) ;; |
*) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" |
ac_unrecognized_sep=', ';; |
esac |
eval with_$ac_useropt=no ;; |
|
--x) |
# Obsolete; use --with-x. |
with_x=yes ;; |
|
-x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ |
| --x-incl | --x-inc | --x-in | --x-i) |
ac_prev=x_includes ;; |
-x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ |
| --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) |
x_includes=$ac_optarg ;; |
|
-x-libraries | --x-libraries | --x-librarie | --x-librari \ |
| --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) |
ac_prev=x_libraries ;; |
-x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ |
| --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) |
x_libraries=$ac_optarg ;; |
|
-*) as_fn_error "unrecognized option: \`$ac_option' |
Try \`$0 --help' for more information." |
;; |
|
*=*) |
ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` |
# Reject names that are not valid shell variable names. |
case $ac_envvar in #( |
'' | [0-9]* | *[!_$as_cr_alnum]* ) |
as_fn_error "invalid variable name: \`$ac_envvar'" ;; |
esac |
eval $ac_envvar=\$ac_optarg |
export $ac_envvar ;; |
|
*) |
# FIXME: should be removed in autoconf 3.0. |
$as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 |
expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && |
$as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 |
: ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} |
;; |
|
esac |
done |
|
if test -n "$ac_prev"; then |
ac_option=--`echo $ac_prev | sed 's/_/-/g'` |
as_fn_error "missing argument to $ac_option" |
fi |
|
if test -n "$ac_unrecognized_opts"; then |
case $enable_option_checking in |
no) ;; |
fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;; |
*) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; |
esac |
fi |
|
# Check all directory arguments for consistency. |
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ |
datadir sysconfdir sharedstatedir localstatedir includedir \ |
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ |
libdir localedir mandir |
do |
eval ac_val=\$$ac_var |
# Remove trailing slashes. |
case $ac_val in |
*/ ) |
ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` |
eval $ac_var=\$ac_val;; |
esac |
# Be sure to have absolute directory names. |
case $ac_val in |
[\\/$]* | ?:[\\/]* ) continue;; |
NONE | '' ) case $ac_var in *prefix ) continue;; esac;; |
esac |
as_fn_error "expected an absolute directory name for --$ac_var: $ac_val" |
done |
|
# There might be people who depend on the old broken behavior: `$host' |
# used to hold the argument of --host etc. |
# FIXME: To remove some day. |
build=$build_alias |
host=$host_alias |
target=$target_alias |
|
# FIXME: To remove some day. |
if test "x$host_alias" != x; then |
if test "x$build_alias" = x; then |
cross_compiling=maybe |
$as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. |
If a cross compiler is detected then cross compile mode will be used." >&2 |
elif test "x$build_alias" != "x$host_alias"; then |
cross_compiling=yes |
fi |
fi |
|
ac_tool_prefix= |
test -n "$host_alias" && ac_tool_prefix=$host_alias- |
|
test "$silent" = yes && exec 6>/dev/null |
|
|
ac_pwd=`pwd` && test -n "$ac_pwd" && |
ac_ls_di=`ls -di .` && |
ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || |
as_fn_error "working directory cannot be determined" |
test "X$ac_ls_di" = "X$ac_pwd_ls_di" || |
as_fn_error "pwd does not report name of working directory" |
|
|
# Find the source files, if location was not specified. |
if test -z "$srcdir"; then |
ac_srcdir_defaulted=yes |
# Try the directory containing this script, then the parent directory. |
ac_confdir=`$as_dirname -- "$as_myself" || |
$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ |
X"$as_myself" : 'X\(//\)[^/]' \| \ |
X"$as_myself" : 'X\(//\)$' \| \ |
X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || |
$as_echo X"$as_myself" | |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ |
s//\1/ |
q |
} |
/^X\(\/\/\)[^/].*/{ |
s//\1/ |
q |
} |
/^X\(\/\/\)$/{ |
s//\1/ |
q |
} |
/^X\(\/\).*/{ |
s//\1/ |
q |
} |
s/.*/./; q'` |
srcdir=$ac_confdir |
if test ! -r "$srcdir/$ac_unique_file"; then |
srcdir=.. |
fi |
else |
ac_srcdir_defaulted=no |
fi |
if test ! -r "$srcdir/$ac_unique_file"; then |
test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." |
as_fn_error "cannot find sources ($ac_unique_file) in $srcdir" |
fi |
ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" |
ac_abs_confdir=`( |
cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg" |
pwd)` |
# When building in place, set srcdir=. |
if test "$ac_abs_confdir" = "$ac_pwd"; then |
srcdir=. |
fi |
# Remove unnecessary trailing slashes from srcdir. |
# Double slashes in file names in object file debugging info |
# mess up M-x gdb in Emacs. |
case $srcdir in |
*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; |
esac |
for ac_var in $ac_precious_vars; do |
eval ac_env_${ac_var}_set=\${${ac_var}+set} |
eval ac_env_${ac_var}_value=\$${ac_var} |
eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} |
eval ac_cv_env_${ac_var}_value=\$${ac_var} |
done |
|
# |
# Report the --help message. |
# |
if test "$ac_init_help" = "long"; then |
# Omit some internal or obsolete options to make the list less imposing. |
# This message is too long to be a string in the A/UX 3.1 sh. |
cat <<_ACEOF |
\`configure' configures this package to adapt to many kinds of systems. |
|
Usage: $0 [OPTION]... [VAR=VALUE]... |
|
To assign environment variables (e.g., CC, CFLAGS...), specify them as |
VAR=VALUE. See below for descriptions of some of the useful variables. |
|
Defaults for the options are specified in brackets. |
|
Configuration: |
-h, --help display this help and exit |
--help=short display options specific to this package |
--help=recursive display the short help of all the included packages |
-V, --version display version information and exit |
-q, --quiet, --silent do not print \`checking...' messages |
--cache-file=FILE cache test results in FILE [disabled] |
-C, --config-cache alias for \`--cache-file=config.cache' |
-n, --no-create do not create output files |
--srcdir=DIR find the sources in DIR [configure dir or \`..'] |
|
Installation directories: |
--prefix=PREFIX install architecture-independent files in PREFIX |
[$ac_default_prefix] |
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX |
[PREFIX] |
|
By default, \`make install' will install all the files in |
\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify |
an installation prefix other than \`$ac_default_prefix' using \`--prefix', |
for instance \`--prefix=\$HOME'. |
|
For better control, use the options below. |
|
Fine tuning of the installation directories: |
--bindir=DIR user executables [EPREFIX/bin] |
--sbindir=DIR system admin executables [EPREFIX/sbin] |
--libexecdir=DIR program executables [EPREFIX/libexec] |
--sysconfdir=DIR read-only single-machine data [PREFIX/etc] |
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] |
--localstatedir=DIR modifiable single-machine data [PREFIX/var] |
--libdir=DIR object code libraries [EPREFIX/lib] |
--includedir=DIR C header files [PREFIX/include] |
--oldincludedir=DIR C header files for non-gcc [/usr/include] |
--datarootdir=DIR read-only arch.-independent data root [PREFIX/share] |
--datadir=DIR read-only architecture-independent data [DATAROOTDIR] |
--infodir=DIR info documentation [DATAROOTDIR/info] |
--localedir=DIR locale-dependent data [DATAROOTDIR/locale] |
--mandir=DIR man documentation [DATAROOTDIR/man] |
--docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] |
--htmldir=DIR html documentation [DOCDIR] |
--dvidir=DIR dvi documentation [DOCDIR] |
--pdfdir=DIR pdf documentation [DOCDIR] |
--psdir=DIR ps documentation [DOCDIR] |
_ACEOF |
|
cat <<\_ACEOF |
|
System types: |
--build=BUILD configure for building on BUILD [guessed] |
--host=HOST cross-compile to build programs to run on HOST [BUILD] |
_ACEOF |
fi |
|
if test -n "$ac_init_help"; then |
|
cat <<\_ACEOF |
|
Optional Features: |
--disable-option-checking ignore unrecognized --enable/--with options |
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) |
--enable-FEATURE[=ARG] include FEATURE [ARG=yes] |
--disable-nls do not use Native Language Support |
--disable-rpath do not hardcode runtime library paths |
--enable-maintainer-mode enable rules only needed by maintainers |
|
Optional Packages: |
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes] |
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) |
--with-gnu-ld assume the C compiler uses GNU ld default=no |
--with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib |
--without-libiconv-prefix don't search for libiconv in includedir and libdir |
--with-included-gettext use the GNU gettext library included here |
--with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib |
--without-libintl-prefix don't search for libintl in includedir and libdir |
|
Some influential environment variables: |
CC C compiler command |
CFLAGS C compiler flags |
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a |
nonstandard directory <lib dir> |
LIBS libraries to pass to the linker, e.g. -l<library> |
CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if |
you have headers in a nonstandard directory <include dir> |
CPP C preprocessor |
|
Use these variables to override the choices made by `configure' or to help |
it to find libraries and programs with nonstandard names/locations. |
|
Report bugs to the package provider. |
_ACEOF |
ac_status=$? |
fi |
|
if test "$ac_init_help" = "recursive"; then |
# If there are subdirs, report their specific --help. |
for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue |
test -d "$ac_dir" || |
{ cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || |
continue |
ac_builddir=. |
|
case "$ac_dir" in |
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; |
*) |
ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` |
# A ".." for each directory in $ac_dir_suffix. |
ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` |
case $ac_top_builddir_sub in |
"") ac_top_builddir_sub=. ac_top_build_prefix= ;; |
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;; |
esac ;; |
esac |
ac_abs_top_builddir=$ac_pwd |
ac_abs_builddir=$ac_pwd$ac_dir_suffix |
# for backward compatibility: |
ac_top_builddir=$ac_top_build_prefix |
|
case $srcdir in |
.) # We are building in place. |
ac_srcdir=. |
ac_top_srcdir=$ac_top_builddir_sub |
ac_abs_top_srcdir=$ac_pwd ;; |
[\\/]* | ?:[\\/]* ) # Absolute name. |
ac_srcdir=$srcdir$ac_dir_suffix; |
ac_top_srcdir=$srcdir |
ac_abs_top_srcdir=$srcdir ;; |
*) # Relative name. |
ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix |
ac_top_srcdir=$ac_top_build_prefix$srcdir |
ac_abs_top_srcdir=$ac_pwd/$srcdir ;; |
esac |
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix |
|
cd "$ac_dir" || { ac_status=$?; continue; } |
# Check for guested configure. |
if test -f "$ac_srcdir/configure.gnu"; then |
echo && |
$SHELL "$ac_srcdir/configure.gnu" --help=recursive |
elif test -f "$ac_srcdir/configure"; then |
echo && |
$SHELL "$ac_srcdir/configure" --help=recursive |
else |
$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 |
fi || ac_status=$? |
cd "$ac_pwd" || { ac_status=$?; break; } |
done |
fi |
|
test -n "$ac_init_help" && exit $ac_status |
if $ac_init_version; then |
cat <<\_ACEOF |
configure |
generated by GNU Autoconf 2.64 |
|
Copyright (C) 2009 Free Software Foundation, Inc. |
This configure script is free software; the Free Software Foundation |
gives unlimited permission to copy, distribute and modify it. |
_ACEOF |
exit |
fi |
|
## ------------------------ ## |
## Autoconf initialization. ## |
## ------------------------ ## |
|
# ac_fn_c_try_compile LINENO |
# -------------------------- |
# Try to compile conftest.$ac_ext, and return whether this succeeded. |
ac_fn_c_try_compile () |
{ |
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack |
rm -f conftest.$ac_objext |
if { { ac_try="$ac_compile" |
case "(($ac_try" in |
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; |
*) ac_try_echo=$ac_try;; |
esac |
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" |
$as_echo "$ac_try_echo"; } >&5 |
(eval "$ac_compile") 2>conftest.err |
ac_status=$? |
if test -s conftest.err; then |
grep -v '^ *+' conftest.err >conftest.er1 |
cat conftest.er1 >&5 |
mv -f conftest.er1 conftest.err |
fi |
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 |
test $ac_status = 0; } && { |
test -z "$ac_c_werror_flag" || |
test ! -s conftest.err |
} && test -s conftest.$ac_objext; then : |
ac_retval=0 |
else |
$as_echo "$as_me: failed program was:" >&5 |
sed 's/^/| /' conftest.$ac_ext >&5 |
|
ac_retval=1 |
fi |
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} |
return $ac_retval |
|
} # ac_fn_c_try_compile |
|
# ac_fn_c_try_link LINENO |
# ----------------------- |
# Try to link conftest.$ac_ext, and return whether this succeeded. |
ac_fn_c_try_link () |
{ |
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack |
rm -f conftest.$ac_objext conftest$ac_exeext |
if { { ac_try="$ac_link" |
case "(($ac_try" in |
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; |
*) ac_try_echo=$ac_try;; |
esac |
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" |
$as_echo "$ac_try_echo"; } >&5 |
(eval "$ac_link") 2>conftest.err |
ac_status=$? |
if test -s conftest.err; then |
grep -v '^ *+' conftest.err >conftest.er1 |
cat conftest.er1 >&5 |
mv -f conftest.er1 conftest.err |
fi |
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 |
test $ac_status = 0; } && { |
test -z "$ac_c_werror_flag" || |
test ! -s conftest.err |
} && test -s conftest$ac_exeext && { |
test "$cross_compiling" = yes || |
$as_test_x conftest$ac_exeext |
}; then : |
ac_retval=0 |
else |
$as_echo "$as_me: failed program was:" >&5 |
sed 's/^/| /' conftest.$ac_ext >&5 |
|
ac_retval=1 |
fi |
# Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information |
# created by the PGI compiler (conftest_ipa8_conftest.oo), as it would |
# interfere with the next link command; also delete a directory that is |
# left behind by Apple's compiler. We do this before executing the actions. |
rm -rf conftest.dSYM conftest_ipa8_conftest.oo |
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} |
return $ac_retval |
|
} # ac_fn_c_try_link |
|
# ac_fn_c_try_cpp LINENO |
# ---------------------- |
# Try to preprocess conftest.$ac_ext, and return whether this succeeded. |
ac_fn_c_try_cpp () |
{ |
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack |
if { { ac_try="$ac_cpp conftest.$ac_ext" |
case "(($ac_try" in |
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; |
*) ac_try_echo=$ac_try;; |
esac |
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" |
$as_echo "$ac_try_echo"; } >&5 |
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.err |
ac_status=$? |
if test -s conftest.err; then |
grep -v '^ *+' conftest.err >conftest.er1 |
cat conftest.er1 >&5 |
mv -f conftest.er1 conftest.err |
fi |
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 |
test $ac_status = 0; } >/dev/null && { |
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || |
test ! -s conftest.err |
}; then : |
ac_retval=0 |
else |
$as_echo "$as_me: failed program was:" >&5 |
sed 's/^/| /' conftest.$ac_ext >&5 |
|
ac_retval=1 |
fi |
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} |
return $ac_retval |
|
} # ac_fn_c_try_cpp |
|
# ac_fn_c_try_run LINENO |
# ---------------------- |
# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes |
# that executables *can* be run. |
ac_fn_c_try_run () |
{ |
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack |
if { { ac_try="$ac_link" |
case "(($ac_try" in |
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; |
*) ac_try_echo=$ac_try;; |
esac |
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" |
$as_echo "$ac_try_echo"; } >&5 |
(eval "$ac_link") 2>&5 |
ac_status=$? |
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 |
test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' |
{ { case "(($ac_try" in |
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; |
*) ac_try_echo=$ac_try;; |
esac |
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" |
$as_echo "$ac_try_echo"; } >&5 |
(eval "$ac_try") 2>&5 |
ac_status=$? |
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 |
test $ac_status = 0; }; }; then : |
ac_retval=0 |
else |
$as_echo "$as_me: program exited with status $ac_status" >&5 |
$as_echo "$as_me: failed program was:" >&5 |
sed 's/^/| /' conftest.$ac_ext >&5 |
|
ac_retval=$ac_status |
fi |
rm -rf conftest.dSYM conftest_ipa8_conftest.oo |
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} |
return $ac_retval |
|
} # ac_fn_c_try_run |
|
# ac_fn_c_check_type LINENO TYPE VAR INCLUDES |
# ------------------------------------------- |
# Tests whether TYPE exists after having included INCLUDES, setting cache |
# variable VAR accordingly. |
ac_fn_c_check_type () |
{ |
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 |
$as_echo_n "checking for $2... " >&6; } |
if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : |
$as_echo_n "(cached) " >&6 |
else |
eval "$3=no" |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
$4 |
int |
main () |
{ |
if (sizeof ($2)) |
return 0; |
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_compile "$LINENO"; then : |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
$4 |
int |
main () |
{ |
if (sizeof (($2))) |
return 0; |
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_compile "$LINENO"; then : |
|
else |
eval "$3=yes" |
fi |
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
fi |
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
fi |
eval ac_res=\$$3 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 |
$as_echo "$ac_res" >&6; } |
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} |
|
} # ac_fn_c_check_type |
|
# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES |
# ------------------------------------------------------- |
# Tests whether HEADER exists and can be compiled using the include files in |
# INCLUDES, setting the cache variable VAR accordingly. |
ac_fn_c_check_header_compile () |
{ |
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 |
$as_echo_n "checking for $2... " >&6; } |
if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : |
$as_echo_n "(cached) " >&6 |
else |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
$4 |
#include <$2> |
_ACEOF |
if ac_fn_c_try_compile "$LINENO"; then : |
eval "$3=yes" |
else |
eval "$3=no" |
fi |
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
fi |
eval ac_res=\$$3 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 |
$as_echo "$ac_res" >&6; } |
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} |
|
} # ac_fn_c_check_header_compile |
|
# ac_fn_c_check_func LINENO FUNC VAR |
# ---------------------------------- |
# Tests whether FUNC exists, setting the cache variable VAR accordingly |
ac_fn_c_check_func () |
{ |
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 |
$as_echo_n "checking for $2... " >&6; } |
if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : |
$as_echo_n "(cached) " >&6 |
else |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
/* Define $2 to an innocuous variant, in case <limits.h> declares $2. |
For example, HP-UX 11i <limits.h> declares gettimeofday. */ |
#define $2 innocuous_$2 |
|
/* System header to define __stub macros and hopefully few prototypes, |
which can conflict with char $2 (); below. |
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since |
<limits.h> exists even on freestanding compilers. */ |
|
#ifdef __STDC__ |
# include <limits.h> |
#else |
# include <assert.h> |
#endif |
|
#undef $2 |
|
/* Override any GCC internal prototype to avoid an error. |
Use char because int might match the return type of a GCC |
builtin and then its argument prototype would still apply. */ |
#ifdef __cplusplus |
extern "C" |
#endif |
char $2 (); |
/* The GNU C library defines this for functions which it implements |
to always fail with ENOSYS. Some functions are actually named |
something starting with __ and the normal name is an alias. */ |
#if defined __stub_$2 || defined __stub___$2 |
choke me |
#endif |
|
int |
main () |
{ |
return $2 (); |
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_link "$LINENO"; then : |
eval "$3=yes" |
else |
eval "$3=no" |
fi |
rm -f core conftest.err conftest.$ac_objext \ |
conftest$ac_exeext conftest.$ac_ext |
fi |
eval ac_res=\$$3 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 |
$as_echo "$ac_res" >&6; } |
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} |
|
} # ac_fn_c_check_func |
|
# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES |
# ------------------------------------------------------- |
# Tests whether HEADER exists, giving a warning if it cannot be compiled using |
# the include files in INCLUDES and setting the cache variable VAR |
# accordingly. |
ac_fn_c_check_header_mongrel () |
{ |
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack |
if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 |
$as_echo_n "checking for $2... " >&6; } |
if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : |
$as_echo_n "(cached) " >&6 |
fi |
eval ac_res=\$$3 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 |
$as_echo "$ac_res" >&6; } |
else |
# Is the header compilable? |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 |
$as_echo_n "checking $2 usability... " >&6; } |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
$4 |
#include <$2> |
_ACEOF |
if ac_fn_c_try_compile "$LINENO"; then : |
ac_header_compiler=yes |
else |
ac_header_compiler=no |
fi |
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 |
$as_echo "$ac_header_compiler" >&6; } |
|
# Is the header present? |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 |
$as_echo_n "checking $2 presence... " >&6; } |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#include <$2> |
_ACEOF |
if ac_fn_c_try_cpp "$LINENO"; then : |
ac_header_preproc=yes |
else |
ac_header_preproc=no |
fi |
rm -f conftest.err conftest.$ac_ext |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 |
$as_echo "$ac_header_preproc" >&6; } |
|
# So? What about this header? |
case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( |
yes:no: ) |
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 |
$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} |
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 |
$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} |
;; |
no:yes:* ) |
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 |
$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} |
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 |
$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} |
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 |
$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} |
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 |
$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} |
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 |
$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} |
;; |
esac |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 |
$as_echo_n "checking for $2... " >&6; } |
if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : |
$as_echo_n "(cached) " >&6 |
else |
eval "$3=\$ac_header_compiler" |
fi |
eval ac_res=\$$3 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 |
$as_echo "$ac_res" >&6; } |
fi |
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} |
|
} # ac_fn_c_check_header_mongrel |
cat >config.log <<_ACEOF |
This file contains any messages produced by compilers while |
running configure, to aid debugging if configure makes a mistake. |
|
It was created by $as_me, which was |
generated by GNU Autoconf 2.64. Invocation command line was |
|
$ $0 $@ |
|
_ACEOF |
exec 5>>config.log |
{ |
cat <<_ASUNAME |
## --------- ## |
## Platform. ## |
## --------- ## |
|
hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` |
uname -m = `(uname -m) 2>/dev/null || echo unknown` |
uname -r = `(uname -r) 2>/dev/null || echo unknown` |
uname -s = `(uname -s) 2>/dev/null || echo unknown` |
uname -v = `(uname -v) 2>/dev/null || echo unknown` |
|
/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` |
/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` |
|
/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` |
/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` |
/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` |
/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` |
/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` |
/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` |
/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` |
|
_ASUNAME |
|
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
$as_echo "PATH: $as_dir" |
done |
IFS=$as_save_IFS |
|
} >&5 |
|
cat >&5 <<_ACEOF |
|
|
## ----------- ## |
## Core tests. ## |
## ----------- ## |
|
_ACEOF |
|
|
# Keep a trace of the command line. |
# Strip out --no-create and --no-recursion so they do not pile up. |
# Strip out --silent because we don't want to record it for future runs. |
# Also quote any args containing shell meta-characters. |
# Make two passes to allow for proper duplicate-argument suppression. |
ac_configure_args= |
ac_configure_args0= |
ac_configure_args1= |
ac_must_keep_next=false |
for ac_pass in 1 2 |
do |
for ac_arg |
do |
case $ac_arg in |
-no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; |
-q | -quiet | --quiet | --quie | --qui | --qu | --q \ |
| -silent | --silent | --silen | --sile | --sil) |
continue ;; |
*\'*) |
ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; |
esac |
case $ac_pass in |
1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; |
2) |
as_fn_append ac_configure_args1 " '$ac_arg'" |
if test $ac_must_keep_next = true; then |
ac_must_keep_next=false # Got value, back to normal. |
else |
case $ac_arg in |
*=* | --config-cache | -C | -disable-* | --disable-* \ |
| -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ |
| -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ |
| -with-* | --with-* | -without-* | --without-* | --x) |
case "$ac_configure_args0 " in |
"$ac_configure_args1"*" '$ac_arg' "* ) continue ;; |
esac |
;; |
-* ) ac_must_keep_next=true ;; |
esac |
fi |
as_fn_append ac_configure_args " '$ac_arg'" |
;; |
esac |
done |
done |
{ ac_configure_args0=; unset ac_configure_args0;} |
{ ac_configure_args1=; unset ac_configure_args1;} |
|
# When interrupted or exit'd, cleanup temporary files, and complete |
# config.log. We remove comments because anyway the quotes in there |
# would cause problems or look ugly. |
# WARNING: Use '\'' to represent an apostrophe within the trap. |
# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. |
trap 'exit_status=$? |
# Save into config.log some information that might help in debugging. |
{ |
echo |
|
cat <<\_ASBOX |
## ---------------- ## |
## Cache variables. ## |
## ---------------- ## |
_ASBOX |
echo |
# The following way of writing the cache mishandles newlines in values, |
( |
for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do |
eval ac_val=\$$ac_var |
case $ac_val in #( |
*${as_nl}*) |
case $ac_var in #( |
*_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 |
$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; |
esac |
case $ac_var in #( |
_ | IFS | as_nl) ;; #( |
BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( |
*) { eval $ac_var=; unset $ac_var;} ;; |
esac ;; |
esac |
done |
(set) 2>&1 | |
case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( |
*${as_nl}ac_space=\ *) |
sed -n \ |
"s/'\''/'\''\\\\'\'''\''/g; |
s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" |
;; #( |
*) |
sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" |
;; |
esac | |
sort |
) |
echo |
|
cat <<\_ASBOX |
## ----------------- ## |
## Output variables. ## |
## ----------------- ## |
_ASBOX |
echo |
for ac_var in $ac_subst_vars |
do |
eval ac_val=\$$ac_var |
case $ac_val in |
*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; |
esac |
$as_echo "$ac_var='\''$ac_val'\''" |
done | sort |
echo |
|
if test -n "$ac_subst_files"; then |
cat <<\_ASBOX |
## ------------------- ## |
## File substitutions. ## |
## ------------------- ## |
_ASBOX |
echo |
for ac_var in $ac_subst_files |
do |
eval ac_val=\$$ac_var |
case $ac_val in |
*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; |
esac |
$as_echo "$ac_var='\''$ac_val'\''" |
done | sort |
echo |
fi |
|
if test -s confdefs.h; then |
cat <<\_ASBOX |
## ----------- ## |
## confdefs.h. ## |
## ----------- ## |
_ASBOX |
echo |
cat confdefs.h |
echo |
fi |
test "$ac_signal" != 0 && |
$as_echo "$as_me: caught signal $ac_signal" |
$as_echo "$as_me: exit $exit_status" |
} >&5 |
rm -f core *.core core.conftest.* && |
rm -f -r conftest* confdefs* conf$$* $ac_clean_files && |
exit $exit_status |
' 0 |
for ac_signal in 1 2 13 15; do |
trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal |
done |
ac_signal=0 |
|
# confdefs.h avoids OS command line length limits that DEFS can exceed. |
rm -f -r conftest* confdefs.h |
|
$as_echo "/* confdefs.h */" > confdefs.h |
|
# Predefined preprocessor variables. |
|
cat >>confdefs.h <<_ACEOF |
#define PACKAGE_NAME "$PACKAGE_NAME" |
_ACEOF |
|
cat >>confdefs.h <<_ACEOF |
#define PACKAGE_TARNAME "$PACKAGE_TARNAME" |
_ACEOF |
|
cat >>confdefs.h <<_ACEOF |
#define PACKAGE_VERSION "$PACKAGE_VERSION" |
_ACEOF |
|
cat >>confdefs.h <<_ACEOF |
#define PACKAGE_STRING "$PACKAGE_STRING" |
_ACEOF |
|
cat >>confdefs.h <<_ACEOF |
#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" |
_ACEOF |
|
cat >>confdefs.h <<_ACEOF |
#define PACKAGE_URL "$PACKAGE_URL" |
_ACEOF |
|
|
# Let the site file select an alternate cache file if it wants to. |
# Prefer an explicitly selected file to automatically selected ones. |
ac_site_file1=NONE |
ac_site_file2=NONE |
if test -n "$CONFIG_SITE"; then |
ac_site_file1=$CONFIG_SITE |
elif test "x$prefix" != xNONE; then |
ac_site_file1=$prefix/share/config.site |
ac_site_file2=$prefix/etc/config.site |
else |
ac_site_file1=$ac_default_prefix/share/config.site |
ac_site_file2=$ac_default_prefix/etc/config.site |
fi |
for ac_site_file in "$ac_site_file1" "$ac_site_file2" |
do |
test "x$ac_site_file" = xNONE && continue |
if test -r "$ac_site_file"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 |
$as_echo "$as_me: loading site script $ac_site_file" >&6;} |
sed 's/^/| /' "$ac_site_file" >&5 |
. "$ac_site_file" |
fi |
done |
|
if test -r "$cache_file"; then |
# Some versions of bash will fail to source /dev/null (special |
# files actually), so we avoid doing that. |
if test -f "$cache_file"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 |
$as_echo "$as_me: loading cache $cache_file" >&6;} |
case $cache_file in |
[\\/]* | ?:[\\/]* ) . "$cache_file";; |
*) . "./$cache_file";; |
esac |
fi |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 |
$as_echo "$as_me: creating cache $cache_file" >&6;} |
>$cache_file |
fi |
|
# Check that the precious variables saved in the cache have kept the same |
# value. |
ac_cache_corrupted=false |
for ac_var in $ac_precious_vars; do |
eval ac_old_set=\$ac_cv_env_${ac_var}_set |
eval ac_new_set=\$ac_env_${ac_var}_set |
eval ac_old_val=\$ac_cv_env_${ac_var}_value |
eval ac_new_val=\$ac_env_${ac_var}_value |
case $ac_old_set,$ac_new_set in |
set,) |
{ $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 |
$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} |
ac_cache_corrupted=: ;; |
,set) |
{ $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 |
$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} |
ac_cache_corrupted=: ;; |
,);; |
*) |
if test "x$ac_old_val" != "x$ac_new_val"; then |
# differences in whitespace do not lead to failure. |
ac_old_val_w=`echo x $ac_old_val` |
ac_new_val_w=`echo x $ac_new_val` |
if test "$ac_old_val_w" != "$ac_new_val_w"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 |
$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} |
ac_cache_corrupted=: |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 |
$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} |
eval $ac_var=\$ac_old_val |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 |
$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} |
{ $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 |
$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} |
fi;; |
esac |
# Pass precious variables to config.status. |
if test "$ac_new_set" = set; then |
case $ac_new_val in |
*\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; |
*) ac_arg=$ac_var=$ac_new_val ;; |
esac |
case " $ac_configure_args " in |
*" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. |
*) as_fn_append ac_configure_args " '$ac_arg'" ;; |
esac |
fi |
done |
if $ac_cache_corrupted; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 |
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} |
{ $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 |
$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} |
as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 |
fi |
## -------------------- ## |
## Main body of script. ## |
## -------------------- ## |
|
ac_ext=c |
ac_cpp='$CPP $CPPFLAGS' |
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' |
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' |
ac_compiler_gnu=$ac_cv_c_compiler_gnu |
|
|
|
|
|
|
ac_config_headers="$ac_config_headers config.h" |
|
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 |
$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } |
set x ${MAKE-make} |
ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` |
if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then : |
$as_echo_n "(cached) " >&6 |
else |
cat >conftest.make <<\_ACEOF |
SHELL = /bin/sh |
all: |
@echo '@@@%%%=$(MAKE)=@@@%%%' |
_ACEOF |
# GNU make sometimes prints "make[1]: Entering...", which would confuse us. |
case `${MAKE-make} -f conftest.make 2>/dev/null` in |
*@@@%%%=?*=@@@%%%*) |
eval ac_cv_prog_make_${ac_make}_set=yes;; |
*) |
eval ac_cv_prog_make_${ac_make}_set=no;; |
esac |
rm -f conftest.make |
fi |
if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 |
$as_echo "yes" >&6; } |
SET_MAKE= |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 |
$as_echo "no" >&6; } |
SET_MAKE="MAKE=${MAKE-make}" |
fi |
|
ac_aux_dir= |
for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do |
for ac_t in install-sh install.sh shtool; do |
if test -f "$ac_dir/$ac_t"; then |
ac_aux_dir=$ac_dir |
ac_install_sh="$ac_aux_dir/$ac_t -c" |
break 2 |
fi |
done |
done |
if test -z "$ac_aux_dir"; then |
as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 |
fi |
|
# These three variables are undocumented and unsupported, |
# and are intended to be withdrawn in a future Autoconf release. |
# They can cause serious problems if a builder's source tree is in a directory |
# whose full name contains unusual characters. |
ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. |
ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. |
ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. |
|
|
# Find a good install program. We prefer a C program (faster), |
# so one script is as good as another. But avoid the broken or |
# incompatible versions: |
# SysV /etc/install, /usr/sbin/install |
# SunOS /usr/etc/install |
# IRIX /sbin/install |
# AIX /bin/install |
# AmigaOS /C/install, which installs bootblocks on floppy discs |
# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag |
# AFS /usr/afsws/bin/install, which mishandles nonexistent args |
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" |
# OS/2's system install, which has a completely different semantic |
# ./install, which can be erroneously created by make from ./install.sh. |
# Reject install programs that cannot install multiple files. |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 |
$as_echo_n "checking for a BSD-compatible install... " >&6; } |
if test -z "$INSTALL"; then |
if test "${ac_cv_path_install+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
# Account for people who put trailing slashes in PATH elements. |
case $as_dir/ in #(( |
./ | .// | /[cC]/* | \ |
/etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ |
?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ |
/usr/ucb/* ) ;; |
*) |
# OSF1 and SCO ODT 3.0 have their own names for install. |
# Don't use installbsd from OSF since it installs stuff as root |
# by default. |
for ac_prog in ginstall scoinst install; do |
for ac_exec_ext in '' $ac_executable_extensions; do |
if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then |
if test $ac_prog = install && |
grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then |
# AIX install. It has an incompatible calling convention. |
: |
elif test $ac_prog = install && |
grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then |
# program-specific install script used by HP pwplus--don't use. |
: |
else |
rm -rf conftest.one conftest.two conftest.dir |
echo one > conftest.one |
echo two > conftest.two |
mkdir conftest.dir |
if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && |
test -s conftest.one && test -s conftest.two && |
test -s conftest.dir/conftest.one && |
test -s conftest.dir/conftest.two |
then |
ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" |
break 3 |
fi |
fi |
fi |
done |
done |
;; |
esac |
|
done |
IFS=$as_save_IFS |
|
rm -rf conftest.one conftest.two conftest.dir |
|
fi |
if test "${ac_cv_path_install+set}" = set; then |
INSTALL=$ac_cv_path_install |
else |
# As a last resort, use the slow shell script. Don't cache a |
# value for INSTALL within a source directory, because that will |
# break other packages using the cache if that directory is |
# removed, or if the value is a relative name. |
INSTALL=$ac_install_sh |
fi |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 |
$as_echo "$INSTALL" >&6; } |
|
# Use test -z because SunOS4 sh mishandles braces in ${var-val}. |
# It thinks the first close brace ends the variable substitution. |
test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' |
|
test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' |
|
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' |
|
|
MKINSTALLDIRS= |
if test -n "$ac_aux_dir"; then |
case "$ac_aux_dir" in |
/*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; |
*) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; |
esac |
fi |
if test -z "$MKINSTALLDIRS"; then |
MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" |
fi |
|
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 |
$as_echo_n "checking whether NLS is requested... " >&6; } |
# Check whether --enable-nls was given. |
if test "${enable_nls+set}" = set; then : |
enableval=$enable_nls; USE_NLS=$enableval |
else |
USE_NLS=yes |
fi |
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 |
$as_echo "$USE_NLS" >&6; } |
|
|
|
|
|
|
# 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 "msgfmt", so it can be a program name with args. |
set dummy msgfmt; ac_word=$2 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 |
$as_echo_n "checking for $ac_word... " >&6; } |
if test "${ac_cv_path_MSGFMT+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
case "$MSGFMT" in |
[\\/]* | ?:[\\/]*) |
ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. |
;; |
*) |
ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR |
for ac_dir in $PATH; 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 |
if $ac_dir/$ac_word --statistics /dev/null >/dev/null 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); then |
ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" |
break 2 |
fi |
fi |
done |
done |
IFS="$ac_save_IFS" |
test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" |
;; |
esac |
fi |
MSGFMT="$ac_cv_path_MSGFMT" |
if test "$MSGFMT" != ":"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 |
$as_echo "$MSGFMT" >&6; } |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 |
$as_echo "no" >&6; } |
fi |
|
# Extract the first word of "gmsgfmt", so it can be a program name with args. |
set dummy gmsgfmt; ac_word=$2 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 |
$as_echo_n "checking for $ac_word... " >&6; } |
if test "${ac_cv_path_GMSGFMT+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
case $GMSGFMT in |
[\\/]* | ?:[\\/]*) |
ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. |
;; |
*) |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
for ac_exec_ext in '' $ac_executable_extensions; do |
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then |
ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" |
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 |
break 2 |
fi |
done |
done |
IFS=$as_save_IFS |
|
test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" |
;; |
esac |
fi |
GMSGFMT=$ac_cv_path_GMSGFMT |
if test -n "$GMSGFMT"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 |
$as_echo "$GMSGFMT" >&6; } |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 |
$as_echo "no" >&6; } |
fi |
|
|
|
|
# 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 "xgettext", so it can be a program name with args. |
set dummy xgettext; ac_word=$2 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 |
$as_echo_n "checking for $ac_word... " >&6; } |
if test "${ac_cv_path_XGETTEXT+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
case "$XGETTEXT" in |
[\\/]* | ?:[\\/]*) |
ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. |
;; |
*) |
ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR |
for ac_dir in $PATH; 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 |
if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 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); then |
ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" |
break 2 |
fi |
fi |
done |
done |
IFS="$ac_save_IFS" |
test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" |
;; |
esac |
fi |
XGETTEXT="$ac_cv_path_XGETTEXT" |
if test "$XGETTEXT" != ":"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 |
$as_echo "$XGETTEXT" >&6; } |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 |
$as_echo "no" >&6; } |
fi |
|
rm -f messages.po |
|
|
# 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 "msgmerge", so it can be a program name with args. |
set dummy msgmerge; ac_word=$2 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 |
$as_echo_n "checking for $ac_word... " >&6; } |
if test "${ac_cv_path_MSGMERGE+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
case "$MSGMERGE" in |
[\\/]* | ?:[\\/]*) |
ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. |
;; |
*) |
ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR |
for ac_dir in $PATH; 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 |
if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then |
ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" |
break 2 |
fi |
fi |
done |
done |
IFS="$ac_save_IFS" |
test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" |
;; |
esac |
fi |
MSGMERGE="$ac_cv_path_MSGMERGE" |
if test "$MSGMERGE" != ":"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 |
$as_echo "$MSGMERGE" >&6; } |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 |
$as_echo "no" >&6; } |
fi |
|
|
if test "$GMSGFMT" != ":"; then |
if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && |
(if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then |
: ; |
else |
GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 |
$as_echo "found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; } |
GMSGFMT=":" |
fi |
fi |
|
if test "$XGETTEXT" != ":"; then |
if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && |
(if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then |
: ; |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 |
$as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } |
XGETTEXT=":" |
fi |
rm -f messages.po |
fi |
|
ac_config_commands="$ac_config_commands default-1" |
|
|
ac_ext=c |
ac_cpp='$CPP $CPPFLAGS' |
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' |
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' |
ac_compiler_gnu=$ac_cv_c_compiler_gnu |
if test -n "$ac_tool_prefix"; then |
# Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. |
set dummy ${ac_tool_prefix}gcc; ac_word=$2 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 |
$as_echo_n "checking for $ac_word... " >&6; } |
if test "${ac_cv_prog_CC+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
if test -n "$CC"; then |
ac_cv_prog_CC="$CC" # Let the user override the test. |
else |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
for ac_exec_ext in '' $ac_executable_extensions; do |
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then |
ac_cv_prog_CC="${ac_tool_prefix}gcc" |
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 |
break 2 |
fi |
done |
done |
IFS=$as_save_IFS |
|
fi |
fi |
CC=$ac_cv_prog_CC |
if test -n "$CC"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 |
$as_echo "$CC" >&6; } |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 |
$as_echo "no" >&6; } |
fi |
|
|
fi |
if test -z "$ac_cv_prog_CC"; then |
ac_ct_CC=$CC |
# Extract the first word of "gcc", so it can be a program name with args. |
set dummy gcc; ac_word=$2 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 |
$as_echo_n "checking for $ac_word... " >&6; } |
if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
if test -n "$ac_ct_CC"; then |
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. |
else |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
for ac_exec_ext in '' $ac_executable_extensions; do |
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then |
ac_cv_prog_ac_ct_CC="gcc" |
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 |
break 2 |
fi |
done |
done |
IFS=$as_save_IFS |
|
fi |
fi |
ac_ct_CC=$ac_cv_prog_ac_ct_CC |
if test -n "$ac_ct_CC"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 |
$as_echo "$ac_ct_CC" >&6; } |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 |
$as_echo "no" >&6; } |
fi |
|
if test "x$ac_ct_CC" = x; then |
CC="" |
else |
case $cross_compiling:$ac_tool_warned in |
yes:) |
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 |
$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} |
ac_tool_warned=yes ;; |
esac |
CC=$ac_ct_CC |
fi |
else |
CC="$ac_cv_prog_CC" |
fi |
|
if test -z "$CC"; then |
if test -n "$ac_tool_prefix"; then |
# Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. |
set dummy ${ac_tool_prefix}cc; ac_word=$2 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 |
$as_echo_n "checking for $ac_word... " >&6; } |
if test "${ac_cv_prog_CC+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
if test -n "$CC"; then |
ac_cv_prog_CC="$CC" # Let the user override the test. |
else |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
for ac_exec_ext in '' $ac_executable_extensions; do |
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then |
ac_cv_prog_CC="${ac_tool_prefix}cc" |
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 |
break 2 |
fi |
done |
done |
IFS=$as_save_IFS |
|
fi |
fi |
CC=$ac_cv_prog_CC |
if test -n "$CC"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 |
$as_echo "$CC" >&6; } |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 |
$as_echo "no" >&6; } |
fi |
|
|
fi |
fi |
if test -z "$CC"; then |
# Extract the first word of "cc", so it can be a program name with args. |
set dummy cc; ac_word=$2 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 |
$as_echo_n "checking for $ac_word... " >&6; } |
if test "${ac_cv_prog_CC+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
if test -n "$CC"; then |
ac_cv_prog_CC="$CC" # Let the user override the test. |
else |
ac_prog_rejected=no |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
for ac_exec_ext in '' $ac_executable_extensions; do |
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then |
if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then |
ac_prog_rejected=yes |
continue |
fi |
ac_cv_prog_CC="cc" |
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 |
break 2 |
fi |
done |
done |
IFS=$as_save_IFS |
|
if test $ac_prog_rejected = yes; then |
# We found a bogon in the path, so make sure we never use it. |
set dummy $ac_cv_prog_CC |
shift |
if test $# != 0; then |
# We chose a different compiler from the bogus one. |
# However, it has the same basename, so the bogon will be chosen |
# first if we set CC to just the basename; use the full file name. |
shift |
ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" |
fi |
fi |
fi |
fi |
CC=$ac_cv_prog_CC |
if test -n "$CC"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 |
$as_echo "$CC" >&6; } |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 |
$as_echo "no" >&6; } |
fi |
|
|
fi |
if test -z "$CC"; then |
if test -n "$ac_tool_prefix"; then |
for ac_prog in cl.exe |
do |
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. |
set dummy $ac_tool_prefix$ac_prog; ac_word=$2 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 |
$as_echo_n "checking for $ac_word... " >&6; } |
if test "${ac_cv_prog_CC+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
if test -n "$CC"; then |
ac_cv_prog_CC="$CC" # Let the user override the test. |
else |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
for ac_exec_ext in '' $ac_executable_extensions; do |
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then |
ac_cv_prog_CC="$ac_tool_prefix$ac_prog" |
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 |
break 2 |
fi |
done |
done |
IFS=$as_save_IFS |
|
fi |
fi |
CC=$ac_cv_prog_CC |
if test -n "$CC"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 |
$as_echo "$CC" >&6; } |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 |
$as_echo "no" >&6; } |
fi |
|
|
test -n "$CC" && break |
done |
fi |
if test -z "$CC"; then |
ac_ct_CC=$CC |
for ac_prog in cl.exe |
do |
# Extract the first word of "$ac_prog", so it can be a program name with args. |
set dummy $ac_prog; ac_word=$2 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 |
$as_echo_n "checking for $ac_word... " >&6; } |
if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
if test -n "$ac_ct_CC"; then |
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. |
else |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
for ac_exec_ext in '' $ac_executable_extensions; do |
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then |
ac_cv_prog_ac_ct_CC="$ac_prog" |
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 |
break 2 |
fi |
done |
done |
IFS=$as_save_IFS |
|
fi |
fi |
ac_ct_CC=$ac_cv_prog_ac_ct_CC |
if test -n "$ac_ct_CC"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 |
$as_echo "$ac_ct_CC" >&6; } |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 |
$as_echo "no" >&6; } |
fi |
|
|
test -n "$ac_ct_CC" && break |
done |
|
if test "x$ac_ct_CC" = x; then |
CC="" |
else |
case $cross_compiling:$ac_tool_warned in |
yes:) |
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 |
$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} |
ac_tool_warned=yes ;; |
esac |
CC=$ac_ct_CC |
fi |
fi |
|
fi |
|
|
test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 |
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} |
as_fn_error "no acceptable C compiler found in \$PATH |
See \`config.log' for more details." "$LINENO" 5; } |
|
# Provide some information about the compiler. |
$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 |
set X $ac_compile |
ac_compiler=$2 |
for ac_option in --version -v -V -qversion; do |
{ { ac_try="$ac_compiler $ac_option >&5" |
case "(($ac_try" in |
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; |
*) ac_try_echo=$ac_try;; |
esac |
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" |
$as_echo "$ac_try_echo"; } >&5 |
(eval "$ac_compiler $ac_option >&5") 2>conftest.err |
ac_status=$? |
if test -s conftest.err; then |
sed '10a\ |
... rest of stderr output deleted ... |
10q' conftest.err >conftest.er1 |
cat conftest.er1 >&5 |
rm -f conftest.er1 conftest.err |
fi |
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 |
test $ac_status = 0; } |
done |
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
|
int |
main () |
{ |
|
; |
return 0; |
} |
_ACEOF |
ac_clean_files_save=$ac_clean_files |
ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out conftest.out" |
# Try to create an executable without -o first, disregard a.out. |
# It will help us diagnose broken compilers, and finding out an intuition |
# of exeext. |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 |
$as_echo_n "checking for C compiler default output file name... " >&6; } |
ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` |
|
# The possible output files: |
ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" |
|
ac_rmfiles= |
for ac_file in $ac_files |
do |
case $ac_file in |
*.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; |
* ) ac_rmfiles="$ac_rmfiles $ac_file";; |
esac |
done |
rm -f $ac_rmfiles |
|
if { { ac_try="$ac_link_default" |
case "(($ac_try" in |
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; |
*) ac_try_echo=$ac_try;; |
esac |
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" |
$as_echo "$ac_try_echo"; } >&5 |
(eval "$ac_link_default") 2>&5 |
ac_status=$? |
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 |
test $ac_status = 0; }; then : |
# Autoconf-2.13 could set the ac_cv_exeext variable to `no'. |
# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' |
# in a Makefile. We should not override ac_cv_exeext if it was cached, |
# so that the user can short-circuit this test for compilers unknown to |
# Autoconf. |
for ac_file in $ac_files '' |
do |
test -f "$ac_file" || continue |
case $ac_file in |
*.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) |
;; |
[ab].out ) |
# We found the default executable, but exeext='' is most |
# certainly right. |
break;; |
*.* ) |
if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; |
then :; else |
ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` |
fi |
# We set ac_cv_exeext here because the later test for it is not |
# safe: cross compilers may not add the suffix if given an `-o' |
# argument, so we may need to know it at that point already. |
# Even if this section looks crufty: it has the advantage of |
# actually working. |
break;; |
* ) |
break;; |
esac |
done |
test "$ac_cv_exeext" = no && ac_cv_exeext= |
|
else |
ac_file='' |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 |
$as_echo "$ac_file" >&6; } |
if test -z "$ac_file"; then : |
$as_echo "$as_me: failed program was:" >&5 |
sed 's/^/| /' conftest.$ac_ext >&5 |
|
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 |
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} |
{ as_fn_set_status 77 |
as_fn_error "C compiler cannot create executables |
See \`config.log' for more details." "$LINENO" 5; }; } |
fi |
ac_exeext=$ac_cv_exeext |
|
# Check that the compiler produces executables we can run. If not, either |
# the compiler is broken, or we cross compile. |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 |
$as_echo_n "checking whether the C compiler works... " >&6; } |
# If not cross compiling, check that we can run a simple program. |
if test "$cross_compiling" != yes; then |
if { ac_try='./$ac_file' |
{ { case "(($ac_try" in |
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; |
*) ac_try_echo=$ac_try;; |
esac |
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" |
$as_echo "$ac_try_echo"; } >&5 |
(eval "$ac_try") 2>&5 |
ac_status=$? |
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 |
test $ac_status = 0; }; }; then |
cross_compiling=no |
else |
if test "$cross_compiling" = maybe; then |
cross_compiling=yes |
else |
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 |
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} |
as_fn_error "cannot run C compiled programs. |
If you meant to cross compile, use \`--host'. |
See \`config.log' for more details." "$LINENO" 5; } |
fi |
fi |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 |
$as_echo "yes" >&6; } |
|
rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out conftest.out |
ac_clean_files=$ac_clean_files_save |
# Check that the compiler produces executables we can run. If not, either |
# the compiler is broken, or we cross compile. |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 |
$as_echo_n "checking whether we are cross compiling... " >&6; } |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 |
$as_echo "$cross_compiling" >&6; } |
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 |
$as_echo_n "checking for suffix of executables... " >&6; } |
if { { ac_try="$ac_link" |
case "(($ac_try" in |
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; |
*) ac_try_echo=$ac_try;; |
esac |
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" |
$as_echo "$ac_try_echo"; } >&5 |
(eval "$ac_link") 2>&5 |
ac_status=$? |
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 |
test $ac_status = 0; }; then : |
# If both `conftest.exe' and `conftest' are `present' (well, observable) |
# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will |
# work properly (i.e., refer to `conftest.exe'), while it won't with |
# `rm'. |
for ac_file in conftest.exe conftest conftest.*; do |
test -f "$ac_file" || continue |
case $ac_file in |
*.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; |
*.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` |
break;; |
* ) break;; |
esac |
done |
else |
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 |
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} |
as_fn_error "cannot compute suffix of executables: cannot compile and link |
See \`config.log' for more details." "$LINENO" 5; } |
fi |
rm -f conftest$ac_cv_exeext |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 |
$as_echo "$ac_cv_exeext" >&6; } |
|
rm -f conftest.$ac_ext |
EXEEXT=$ac_cv_exeext |
ac_exeext=$EXEEXT |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 |
$as_echo_n "checking for suffix of object files... " >&6; } |
if test "${ac_cv_objext+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
|
int |
main () |
{ |
|
; |
return 0; |
} |
_ACEOF |
rm -f conftest.o conftest.obj |
if { { ac_try="$ac_compile" |
case "(($ac_try" in |
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; |
*) ac_try_echo=$ac_try;; |
esac |
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" |
$as_echo "$ac_try_echo"; } >&5 |
(eval "$ac_compile") 2>&5 |
ac_status=$? |
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 |
test $ac_status = 0; }; then : |
for ac_file in conftest.o conftest.obj conftest.*; do |
test -f "$ac_file" || continue; |
case $ac_file in |
*.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; |
*) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` |
break;; |
esac |
done |
else |
$as_echo "$as_me: failed program was:" >&5 |
sed 's/^/| /' conftest.$ac_ext >&5 |
|
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 |
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} |
as_fn_error "cannot compute suffix of object files: cannot compile |
See \`config.log' for more details." "$LINENO" 5; } |
fi |
rm -f conftest.$ac_cv_objext conftest.$ac_ext |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 |
$as_echo "$ac_cv_objext" >&6; } |
OBJEXT=$ac_cv_objext |
ac_objext=$OBJEXT |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 |
$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } |
if test "${ac_cv_c_compiler_gnu+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
|
int |
main () |
{ |
#ifndef __GNUC__ |
choke me |
#endif |
|
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_compile "$LINENO"; then : |
ac_compiler_gnu=yes |
else |
ac_compiler_gnu=no |
fi |
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
ac_cv_c_compiler_gnu=$ac_compiler_gnu |
|
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 |
$as_echo "$ac_cv_c_compiler_gnu" >&6; } |
if test $ac_compiler_gnu = yes; then |
GCC=yes |
else |
GCC= |
fi |
ac_test_CFLAGS=${CFLAGS+set} |
ac_save_CFLAGS=$CFLAGS |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 |
$as_echo_n "checking whether $CC accepts -g... " >&6; } |
if test "${ac_cv_prog_cc_g+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
ac_save_c_werror_flag=$ac_c_werror_flag |
ac_c_werror_flag=yes |
ac_cv_prog_cc_g=no |
CFLAGS="-g" |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
|
int |
main () |
{ |
|
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_compile "$LINENO"; then : |
ac_cv_prog_cc_g=yes |
else |
CFLAGS="" |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
|
int |
main () |
{ |
|
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_compile "$LINENO"; then : |
|
else |
ac_c_werror_flag=$ac_save_c_werror_flag |
CFLAGS="-g" |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
|
int |
main () |
{ |
|
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_compile "$LINENO"; then : |
ac_cv_prog_cc_g=yes |
fi |
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
fi |
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
fi |
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
ac_c_werror_flag=$ac_save_c_werror_flag |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 |
$as_echo "$ac_cv_prog_cc_g" >&6; } |
if test "$ac_test_CFLAGS" = set; then |
CFLAGS=$ac_save_CFLAGS |
elif test $ac_cv_prog_cc_g = yes; then |
if test "$GCC" = yes; then |
CFLAGS="-g -O2" |
else |
CFLAGS="-g" |
fi |
else |
if test "$GCC" = yes; then |
CFLAGS="-O2" |
else |
CFLAGS= |
fi |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 |
$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } |
if test "${ac_cv_prog_cc_c89+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
ac_cv_prog_cc_c89=no |
ac_save_CC=$CC |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#include <stdarg.h> |
#include <stdio.h> |
#include <sys/types.h> |
#include <sys/stat.h> |
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ |
struct buf { int x; }; |
FILE * (*rcsopen) (struct buf *, struct stat *, int); |
static char *e (p, i) |
char **p; |
int i; |
{ |
return p[i]; |
} |
static char *f (char * (*g) (char **, int), char **p, ...) |
{ |
char *s; |
va_list v; |
va_start (v,p); |
s = g (p, va_arg (v,int)); |
va_end (v); |
return s; |
} |
|
/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has |
function prototypes and stuff, but not '\xHH' hex character constants. |
These don't provoke an error unfortunately, instead are silently treated |
as 'x'. The following induces an error, until -std is added to get |
proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an |
array size at least. It's necessary to write '\x00'==0 to get something |
that's true only with -std. */ |
int osf4_cc_array ['\x00' == 0 ? 1 : -1]; |
|
/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters |
inside strings and character constants. */ |
#define FOO(x) 'x' |
int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; |
|
int test (int i, double x); |
struct s1 {int (*f) (int a);}; |
struct s2 {int (*f) (double a);}; |
int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); |
int argc; |
char **argv; |
int |
main () |
{ |
return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; |
; |
return 0; |
} |
_ACEOF |
for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ |
-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" |
do |
CC="$ac_save_CC $ac_arg" |
if ac_fn_c_try_compile "$LINENO"; then : |
ac_cv_prog_cc_c89=$ac_arg |
fi |
rm -f core conftest.err conftest.$ac_objext |
test "x$ac_cv_prog_cc_c89" != "xno" && break |
done |
rm -f conftest.$ac_ext |
CC=$ac_save_CC |
|
fi |
# AC_CACHE_VAL |
case "x$ac_cv_prog_cc_c89" in |
x) |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 |
$as_echo "none needed" >&6; } ;; |
xno) |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 |
$as_echo "unsupported" >&6; } ;; |
*) |
CC="$CC $ac_cv_prog_cc_c89" |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 |
$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; |
esac |
if test "x$ac_cv_prog_cc_c89" != xno; then : |
|
fi |
|
ac_ext=c |
ac_cpp='$CPP $CPPFLAGS' |
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' |
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' |
ac_compiler_gnu=$ac_cv_c_compiler_gnu |
|
# Make sure we can run config.sub. |
$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || |
as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 |
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 |
$as_echo_n "checking build system type... " >&6; } |
if test "${ac_cv_build+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
ac_build_alias=$build_alias |
test "x$ac_build_alias" = x && |
ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` |
test "x$ac_build_alias" = x && |
as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5 |
ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || |
as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 |
|
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 |
$as_echo "$ac_cv_build" >&6; } |
case $ac_cv_build in |
*-*-*) ;; |
*) as_fn_error "invalid value of canonical build" "$LINENO" 5;; |
esac |
build=$ac_cv_build |
ac_save_IFS=$IFS; IFS='-' |
set x $ac_cv_build |
shift |
build_cpu=$1 |
build_vendor=$2 |
shift; shift |
# Remember, the first character of IFS is used to create $*, |
# except with old shells: |
build_os=$* |
IFS=$ac_save_IFS |
case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac |
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 |
$as_echo_n "checking host system type... " >&6; } |
if test "${ac_cv_host+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
if test "x$host_alias" = x; then |
ac_cv_host=$ac_cv_build |
else |
ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || |
as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 |
fi |
|
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 |
$as_echo "$ac_cv_host" >&6; } |
case $ac_cv_host in |
*-*-*) ;; |
*) as_fn_error "invalid value of canonical host" "$LINENO" 5;; |
esac |
host=$ac_cv_host |
ac_save_IFS=$IFS; IFS='-' |
set x $ac_cv_host |
shift |
host_cpu=$1 |
host_vendor=$2 |
shift; shift |
# Remember, the first character of IFS is used to create $*, |
# except with old shells: |
host_os=$* |
IFS=$ac_save_IFS |
case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac |
|
|
if test -n "$ac_tool_prefix"; then |
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. |
set dummy ${ac_tool_prefix}ranlib; ac_word=$2 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 |
$as_echo_n "checking for $ac_word... " >&6; } |
if test "${ac_cv_prog_RANLIB+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
if test -n "$RANLIB"; then |
ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. |
else |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
for ac_exec_ext in '' $ac_executable_extensions; do |
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then |
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" |
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 |
break 2 |
fi |
done |
done |
IFS=$as_save_IFS |
|
fi |
fi |
RANLIB=$ac_cv_prog_RANLIB |
if test -n "$RANLIB"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 |
$as_echo "$RANLIB" >&6; } |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 |
$as_echo "no" >&6; } |
fi |
|
|
fi |
if test -z "$ac_cv_prog_RANLIB"; then |
ac_ct_RANLIB=$RANLIB |
# Extract the first word of "ranlib", so it can be a program name with args. |
set dummy ranlib; ac_word=$2 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 |
$as_echo_n "checking for $ac_word... " >&6; } |
if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
if test -n "$ac_ct_RANLIB"; then |
ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. |
else |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
for ac_exec_ext in '' $ac_executable_extensions; do |
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then |
ac_cv_prog_ac_ct_RANLIB="ranlib" |
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 |
break 2 |
fi |
done |
done |
IFS=$as_save_IFS |
|
fi |
fi |
ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB |
if test -n "$ac_ct_RANLIB"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 |
$as_echo "$ac_ct_RANLIB" >&6; } |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 |
$as_echo "no" >&6; } |
fi |
|
if test "x$ac_ct_RANLIB" = x; then |
RANLIB=":" |
else |
case $cross_compiling:$ac_tool_warned in |
yes:) |
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 |
$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} |
ac_tool_warned=yes ;; |
esac |
RANLIB=$ac_ct_RANLIB |
fi |
else |
RANLIB="$ac_cv_prog_RANLIB" |
fi |
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 |
$as_echo_n "checking for library containing strerror... " >&6; } |
if test "${ac_cv_search_strerror+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
ac_func_search_save_LIBS=$LIBS |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
|
/* Override any GCC internal prototype to avoid an error. |
Use char because int might match the return type of a GCC |
builtin and then its argument prototype would still apply. */ |
#ifdef __cplusplus |
extern "C" |
#endif |
char strerror (); |
int |
main () |
{ |
return strerror (); |
; |
return 0; |
} |
_ACEOF |
for ac_lib in '' cposix; do |
if test -z "$ac_lib"; then |
ac_res="none required" |
else |
ac_res=-l$ac_lib |
LIBS="-l$ac_lib $ac_func_search_save_LIBS" |
fi |
if ac_fn_c_try_link "$LINENO"; then : |
ac_cv_search_strerror=$ac_res |
fi |
rm -f core conftest.err conftest.$ac_objext \ |
conftest$ac_exeext |
if test "${ac_cv_search_strerror+set}" = set; then : |
break |
fi |
done |
if test "${ac_cv_search_strerror+set}" = set; then : |
|
else |
ac_cv_search_strerror=no |
fi |
rm conftest.$ac_ext |
LIBS=$ac_func_search_save_LIBS |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 |
$as_echo "$ac_cv_search_strerror" >&6; } |
ac_res=$ac_cv_search_strerror |
if test "$ac_res" != no; then : |
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" |
|
fi |
|
ac_ext=c |
ac_cpp='$CPP $CPPFLAGS' |
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' |
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' |
ac_compiler_gnu=$ac_cv_c_compiler_gnu |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 |
$as_echo_n "checking how to run the C preprocessor... " >&6; } |
# On Suns, sometimes $CPP names a directory. |
if test -n "$CPP" && test -d "$CPP"; then |
CPP= |
fi |
if test -z "$CPP"; then |
if test "${ac_cv_prog_CPP+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
# Double quotes because CPP needs to be expanded |
for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" |
do |
ac_preproc_ok=false |
for ac_c_preproc_warn_flag in '' yes |
do |
# Use a header file that comes with gcc, so configuring glibc |
# with a fresh cross-compiler works. |
# Prefer <limits.h> to <assert.h> if __STDC__ is defined, since |
# <limits.h> exists even on freestanding compilers. |
# On the NeXT, cc -E runs the code through the compiler's parser, |
# not just through cpp. "Syntax error" is here to catch this case. |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#ifdef __STDC__ |
# include <limits.h> |
#else |
# include <assert.h> |
#endif |
Syntax error |
_ACEOF |
if ac_fn_c_try_cpp "$LINENO"; then : |
|
else |
# Broken: fails on valid input. |
continue |
fi |
rm -f conftest.err conftest.$ac_ext |
|
# OK, works on sane cases. Now check whether nonexistent headers |
# can be detected and how. |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#include <ac_nonexistent.h> |
_ACEOF |
if ac_fn_c_try_cpp "$LINENO"; then : |
# Broken: success on invalid input. |
continue |
else |
# Passes both tests. |
ac_preproc_ok=: |
break |
fi |
rm -f conftest.err conftest.$ac_ext |
|
done |
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. |
rm -f conftest.err conftest.$ac_ext |
if $ac_preproc_ok; then : |
break |
fi |
|
done |
ac_cv_prog_CPP=$CPP |
|
fi |
CPP=$ac_cv_prog_CPP |
else |
ac_cv_prog_CPP=$CPP |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 |
$as_echo "$CPP" >&6; } |
ac_preproc_ok=false |
for ac_c_preproc_warn_flag in '' yes |
do |
# Use a header file that comes with gcc, so configuring glibc |
# with a fresh cross-compiler works. |
# Prefer <limits.h> to <assert.h> if __STDC__ is defined, since |
# <limits.h> exists even on freestanding compilers. |
# On the NeXT, cc -E runs the code through the compiler's parser, |
# not just through cpp. "Syntax error" is here to catch this case. |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#ifdef __STDC__ |
# include <limits.h> |
#else |
# include <assert.h> |
#endif |
Syntax error |
_ACEOF |
if ac_fn_c_try_cpp "$LINENO"; then : |
|
else |
# Broken: fails on valid input. |
continue |
fi |
rm -f conftest.err conftest.$ac_ext |
|
# OK, works on sane cases. Now check whether nonexistent headers |
# can be detected and how. |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#include <ac_nonexistent.h> |
_ACEOF |
if ac_fn_c_try_cpp "$LINENO"; then : |
# Broken: success on invalid input. |
continue |
else |
# Passes both tests. |
ac_preproc_ok=: |
break |
fi |
rm -f conftest.err conftest.$ac_ext |
|
done |
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. |
rm -f conftest.err conftest.$ac_ext |
if $ac_preproc_ok; then : |
|
else |
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 |
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} |
as_fn_error "C preprocessor \"$CPP\" fails sanity check |
See \`config.log' for more details." "$LINENO" 5; } |
fi |
|
ac_ext=c |
ac_cpp='$CPP $CPPFLAGS' |
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' |
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' |
ac_compiler_gnu=$ac_cv_c_compiler_gnu |
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 |
$as_echo_n "checking for grep that handles long lines and -e... " >&6; } |
if test "${ac_cv_path_GREP+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
if test -z "$GREP"; then |
ac_path_GREP_found=false |
# Loop through the user's path and test for each of PROGNAME-LIST |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
for ac_prog in grep ggrep; do |
for ac_exec_ext in '' $ac_executable_extensions; do |
ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" |
{ test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue |
# Check for GNU ac_path_GREP and select it if it is found. |
# Check for GNU $ac_path_GREP |
case `"$ac_path_GREP" --version 2>&1` in |
*GNU*) |
ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; |
*) |
ac_count=0 |
$as_echo_n 0123456789 >"conftest.in" |
while : |
do |
cat "conftest.in" "conftest.in" >"conftest.tmp" |
mv "conftest.tmp" "conftest.in" |
cp "conftest.in" "conftest.nl" |
$as_echo 'GREP' >> "conftest.nl" |
"$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break |
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break |
as_fn_arith $ac_count + 1 && ac_count=$as_val |
if test $ac_count -gt ${ac_path_GREP_max-0}; then |
# Best one so far, save it but keep looking for a better one |
ac_cv_path_GREP="$ac_path_GREP" |
ac_path_GREP_max=$ac_count |
fi |
# 10*(2^10) chars as input seems more than enough |
test $ac_count -gt 10 && break |
done |
rm -f conftest.in conftest.tmp conftest.nl conftest.out;; |
esac |
|
$ac_path_GREP_found && break 3 |
done |
done |
done |
IFS=$as_save_IFS |
if test -z "$ac_cv_path_GREP"; then |
as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 |
fi |
else |
ac_cv_path_GREP=$GREP |
fi |
|
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 |
$as_echo "$ac_cv_path_GREP" >&6; } |
GREP="$ac_cv_path_GREP" |
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 |
$as_echo_n "checking for egrep... " >&6; } |
if test "${ac_cv_path_EGREP+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 |
then ac_cv_path_EGREP="$GREP -E" |
else |
if test -z "$EGREP"; then |
ac_path_EGREP_found=false |
# Loop through the user's path and test for each of PROGNAME-LIST |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
for ac_prog in egrep; do |
for ac_exec_ext in '' $ac_executable_extensions; do |
ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" |
{ test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue |
# Check for GNU ac_path_EGREP and select it if it is found. |
# Check for GNU $ac_path_EGREP |
case `"$ac_path_EGREP" --version 2>&1` in |
*GNU*) |
ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; |
*) |
ac_count=0 |
$as_echo_n 0123456789 >"conftest.in" |
while : |
do |
cat "conftest.in" "conftest.in" >"conftest.tmp" |
mv "conftest.tmp" "conftest.in" |
cp "conftest.in" "conftest.nl" |
$as_echo 'EGREP' >> "conftest.nl" |
"$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break |
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break |
as_fn_arith $ac_count + 1 && ac_count=$as_val |
if test $ac_count -gt ${ac_path_EGREP_max-0}; then |
# Best one so far, save it but keep looking for a better one |
ac_cv_path_EGREP="$ac_path_EGREP" |
ac_path_EGREP_max=$ac_count |
fi |
# 10*(2^10) chars as input seems more than enough |
test $ac_count -gt 10 && break |
done |
rm -f conftest.in conftest.tmp conftest.nl conftest.out;; |
esac |
|
$ac_path_EGREP_found && break 3 |
done |
done |
done |
IFS=$as_save_IFS |
if test -z "$ac_cv_path_EGREP"; then |
as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 |
fi |
else |
ac_cv_path_EGREP=$EGREP |
fi |
|
fi |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 |
$as_echo "$ac_cv_path_EGREP" >&6; } |
EGREP="$ac_cv_path_EGREP" |
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 |
$as_echo_n "checking for ANSI C header files... " >&6; } |
if test "${ac_cv_header_stdc+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#include <stdlib.h> |
#include <stdarg.h> |
#include <string.h> |
#include <float.h> |
|
int |
main () |
{ |
|
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_compile "$LINENO"; then : |
ac_cv_header_stdc=yes |
else |
ac_cv_header_stdc=no |
fi |
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
|
if test $ac_cv_header_stdc = yes; then |
# SunOS 4.x string.h does not declare mem*, contrary to ANSI. |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#include <string.h> |
|
_ACEOF |
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | |
$EGREP "memchr" >/dev/null 2>&1; then : |
|
else |
ac_cv_header_stdc=no |
fi |
rm -f conftest* |
|
fi |
|
if test $ac_cv_header_stdc = yes; then |
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#include <stdlib.h> |
|
_ACEOF |
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | |
$EGREP "free" >/dev/null 2>&1; then : |
|
else |
ac_cv_header_stdc=no |
fi |
rm -f conftest* |
|
fi |
|
if test $ac_cv_header_stdc = yes; then |
# /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. |
if test "$cross_compiling" = yes; then : |
: |
else |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#include <ctype.h> |
#include <stdlib.h> |
#if ((' ' & 0x0FF) == 0x020) |
# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') |
# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) |
#else |
# define ISLOWER(c) \ |
(('a' <= (c) && (c) <= 'i') \ |
|| ('j' <= (c) && (c) <= 'r') \ |
|| ('s' <= (c) && (c) <= 'z')) |
# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) |
#endif |
|
#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) |
int |
main () |
{ |
int i; |
for (i = 0; i < 256; i++) |
if (XOR (islower (i), ISLOWER (i)) |
|| toupper (i) != TOUPPER (i)) |
return 2; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_run "$LINENO"; then : |
|
else |
ac_cv_header_stdc=no |
fi |
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ |
conftest.$ac_objext conftest.beam conftest.$ac_ext |
fi |
|
fi |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 |
$as_echo "$ac_cv_header_stdc" >&6; } |
if test $ac_cv_header_stdc = yes; then |
|
$as_echo "#define STDC_HEADERS 1" >>confdefs.h |
|
fi |
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 |
$as_echo_n "checking for an ANSI C-conforming const... " >&6; } |
if test "${ac_cv_c_const+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
|
int |
main () |
{ |
/* FIXME: Include the comments suggested by Paul. */ |
#ifndef __cplusplus |
/* Ultrix mips cc rejects this. */ |
typedef int charset[2]; |
const charset cs; |
/* SunOS 4.1.1 cc rejects this. */ |
char const *const *pcpcc; |
char **ppc; |
/* NEC SVR4.0.2 mips cc rejects this. */ |
struct point {int x, y;}; |
static struct point const zero = {0,0}; |
/* AIX XL C 1.02.0.0 rejects this. |
It does not let you subtract one const X* pointer from another in |
an arm of an if-expression whose if-part is not a constant |
expression */ |
const char *g = "string"; |
pcpcc = &g + (g ? g-g : 0); |
/* HPUX 7.0 cc rejects these. */ |
++pcpcc; |
ppc = (char**) pcpcc; |
pcpcc = (char const *const *) ppc; |
{ /* SCO 3.2v4 cc rejects this. */ |
char *t; |
char const *s = 0 ? (char *) 0 : (char const *) 0; |
|
*t++ = 0; |
if (s) return 0; |
} |
{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ |
int x[] = {25, 17}; |
const int *foo = &x[0]; |
++foo; |
} |
{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ |
typedef const int *iptr; |
iptr p = 0; |
++p; |
} |
{ /* AIX XL C 1.02.0.0 rejects this saying |
"k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ |
struct s { int j; const int *ap[3]; }; |
struct s *b; b->j = 5; |
} |
{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ |
const int foo = 10; |
if (!foo) return 0; |
} |
return !cs[0] && !zero.x; |
#endif |
|
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_compile "$LINENO"; then : |
ac_cv_c_const=yes |
else |
ac_cv_c_const=no |
fi |
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 |
$as_echo "$ac_cv_c_const" >&6; } |
if test $ac_cv_c_const = no; then |
|
$as_echo "#define const /**/" >>confdefs.h |
|
fi |
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 |
$as_echo_n "checking for inline... " >&6; } |
if test "${ac_cv_c_inline+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
ac_cv_c_inline=no |
for ac_kw in inline __inline__ __inline; do |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#ifndef __cplusplus |
typedef int foo_t; |
static $ac_kw foo_t static_foo () {return 0; } |
$ac_kw foo_t foo () {return 0; } |
#endif |
|
_ACEOF |
if ac_fn_c_try_compile "$LINENO"; then : |
ac_cv_c_inline=$ac_kw |
fi |
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
test "$ac_cv_c_inline" != no && break |
done |
|
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 |
$as_echo "$ac_cv_c_inline" >&6; } |
|
case $ac_cv_c_inline in |
inline | yes) ;; |
*) |
case $ac_cv_c_inline in |
no) ac_val=;; |
*) ac_val=$ac_cv_c_inline;; |
esac |
cat >>confdefs.h <<_ACEOF |
#ifndef __cplusplus |
#define inline $ac_val |
#endif |
_ACEOF |
;; |
esac |
|
# On IRIX 5.3, sys/types and inttypes.h are conflicting. |
for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ |
inttypes.h stdint.h unistd.h |
do : |
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` |
ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default |
" |
eval as_val=\$$as_ac_Header |
if test "x$as_val" = x""yes; then : |
cat >>confdefs.h <<_ACEOF |
#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 |
_ACEOF |
|
fi |
|
done |
|
|
ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" |
if test "x$ac_cv_type_off_t" = x""yes; then : |
|
else |
|
cat >>confdefs.h <<_ACEOF |
#define off_t long int |
_ACEOF |
|
fi |
|
ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" |
if test "x$ac_cv_type_size_t" = x""yes; then : |
|
else |
|
cat >>confdefs.h <<_ACEOF |
#define size_t unsigned int |
_ACEOF |
|
fi |
|
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works |
# for constant arguments. Useless! |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 |
$as_echo_n "checking for working alloca.h... " >&6; } |
if test "${ac_cv_working_alloca_h+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#include <alloca.h> |
int |
main () |
{ |
char *p = (char *) alloca (2 * sizeof (int)); |
if (p) return 0; |
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_link "$LINENO"; then : |
ac_cv_working_alloca_h=yes |
else |
ac_cv_working_alloca_h=no |
fi |
rm -f core conftest.err conftest.$ac_objext \ |
conftest$ac_exeext conftest.$ac_ext |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 |
$as_echo "$ac_cv_working_alloca_h" >&6; } |
if test $ac_cv_working_alloca_h = yes; then |
|
$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h |
|
fi |
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 |
$as_echo_n "checking for alloca... " >&6; } |
if test "${ac_cv_func_alloca_works+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#ifdef __GNUC__ |
# define alloca __builtin_alloca |
#else |
# ifdef _MSC_VER |
# include <malloc.h> |
# define alloca _alloca |
# else |
# ifdef HAVE_ALLOCA_H |
# include <alloca.h> |
# else |
# ifdef _AIX |
#pragma alloca |
# else |
# ifndef alloca /* predefined by HP cc +Olibcalls */ |
char *alloca (); |
# endif |
# endif |
# endif |
# endif |
#endif |
|
int |
main () |
{ |
char *p = (char *) alloca (1); |
if (p) return 0; |
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_link "$LINENO"; then : |
ac_cv_func_alloca_works=yes |
else |
ac_cv_func_alloca_works=no |
fi |
rm -f core conftest.err conftest.$ac_objext \ |
conftest$ac_exeext conftest.$ac_ext |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 |
$as_echo "$ac_cv_func_alloca_works" >&6; } |
|
if test $ac_cv_func_alloca_works = yes; then |
|
$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h |
|
else |
# The SVR3 libPW and SVR4 libucb both contain incompatible functions |
# that cause trouble. Some versions do not even contain alloca or |
# contain a buggy version. If you still want to use their alloca, |
# use ar to extract alloca.o from them instead of compiling alloca.c. |
|
ALLOCA=\${LIBOBJDIR}alloca.$ac_objext |
|
$as_echo "#define C_ALLOCA 1" >>confdefs.h |
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 |
$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } |
if test "${ac_cv_os_cray+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#if defined CRAY && ! defined CRAY2 |
webecray |
#else |
wenotbecray |
#endif |
|
_ACEOF |
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | |
$EGREP "webecray" >/dev/null 2>&1; then : |
ac_cv_os_cray=yes |
else |
ac_cv_os_cray=no |
fi |
rm -f conftest* |
|
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 |
$as_echo "$ac_cv_os_cray" >&6; } |
if test $ac_cv_os_cray = yes; then |
for ac_func in _getb67 GETB67 getb67; do |
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` |
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" |
eval as_val=\$$as_ac_var |
if test "x$as_val" = x""yes; then : |
|
cat >>confdefs.h <<_ACEOF |
#define CRAY_STACKSEG_END $ac_func |
_ACEOF |
|
break |
fi |
|
done |
fi |
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 |
$as_echo_n "checking stack direction for C alloca... " >&6; } |
if test "${ac_cv_c_stack_direction+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
if test "$cross_compiling" = yes; then : |
ac_cv_c_stack_direction=0 |
else |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
$ac_includes_default |
int |
find_stack_direction () |
{ |
static char *addr = 0; |
auto char dummy; |
if (addr == 0) |
{ |
addr = &dummy; |
return find_stack_direction (); |
} |
else |
return (&dummy > addr) ? 1 : -1; |
} |
|
int |
main () |
{ |
return find_stack_direction () < 0; |
} |
_ACEOF |
if ac_fn_c_try_run "$LINENO"; then : |
ac_cv_c_stack_direction=1 |
else |
ac_cv_c_stack_direction=-1 |
fi |
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ |
conftest.$ac_objext conftest.beam conftest.$ac_ext |
fi |
|
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 |
$as_echo "$ac_cv_c_stack_direction" >&6; } |
cat >>confdefs.h <<_ACEOF |
#define STACK_DIRECTION $ac_cv_c_stack_direction |
_ACEOF |
|
|
fi |
|
for ac_header in stdlib.h unistd.h |
do : |
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` |
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" |
eval as_val=\$$as_ac_Header |
if test "x$as_val" = x""yes; then : |
cat >>confdefs.h <<_ACEOF |
#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 |
_ACEOF |
|
fi |
|
done |
|
for ac_func in getpagesize |
do : |
ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" |
if test "x$ac_cv_func_getpagesize" = x""yes; then : |
cat >>confdefs.h <<_ACEOF |
#define HAVE_GETPAGESIZE 1 |
_ACEOF |
|
fi |
done |
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 |
$as_echo_n "checking for working mmap... " >&6; } |
if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
if test "$cross_compiling" = yes; then : |
ac_cv_func_mmap_fixed_mapped=no |
else |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
$ac_includes_default |
/* malloc might have been renamed as rpl_malloc. */ |
#undef malloc |
|
/* Thanks to Mike Haertel and Jim Avera for this test. |
Here is a matrix of mmap possibilities: |
mmap private not fixed |
mmap private fixed at somewhere currently unmapped |
mmap private fixed at somewhere already mapped |
mmap shared not fixed |
mmap shared fixed at somewhere currently unmapped |
mmap shared fixed at somewhere already mapped |
For private mappings, we should verify that changes cannot be read() |
back from the file, nor mmap's back from the file at a different |
address. (There have been systems where private was not correctly |
implemented like the infamous i386 svr4.0, and systems where the |
VM page cache was not coherent with the file system buffer cache |
like early versions of FreeBSD and possibly contemporary NetBSD.) |
For shared mappings, we should conversely verify that changes get |
propagated back to all the places they're supposed to be. |
|
Grep wants private fixed already mapped. |
The main things grep needs to know about mmap are: |
* does it exist and is it safe to write into the mmap'd area |
* how to use it (BSD variants) */ |
|
#include <fcntl.h> |
#include <sys/mman.h> |
|
#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H |
char *malloc (); |
#endif |
|
/* This mess was copied from the GNU getpagesize.h. */ |
#ifndef HAVE_GETPAGESIZE |
/* Assume that all systems that can run configure have sys/param.h. */ |
# ifndef HAVE_SYS_PARAM_H |
# define HAVE_SYS_PARAM_H 1 |
# endif |
|
# ifdef _SC_PAGESIZE |
# define getpagesize() sysconf(_SC_PAGESIZE) |
# else /* no _SC_PAGESIZE */ |
# ifdef HAVE_SYS_PARAM_H |
# include <sys/param.h> |
# ifdef EXEC_PAGESIZE |
# define getpagesize() EXEC_PAGESIZE |
# else /* no EXEC_PAGESIZE */ |
# ifdef NBPG |
# define getpagesize() NBPG * CLSIZE |
# ifndef CLSIZE |
# define CLSIZE 1 |
# endif /* no CLSIZE */ |
# else /* no NBPG */ |
# ifdef NBPC |
# define getpagesize() NBPC |
# else /* no NBPC */ |
# ifdef PAGESIZE |
# define getpagesize() PAGESIZE |
# endif /* PAGESIZE */ |
# endif /* no NBPC */ |
# endif /* no NBPG */ |
# endif /* no EXEC_PAGESIZE */ |
# else /* no HAVE_SYS_PARAM_H */ |
# define getpagesize() 8192 /* punt totally */ |
# endif /* no HAVE_SYS_PARAM_H */ |
# endif /* no _SC_PAGESIZE */ |
|
#endif /* no HAVE_GETPAGESIZE */ |
|
int |
main () |
{ |
char *data, *data2, *data3; |
int i, pagesize; |
int fd; |
|
pagesize = getpagesize (); |
|
/* First, make a file with some known garbage in it. */ |
data = (char *) malloc (pagesize); |
if (!data) |
return 1; |
for (i = 0; i < pagesize; ++i) |
*(data + i) = rand (); |
umask (0); |
fd = creat ("conftest.mmap", 0600); |
if (fd < 0) |
return 1; |
if (write (fd, data, pagesize) != pagesize) |
return 1; |
close (fd); |
|
/* Next, try to mmap the file at a fixed address which already has |
something else allocated at it. If we can, also make sure that |
we see the same garbage. */ |
fd = open ("conftest.mmap", O_RDWR); |
if (fd < 0) |
return 1; |
data2 = (char *) malloc (2 * pagesize); |
if (!data2) |
return 1; |
data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1); |
if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, |
MAP_PRIVATE | MAP_FIXED, fd, 0L)) |
return 1; |
for (i = 0; i < pagesize; ++i) |
if (*(data + i) != *(data2 + i)) |
return 1; |
|
/* Finally, make sure that changes to the mapped area do not |
percolate back to the file as seen by read(). (This is a bug on |
some variants of i386 svr4.0.) */ |
for (i = 0; i < pagesize; ++i) |
*(data2 + i) = *(data2 + i) + 1; |
data3 = (char *) malloc (pagesize); |
if (!data3) |
return 1; |
if (read (fd, data3, pagesize) != pagesize) |
return 1; |
for (i = 0; i < pagesize; ++i) |
if (*(data + i) != *(data3 + i)) |
return 1; |
close (fd); |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_run "$LINENO"; then : |
ac_cv_func_mmap_fixed_mapped=yes |
else |
ac_cv_func_mmap_fixed_mapped=no |
fi |
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ |
conftest.$ac_objext conftest.beam conftest.$ac_ext |
fi |
|
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 |
$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } |
if test $ac_cv_func_mmap_fixed_mapped = yes; then |
|
$as_echo "#define HAVE_MMAP 1" >>confdefs.h |
|
fi |
rm -f conftest.mmap |
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2.1 or newer" >&5 |
$as_echo_n "checking whether we are using the GNU C Library 2.1 or newer... " >&6; } |
if test "${ac_cv_gnu_library_2_1+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
|
#include <features.h> |
#ifdef __GNU_LIBRARY__ |
#if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) |
Lucky GNU user |
#endif |
#endif |
|
_ACEOF |
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | |
$EGREP "Lucky GNU user" >/dev/null 2>&1; then : |
ac_cv_gnu_library_2_1=yes |
else |
ac_cv_gnu_library_2_1=no |
fi |
rm -f conftest* |
|
|
|
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5 |
$as_echo "$ac_cv_gnu_library_2_1" >&6; } |
|
GLIBC21="$ac_cv_gnu_library_2_1" |
|
|
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether integer division by zero raises SIGFPE" >&5 |
$as_echo_n "checking whether integer division by zero raises SIGFPE... " >&6; } |
if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
|
if test "$cross_compiling" = yes; then : |
|
# Guess based on the CPU. |
case "$host_cpu" in |
alpha* | i3456786 | m68k | s390*) |
gt_cv_int_divbyzero_sigfpe="guessing yes";; |
*) |
gt_cv_int_divbyzero_sigfpe="guessing no";; |
esac |
|
else |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
|
#include <stdlib.h> |
#include <signal.h> |
|
static void |
#ifdef __cplusplus |
sigfpe_handler (int sig) |
#else |
sigfpe_handler (sig) int sig; |
#endif |
{ |
/* 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); |
} |
|
_ACEOF |
if ac_fn_c_try_run "$LINENO"; then : |
gt_cv_int_divbyzero_sigfpe=yes |
else |
gt_cv_int_divbyzero_sigfpe=no |
fi |
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ |
conftest.$ac_objext conftest.beam conftest.$ac_ext |
fi |
|
|
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_int_divbyzero_sigfpe" >&5 |
$as_echo "$gt_cv_int_divbyzero_sigfpe" >&6; } |
case "$gt_cv_int_divbyzero_sigfpe" in |
*yes) value=1;; |
*) value=0;; |
esac |
|
cat >>confdefs.h <<_ACEOF |
#define INTDIV0_RAISES_SIGFPE $value |
_ACEOF |
|
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inttypes.h" >&5 |
$as_echo_n "checking for inttypes.h... " >&6; } |
if test "${jm_ac_cv_header_inttypes_h+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#include <sys/types.h> |
#include <inttypes.h> |
int |
main () |
{ |
uintmax_t i = (uintmax_t) -1; |
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_compile "$LINENO"; then : |
jm_ac_cv_header_inttypes_h=yes |
else |
jm_ac_cv_header_inttypes_h=no |
fi |
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $jm_ac_cv_header_inttypes_h" >&5 |
$as_echo "$jm_ac_cv_header_inttypes_h" >&6; } |
if test $jm_ac_cv_header_inttypes_h = yes; then |
|
cat >>confdefs.h <<_ACEOF |
#define HAVE_INTTYPES_H_WITH_UINTMAX 1 |
_ACEOF |
|
fi |
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint.h" >&5 |
$as_echo_n "checking for stdint.h... " >&6; } |
if test "${jm_ac_cv_header_stdint_h+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#include <sys/types.h> |
#include <stdint.h> |
int |
main () |
{ |
uintmax_t i = (uintmax_t) -1; |
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_compile "$LINENO"; then : |
jm_ac_cv_header_stdint_h=yes |
else |
jm_ac_cv_header_stdint_h=no |
fi |
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $jm_ac_cv_header_stdint_h" >&5 |
$as_echo "$jm_ac_cv_header_stdint_h" >&6; } |
if test $jm_ac_cv_header_stdint_h = yes; then |
|
cat >>confdefs.h <<_ACEOF |
#define HAVE_STDINT_H_WITH_UINTMAX 1 |
_ACEOF |
|
fi |
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long" >&5 |
$as_echo_n "checking for unsigned long long... " >&6; } |
if test "${ac_cv_type_unsigned_long_long+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
unsigned long long ull = 1; int i = 63; |
int |
main () |
{ |
unsigned long long ullmax = (unsigned long long) -1; |
return ull << i | ull >> i | ullmax / ull | ullmax % ull; |
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_link "$LINENO"; then : |
ac_cv_type_unsigned_long_long=yes |
else |
ac_cv_type_unsigned_long_long=no |
fi |
rm -f core conftest.err conftest.$ac_objext \ |
conftest$ac_exeext conftest.$ac_ext |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long" >&5 |
$as_echo "$ac_cv_type_unsigned_long_long" >&6; } |
if test $ac_cv_type_unsigned_long_long = yes; then |
|
$as_echo "#define HAVE_UNSIGNED_LONG_LONG 1" >>confdefs.h |
|
fi |
|
|
|
|
if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then |
|
test $ac_cv_type_unsigned_long_long = yes \ |
&& ac_type='unsigned long long' \ |
|| ac_type='unsigned long' |
|
cat >>confdefs.h <<_ACEOF |
#define uintmax_t $ac_type |
_ACEOF |
|
else |
|
$as_echo "#define HAVE_UINTMAX_T 1" >>confdefs.h |
|
fi |
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inttypes.h" >&5 |
$as_echo_n "checking for inttypes.h... " >&6; } |
if test "${gt_cv_header_inttypes_h+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#include <sys/types.h> |
#include <inttypes.h> |
int |
main () |
{ |
|
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_compile "$LINENO"; then : |
gt_cv_header_inttypes_h=yes |
else |
gt_cv_header_inttypes_h=no |
fi |
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
|
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_header_inttypes_h" >&5 |
$as_echo "$gt_cv_header_inttypes_h" >&6; } |
if test $gt_cv_header_inttypes_h = yes; then |
|
cat >>confdefs.h <<_ACEOF |
#define HAVE_INTTYPES_H 1 |
_ACEOF |
|
fi |
|
|
|
if test $gt_cv_header_inttypes_h = yes; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the inttypes.h PRIxNN macros are broken" >&5 |
$as_echo_n "checking whether the inttypes.h PRIxNN macros are broken... " >&6; } |
if test "${gt_cv_inttypes_pri_broken+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#include <inttypes.h> |
#ifdef PRId32 |
char *p = PRId32; |
#endif |
|
int |
main () |
{ |
|
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_compile "$LINENO"; then : |
gt_cv_inttypes_pri_broken=no |
else |
gt_cv_inttypes_pri_broken=yes |
fi |
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
|
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_inttypes_pri_broken" >&5 |
$as_echo "$gt_cv_inttypes_pri_broken" >&6; } |
fi |
if test "$gt_cv_inttypes_pri_broken" = yes; then |
|
cat >>confdefs.h <<_ACEOF |
#define PRI_MACROS_BROKEN 1 |
_ACEOF |
|
fi |
|
|
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" |
|
|
# Check whether --with-gnu-ld was given. |
if test "${with_gnu_ld+set}" = set; then : |
withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes |
else |
with_gnu_ld=no |
fi |
|
# 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. |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 |
$as_echo_n "checking for ld used by GCC... " >&6; } |
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 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 |
$as_echo_n "checking for GNU ld... " >&6; } |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 |
$as_echo_n "checking for non-GNU ld... " >&6; } |
fi |
if test "${acl_cv_path_LD+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
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. |
if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then |
test "$with_gnu_ld" != no && break |
else |
test "$with_gnu_ld" != yes && break |
fi |
fi |
done |
IFS="$ac_save_ifs" |
else |
acl_cv_path_LD="$LD" # Let the user override the test with a path. |
fi |
fi |
|
LD="$acl_cv_path_LD" |
if test -n "$LD"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 |
$as_echo "$LD" >&6; } |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 |
$as_echo "no" >&6; } |
fi |
test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 |
$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } |
if test "${acl_cv_prog_gnu_ld+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
# I'd rather use --version here, but apparently some GNU ld's only accept -v. |
if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then |
acl_cv_prog_gnu_ld=yes |
else |
acl_cv_prog_gnu_ld=no |
fi |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5 |
$as_echo "$acl_cv_prog_gnu_ld" >&6; } |
with_gnu_ld=$acl_cv_prog_gnu_ld |
|
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 |
$as_echo_n "checking for shared library run path origin... " >&6; } |
if test "${acl_cv_rpath+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
|
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 |
|
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 |
$as_echo "$acl_cv_rpath" >&6; } |
wl="$acl_cv_wl" |
libext="$acl_cv_libext" |
shlibext="$acl_cv_shlibext" |
hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" |
hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" |
hardcode_direct="$acl_cv_hardcode_direct" |
hardcode_minus_L="$acl_cv_hardcode_minus_L" |
# Check whether --enable-rpath was given. |
if test "${enable_rpath+set}" = set; then : |
enableval=$enable_rpath; : |
else |
enable_rpath=yes |
fi |
|
|
|
|
|
|
|
|
use_additional=yes |
|
acl_save_prefix="$prefix" |
prefix="$acl_final_prefix" |
acl_save_exec_prefix="$exec_prefix" |
exec_prefix="$acl_final_exec_prefix" |
|
eval additional_includedir=\"$includedir\" |
eval additional_libdir=\"$libdir\" |
|
exec_prefix="$acl_save_exec_prefix" |
prefix="$acl_save_prefix" |
|
|
# Check whether --with-libiconv-prefix was given. |
if test "${with_libiconv_prefix+set}" = set; then : |
withval=$with_libiconv_prefix; |
if test "X$withval" = "Xno"; then |
use_additional=no |
else |
if test "X$withval" = "X"; then |
|
acl_save_prefix="$prefix" |
prefix="$acl_final_prefix" |
acl_save_exec_prefix="$exec_prefix" |
exec_prefix="$acl_final_exec_prefix" |
|
eval additional_includedir=\"$includedir\" |
eval additional_libdir=\"$libdir\" |
|
exec_prefix="$acl_save_exec_prefix" |
prefix="$acl_save_prefix" |
|
else |
additional_includedir="$withval/include" |
additional_libdir="$withval/lib" |
fi |
fi |
|
fi |
|
LIBICONV= |
LTLIBICONV= |
INCICONV= |
rpathdirs= |
ltrpathdirs= |
names_already_handled= |
names_next_round='iconv ' |
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" |
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" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" |
eval value=\"\$LTLIB$uppername\" |
test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" |
else |
: |
fi |
else |
found_dir= |
found_la= |
found_so= |
found_a= |
if test $use_additional = yes; then |
if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then |
found_dir="$additional_libdir" |
found_so="$additional_libdir/lib$name.$shlibext" |
if test -f "$additional_libdir/lib$name.la"; then |
found_la="$additional_libdir/lib$name.la" |
fi |
else |
if test -f "$additional_libdir/lib$name.$libext"; then |
found_dir="$additional_libdir" |
found_a="$additional_libdir/lib$name.$libext" |
if test -f "$additional_libdir/lib$name.la"; then |
found_la="$additional_libdir/lib$name.la" |
fi |
fi |
fi |
fi |
if test "X$found_dir" = "X"; then |
for x in $LDFLAGS $LTLIBICONV; do |
|
acl_save_prefix="$prefix" |
prefix="$acl_final_prefix" |
acl_save_exec_prefix="$exec_prefix" |
exec_prefix="$acl_final_exec_prefix" |
eval x=\"$x\" |
exec_prefix="$acl_save_exec_prefix" |
prefix="$acl_save_prefix" |
|
case "$x" in |
-L*) |
dir=`echo "X$x" | sed -e 's/^X-L//'` |
if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then |
found_dir="$dir" |
found_so="$dir/lib$name.$shlibext" |
if test -f "$dir/lib$name.la"; then |
found_la="$dir/lib$name.la" |
fi |
else |
if test -f "$dir/lib$name.$libext"; then |
found_dir="$dir" |
found_a="$dir/lib$name.$libext" |
if test -f "$dir/lib$name.la"; then |
found_la="$dir/lib$name.la" |
fi |
fi |
fi |
;; |
esac |
if test "X$found_dir" != "X"; then |
break |
fi |
done |
fi |
if test "X$found_dir" != "X"; then |
LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" |
if test "X$found_so" != "X"; then |
if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then |
LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" |
else |
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 |
if test "$hardcode_direct" = yes; then |
LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" |
else |
if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then |
LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" |
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 |
haveit= |
for x in $LDFLAGS $LIBICONV; do |
|
acl_save_prefix="$prefix" |
prefix="$acl_final_prefix" |
acl_save_exec_prefix="$exec_prefix" |
exec_prefix="$acl_final_exec_prefix" |
eval x=\"$x\" |
exec_prefix="$acl_save_exec_prefix" |
prefix="$acl_save_prefix" |
|
if test "X$x" = "X-L$found_dir"; then |
haveit=yes |
break |
fi |
done |
if test -z "$haveit"; then |
LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" |
fi |
if test "$hardcode_minus_L" != no; then |
LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" |
else |
LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" |
fi |
fi |
fi |
fi |
else |
if test "X$found_a" != "X"; then |
LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" |
else |
LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" |
fi |
fi |
additional_includedir= |
case "$found_dir" in |
*/lib | */lib/) |
basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` |
additional_includedir="$basedir/include" |
;; |
esac |
if test "X$additional_includedir" != "X"; then |
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*) haveit=yes;; |
esac |
fi |
fi |
if test -z "$haveit"; then |
for x in $CPPFLAGS $INCICONV; do |
|
acl_save_prefix="$prefix" |
prefix="$acl_final_prefix" |
acl_save_exec_prefix="$exec_prefix" |
exec_prefix="$acl_final_exec_prefix" |
eval x=\"$x\" |
exec_prefix="$acl_save_exec_prefix" |
prefix="$acl_save_prefix" |
|
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 |
INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" |
fi |
fi |
fi |
fi |
fi |
if test -n "$found_la"; then |
save_libdir="$libdir" |
case "$found_la" in |
*/* | *\\*) . "$found_la" ;; |
*) . "./$found_la" ;; |
esac |
libdir="$save_libdir" |
for dep in $dependency_libs; do |
case "$dep" in |
-L*) |
additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` |
if test "X$additional_libdir" != "X/usr/lib"; then |
haveit= |
if test "X$additional_libdir" = "X/usr/local/lib"; then |
if test -n "$GCC"; then |
case $host_os in |
linux*) haveit=yes;; |
esac |
fi |
fi |
if test -z "$haveit"; then |
haveit= |
for x in $LDFLAGS $LIBICONV; do |
|
acl_save_prefix="$prefix" |
prefix="$acl_final_prefix" |
acl_save_exec_prefix="$exec_prefix" |
exec_prefix="$acl_final_exec_prefix" |
eval x=\"$x\" |
exec_prefix="$acl_save_exec_prefix" |
prefix="$acl_save_prefix" |
|
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 |
LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" |
fi |
fi |
haveit= |
for x in $LDFLAGS $LTLIBICONV; do |
|
acl_save_prefix="$prefix" |
prefix="$acl_final_prefix" |
acl_save_exec_prefix="$exec_prefix" |
exec_prefix="$acl_final_exec_prefix" |
eval x=\"$x\" |
exec_prefix="$acl_save_exec_prefix" |
prefix="$acl_save_prefix" |
|
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 |
LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" |
fi |
fi |
fi |
fi |
;; |
-R*) |
dir=`echo "X$dep" | sed -e 's/^X-R//'` |
if test "$enable_rpath" != no; then |
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 |
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*) |
names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` |
;; |
*.la) |
names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` |
;; |
*) |
LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" |
LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" |
;; |
esac |
done |
fi |
else |
LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" |
LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" |
fi |
fi |
fi |
done |
done |
if test "X$rpathdirs" != "X"; then |
if test -n "$hardcode_libdir_separator"; then |
alldirs= |
for found_dir in $rpathdirs; do |
alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" |
done |
acl_save_libdir="$libdir" |
libdir="$alldirs" |
eval flag=\"$hardcode_libdir_flag_spec\" |
libdir="$acl_save_libdir" |
LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" |
else |
for found_dir in $rpathdirs; do |
acl_save_libdir="$libdir" |
libdir="$found_dir" |
eval flag=\"$hardcode_libdir_flag_spec\" |
libdir="$acl_save_libdir" |
LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" |
done |
fi |
fi |
if test "X$ltrpathdirs" != "X"; then |
for found_dir in $ltrpathdirs; do |
LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" |
done |
fi |
|
|
|
|
for ac_header in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ |
stdlib.h string.h unistd.h sys/param.h |
do : |
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` |
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" |
eval as_val=\$$as_ac_Header |
if test "x$as_val" = x""yes; then : |
cat >>confdefs.h <<_ACEOF |
#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 |
_ACEOF |
|
fi |
|
done |
|
for ac_func in feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ |
geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ |
strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ |
__fsetlocking |
do : |
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` |
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" |
eval as_val=\$$as_ac_var |
if test "x$as_val" = x""yes; then : |
cat >>confdefs.h <<_ACEOF |
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 |
_ACEOF |
|
fi |
done |
|
|
|
|
|
|
|
am_save_CPPFLAGS="$CPPFLAGS" |
|
for element in $INCICONV; do |
haveit= |
for x in $CPPFLAGS; do |
|
acl_save_prefix="$prefix" |
prefix="$acl_final_prefix" |
acl_save_exec_prefix="$exec_prefix" |
exec_prefix="$acl_final_exec_prefix" |
eval x=\"$x\" |
exec_prefix="$acl_save_exec_prefix" |
prefix="$acl_save_prefix" |
|
if test "X$x" = "X$element"; then |
haveit=yes |
break |
fi |
done |
if test -z "$haveit"; then |
CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" |
fi |
done |
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 |
$as_echo_n "checking for iconv... " >&6; } |
if test "${am_cv_func_iconv+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
|
am_cv_func_iconv="no, consider installing GNU libiconv" |
am_cv_lib_iconv=no |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#include <stdlib.h> |
#include <iconv.h> |
int |
main () |
{ |
iconv_t cd = iconv_open("",""); |
iconv(cd,NULL,NULL,NULL,NULL); |
iconv_close(cd); |
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_link "$LINENO"; then : |
am_cv_func_iconv=yes |
fi |
rm -f core conftest.err conftest.$ac_objext \ |
conftest$ac_exeext conftest.$ac_ext |
if test "$am_cv_func_iconv" != yes; then |
am_save_LIBS="$LIBS" |
LIBS="$LIBS $LIBICONV" |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#include <stdlib.h> |
#include <iconv.h> |
int |
main () |
{ |
iconv_t cd = iconv_open("",""); |
iconv(cd,NULL,NULL,NULL,NULL); |
iconv_close(cd); |
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_link "$LINENO"; then : |
am_cv_lib_iconv=yes |
am_cv_func_iconv=yes |
fi |
rm -f core conftest.err conftest.$ac_objext \ |
conftest$ac_exeext conftest.$ac_ext |
LIBS="$am_save_LIBS" |
fi |
|
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 |
$as_echo "$am_cv_func_iconv" >&6; } |
if test "$am_cv_func_iconv" = yes; then |
|
$as_echo "#define HAVE_ICONV 1" >>confdefs.h |
|
fi |
if test "$am_cv_lib_iconv" = yes; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 |
$as_echo_n "checking how to link with libiconv... " >&6; } |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 |
$as_echo "$LIBICONV" >&6; } |
else |
CPPFLAGS="$am_save_CPPFLAGS" |
LIBICONV= |
LTLIBICONV= |
fi |
|
|
|
if test "$am_cv_func_iconv" = yes; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5 |
$as_echo_n "checking for iconv declaration... " >&6; } |
if test "${am_cv_proto_iconv+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
|
#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 |
|
int |
main () |
{ |
|
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_compile "$LINENO"; then : |
am_cv_proto_iconv_arg1="" |
else |
am_cv_proto_iconv_arg1="const" |
fi |
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
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);" |
fi |
|
am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_t:- |
}$am_cv_proto_iconv" >&5 |
$as_echo "${ac_t:- |
}$am_cv_proto_iconv" >&6; } |
|
cat >>confdefs.h <<_ACEOF |
#define ICONV_CONST $am_cv_proto_iconv_arg1 |
_ACEOF |
|
fi |
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 |
$as_echo_n "checking for nl_langinfo and CODESET... " >&6; } |
if test "${am_cv_langinfo_codeset+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#include <langinfo.h> |
int |
main () |
{ |
char* cs = nl_langinfo(CODESET); |
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_link "$LINENO"; then : |
am_cv_langinfo_codeset=yes |
else |
am_cv_langinfo_codeset=no |
fi |
rm -f core conftest.err conftest.$ac_objext \ |
conftest$ac_exeext conftest.$ac_ext |
|
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5 |
$as_echo "$am_cv_langinfo_codeset" >&6; } |
if test $am_cv_langinfo_codeset = yes; then |
|
$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h |
|
fi |
|
if test $ac_cv_header_locale_h = yes; then |
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 |
$as_echo_n "checking for LC_MESSAGES... " >&6; } |
if test "${am_cv_val_LC_MESSAGES+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#include <locale.h> |
int |
main () |
{ |
return LC_MESSAGES |
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_link "$LINENO"; then : |
am_cv_val_LC_MESSAGES=yes |
else |
am_cv_val_LC_MESSAGES=no |
fi |
rm -f core conftest.err conftest.$ac_objext \ |
conftest$ac_exeext conftest.$ac_ext |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5 |
$as_echo "$am_cv_val_LC_MESSAGES" >&6; } |
if test $am_cv_val_LC_MESSAGES = yes; then |
|
$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h |
|
fi |
|
fi |
|
for ac_prog in bison |
do |
# Extract the first word of "$ac_prog", so it can be a program name with args. |
set dummy $ac_prog; ac_word=$2 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 |
$as_echo_n "checking for $ac_word... " >&6; } |
if test "${ac_cv_prog_INTLBISON+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
if test -n "$INTLBISON"; then |
ac_cv_prog_INTLBISON="$INTLBISON" # Let the user override the test. |
else |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
for ac_exec_ext in '' $ac_executable_extensions; do |
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then |
ac_cv_prog_INTLBISON="$ac_prog" |
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 |
break 2 |
fi |
done |
done |
IFS=$as_save_IFS |
|
fi |
fi |
INTLBISON=$ac_cv_prog_INTLBISON |
if test -n "$INTLBISON"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLBISON" >&5 |
$as_echo "$INTLBISON" >&6; } |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 |
$as_echo "no" >&6; } |
fi |
|
|
test -n "$INTLBISON" && break |
done |
|
if test -z "$INTLBISON"; then |
ac_verc_fail=yes |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking version of bison" >&5 |
$as_echo_n "checking version of bison... " >&6; } |
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].*) |
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; |
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; |
esac |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5 |
$as_echo "$ac_prog_version" >&6; } |
fi |
if test $ac_verc_fail = yes; then |
INTLBISON=: |
fi |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 |
$as_echo_n "checking whether NLS is requested... " >&6; } |
# Check whether --enable-nls was given. |
if test "${enable_nls+set}" = set; then : |
enableval=$enable_nls; USE_NLS=$enableval |
else |
USE_NLS=yes |
fi |
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 |
$as_echo "$USE_NLS" >&6; } |
|
|
|
|
BUILD_INCLUDED_LIBINTL=no |
USE_INCLUDED_LIBINTL=no |
|
LIBINTL= |
LTLIBINTL= |
POSUB= |
|
if test "$USE_NLS" = "yes"; then |
gt_use_preinstalled_gnugettext=no |
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether included gettext is requested" >&5 |
$as_echo_n "checking whether included gettext is requested... " >&6; } |
|
# Check whether --with-included-gettext was given. |
if test "${with_included_gettext+set}" = set; then : |
withval=$with_included_gettext; nls_cv_force_use_gnu_gettext=$withval |
else |
nls_cv_force_use_gnu_gettext=no |
fi |
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $nls_cv_force_use_gnu_gettext" >&5 |
$as_echo "$nls_cv_force_use_gnu_gettext" >&6; } |
|
nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" |
if test "$nls_cv_force_use_gnu_gettext" != "yes"; then |
|
|
|
|
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 |
$as_echo_n "checking for GNU gettext in libc... " >&6; } |
if test "${gt_cv_func_gnugettext1_libc+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#include <libintl.h> |
extern int _nl_msg_cat_cntr; |
extern int *_nl_domain_bindings; |
int |
main () |
{ |
bindtextdomain ("", ""); |
return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings |
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_link "$LINENO"; then : |
gt_cv_func_gnugettext1_libc=yes |
else |
gt_cv_func_gnugettext1_libc=no |
fi |
rm -f core conftest.err conftest.$ac_objext \ |
conftest$ac_exeext conftest.$ac_ext |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libc" >&5 |
$as_echo "$gt_cv_func_gnugettext1_libc" >&6; } |
|
if test "$gt_cv_func_gnugettext1_libc" != "yes"; then |
|
|
|
use_additional=yes |
|
acl_save_prefix="$prefix" |
prefix="$acl_final_prefix" |
acl_save_exec_prefix="$exec_prefix" |
exec_prefix="$acl_final_exec_prefix" |
|
eval additional_includedir=\"$includedir\" |
eval additional_libdir=\"$libdir\" |
|
exec_prefix="$acl_save_exec_prefix" |
prefix="$acl_save_prefix" |
|
|
# Check whether --with-libintl-prefix was given. |
if test "${with_libintl_prefix+set}" = set; then : |
withval=$with_libintl_prefix; |
if test "X$withval" = "Xno"; then |
use_additional=no |
else |
if test "X$withval" = "X"; then |
|
acl_save_prefix="$prefix" |
prefix="$acl_final_prefix" |
acl_save_exec_prefix="$exec_prefix" |
exec_prefix="$acl_final_exec_prefix" |
|
eval additional_includedir=\"$includedir\" |
eval additional_libdir=\"$libdir\" |
|
exec_prefix="$acl_save_exec_prefix" |
prefix="$acl_save_prefix" |
|
else |
additional_includedir="$withval/include" |
additional_libdir="$withval/lib" |
fi |
fi |
|
fi |
|
LIBINTL= |
LTLIBINTL= |
INCINTL= |
rpathdirs= |
ltrpathdirs= |
names_already_handled= |
names_next_round='intl ' |
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" |
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" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" |
eval value=\"\$LTLIB$uppername\" |
test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" |
else |
: |
fi |
else |
found_dir= |
found_la= |
found_so= |
found_a= |
if test $use_additional = yes; then |
if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then |
found_dir="$additional_libdir" |
found_so="$additional_libdir/lib$name.$shlibext" |
if test -f "$additional_libdir/lib$name.la"; then |
found_la="$additional_libdir/lib$name.la" |
fi |
else |
if test -f "$additional_libdir/lib$name.$libext"; then |
found_dir="$additional_libdir" |
found_a="$additional_libdir/lib$name.$libext" |
if test -f "$additional_libdir/lib$name.la"; then |
found_la="$additional_libdir/lib$name.la" |
fi |
fi |
fi |
fi |
if test "X$found_dir" = "X"; then |
for x in $LDFLAGS $LTLIBINTL; do |
|
acl_save_prefix="$prefix" |
prefix="$acl_final_prefix" |
acl_save_exec_prefix="$exec_prefix" |
exec_prefix="$acl_final_exec_prefix" |
eval x=\"$x\" |
exec_prefix="$acl_save_exec_prefix" |
prefix="$acl_save_prefix" |
|
case "$x" in |
-L*) |
dir=`echo "X$x" | sed -e 's/^X-L//'` |
if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then |
found_dir="$dir" |
found_so="$dir/lib$name.$shlibext" |
if test -f "$dir/lib$name.la"; then |
found_la="$dir/lib$name.la" |
fi |
else |
if test -f "$dir/lib$name.$libext"; then |
found_dir="$dir" |
found_a="$dir/lib$name.$libext" |
if test -f "$dir/lib$name.la"; then |
found_la="$dir/lib$name.la" |
fi |
fi |
fi |
;; |
esac |
if test "X$found_dir" != "X"; then |
break |
fi |
done |
fi |
if test "X$found_dir" != "X"; then |
LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" |
if test "X$found_so" != "X"; then |
if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then |
LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" |
else |
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 |
if test "$hardcode_direct" = yes; then |
LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" |
else |
if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then |
LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" |
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 |
haveit= |
for x in $LDFLAGS $LIBINTL; do |
|
acl_save_prefix="$prefix" |
prefix="$acl_final_prefix" |
acl_save_exec_prefix="$exec_prefix" |
exec_prefix="$acl_final_exec_prefix" |
eval x=\"$x\" |
exec_prefix="$acl_save_exec_prefix" |
prefix="$acl_save_prefix" |
|
if test "X$x" = "X-L$found_dir"; then |
haveit=yes |
break |
fi |
done |
if test -z "$haveit"; then |
LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" |
fi |
if test "$hardcode_minus_L" != no; then |
LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" |
else |
LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" |
fi |
fi |
fi |
fi |
else |
if test "X$found_a" != "X"; then |
LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" |
else |
LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" |
fi |
fi |
additional_includedir= |
case "$found_dir" in |
*/lib | */lib/) |
basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` |
additional_includedir="$basedir/include" |
;; |
esac |
if test "X$additional_includedir" != "X"; then |
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*) haveit=yes;; |
esac |
fi |
fi |
if test -z "$haveit"; then |
for x in $CPPFLAGS $INCINTL; do |
|
acl_save_prefix="$prefix" |
prefix="$acl_final_prefix" |
acl_save_exec_prefix="$exec_prefix" |
exec_prefix="$acl_final_exec_prefix" |
eval x=\"$x\" |
exec_prefix="$acl_save_exec_prefix" |
prefix="$acl_save_prefix" |
|
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 |
INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" |
fi |
fi |
fi |
fi |
fi |
if test -n "$found_la"; then |
save_libdir="$libdir" |
case "$found_la" in |
*/* | *\\*) . "$found_la" ;; |
*) . "./$found_la" ;; |
esac |
libdir="$save_libdir" |
for dep in $dependency_libs; do |
case "$dep" in |
-L*) |
additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` |
if test "X$additional_libdir" != "X/usr/lib"; then |
haveit= |
if test "X$additional_libdir" = "X/usr/local/lib"; then |
if test -n "$GCC"; then |
case $host_os in |
linux*) haveit=yes;; |
esac |
fi |
fi |
if test -z "$haveit"; then |
haveit= |
for x in $LDFLAGS $LIBINTL; do |
|
acl_save_prefix="$prefix" |
prefix="$acl_final_prefix" |
acl_save_exec_prefix="$exec_prefix" |
exec_prefix="$acl_final_exec_prefix" |
eval x=\"$x\" |
exec_prefix="$acl_save_exec_prefix" |
prefix="$acl_save_prefix" |
|
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 |
LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" |
fi |
fi |
haveit= |
for x in $LDFLAGS $LTLIBINTL; do |
|
acl_save_prefix="$prefix" |
prefix="$acl_final_prefix" |
acl_save_exec_prefix="$exec_prefix" |
exec_prefix="$acl_final_exec_prefix" |
eval x=\"$x\" |
exec_prefix="$acl_save_exec_prefix" |
prefix="$acl_save_prefix" |
|
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 |
LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" |
fi |
fi |
fi |
fi |
;; |
-R*) |
dir=`echo "X$dep" | sed -e 's/^X-R//'` |
if test "$enable_rpath" != no; then |
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 |
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*) |
names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` |
;; |
*.la) |
names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` |
;; |
*) |
LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" |
LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" |
;; |
esac |
done |
fi |
else |
LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" |
LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" |
fi |
fi |
fi |
done |
done |
if test "X$rpathdirs" != "X"; then |
if test -n "$hardcode_libdir_separator"; then |
alldirs= |
for found_dir in $rpathdirs; do |
alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" |
done |
acl_save_libdir="$libdir" |
libdir="$alldirs" |
eval flag=\"$hardcode_libdir_flag_spec\" |
libdir="$acl_save_libdir" |
LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" |
else |
for found_dir in $rpathdirs; do |
acl_save_libdir="$libdir" |
libdir="$found_dir" |
eval flag=\"$hardcode_libdir_flag_spec\" |
libdir="$acl_save_libdir" |
LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" |
done |
fi |
fi |
if test "X$ltrpathdirs" != "X"; then |
for found_dir in $ltrpathdirs; do |
LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" |
done |
fi |
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 |
$as_echo_n "checking for GNU gettext in libintl... " >&6; } |
if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
gt_save_CPPFLAGS="$CPPFLAGS" |
CPPFLAGS="$CPPFLAGS $INCINTL" |
gt_save_LIBS="$LIBS" |
LIBS="$LIBS $LIBINTL" |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#include <libintl.h> |
extern int _nl_msg_cat_cntr; |
extern |
#ifdef __cplusplus |
"C" |
#endif |
const char *_nl_expand_alias (); |
int |
main () |
{ |
bindtextdomain ("", ""); |
return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) |
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_link "$LINENO"; then : |
gt_cv_func_gnugettext1_libintl=yes |
else |
gt_cv_func_gnugettext1_libintl=no |
fi |
rm -f core conftest.err conftest.$ac_objext \ |
conftest$ac_exeext conftest.$ac_ext |
if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then |
LIBS="$LIBS $LIBICONV" |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
/* end confdefs.h. */ |
#include <libintl.h> |
extern int _nl_msg_cat_cntr; |
extern |
#ifdef __cplusplus |
"C" |
#endif |
const char *_nl_expand_alias (); |
int |
main () |
{ |
bindtextdomain ("", ""); |
return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) |
; |
return 0; |
} |
_ACEOF |
if ac_fn_c_try_link "$LINENO"; then : |
LIBINTL="$LIBINTL $LIBICONV" |
LTLIBINTL="$LTLIBINTL $LTLIBICONV" |
gt_cv_func_gnugettext1_libintl=yes |
|
fi |
rm -f core conftest.err conftest.$ac_objext \ |
conftest$ac_exeext conftest.$ac_ext |
fi |
CPPFLAGS="$gt_save_CPPFLAGS" |
LIBS="$gt_save_LIBS" |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libintl" >&5 |
$as_echo "$gt_cv_func_gnugettext1_libintl" >&6; } |
fi |
|
if test "$gt_cv_func_gnugettext1_libc" = "yes" \ |
|| { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ |
&& test "$PACKAGE" != gettext-runtime \ |
&& test "$PACKAGE" != gettext-tools; }; then |
gt_use_preinstalled_gnugettext=yes |
else |
LIBINTL= |
LTLIBINTL= |
INCINTL= |
fi |
|
|
if test "$gt_use_preinstalled_gnugettext" != "yes"; then |
nls_cv_use_gnu_gettext=yes |
fi |
fi |
|
if test "$nls_cv_use_gnu_gettext" = "yes"; then |
BUILD_INCLUDED_LIBINTL=yes |
USE_INCLUDED_LIBINTL=yes |
LIBINTL="\${top_builddir}/intl/libintl.a $LIBICONV" |
LTLIBINTL="\${top_builddir}/intl/libintl.a $LTLIBICONV" |
LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` |
fi |
|
if test "$gt_use_preinstalled_gnugettext" = "yes" \ |
|| test "$nls_cv_use_gnu_gettext" = "yes"; then |
CATOBJEXT=.gmo |
fi |
|
|
if test "$gt_use_preinstalled_gnugettext" = "yes" \ |
|| test "$nls_cv_use_gnu_gettext" = "yes"; then |
|
$as_echo "#define ENABLE_NLS 1" >>confdefs.h |
|
else |
USE_NLS=no |
fi |
fi |
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 |
$as_echo_n "checking whether to use NLS... " >&6; } |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 |
$as_echo "$USE_NLS" >&6; } |
if test "$USE_NLS" = "yes"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 |
$as_echo_n "checking where the gettext function comes from... " >&6; } |
if test "$gt_use_preinstalled_gnugettext" = "yes"; then |
if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then |
gt_source="external libintl" |
else |
gt_source="libc" |
fi |
else |
gt_source="included intl directory" |
fi |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 |
$as_echo "$gt_source" >&6; } |
fi |
|
if test "$USE_NLS" = "yes"; then |
|
if test "$gt_use_preinstalled_gnugettext" = "yes"; then |
if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 |
$as_echo_n "checking how to link with libintl... " >&6; } |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 |
$as_echo "$LIBINTL" >&6; } |
|
for element in $INCINTL; do |
haveit= |
for x in $CPPFLAGS; do |
|
acl_save_prefix="$prefix" |
prefix="$acl_final_prefix" |
acl_save_exec_prefix="$exec_prefix" |
exec_prefix="$acl_final_exec_prefix" |
eval x=\"$x\" |
exec_prefix="$acl_save_exec_prefix" |
prefix="$acl_save_prefix" |
|
if test "X$x" = "X$element"; then |
haveit=yes |
break |
fi |
done |
if test -z "$haveit"; then |
CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" |
fi |
done |
|
fi |
|
|
$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h |
|
|
$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h |
|
fi |
|
POSUB=po |
fi |
|
|
if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then |
BUILD_INCLUDED_LIBINTL=yes |
fi |
|
|
|
|
|
nls_cv_header_intl= |
nls_cv_header_libgt= |
|
DATADIRNAME=share |
|
|
INSTOBJEXT=.mo |
|
|
GENCAT=gencat |
|
|
if test "$USE_INCLUDED_LIBINTL" = yes; then |
INTLOBJS="\$(GETTOBJS)" |
fi |
|
|
INTL_LIBTOOL_SUFFIX_PREFIX= |
|
|
|
INTLLIBS="$LIBINTL" |
|
|
|
|
|
|
|
# This replaces the extensive use of DEFS in the original Makefile.in. |
|
$as_echo "#define IN_LIBINTL 1" >>confdefs.h |
|
|
$as_echo "#define IN_LIBRARY 1" >>confdefs.h |
|
|
$as_echo "#define DEPENDS_ON_LIBICONV 1" >>confdefs.h |
|
|
$as_echo "#define ENABLE_RELOCATABLE 1" >>confdefs.h |
|
|
$as_echo "#define NO_XMALLOC 1" >>confdefs.h |
|
|
$as_echo "#define set_relocation_prefix libintl_set_relocation_prefix" >>confdefs.h |
|
|
$as_echo "#define relocate libintl_relocate" >>confdefs.h |
|
|
MISSING=`cd $ac_aux_dir && ${PWDCMD-pwd}`/missing |
for ac_prog in aclocal |
do |
# Extract the first word of "$ac_prog", so it can be a program name with args. |
set dummy $ac_prog; ac_word=$2 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 |
$as_echo_n "checking for $ac_word... " >&6; } |
if test "${ac_cv_prog_ACLOCAL+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
if test -n "$ACLOCAL"; then |
ac_cv_prog_ACLOCAL="$ACLOCAL" # Let the user override the test. |
else |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
for ac_exec_ext in '' $ac_executable_extensions; do |
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then |
ac_cv_prog_ACLOCAL="$ac_prog" |
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 |
break 2 |
fi |
done |
done |
IFS=$as_save_IFS |
|
fi |
fi |
ACLOCAL=$ac_cv_prog_ACLOCAL |
if test -n "$ACLOCAL"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ACLOCAL" >&5 |
$as_echo "$ACLOCAL" >&6; } |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 |
$as_echo "no" >&6; } |
fi |
|
|
test -n "$ACLOCAL" && break |
done |
test -n "$ACLOCAL" || ACLOCAL="$MISSING aclocal" |
|
for ac_prog in autoconf |
do |
# Extract the first word of "$ac_prog", so it can be a program name with args. |
set dummy $ac_prog; ac_word=$2 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 |
$as_echo_n "checking for $ac_word... " >&6; } |
if test "${ac_cv_prog_AUTOCONF+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
if test -n "$AUTOCONF"; then |
ac_cv_prog_AUTOCONF="$AUTOCONF" # Let the user override the test. |
else |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
for ac_exec_ext in '' $ac_executable_extensions; do |
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then |
ac_cv_prog_AUTOCONF="$ac_prog" |
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 |
break 2 |
fi |
done |
done |
IFS=$as_save_IFS |
|
fi |
fi |
AUTOCONF=$ac_cv_prog_AUTOCONF |
if test -n "$AUTOCONF"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $AUTOCONF" >&5 |
$as_echo "$AUTOCONF" >&6; } |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 |
$as_echo "no" >&6; } |
fi |
|
|
test -n "$AUTOCONF" && break |
done |
test -n "$AUTOCONF" || AUTOCONF="$MISSING autoconf" |
|
for ac_prog in autoheader |
do |
# Extract the first word of "$ac_prog", so it can be a program name with args. |
set dummy $ac_prog; ac_word=$2 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 |
$as_echo_n "checking for $ac_word... " >&6; } |
if test "${ac_cv_prog_AUTOHEADER+set}" = set; then : |
$as_echo_n "(cached) " >&6 |
else |
if test -n "$AUTOHEADER"; then |
ac_cv_prog_AUTOHEADER="$AUTOHEADER" # Let the user override the test. |
else |
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
for ac_exec_ext in '' $ac_executable_extensions; do |
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then |
ac_cv_prog_AUTOHEADER="$ac_prog" |
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 |
break 2 |
fi |
done |
done |
IFS=$as_save_IFS |
|
fi |
fi |
AUTOHEADER=$ac_cv_prog_AUTOHEADER |
if test -n "$AUTOHEADER"; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $AUTOHEADER" >&5 |
$as_echo "$AUTOHEADER" >&6; } |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 |
$as_echo "no" >&6; } |
fi |
|
|
test -n "$AUTOHEADER" && break |
done |
test -n "$AUTOHEADER" || AUTOHEADER="$MISSING autoheader" |
|
|
# Check whether --enable-maintainer-mode was given. |
if test "${enable_maintainer_mode+set}" = set; then : |
enableval=$enable_maintainer_mode; |
else |
enable_maintainer_mode=no |
fi |
|
if test "x$enable_maintainer_mode" = xno; then |
MAINT='#' |
else |
MAINT= |
fi |
|
|
# Additional info for config.intl. |
|
|
|
LIBINTL_DEP= |
INCINTL= |
case $USE_INCLUDED_LIBINTL in |
yes) |
LIBINTL=`echo $LIBINTL | sed 's,${top_builddir},&/..,' ` |
LTLIBINTL=`echo $LTLIBINTL | sed 's,${top_builddir},&/..,' ` |
LIBINTL_DEP='${top_builddir}/../intl/libintl.a' |
INCINTL='-I${top_builddir}/../intl' |
;; |
esac |
|
ac_config_files="$ac_config_files Makefile config.intl" |
|
cat >confcache <<\_ACEOF |
# This file is a shell script that caches the results of configure |
# tests run on this system so they can be shared between configure |
# scripts and configure runs, see configure's option --config-cache. |
# It is not useful on other systems. If it contains results you don't |
# want to keep, you may remove or edit it. |
# |
# config.status only pays attention to the cache file if you give it |
# the --recheck option to rerun configure. |
# |
# `ac_cv_env_foo' variables (set or unset) will be overridden when |
# loading this file, other *unset* `ac_cv_foo' will be assigned the |
# following values. |
|
_ACEOF |
|
# The following way of writing the cache mishandles newlines in values, |
# but we know of no workaround that is simple, portable, and efficient. |
# So, we kill variables containing newlines. |
# Ultrix sh set writes to stderr and can't be redirected directly, |
# and sets the high bit in the cache file unless we assign to the vars. |
( |
for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do |
eval ac_val=\$$ac_var |
case $ac_val in #( |
*${as_nl}*) |
case $ac_var in #( |
*_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 |
$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; |
esac |
case $ac_var in #( |
_ | IFS | as_nl) ;; #( |
BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( |
*) { eval $ac_var=; unset $ac_var;} ;; |
esac ;; |
esac |
done |
|
(set) 2>&1 | |
case $as_nl`(ac_space=' '; set) 2>&1` in #( |
*${as_nl}ac_space=\ *) |
# `set' does not quote correctly, so add quotes: double-quote |
# substitution turns \\\\ into \\, and sed turns \\ into \. |
sed -n \ |
"s/'/'\\\\''/g; |
s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" |
;; #( |
*) |
# `set' quotes correctly as required by POSIX, so do not add quotes. |
sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" |
;; |
esac | |
sort |
) | |
sed ' |
/^ac_cv_env_/b end |
t clear |
:clear |
s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ |
t end |
s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ |
:end' >>confcache |
if diff "$cache_file" confcache >/dev/null 2>&1; then :; else |
if test -w "$cache_file"; then |
test "x$cache_file" != "x/dev/null" && |
{ $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 |
$as_echo "$as_me: updating cache $cache_file" >&6;} |
cat confcache >$cache_file |
else |
{ $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 |
$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} |
fi |
fi |
rm -f confcache |
|
test "x$prefix" = xNONE && prefix=$ac_default_prefix |
# Let make expand exec_prefix. |
test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' |
|
DEFS=-DHAVE_CONFIG_H |
|
ac_libobjs= |
ac_ltlibobjs= |
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue |
# 1. Remove the extension, and $U if already installed. |
ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' |
ac_i=`$as_echo "$ac_i" | sed "$ac_script"` |
# 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR |
# will be set to the directory where LIBOBJS objects are built. |
as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" |
as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' |
done |
LIBOBJS=$ac_libobjs |
|
LTLIBOBJS=$ac_ltlibobjs |
|
|
|
: ${CONFIG_STATUS=./config.status} |
ac_write_fail=0 |
ac_clean_files_save=$ac_clean_files |
ac_clean_files="$ac_clean_files $CONFIG_STATUS" |
{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 |
$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} |
as_write_fail=0 |
cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 |
#! $SHELL |
# Generated by $as_me. |
# Run this file to recreate the current configuration. |
# Compiler output produced by configure, useful for debugging |
# configure, is in config.log if it exists. |
|
debug=false |
ac_cs_recheck=false |
ac_cs_silent=false |
|
SHELL=\${CONFIG_SHELL-$SHELL} |
export SHELL |
_ASEOF |
cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 |
## -------------------- ## |
## M4sh Initialization. ## |
## -------------------- ## |
|
# Be more Bourne compatible |
DUALCASE=1; export DUALCASE # for MKS sh |
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : |
emulate sh |
NULLCMD=: |
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which |
# is contrary to our usage. Disable this feature. |
alias -g '${1+"$@"}'='"$@"' |
setopt NO_GLOB_SUBST |
else |
case `(set -o) 2>/dev/null` in #( |
*posix*) : |
set -o posix ;; #( |
*) : |
;; |
esac |
fi |
|
|
as_nl=' |
' |
export as_nl |
# Printing a long string crashes Solaris 7 /usr/bin/printf. |
as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' |
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo |
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo |
# Prefer a ksh shell builtin over an external printf program on Solaris, |
# but without wasting forks for bash or zsh. |
if test -z "$BASH_VERSION$ZSH_VERSION" \ |
&& (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then |
as_echo='print -r --' |
as_echo_n='print -rn --' |
elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then |
as_echo='printf %s\n' |
as_echo_n='printf %s' |
else |
if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then |
as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' |
as_echo_n='/usr/ucb/echo -n' |
else |
as_echo_body='eval expr "X$1" : "X\\(.*\\)"' |
as_echo_n_body='eval |
arg=$1; |
case $arg in #( |
*"$as_nl"*) |
expr "X$arg" : "X\\(.*\\)$as_nl"; |
arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; |
esac; |
expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" |
' |
export as_echo_n_body |
as_echo_n='sh -c $as_echo_n_body as_echo' |
fi |
export as_echo_body |
as_echo='sh -c $as_echo_body as_echo' |
fi |
|
# The user is always right. |
if test "${PATH_SEPARATOR+set}" != set; then |
PATH_SEPARATOR=: |
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { |
(PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || |
PATH_SEPARATOR=';' |
} |
fi |
|
|
# IFS |
# We need space, tab and new line, in precisely that order. Quoting is |
# there to prevent editors from complaining about space-tab. |
# (If _AS_PATH_WALK were called with IFS unset, it would disable word |
# splitting by setting IFS to empty value.) |
IFS=" "" $as_nl" |
|
# Find who we are. Look in the path if we contain no directory separator. |
case $0 in #(( |
*[\\/]* ) as_myself=$0 ;; |
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR |
for as_dir in $PATH |
do |
IFS=$as_save_IFS |
test -z "$as_dir" && as_dir=. |
test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break |
done |
IFS=$as_save_IFS |
|
;; |
esac |
# We did not find ourselves, most probably we were run as `sh COMMAND' |
# in which case we are not to be found in the path. |
if test "x$as_myself" = x; then |
as_myself=$0 |
fi |
if test ! -f "$as_myself"; then |
$as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 |
exit 1 |
fi |
|
# Unset variables that we do not need and which cause bugs (e.g. in |
# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" |
# suppresses any "Segmentation fault" message there. '((' could |
# trigger a bug in pdksh 5.2.14. |
for as_var in BASH_ENV ENV MAIL MAILPATH |
do eval test x\${$as_var+set} = xset \ |
&& ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : |
done |
PS1='$ ' |
PS2='> ' |
PS4='+ ' |
|
# NLS nuisances. |
LC_ALL=C |
export LC_ALL |
LANGUAGE=C |
export LANGUAGE |
|
# CDPATH. |
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH |
|
|
# as_fn_error ERROR [LINENO LOG_FD] |
# --------------------------------- |
# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are |
# provided, also output the error to LOG_FD, referencing LINENO. Then exit the |
# script with status $?, using 1 if that was 0. |
as_fn_error () |
{ |
as_status=$?; test $as_status -eq 0 && as_status=1 |
if test "$3"; then |
as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack |
$as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 |
fi |
$as_echo "$as_me: error: $1" >&2 |
as_fn_exit $as_status |
} # as_fn_error |
|
|
# as_fn_set_status STATUS |
# ----------------------- |
# Set $? to STATUS, without forking. |
as_fn_set_status () |
{ |
return $1 |
} # as_fn_set_status |
|
# as_fn_exit STATUS |
# ----------------- |
# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. |
as_fn_exit () |
{ |
set +e |
as_fn_set_status $1 |
exit $1 |
} # as_fn_exit |
|
# as_fn_unset VAR |
# --------------- |
# Portably unset VAR. |
as_fn_unset () |
{ |
{ eval $1=; unset $1;} |
} |
as_unset=as_fn_unset |
# as_fn_append VAR VALUE |
# ---------------------- |
# Append the text in VALUE to the end of the definition contained in VAR. Take |
# advantage of any shell optimizations that allow amortized linear growth over |
# repeated appends, instead of the typical quadratic growth present in naive |
# implementations. |
if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : |
eval 'as_fn_append () |
{ |
eval $1+=\$2 |
}' |
else |
as_fn_append () |
{ |
eval $1=\$$1\$2 |
} |
fi # as_fn_append |
|
# as_fn_arith ARG... |
# ------------------ |
# Perform arithmetic evaluation on the ARGs, and store the result in the |
# global $as_val. Take advantage of shells that can avoid forks. The arguments |
# must be portable across $(()) and expr. |
if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : |
eval 'as_fn_arith () |
{ |
as_val=$(( $* )) |
}' |
else |
as_fn_arith () |
{ |
as_val=`expr "$@" || test $? -eq 1` |
} |
fi # as_fn_arith |
|
|
if expr a : '\(a\)' >/dev/null 2>&1 && |
test "X`expr 00001 : '.*\(...\)'`" = X001; then |
as_expr=expr |
else |
as_expr=false |
fi |
|
if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then |
as_basename=basename |
else |
as_basename=false |
fi |
|
if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then |
as_dirname=dirname |
else |
as_dirname=false |
fi |
|
as_me=`$as_basename -- "$0" || |
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ |
X"$0" : 'X\(//\)$' \| \ |
X"$0" : 'X\(/\)' \| . 2>/dev/null || |
$as_echo X/"$0" | |
sed '/^.*\/\([^/][^/]*\)\/*$/{ |
s//\1/ |
q |
} |
/^X\/\(\/\/\)$/{ |
s//\1/ |
q |
} |
/^X\/\(\/\).*/{ |
s//\1/ |
q |
} |
s/.*/./; q'` |
|
# Avoid depending upon Character Ranges. |
as_cr_letters='abcdefghijklmnopqrstuvwxyz' |
as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' |
as_cr_Letters=$as_cr_letters$as_cr_LETTERS |
as_cr_digits='0123456789' |
as_cr_alnum=$as_cr_Letters$as_cr_digits |
|
ECHO_C= ECHO_N= ECHO_T= |
case `echo -n x` in #((((( |
-n*) |
case `echo 'xy\c'` in |
*c*) ECHO_T=' ';; # ECHO_T is single tab character. |
xy) ECHO_C='\c';; |
*) echo `echo ksh88 bug on AIX 6.1` > /dev/null |
ECHO_T=' ';; |
esac;; |
*) |
ECHO_N='-n';; |
esac |
|
rm -f conf$$ conf$$.exe conf$$.file |
if test -d conf$$.dir; then |
rm -f conf$$.dir/conf$$.file |
else |
rm -f conf$$.dir |
mkdir conf$$.dir 2>/dev/null |
fi |
if (echo >conf$$.file) 2>/dev/null; then |
if ln -s conf$$.file conf$$ 2>/dev/null; then |
as_ln_s='ln -s' |
# ... but there are two gotchas: |
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. |
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. |
# In both cases, we have to default to `cp -p'. |
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || |
as_ln_s='cp -p' |
elif ln conf$$.file conf$$ 2>/dev/null; then |
as_ln_s=ln |
else |
as_ln_s='cp -p' |
fi |
else |
as_ln_s='cp -p' |
fi |
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file |
rmdir conf$$.dir 2>/dev/null |
|
|
# as_fn_mkdir_p |
# ------------- |
# Create "$as_dir" as a directory, including parents if necessary. |
as_fn_mkdir_p () |
{ |
|
case $as_dir in #( |
-*) as_dir=./$as_dir;; |
esac |
test -d "$as_dir" || eval $as_mkdir_p || { |
as_dirs= |
while :; do |
case $as_dir in #( |
*\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( |
*) as_qdir=$as_dir;; |
esac |
as_dirs="'$as_qdir' $as_dirs" |
as_dir=`$as_dirname -- "$as_dir" || |
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ |
X"$as_dir" : 'X\(//\)[^/]' \| \ |
X"$as_dir" : 'X\(//\)$' \| \ |
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || |
$as_echo X"$as_dir" | |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ |
s//\1/ |
q |
} |
/^X\(\/\/\)[^/].*/{ |
s//\1/ |
q |
} |
/^X\(\/\/\)$/{ |
s//\1/ |
q |
} |
/^X\(\/\).*/{ |
s//\1/ |
q |
} |
s/.*/./; q'` |
test -d "$as_dir" && break |
done |
test -z "$as_dirs" || eval "mkdir $as_dirs" |
} || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" |
|
|
} # as_fn_mkdir_p |
if mkdir -p . 2>/dev/null; then |
as_mkdir_p='mkdir -p "$as_dir"' |
else |
test -d ./-p && rmdir ./-p |
as_mkdir_p=false |
fi |
|
if test -x / >/dev/null 2>&1; then |
as_test_x='test -x' |
else |
if ls -dL / >/dev/null 2>&1; then |
as_ls_L_option=L |
else |
as_ls_L_option= |
fi |
as_test_x=' |
eval sh -c '\'' |
if test -d "$1"; then |
test -d "$1/."; |
else |
case $1 in #( |
-*)set "./$1";; |
esac; |
case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( |
???[sx]*):;;*)false;;esac;fi |
'\'' sh |
' |
fi |
as_executable_p=$as_test_x |
|
# Sed expression to map a string onto a valid CPP name. |
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" |
|
# Sed expression to map a string onto a valid variable name. |
as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" |
|
|
exec 6>&1 |
## ----------------------------------- ## |
## Main body of $CONFIG_STATUS script. ## |
## ----------------------------------- ## |
_ASEOF |
test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 |
|
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 |
# Save the log message, to keep $0 and so on meaningful, and to |
# report actual input values of CONFIG_FILES etc. instead of their |
# values after options handling. |
ac_log=" |
This file was extended by $as_me, which was |
generated by GNU Autoconf 2.64. Invocation command line was |
|
CONFIG_FILES = $CONFIG_FILES |
CONFIG_HEADERS = $CONFIG_HEADERS |
CONFIG_LINKS = $CONFIG_LINKS |
CONFIG_COMMANDS = $CONFIG_COMMANDS |
$ $0 $@ |
|
on `(hostname || uname -n) 2>/dev/null | sed 1q` |
" |
|
_ACEOF |
|
case $ac_config_files in *" |
"*) set x $ac_config_files; shift; ac_config_files=$*;; |
esac |
|
case $ac_config_headers in *" |
"*) set x $ac_config_headers; shift; ac_config_headers=$*;; |
esac |
|
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 |
# Files that config.status was made for. |
config_files="$ac_config_files" |
config_headers="$ac_config_headers" |
config_commands="$ac_config_commands" |
|
_ACEOF |
|
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 |
ac_cs_usage="\ |
\`$as_me' instantiates files and other configuration actions |
from templates according to the current configuration. Unless the files |
and actions are specified as TAGs, all are instantiated by default. |
|
Usage: $0 [OPTION]... [TAG]... |
|
-h, --help print this help, then exit |
-V, --version print version number and configuration settings, then exit |
-q, --quiet, --silent |
do not print progress messages |
-d, --debug don't remove temporary files |
--recheck update $as_me by reconfiguring in the same conditions |
--file=FILE[:TEMPLATE] |
instantiate the configuration file FILE |
--header=FILE[:TEMPLATE] |
instantiate the configuration header FILE |
|
Configuration files: |
$config_files |
|
Configuration headers: |
$config_headers |
|
Configuration commands: |
$config_commands |
|
Report bugs to the package provider." |
|
_ACEOF |
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 |
ac_cs_version="\\ |
config.status |
configured by $0, generated by GNU Autoconf 2.64, |
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" |
|
Copyright (C) 2009 Free Software Foundation, Inc. |
This config.status script is free software; the Free Software Foundation |
gives unlimited permission to copy, distribute and modify it." |
|
ac_pwd='$ac_pwd' |
srcdir='$srcdir' |
INSTALL='$INSTALL' |
test -n "\$AWK" || AWK=awk |
_ACEOF |
|
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 |
# The default lists apply if the user does not specify any file. |
ac_need_defaults=: |
while test $# != 0 |
do |
case $1 in |
--*=*) |
ac_option=`expr "X$1" : 'X\([^=]*\)='` |
ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` |
ac_shift=: |
;; |
*) |
ac_option=$1 |
ac_optarg=$2 |
ac_shift=shift |
;; |
esac |
|
case $ac_option in |
# Handling of the options. |
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) |
ac_cs_recheck=: ;; |
--version | --versio | --versi | --vers | --ver | --ve | --v | -V ) |
$as_echo "$ac_cs_version"; exit ;; |
--debug | --debu | --deb | --de | --d | -d ) |
debug=: ;; |
--file | --fil | --fi | --f ) |
$ac_shift |
case $ac_optarg in |
*\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; |
esac |
as_fn_append CONFIG_FILES " '$ac_optarg'" |
ac_need_defaults=false;; |
--header | --heade | --head | --hea ) |
$ac_shift |
case $ac_optarg in |
*\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; |
esac |
as_fn_append CONFIG_HEADERS " '$ac_optarg'" |
ac_need_defaults=false;; |
--he | --h) |
# Conflict between --help and --header |
as_fn_error "ambiguous option: \`$1' |
Try \`$0 --help' for more information.";; |
--help | --hel | -h ) |
$as_echo "$ac_cs_usage"; exit ;; |
-q | -quiet | --quiet | --quie | --qui | --qu | --q \ |
| -silent | --silent | --silen | --sile | --sil | --si | --s) |
ac_cs_silent=: ;; |
|
# This is an error. |
-*) as_fn_error "unrecognized option: \`$1' |
Try \`$0 --help' for more information." ;; |
|
*) as_fn_append ac_config_targets " $1" |
ac_need_defaults=false ;; |
|
esac |
shift |
done |
|
ac_configure_extra_args= |
|
if $ac_cs_silent; then |
exec 6>/dev/null |
ac_configure_extra_args="$ac_configure_extra_args --silent" |
fi |
|
_ACEOF |
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 |
if \$ac_cs_recheck; then |
set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion |
shift |
\$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 |
CONFIG_SHELL='$SHELL' |
export CONFIG_SHELL |
exec "\$@" |
fi |
|
_ACEOF |
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 |
exec 5>>config.log |
{ |
echo |
sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX |
## Running $as_me. ## |
_ASBOX |
$as_echo "$ac_log" |
} >&5 |
|
_ACEOF |
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 |
# |
# INIT-COMMANDS |
# |
# Capture the value of obsolete ALL_LINGUAS because we need it to compute |
# POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it |
# from automake. |
eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' |
# Capture the value of LINGUAS because we need it to compute CATALOGS. |
LINGUAS="${LINGUAS-%UNSET%}" |
|
|
_ACEOF |
|
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 |
|
# Handling of arguments. |
for ac_config_target in $ac_config_targets |
do |
case $ac_config_target in |
"config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; |
"default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; |
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; |
"config.intl") CONFIG_FILES="$CONFIG_FILES config.intl" ;; |
|
*) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; |
esac |
done |
|
|
# If the user did not use the arguments to specify the items to instantiate, |
# then the envvar interface is used. Set only those that are not. |
# We use the long form for the default assignment because of an extremely |
# bizarre bug on SunOS 4.1.3. |
if $ac_need_defaults; then |
test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files |
test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers |
test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands |
fi |
|
# Have a temporary directory for convenience. Make it in the build tree |
# simply because there is no reason against having it here, and in addition, |
# creating and moving files from /tmp can sometimes cause problems. |
# Hook for its removal unless debugging. |
# Note that there is a small window in which the directory will not be cleaned: |
# after its creation but before its name has been assigned to `$tmp'. |
$debug || |
{ |
tmp= |
trap 'exit_status=$? |
{ test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status |
' 0 |
trap 'as_fn_exit 1' 1 2 13 15 |
} |
# Create a (secure) tmp directory for tmp files. |
|
{ |
tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && |
test -n "$tmp" && test -d "$tmp" |
} || |
{ |
tmp=./conf$$-$RANDOM |
(umask 077 && mkdir "$tmp") |
} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5 |
|
# Set up the scripts for CONFIG_FILES section. |
# No need to generate them if there are no CONFIG_FILES. |
# This happens for instance with `./config.status config.h'. |
if test -n "$CONFIG_FILES"; then |
|
|
ac_cr=`echo X | tr X '\015'` |
# On cygwin, bash can eat \r inside `` if the user requested igncr. |
# But we know of no other shell where ac_cr would be empty at this |
# point, so we can use a bashism as a fallback. |
if test "x$ac_cr" = x; then |
eval ac_cr=\$\'\\r\' |
fi |
ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` |
if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then |
ac_cs_awk_cr='\r' |
else |
ac_cs_awk_cr=$ac_cr |
fi |
|
echo 'BEGIN {' >"$tmp/subs1.awk" && |
_ACEOF |
|
|
{ |
echo "cat >conf$$subs.awk <<_ACEOF" && |
echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && |
echo "_ACEOF" |
} >conf$$subs.sh || |
as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 |
ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` |
ac_delim='%!_!# ' |
for ac_last_try in false false false false false :; do |
. ./conf$$subs.sh || |
as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 |
|
ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` |
if test $ac_delim_n = $ac_delim_num; then |
break |
elif $ac_last_try; then |
as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 |
else |
ac_delim="$ac_delim!$ac_delim _$ac_delim!! " |
fi |
done |
rm -f conf$$subs.sh |
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 |
cat >>"\$tmp/subs1.awk" <<\\_ACAWK && |
_ACEOF |
sed -n ' |
h |
s/^/S["/; s/!.*/"]=/ |
p |
g |
s/^[^!]*!// |
:repl |
t repl |
s/'"$ac_delim"'$// |
t delim |
:nl |
h |
s/\(.\{148\}\).*/\1/ |
t more1 |
s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ |
p |
n |
b repl |
:more1 |
s/["\\]/\\&/g; s/^/"/; s/$/"\\/ |
p |
g |
s/.\{148\}// |
t nl |
:delim |
h |
s/\(.\{148\}\).*/\1/ |
t more2 |
s/["\\]/\\&/g; s/^/"/; s/$/"/ |
p |
b |
:more2 |
s/["\\]/\\&/g; s/^/"/; s/$/"\\/ |
p |
g |
s/.\{148\}// |
t delim |
' <conf$$subs.awk | sed ' |
/^[^""]/{ |
N |
s/\n// |
} |
' >>$CONFIG_STATUS || ac_write_fail=1 |
rm -f conf$$subs.awk |
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 |
_ACAWK |
cat >>"\$tmp/subs1.awk" <<_ACAWK && |
for (key in S) S_is_set[key] = 1 |
FS = "" |
|
} |
{ |
line = $ 0 |
nfields = split(line, field, "@") |
substed = 0 |
len = length(field[1]) |
for (i = 2; i < nfields; i++) { |
key = field[i] |
keylen = length(key) |
if (S_is_set[key]) { |
value = S[key] |
line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) |
len += length(value) + length(field[++i]) |
substed = 1 |
} else |
len += 1 + keylen |
} |
|
print line |
} |
|
_ACAWK |
_ACEOF |
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 |
if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then |
sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" |
else |
cat |
fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ |
|| as_fn_error "could not setup config files machinery" "$LINENO" 5 |
_ACEOF |
|
# VPATH may cause trouble with some makes, so we remove $(srcdir), |
# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and |
# trailing colons and then remove the whole line if VPATH becomes empty |
# (actually we leave an empty line to preserve line numbers). |
if test "x$srcdir" = x.; then |
ac_vpsub='/^[ ]*VPATH[ ]*=/{ |
s/:*\$(srcdir):*/:/ |
s/:*\${srcdir}:*/:/ |
s/:*@srcdir@:*/:/ |
s/^\([^=]*=[ ]*\):*/\1/ |
s/:*$// |
s/^[^=]*=[ ]*$// |
}' |
fi |
|
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 |
fi # test -n "$CONFIG_FILES" |
|
# Set up the scripts for CONFIG_HEADERS section. |
# No need to generate them if there are no CONFIG_HEADERS. |
# This happens for instance with `./config.status Makefile'. |
if test -n "$CONFIG_HEADERS"; then |
cat >"$tmp/defines.awk" <<\_ACAWK || |
BEGIN { |
_ACEOF |
|
# Transform confdefs.h into an awk script `defines.awk', embedded as |
# here-document in config.status, that substitutes the proper values into |
# config.h.in to produce config.h. |
|
# Create a delimiter string that does not exist in confdefs.h, to ease |
# handling of long lines. |
ac_delim='%!_!# ' |
for ac_last_try in false false :; do |
ac_t=`sed -n "/$ac_delim/p" confdefs.h` |
if test -z "$ac_t"; then |
break |
elif $ac_last_try; then |
as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5 |
else |
ac_delim="$ac_delim!$ac_delim _$ac_delim!! " |
fi |
done |
|
# For the awk script, D is an array of macro values keyed by name, |
# likewise P contains macro parameters if any. Preserve backslash |
# newline sequences. |
|
ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* |
sed -n ' |
s/.\{148\}/&'"$ac_delim"'/g |
t rset |
:rset |
s/^[ ]*#[ ]*define[ ][ ]*/ / |
t def |
d |
:def |
s/\\$// |
t bsnl |
s/["\\]/\\&/g |
s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ |
D["\1"]=" \3"/p |
s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p |
d |
:bsnl |
s/["\\]/\\&/g |
s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ |
D["\1"]=" \3\\\\\\n"\\/p |
t cont |
s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p |
t cont |
d |
:cont |
n |
s/.\{148\}/&'"$ac_delim"'/g |
t clear |
:clear |
s/\\$// |
t bsnlc |
s/["\\]/\\&/g; s/^/"/; s/$/"/p |
d |
:bsnlc |
s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p |
b cont |
' <confdefs.h | sed ' |
s/'"$ac_delim"'/"\\\ |
"/g' >>$CONFIG_STATUS || ac_write_fail=1 |
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 |
for (key in D) D_is_set[key] = 1 |
FS = "" |
} |
/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { |
line = \$ 0 |
split(line, arg, " ") |
if (arg[1] == "#") { |
defundef = arg[2] |
mac1 = arg[3] |
} else { |
defundef = substr(arg[1], 2) |
mac1 = arg[2] |
} |
split(mac1, mac2, "(") #) |
macro = mac2[1] |
prefix = substr(line, 1, index(line, defundef) - 1) |
if (D_is_set[macro]) { |
# Preserve the white space surrounding the "#". |
print prefix "define", macro P[macro] D[macro] |
next |
} else { |
# Replace #undef with comments. This is necessary, for example, |
# in the case of _POSIX_SOURCE, which is predefined and required |
# on some systems where configure will not decide to define it. |
if (defundef == "undef") { |
print "/*", prefix defundef, macro, "*/" |
next |
} |
} |
} |
{ print } |
_ACAWK |
_ACEOF |
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 |
as_fn_error "could not setup config headers machinery" "$LINENO" 5 |
fi # test -n "$CONFIG_HEADERS" |
|
|
eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" |
shift |
for ac_tag |
do |
case $ac_tag in |
:[FHLC]) ac_mode=$ac_tag; continue;; |
esac |
case $ac_mode$ac_tag in |
:[FHL]*:*);; |
:L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;; |
:[FH]-) ac_tag=-:-;; |
:[FH]*) ac_tag=$ac_tag:$ac_tag.in;; |
esac |
ac_save_IFS=$IFS |
IFS=: |
set x $ac_tag |
IFS=$ac_save_IFS |
shift |
ac_file=$1 |
shift |
|
case $ac_mode in |
:L) ac_source=$1;; |
:[FH]) |
ac_file_inputs= |
for ac_f |
do |
case $ac_f in |
-) ac_f="$tmp/stdin";; |
*) # Look for the file first in the build tree, then in the source tree |
# (if the path is not absolute). The absolute path cannot be DOS-style, |
# because $ac_f cannot contain `:'. |
test -f "$ac_f" || |
case $ac_f in |
[\\/$]*) false;; |
*) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; |
esac || |
as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;; |
esac |
case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac |
as_fn_append ac_file_inputs " '$ac_f'" |
done |
|
# Let's still pretend it is `configure' which instantiates (i.e., don't |
# use $as_me), people would be surprised to read: |
# /* config.h. Generated by config.status. */ |
configure_input='Generated from '` |
$as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' |
`' by configure.' |
if test x"$ac_file" != x-; then |
configure_input="$ac_file. $configure_input" |
{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 |
$as_echo "$as_me: creating $ac_file" >&6;} |
fi |
# Neutralize special characters interpreted by sed in replacement strings. |
case $configure_input in #( |
*\&* | *\|* | *\\* ) |
ac_sed_conf_input=`$as_echo "$configure_input" | |
sed 's/[\\\\&|]/\\\\&/g'`;; #( |
*) ac_sed_conf_input=$configure_input;; |
esac |
|
case $ac_tag in |
*:-:* | *:-) cat >"$tmp/stdin" \ |
|| as_fn_error "could not create $ac_file" "$LINENO" 5 ;; |
esac |
;; |
esac |
|
ac_dir=`$as_dirname -- "$ac_file" || |
$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ |
X"$ac_file" : 'X\(//\)[^/]' \| \ |
X"$ac_file" : 'X\(//\)$' \| \ |
X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || |
$as_echo X"$ac_file" | |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ |
s//\1/ |
q |
} |
/^X\(\/\/\)[^/].*/{ |
s//\1/ |
q |
} |
/^X\(\/\/\)$/{ |
s//\1/ |
q |
} |
/^X\(\/\).*/{ |
s//\1/ |
q |
} |
s/.*/./; q'` |
as_dir="$ac_dir"; as_fn_mkdir_p |
ac_builddir=. |
|
case "$ac_dir" in |
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; |
*) |
ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` |
# A ".." for each directory in $ac_dir_suffix. |
ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` |
case $ac_top_builddir_sub in |
"") ac_top_builddir_sub=. ac_top_build_prefix= ;; |
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;; |
esac ;; |
esac |
ac_abs_top_builddir=$ac_pwd |
ac_abs_builddir=$ac_pwd$ac_dir_suffix |
# for backward compatibility: |
ac_top_builddir=$ac_top_build_prefix |
|
case $srcdir in |
.) # We are building in place. |
ac_srcdir=. |
ac_top_srcdir=$ac_top_builddir_sub |
ac_abs_top_srcdir=$ac_pwd ;; |
[\\/]* | ?:[\\/]* ) # Absolute name. |
ac_srcdir=$srcdir$ac_dir_suffix; |
ac_top_srcdir=$srcdir |
ac_abs_top_srcdir=$srcdir ;; |
*) # Relative name. |
ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix |
ac_top_srcdir=$ac_top_build_prefix$srcdir |
ac_abs_top_srcdir=$ac_pwd/$srcdir ;; |
esac |
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix |
|
|
case $ac_mode in |
:F) |
# |
# CONFIG_FILE |
# |
|
case $INSTALL in |
[\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; |
*) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; |
esac |
_ACEOF |
|
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 |
# If the template does not know about datarootdir, expand it. |
# FIXME: This hack should be removed a few years after 2.60. |
ac_datarootdir_hack=; ac_datarootdir_seen= |
ac_sed_dataroot=' |
/datarootdir/ { |
p |
q |
} |
/@datadir@/p |
/@docdir@/p |
/@infodir@/p |
/@localedir@/p |
/@mandir@/p' |
case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in |
*datarootdir*) ac_datarootdir_seen=yes;; |
*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) |
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 |
$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} |
_ACEOF |
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 |
ac_datarootdir_hack=' |
s&@datadir@&$datadir&g |
s&@docdir@&$docdir&g |
s&@infodir@&$infodir&g |
s&@localedir@&$localedir&g |
s&@mandir@&$mandir&g |
s&\\\${datarootdir}&$datarootdir&g' ;; |
esac |
_ACEOF |
|
# Neutralize VPATH when `$srcdir' = `.'. |
# Shell code in configure.ac might set extrasub. |
# FIXME: do we really want to maintain this feature? |
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 |
ac_sed_extra="$ac_vpsub |
$extrasub |
_ACEOF |
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 |
:t |
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b |
s|@configure_input@|$ac_sed_conf_input|;t t |
s&@top_builddir@&$ac_top_builddir_sub&;t t |
s&@top_build_prefix@&$ac_top_build_prefix&;t t |
s&@srcdir@&$ac_srcdir&;t t |
s&@abs_srcdir@&$ac_abs_srcdir&;t t |
s&@top_srcdir@&$ac_top_srcdir&;t t |
s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t |
s&@builddir@&$ac_builddir&;t t |
s&@abs_builddir@&$ac_abs_builddir&;t t |
s&@abs_top_builddir@&$ac_abs_top_builddir&;t t |
s&@INSTALL@&$ac_INSTALL&;t t |
$ac_datarootdir_hack |
" |
eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ |
|| as_fn_error "could not create $ac_file" "$LINENO" 5 |
|
test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && |
{ ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && |
{ ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && |
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' |
which seems to be undefined. Please make sure it is defined." >&5 |
$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' |
which seems to be undefined. Please make sure it is defined." >&2;} |
|
rm -f "$tmp/stdin" |
case $ac_file in |
-) cat "$tmp/out" && rm -f "$tmp/out";; |
*) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; |
esac \ |
|| as_fn_error "could not create $ac_file" "$LINENO" 5 |
;; |
:H) |
# |
# CONFIG_HEADER |
# |
if test x"$ac_file" != x-; then |
{ |
$as_echo "/* $configure_input */" \ |
&& eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" |
} >"$tmp/config.h" \ |
|| as_fn_error "could not create $ac_file" "$LINENO" 5 |
if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 |
$as_echo "$as_me: $ac_file is unchanged" >&6;} |
else |
rm -f "$ac_file" |
mv "$tmp/config.h" "$ac_file" \ |
|| as_fn_error "could not create $ac_file" "$LINENO" 5 |
fi |
else |
$as_echo "/* $configure_input */" \ |
&& eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ |
|| as_fn_error "could not create -" "$LINENO" 5 |
fi |
;; |
|
:C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 |
$as_echo "$as_me: executing $ac_file commands" >&6;} |
;; |
esac |
|
|
case $ac_file$ac_mode in |
"default-1":C) |
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 |
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, GMOFILES, UPDATEPOFILES, DUMMYPOFILES 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" "$ac_given_srcdir/$ac_dir/LINGUAS"` |
# Hide the ALL_LINGUAS assigment from automake. |
eval 'ALL_LINGUAS''=$ALL_LINGUAS_' |
POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" |
else |
# The set of available languages was given in configure.in. |
eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' |
fi |
case "$ac_given_srcdir" in |
.) srcdirpre= ;; |
*) srcdirpre='$(srcdir)/' ;; |
esac |
POFILES= |
GMOFILES= |
UPDATEPOFILES= |
DUMMYPOFILES= |
for lang in $ALL_LINGUAS; do |
POFILES="$POFILES $srcdirpre$lang.po" |
GMOFILES="$GMOFILES $srcdirpre$lang.gmo" |
UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" |
DUMMYPOFILES="$DUMMYPOFILES $lang.nop" |
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|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|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 ;; |
|
esac |
done # for ac_tag |
|
|
as_fn_exit 0 |
_ACEOF |
ac_clean_files=$ac_clean_files_save |
|
test $ac_write_fail = 0 || |
as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5 |
|
|
# configure is writing to config.log, and then calls config.status. |
# config.status does its own redirection, appending to config.log. |
# Unfortunately, on DOS this fails, as config.log is still kept open |
# by configure, so config.status won't be able to write to it; its |
# output is simply discarded. So we exec the FD to /dev/null, |
# effectively closing config.log, so it can be properly (re)opened and |
# appended to by config.status. When coming back to configure, we |
# need to make the FD available again. |
if test "$no_create" != yes; then |
ac_cs_success=: |
ac_config_status_args= |
test "$silent" = yes && |
ac_config_status_args="$ac_config_status_args --quiet" |
exec 5>/dev/null |
$SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false |
exec 5>>config.log |
# Use ||, not &&, to avoid exiting from the if with $? = 1, which |
# would make configure fail if this is the last instruction. |
$ac_cs_success || as_fn_exit $? |
fi |
if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then |
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 |
$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} |
fi |
|
or1k-gcc/intl/configure
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: or1k-gcc/intl/explodename.c
===================================================================
--- or1k-gcc/intl/explodename.c (nonexistent)
+++ or1k-gcc/intl/explodename.c (revision 728)
@@ -0,0 +1,192 @@
+/* Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc.
+ Contributed by Ulrich Drepper , 1995.
+
+ 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. */
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+#include
+#include
+#include
+
+#include "loadinfo.h"
+
+/* On some strange systems still no definition of NULL is found. Sigh! */
+#ifndef NULL
+# if defined __STDC__ && __STDC__
+# define NULL ((void *) 0)
+# else
+# define NULL 0
+# endif
+#endif
+
+/* @@ end of prolog @@ */
+
+char *
+_nl_find_language (name)
+ const char *name;
+{
+ while (name[0] != '\0' && name[0] != '_' && name[0] != '@'
+ && name[0] != '+' && name[0] != ',')
+ ++name;
+
+ return (char *) name;
+}
+
+
+int
+_nl_explode_name (name, language, modifier, territory, codeset,
+ normalized_codeset, special, sponsor, revision)
+ char *name;
+ const char **language;
+ const char **modifier;
+ const char **territory;
+ const char **codeset;
+ const char **normalized_codeset;
+ const char **special;
+ const char **sponsor;
+ const char **revision;
+{
+ enum { undecided, xpg, cen } syntax;
+ char *cp;
+ int mask;
+
+ *modifier = NULL;
+ *territory = NULL;
+ *codeset = NULL;
+ *normalized_codeset = NULL;
+ *special = NULL;
+ *sponsor = NULL;
+ *revision = NULL;
+
+ /* Now we determine the single parts of the locale name. First
+ look for the language. Termination symbols are `_' and `@' if
+ we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */
+ mask = 0;
+ syntax = undecided;
+ *language = cp = name;
+ cp = _nl_find_language (*language);
+
+ if (*language == cp)
+ /* This does not make sense: language has to be specified. Use
+ this entry as it is without exploding. Perhaps it is an alias. */
+ cp = strchr (*language, '\0');
+ else if (cp[0] == '_')
+ {
+ /* Next is the territory. */
+ cp[0] = '\0';
+ *territory = ++cp;
+
+ while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@'
+ && cp[0] != '+' && cp[0] != ',' && cp[0] != '_')
+ ++cp;
+
+ mask |= TERRITORY;
+
+ if (cp[0] == '.')
+ {
+ /* Next is the codeset. */
+ syntax = xpg;
+ cp[0] = '\0';
+ *codeset = ++cp;
+
+ while (cp[0] != '\0' && cp[0] != '@')
+ ++cp;
+
+ mask |= XPG_CODESET;
+
+ if (*codeset != cp && (*codeset)[0] != '\0')
+ {
+ *normalized_codeset = _nl_normalize_codeset (*codeset,
+ cp - *codeset);
+ if (strcmp (*codeset, *normalized_codeset) == 0)
+ free ((char *) *normalized_codeset);
+ else
+ mask |= XPG_NORM_CODESET;
+ }
+ }
+ }
+
+ if (cp[0] == '@' || (syntax != xpg && cp[0] == '+'))
+ {
+ /* Next is the modifier. */
+ syntax = cp[0] == '@' ? xpg : cen;
+ cp[0] = '\0';
+ *modifier = ++cp;
+
+ while (syntax == cen && cp[0] != '\0' && cp[0] != '+'
+ && cp[0] != ',' && cp[0] != '_')
+ ++cp;
+
+ mask |= XPG_MODIFIER | CEN_AUDIENCE;
+ }
+
+ if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_'))
+ {
+ syntax = cen;
+
+ if (cp[0] == '+')
+ {
+ /* Next is special application (CEN syntax). */
+ cp[0] = '\0';
+ *special = ++cp;
+
+ while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_')
+ ++cp;
+
+ mask |= CEN_SPECIAL;
+ }
+
+ if (cp[0] == ',')
+ {
+ /* Next is sponsor (CEN syntax). */
+ cp[0] = '\0';
+ *sponsor = ++cp;
+
+ while (cp[0] != '\0' && cp[0] != '_')
+ ++cp;
+
+ mask |= CEN_SPONSOR;
+ }
+
+ if (cp[0] == '_')
+ {
+ /* Next is revision (CEN syntax). */
+ cp[0] = '\0';
+ *revision = ++cp;
+
+ mask |= CEN_REVISION;
+ }
+ }
+
+ /* For CEN syntax values it might be important to have the
+ separator character in the file name, not for XPG syntax. */
+ if (syntax == xpg)
+ {
+ if (*territory != NULL && (*territory)[0] == '\0')
+ mask &= ~TERRITORY;
+
+ if (*codeset != NULL && (*codeset)[0] == '\0')
+ mask &= ~XPG_CODESET;
+
+ if (*modifier != NULL && (*modifier)[0] == '\0')
+ mask &= ~XPG_MODIFIER;
+ }
+
+ return mask;
+}
Index: or1k-gcc/intl/Makefile.in
===================================================================
--- or1k-gcc/intl/Makefile.in (nonexistent)
+++ or1k-gcc/intl/Makefile.in (revision 728)
@@ -0,0 +1,251 @@
+# Makefile for directory with message catalog handling library of GNU gettext
+# Copyright (C) 1995-1998, 2000-2003 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU 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.
+
+# This Makefile has been modified from the original shipped with
+# gettext 0.12.1 to remove the ability to install libintl (which
+# we do not need nor want), the ability to build a shared library
+# (likewise), and a large number of heinous kludges.
+
+SHELL = @SHELL@
+
+srcdir = @srcdir@
+VPATH = $(srcdir)
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+transform = @program_transform_name@
+libdir = @libdir@
+includedir = @includedir@
+datarootdir = @datarootdir@
+datadir = @datadir@
+localedir = $(datadir)/locale
+aliaspath = $(localedir)
+
+AR = ar
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+CC = @CC@
+RANLIB = @RANLIB@
+YACC = @INTLBISON@ -y -d
+YFLAGS = --name-prefix=__gettext
+CPPFLAGS = @CPPFLAGS@
+CFLAGS = @CFLAGS@
+LDFLAGS = @LDFLAGS@
+LIBS = @LIBS@
+DEFS = -DHAVE_CONFIG_H
+
+COMPILE = $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(DEFS-$@) $(INCLUDES)
+
+HEADERS = \
+ gmo.h \
+ gettextP.h \
+ hash-string.h \
+ loadinfo.h \
+ plural-exp.h \
+ eval-plural.h \
+ localcharset.h \
+ relocatable.h \
+ libgnuintl.h
+SOURCES = \
+ bindtextdom.c \
+ dcgettext.c \
+ dgettext.c \
+ gettext.c \
+ finddomain.c \
+ loadmsgcat.c \
+ localealias.c \
+ textdomain.c \
+ l10nflist.c \
+ explodename.c \
+ dcigettext.c \
+ dcngettext.c \
+ dngettext.c \
+ ngettext.c \
+ plural.y \
+ plural-exp.c \
+ localcharset.c \
+ relocatable.c \
+ localename.c \
+ log.c \
+ osdep.c \
+ intl-compat.c
+OBJECTS = \
+ bindtextdom.o \
+ dcgettext.o \
+ dgettext.o \
+ gettext.o \
+ finddomain.o \
+ loadmsgcat.o \
+ localealias.o \
+ textdomain.o \
+ l10nflist.o \
+ explodename.o \
+ dcigettext.o \
+ dcngettext.o \
+ dngettext.o \
+ ngettext.o \
+ plural.o \
+ plural-exp.o \
+ localcharset.o \
+ relocatable.o \
+ localename.o \
+ log.o \
+ osdep.o \
+ intl-compat.o
+
+DEFS-dcigettext.o = -DLOCALEDIR="\"$(localedir)\""
+DEFS-localealias.o = -DLOCALE_ALIAS_PATH="\"$(aliaspath)\""
+DEFS-localcharset.o = -DLIBDIR="\"$(libdir)\""
+DEFS-relocatable.o = -DINSTALLDIR="\"$(libdir)\""
+
+all: all-@USE_INCLUDED_LIBINTL@
+all-yes: libintl.a libintl.h config.intl
+all-no: # nothing
+
+libintl.a: $(OBJECTS)
+ rm -f $@
+ $(AR) cru $@ $(OBJECTS)
+ $(RANLIB) $@
+
+libintl.h: $(srcdir)/libgnuintl.h
+ cp $(srcdir)/libgnuintl.h $@
+
+.SUFFIXES:
+.SUFFIXES: .c .y .o
+
+.c.o:
+ $(COMPILE) $<
+
+.y.c:
+ $(YACC) $(YFLAGS) --output $@ $<
+ rm -f $*.h
+
+INCLUDES = -I. -I$(srcdir)
+
+check: all
+
+# The installation targets have been disabled.
+install: install-exec install-data
+install-exec: all
+install-data: all
+install-strip: install
+installdirs:
+installcheck:
+uninstall:
+
+.PHONY: info dvi ps pdf html
+.PHONY: install-info install-dvi install-ps install-pdf install-html
+
+info dvi ps pdf html:
+install-info install-dvi install-ps install-pdf install-html:
+
+$(OBJECTS): config.h libintl.h
+bindtextdom.o dcgettext.o dcigettext.o dcngettext.o dgettext.o \
+dngettext.o finddomain.o gettext.o intl-compat.o loadmsgcat.o \
+localealias.o ngettext.o textdomain.o: gettextP.h gmo.h loadinfo.h
+dcigettext.o loadmsgcat.o: hash-string.h
+explodename.o l10nflist.o: loadinfo.h
+dcigettext.o loadmsgcat.o plural.o plural-exp.o: plural-exp.h
+dcigettext.o: eval-plural.h
+localcharset.o: localcharset.h
+localealias.o localcharset.o relocatable.o: relocatable.h
+
+tags: TAGS
+TAGS: $(HEADERS) $(SOURCES)
+ here=`pwd`; cd $(srcdir) && \
+ etags -o $$here/TAGS $(HEADERS) $(SOURCES)
+
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES)
+ here=`pwd`; cd $(srcdir) && \
+ ctags -o $$here/CTAGS $(HEADERS) $(SOURCES)
+
+id: ID
+ID: $(HEADERS) $(SOURCES)
+ here=`pwd`; cd $(srcdir) && \
+ mkid -f$$here/ID $(HEADERS) $(SOURCES)
+
+mostlyclean:
+ rm -f *.a *.la *.o *.obj *.lo core core.* libintl.h
+
+clean: mostlyclean
+
+distclean: clean
+ rm -f config.status config.cache config.log config.intl config.h
+ rm -f Makefile ID TAGS
+
+maintainer-clean: distclean
+
+# The 'make dist' targets have been disabled; the GNU toolchain handles this
+# with a script maintained separately from the Makefile.
+dist:
+distdir:
+
+# Rules to rebuild the configuration
+
+Makefile: $(srcdir)/Makefile.in config.status
+ $(SHELL) ./config.status Makefile
+
+config.intl: $(srcdir)/config.intl.in config.status
+ $(SHELL) ./config.status config.intl
+
+config.status: $(srcdir)/configure
+ $(SHELL) ./config.status --recheck
+
+$(srcdir)/configure: @MAINT@ $(srcdir)/aclocal.m4 $(srcdir)/configure.ac
+ cd $(srcdir) && $(AUTOCONF)
+
+aclocal_deps = \
+ $(srcdir)/configure.ac \
+ $(srcdir)/../config/codeset.m4 \
+ $(srcdir)/../config/gettext.m4 \
+ $(srcdir)/../config/glibc21.m4 \
+ $(srcdir)/../config/iconv.m4 \
+ $(srcdir)/../config/intdiv0.m4 \
+ $(srcdir)/../config/inttypes-pri.m4 \
+ $(srcdir)/../config/inttypes.m4 \
+ $(srcdir)/../config/inttypes_h.m4 \
+ $(srcdir)/../config/lcmessage.m4 \
+ $(srcdir)/../config/lib-ld.m4 \
+ $(srcdir)/../config/lib-link.m4 \
+ $(srcdir)/../config/lib-prefix.m4 \
+ $(srcdir)/../config/nls.m4 \
+ $(srcdir)/../config/po.m4 \
+ $(srcdir)/../config/progtest.m4 \
+ $(srcdir)/../config/stdint_h.m4 \
+ $(srcdir)/../config/uintmax_t.m4 \
+ $(srcdir)/../config/ulonglong.m4
+
+$(srcdir)/aclocal.m4: @MAINT@ $(aclocal_deps)
+ cd $(srcdir) && $(ACLOCAL) -I ../config
+
+config.h: stamp-h1
+ test -f config.h || (rm -f stamp-h1 && $(MAKE) stamp-h1)
+
+stamp-h1: $(srcdir)/config.h.in config.status
+ -rm -f stamp-h1
+ $(SHELL) ./config.status config.h
+
+$(srcdir)/config.h.in: @MAINT@ $(srcdir)/aclocal.m4 $(srcdir)/configure.ac
+ cd $(srcdir) && $(AUTOHEADER)
+ -rm -f stamp-h1
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: or1k-gcc/intl/localcharset.c
===================================================================
--- or1k-gcc/intl/localcharset.c (nonexistent)
+++ or1k-gcc/intl/localcharset.c (revision 728)
@@ -0,0 +1,398 @@
+/* Determine a canonical name for the current locale's character encoding.
+
+ Copyright (C) 2000-2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU 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. */
+
+/* Written by Bruno Haible . */
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+/* Specification. */
+#include "localcharset.h"
+
+#if HAVE_STDDEF_H
+# include
+#endif
+
+#include
+#if HAVE_STRING_H
+# include
+#else
+# include
+#endif
+#if HAVE_STDLIB_H
+# include
+#endif
+
+#if defined _WIN32 || defined __WIN32__
+# undef WIN32 /* avoid warning on mingw32 */
+# define WIN32
+#endif
+
+#if defined __EMX__
+/* Assume EMX program runs on OS/2, even if compiled under DOS. */
+# define OS2
+#endif
+
+#if !defined WIN32
+# if HAVE_LANGINFO_CODESET
+# include
+# else
+# if HAVE_SETLOCALE
+# include
+# endif
+# endif
+#elif defined WIN32
+# define WIN32_LEAN_AND_MEAN
+# include
+#endif
+#if defined OS2
+# define INCL_DOS
+# include
+#endif
+
+#if ENABLE_RELOCATABLE
+# include "relocatable.h"
+#else
+# define relocate(pathname) (pathname)
+#endif
+
+#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
+ /* Win32, OS/2, DOS */
+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+#endif
+
+#ifndef DIRECTORY_SEPARATOR
+# define DIRECTORY_SEPARATOR '/'
+#endif
+
+#ifndef ISSLASH
+# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR)
+#endif
+
+#ifdef HAVE_GETC_UNLOCKED
+# undef getc
+# define getc getc_unlocked
+#endif
+
+/* The following static variable is declared 'volatile' to avoid a
+ possible multithread problem in the function get_charset_aliases. If we
+ are running in a threaded environment, and if two threads initialize
+ 'charset_aliases' simultaneously, both will produce the same value,
+ and everything will be ok if the two assignments to 'charset_aliases'
+ are atomic. But I don't know what will happen if the two assignments mix. */
+#if __STDC__ != 1
+# define volatile /* empty */
+#endif
+/* Pointer to the contents of the charset.alias file, if it has already been
+ read, else NULL. Its format is:
+ ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0' */
+static const char * volatile charset_aliases;
+
+/* Return a pointer to the contents of the charset.alias file. */
+static const char *
+get_charset_aliases ()
+{
+ const char *cp;
+
+ cp = charset_aliases;
+ if (cp == NULL)
+ {
+#if !(defined VMS || defined WIN32)
+ FILE *fp;
+ const char *dir = relocate (LIBDIR);
+ const char *base = "charset.alias";
+ char *file_name;
+
+ /* Concatenate dir and base into freshly allocated file_name. */
+ {
+ size_t dir_len = strlen (dir);
+ size_t base_len = strlen (base);
+ int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1]));
+ file_name = (char *) malloc (dir_len + add_slash + base_len + 1);
+ if (file_name != NULL)
+ {
+ memcpy (file_name, dir, dir_len);
+ if (add_slash)
+ file_name[dir_len] = DIRECTORY_SEPARATOR;
+ memcpy (file_name + dir_len + add_slash, base, base_len + 1);
+ }
+ }
+
+ if (file_name == NULL || (fp = fopen (file_name, "r")) == NULL)
+ /* Out of memory or file not found, treat it as empty. */
+ cp = "";
+ else
+ {
+ /* Parse the file's contents. */
+ int c;
+ char buf1[50+1];
+ char buf2[50+1];
+ char *res_ptr = NULL;
+ size_t res_size = 0;
+ size_t l1, l2;
+
+ for (;;)
+ {
+ c = getc (fp);
+ if (c == EOF)
+ break;
+ if (c == '\n' || c == ' ' || c == '\t')
+ continue;
+ if (c == '#')
+ {
+ /* Skip comment, to end of line. */
+ do
+ c = getc (fp);
+ while (!(c == EOF || c == '\n'));
+ if (c == EOF)
+ break;
+ continue;
+ }
+ ungetc (c, fp);
+ if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
+ break;
+ l1 = strlen (buf1);
+ l2 = strlen (buf2);
+ if (res_size == 0)
+ {
+ res_size = l1 + 1 + l2 + 1;
+ res_ptr = (char *) malloc (res_size + 1);
+ }
+ else
+ {
+ res_size += l1 + 1 + l2 + 1;
+ res_ptr = (char *) realloc (res_ptr, res_size + 1);
+ }
+ if (res_ptr == NULL)
+ {
+ /* Out of memory. */
+ res_size = 0;
+ break;
+ }
+ strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);
+ strcpy (res_ptr + res_size - (l2 + 1), buf2);
+ }
+ fclose (fp);
+ if (res_size == 0)
+ cp = "";
+ else
+ {
+ *(res_ptr + res_size) = '\0';
+ cp = res_ptr;
+ }
+ }
+
+ if (file_name != NULL)
+ free (file_name);
+
+#else
+
+# if defined VMS
+ /* To avoid the troubles of an extra file charset.alias_vms in the
+ sources of many GNU packages, simply inline the aliases here. */
+ /* The list of encodings is taken from the OpenVMS 7.3-1 documentation
+ "Compaq C Run-Time Library Reference Manual for OpenVMS systems"
+ section 10.7 "Handling Different Character Sets". */
+ cp = "ISO8859-1" "\0" "ISO-8859-1" "\0"
+ "ISO8859-2" "\0" "ISO-8859-2" "\0"
+ "ISO8859-5" "\0" "ISO-8859-5" "\0"
+ "ISO8859-7" "\0" "ISO-8859-7" "\0"
+ "ISO8859-8" "\0" "ISO-8859-8" "\0"
+ "ISO8859-9" "\0" "ISO-8859-9" "\0"
+ /* Japanese */
+ "eucJP" "\0" "EUC-JP" "\0"
+ "SJIS" "\0" "SHIFT_JIS" "\0"
+ "DECKANJI" "\0" "DEC-KANJI" "\0"
+ "SDECKANJI" "\0" "EUC-JP" "\0"
+ /* Chinese */
+ "eucTW" "\0" "EUC-TW" "\0"
+ "DECHANYU" "\0" "DEC-HANYU" "\0"
+ "DECHANZI" "\0" "GB2312" "\0"
+ /* Korean */
+ "DECKOREAN" "\0" "EUC-KR" "\0";
+# endif
+
+# if defined WIN32
+ /* To avoid the troubles of installing a separate file in the same
+ directory as the DLL and of retrieving the DLL's directory at
+ runtime, simply inline the aliases here. */
+
+ cp = "CP936" "\0" "GBK" "\0"
+ "CP1361" "\0" "JOHAB" "\0"
+ "CP20127" "\0" "ASCII" "\0"
+ "CP20866" "\0" "KOI8-R" "\0"
+ "CP21866" "\0" "KOI8-RU" "\0"
+ "CP28591" "\0" "ISO-8859-1" "\0"
+ "CP28592" "\0" "ISO-8859-2" "\0"
+ "CP28593" "\0" "ISO-8859-3" "\0"
+ "CP28594" "\0" "ISO-8859-4" "\0"
+ "CP28595" "\0" "ISO-8859-5" "\0"
+ "CP28596" "\0" "ISO-8859-6" "\0"
+ "CP28597" "\0" "ISO-8859-7" "\0"
+ "CP28598" "\0" "ISO-8859-8" "\0"
+ "CP28599" "\0" "ISO-8859-9" "\0"
+ "CP28605" "\0" "ISO-8859-15" "\0";
+# endif
+#endif
+
+ charset_aliases = cp;
+ }
+
+ return cp;
+}
+
+/* Determine the current locale's character encoding, and canonicalize it
+ into one of the canonical names listed in config.charset.
+ The result must not be freed; it is statically allocated.
+ If the canonical name cannot be determined, the result is a non-canonical
+ name. */
+
+#ifdef STATIC
+STATIC
+#endif
+const char *
+locale_charset ()
+{
+ const char *codeset;
+ const char *aliases;
+
+#if !(defined WIN32 || defined OS2)
+
+# if HAVE_LANGINFO_CODESET
+
+ /* Most systems support nl_langinfo (CODESET) nowadays. */
+ codeset = nl_langinfo (CODESET);
+
+# else
+
+ /* On old systems which lack it, use setlocale or getenv. */
+ const char *locale = NULL;
+
+ /* But most old systems don't have a complete set of locales. Some
+ (like SunOS 4 or DJGPP) have only the C locale. Therefore we don't
+ use setlocale here; it would return "C" when it doesn't support the
+ locale name the user has set. */
+# if HAVE_SETLOCALE && 0
+ locale = setlocale (LC_CTYPE, NULL);
+# endif
+ if (locale == NULL || locale[0] == '\0')
+ {
+ locale = getenv ("LC_ALL");
+ if (locale == NULL || locale[0] == '\0')
+ {
+ locale = getenv ("LC_CTYPE");
+ if (locale == NULL || locale[0] == '\0')
+ locale = getenv ("LANG");
+ }
+ }
+
+ /* On some old systems, one used to set locale = "iso8859_1". On others,
+ you set it to "language_COUNTRY.charset". In any case, we resolve it
+ through the charset.alias file. */
+ codeset = locale;
+
+# endif
+
+#elif defined WIN32
+
+ static char buf[2 + 10 + 1];
+
+ /* Woe32 has a function returning the locale's codepage as a number. */
+ sprintf (buf, "CP%u", GetACP ());
+ codeset = buf;
+
+#elif defined OS2
+
+ const char *locale;
+ static char buf[2 + 10 + 1];
+ ULONG cp[3];
+ ULONG cplen;
+
+ /* Allow user to override the codeset, as set in the operating system,
+ with standard language environment variables. */
+ locale = getenv ("LC_ALL");
+ if (locale == NULL || locale[0] == '\0')
+ {
+ locale = getenv ("LC_CTYPE");
+ if (locale == NULL || locale[0] == '\0')
+ locale = getenv ("LANG");
+ }
+ if (locale != NULL && locale[0] != '\0')
+ {
+ /* If the locale name contains an encoding after the dot, return it. */
+ const char *dot = strchr (locale, '.');
+
+ if (dot != NULL)
+ {
+ const char *modifier;
+
+ dot++;
+ /* Look for the possible @... trailer and remove it, if any. */
+ modifier = strchr (dot, '@');
+ if (modifier == NULL)
+ return dot;
+ if (modifier - dot < sizeof (buf))
+ {
+ memcpy (buf, dot, modifier - dot);
+ buf [modifier - dot] = '\0';
+ return buf;
+ }
+ }
+
+ /* Resolve through the charset.alias file. */
+ codeset = locale;
+ }
+ else
+ {
+ /* OS/2 has a function returning the locale's codepage as a number. */
+ if (DosQueryCp (sizeof (cp), cp, &cplen))
+ codeset = "";
+ else
+ {
+ sprintf (buf, "CP%u", cp[0]);
+ codeset = buf;
+ }
+ }
+
+#endif
+
+ if (codeset == NULL)
+ /* The canonical name cannot be determined. */
+ codeset = "";
+
+ /* Resolve alias. */
+ for (aliases = get_charset_aliases ();
+ *aliases != '\0';
+ aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1)
+ if (strcmp (codeset, aliases) == 0
+ || (aliases[0] == '*' && aliases[1] == '\0'))
+ {
+ codeset = aliases + strlen (aliases) + 1;
+ break;
+ }
+
+ /* Don't return an empty string. GNU libc and GNU libiconv interpret
+ the empty string as denoting "the locale's character encoding",
+ thus GNU libiconv would call this function a second time. */
+ if (codeset[0] == '\0')
+ codeset = "ASCII";
+
+ return codeset;
+}
Index: or1k-gcc/intl/VERSION
===================================================================
--- or1k-gcc/intl/VERSION (nonexistent)
+++ or1k-gcc/intl/VERSION (revision 728)
@@ -0,0 +1 @@
+GNU gettext library from gettext-0.12.1
Index: or1k-gcc/intl/dcigettext.c
===================================================================
--- or1k-gcc/intl/dcigettext.c (nonexistent)
+++ or1k-gcc/intl/dcigettext.c (revision 728)
@@ -0,0 +1,1238 @@
+/* Implementation of the internal dcigettext function.
+ Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU 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. */
+
+/* Tell glibc's to provide a prototype for mempcpy().
+ This must come before because may include
+ , and once has been included, it's too late. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+#include
+
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+# define HAVE_ALLOCA 1
+#else
+# ifdef _MSC_VER
+# include
+# define alloca _alloca
+# else
+# if defined HAVE_ALLOCA_H || defined _LIBC
+# include
+# else
+# ifdef _AIX
+ #pragma alloca
+# else
+# ifndef alloca
+char *alloca ();
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#include
+#ifndef errno
+extern int errno;
+#endif
+#ifndef __set_errno
+# define __set_errno(val) errno = (val)
+#endif
+
+#include
+#include
+#include
+
+#if defined HAVE_UNISTD_H || defined _LIBC
+# include
+#endif
+
+#include
+
+#ifdef _LIBC
+ /* Guess whether integer division by zero raises signal SIGFPE.
+ Set to 1 only if you know for sure. In case of doubt, set to 0. */
+# if defined __alpha__ || defined __arm__ || defined __i386__ \
+ || defined __m68k__ || defined __s390__
+# define INTDIV0_RAISES_SIGFPE 1
+# else
+# define INTDIV0_RAISES_SIGFPE 0
+# endif
+#endif
+#if !INTDIV0_RAISES_SIGFPE
+# include
+#endif
+
+#if defined HAVE_SYS_PARAM_H || defined _LIBC
+# include
+#endif
+
+#include "gettextP.h"
+#include "plural-exp.h"
+#ifdef _LIBC
+# include
+#else
+# include "libgnuintl.h"
+#endif
+#include "hash-string.h"
+
+/* Thread safetyness. */
+#ifdef _LIBC
+# include
+#else
+/* Provide dummy implementation if this is outside glibc. */
+# define __libc_lock_define_initialized(CLASS, NAME)
+# define __libc_lock_lock(NAME)
+# define __libc_lock_unlock(NAME)
+# define __libc_rwlock_define_initialized(CLASS, NAME)
+# define __libc_rwlock_rdlock(NAME)
+# define __libc_rwlock_unlock(NAME)
+#endif
+
+/* Alignment of types. */
+#if defined __GNUC__ && __GNUC__ >= 2
+# define alignof(TYPE) __alignof__ (TYPE)
+#else
+# define alignof(TYPE) \
+ ((int) &((struct { char dummy1; TYPE dummy2; } *) 0)->dummy2)
+#endif
+
+/* The internal variables in the standalone libintl.a must have different
+ names than the internal variables in GNU libc, otherwise programs
+ using libintl.a cannot be linked statically. */
+#if !defined _LIBC
+# define _nl_default_default_domain libintl_nl_default_default_domain
+# define _nl_current_default_domain libintl_nl_current_default_domain
+# define _nl_default_dirname libintl_nl_default_dirname
+# define _nl_domain_bindings libintl_nl_domain_bindings
+#endif
+
+/* Some compilers, like SunOS4 cc, don't have offsetof in . */
+#ifndef offsetof
+# define offsetof(type,ident) ((size_t)&(((type*)0)->ident))
+#endif
+
+/* @@ end of prolog @@ */
+
+#ifdef _LIBC
+/* Rename the non ANSI C functions. This is required by the standard
+ because some ANSI C functions will require linking with this object
+ file and the name space must not be polluted. */
+# define getcwd __getcwd
+# ifndef stpcpy
+# define stpcpy __stpcpy
+# endif
+# define tfind __tfind
+#else
+# if !defined HAVE_GETCWD
+char *getwd ();
+# define getcwd(buf, max) getwd (buf)
+# else
+char *getcwd ();
+# endif
+# ifndef HAVE_STPCPY
+static char *stpcpy PARAMS ((char *dest, const char *src));
+# endif
+# ifndef HAVE_MEMPCPY
+static void *mempcpy PARAMS ((void *dest, const void *src, size_t n));
+# endif
+#endif
+
+/* Amount to increase buffer size by in each try. */
+#define PATH_INCR 32
+
+/* The following is from pathmax.h. */
+/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define
+ PATH_MAX but might cause redefinition warnings when sys/param.h is
+ later included (as on MORE/BSD 4.3). */
+#if defined _POSIX_VERSION || (defined HAVE_LIMITS_H && !defined __GNUC__)
+# include
+#endif
+
+#ifndef _POSIX_PATH_MAX
+# define _POSIX_PATH_MAX 255
+#endif
+
+#if !defined PATH_MAX && defined _PC_PATH_MAX
+# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX))
+#endif
+
+/* Don't include sys/param.h if it already has been. */
+#if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN
+# include
+#endif
+
+#if !defined PATH_MAX && defined MAXPATHLEN
+# define PATH_MAX MAXPATHLEN
+#endif
+
+#ifndef PATH_MAX
+# define PATH_MAX _POSIX_PATH_MAX
+#endif
+
+/* Pathname support.
+ ISSLASH(C) tests whether C is a directory separator character.
+ IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not,
+ it may be concatenated to a directory pathname.
+ IS_PATH_WITH_DIR(P) tests whether P contains a directory specification.
+ */
+#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
+ /* Win32, OS/2, DOS */
+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+# define HAS_DEVICE(P) \
+ ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
+ && (P)[1] == ':')
+# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P))
+# define IS_PATH_WITH_DIR(P) \
+ (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P))
+#else
+ /* Unix */
+# define ISSLASH(C) ((C) == '/')
+# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0])
+# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL)
+#endif
+
+/* This is the type used for the search tree where known translations
+ are stored. */
+struct known_translation_t
+{
+ /* Domain in which to search. */
+ char *domainname;
+
+ /* The category. */
+ int category;
+
+ /* State of the catalog counter at the point the string was found. */
+ int counter;
+
+ /* Catalog where the string was found. */
+ struct loaded_l10nfile *domain;
+
+ /* And finally the translation. */
+ const char *translation;
+ size_t translation_length;
+
+ /* Pointer to the string in question. */
+ char msgid[ZERO];
+};
+
+/* Root of the search tree with known translations. We can use this
+ only if the system provides the `tsearch' function family. */
+#if defined HAVE_TSEARCH || defined _LIBC
+# include
+
+static void *root;
+
+# ifdef _LIBC
+# define tsearch __tsearch
+# endif
+
+/* Function to compare two entries in the table of known translations. */
+static int transcmp PARAMS ((const void *p1, const void *p2));
+static int
+transcmp (p1, p2)
+ const void *p1;
+ const void *p2;
+{
+ const struct known_translation_t *s1;
+ const struct known_translation_t *s2;
+ int result;
+
+ s1 = (const struct known_translation_t *) p1;
+ s2 = (const struct known_translation_t *) p2;
+
+ result = strcmp (s1->msgid, s2->msgid);
+ if (result == 0)
+ {
+ result = strcmp (s1->domainname, s2->domainname);
+ if (result == 0)
+ /* We compare the category last (though this is the cheapest
+ operation) since it is hopefully always the same (namely
+ LC_MESSAGES). */
+ result = s1->category - s2->category;
+ }
+
+ return result;
+}
+#endif
+
+#ifndef INTVARDEF
+# define INTVARDEF(name)
+#endif
+#ifndef INTUSE
+# define INTUSE(name) name
+#endif
+
+/* Name of the default domain used for gettext(3) prior any call to
+ textdomain(3). The default value for this is "messages". */
+const char _nl_default_default_domain[] attribute_hidden = "messages";
+
+/* Value used as the default domain for gettext(3). */
+const char *_nl_current_default_domain attribute_hidden
+ = _nl_default_default_domain;
+
+/* Contains the default location of the message catalogs. */
+#if defined __EMX__
+extern const char _nl_default_dirname[];
+#else
+const char _nl_default_dirname[] = LOCALEDIR;
+INTVARDEF (_nl_default_dirname)
+#endif
+
+/* List with bindings of specific domains created by bindtextdomain()
+ calls. */
+struct binding *_nl_domain_bindings;
+
+/* Prototypes for local functions. */
+static char *plural_lookup PARAMS ((struct loaded_l10nfile *domain,
+ unsigned long int n,
+ const char *translation,
+ size_t translation_len))
+ internal_function;
+static const char *guess_category_value PARAMS ((int category,
+ const char *categoryname))
+ internal_function;
+#ifdef _LIBC
+# include "../locale/localeinfo.h"
+# define category_to_name(category) _nl_category_names[category]
+#else
+static const char *category_to_name PARAMS ((int category)) internal_function;
+#endif
+
+
+/* For those loosing systems which don't have `alloca' we have to add
+ some additional code emulating it. */
+#ifdef HAVE_ALLOCA
+/* Nothing has to be done. */
+# define freea(p) /* nothing */
+# define ADD_BLOCK(list, address) /* nothing */
+# define FREE_BLOCKS(list) /* nothing */
+#else
+struct block_list
+{
+ void *address;
+ struct block_list *next;
+};
+# define ADD_BLOCK(list, addr) \
+ do { \
+ struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \
+ /* If we cannot get a free block we cannot add the new element to \
+ the list. */ \
+ if (newp != NULL) { \
+ newp->address = (addr); \
+ newp->next = (list); \
+ (list) = newp; \
+ } \
+ } while (0)
+# define FREE_BLOCKS(list) \
+ do { \
+ while (list != NULL) { \
+ struct block_list *old = list; \
+ list = list->next; \
+ free (old->address); \
+ free (old); \
+ } \
+ } while (0)
+# undef alloca
+# define alloca(size) (malloc (size))
+# define freea(p) free (p)
+#endif /* have alloca */
+
+
+#ifdef _LIBC
+/* List of blocks allocated for translations. */
+typedef struct transmem_list
+{
+ struct transmem_list *next;
+ char data[ZERO];
+} transmem_block_t;
+static struct transmem_list *transmem_list;
+#else
+typedef unsigned char transmem_block_t;
+#endif
+
+
+/* Names for the libintl functions are a problem. They must not clash
+ with existing names and they should follow ANSI C. But this source
+ code is also used in GNU C Library where the names have a __
+ prefix. So we have to make a difference here. */
+#ifdef _LIBC
+# define DCIGETTEXT __dcigettext
+#else
+# define DCIGETTEXT libintl_dcigettext
+#endif
+
+/* Lock variable to protect the global data in the gettext implementation. */
+#ifdef _LIBC
+__libc_rwlock_define_initialized (, _nl_state_lock attribute_hidden)
+#endif
+
+/* Checking whether the binaries runs SUID must be done and glibc provides
+ easier methods therefore we make a difference here. */
+#ifdef _LIBC
+# define ENABLE_SECURE __libc_enable_secure
+# define DETERMINE_SECURE
+#else
+# ifndef HAVE_GETUID
+# define getuid() 0
+# endif
+# ifndef HAVE_GETGID
+# define getgid() 0
+# endif
+# ifndef HAVE_GETEUID
+# define geteuid() getuid()
+# endif
+# ifndef HAVE_GETEGID
+# define getegid() getgid()
+# endif
+static int enable_secure;
+# define ENABLE_SECURE (enable_secure == 1)
+# define DETERMINE_SECURE \
+ if (enable_secure == 0) \
+ { \
+ if (getuid () != geteuid () || getgid () != getegid ()) \
+ enable_secure = 1; \
+ else \
+ enable_secure = -1; \
+ }
+#endif
+
+/* Get the function to evaluate the plural expression. */
+#include "eval-plural.h"
+
+/* Look up MSGID in the DOMAINNAME message catalog for the current
+ CATEGORY locale and, if PLURAL is nonzero, search over string
+ depending on the plural form determined by N. */
+char *
+DCIGETTEXT (domainname, msgid1, msgid2, plural, n, category)
+ const char *domainname;
+ const char *msgid1;
+ const char *msgid2;
+ int plural;
+ unsigned long int n;
+ int category;
+{
+#ifndef HAVE_ALLOCA
+ struct block_list *block_list = NULL;
+#endif
+ struct loaded_l10nfile *domain;
+ struct binding *binding;
+ const char *categoryname;
+ const char *categoryvalue;
+ char *dirname, *xdomainname;
+ char *single_locale;
+ char *retval;
+ size_t retlen;
+ int saved_errno;
+#if defined HAVE_TSEARCH || defined _LIBC
+ struct known_translation_t *search;
+ struct known_translation_t **foundp = NULL;
+ size_t msgid_len;
+#endif
+ size_t domainname_len;
+
+ /* If no real MSGID is given return NULL. */
+ if (msgid1 == NULL)
+ return NULL;
+
+#ifdef _LIBC
+ if (category < 0 || category >= __LC_LAST || category == LC_ALL)
+ /* Bogus. */
+ return (plural == 0
+ ? (char *) msgid1
+ /* Use the Germanic plural rule. */
+ : n == 1 ? (char *) msgid1 : (char *) msgid2);
+#endif
+
+ __libc_rwlock_rdlock (_nl_state_lock);
+
+ /* If DOMAINNAME is NULL, we are interested in the default domain. If
+ CATEGORY is not LC_MESSAGES this might not make much sense but the
+ definition left this undefined. */
+ if (domainname == NULL)
+ domainname = _nl_current_default_domain;
+
+ /* OS/2 specific: backward compatibility with older libintl versions */
+#ifdef LC_MESSAGES_COMPAT
+ if (category == LC_MESSAGES_COMPAT)
+ category = LC_MESSAGES;
+#endif
+
+#if defined HAVE_TSEARCH || defined _LIBC
+ msgid_len = strlen (msgid1) + 1;
+
+ /* Try to find the translation among those which we found at
+ some time. */
+ search = (struct known_translation_t *)
+ alloca (offsetof (struct known_translation_t, msgid) + msgid_len);
+ memcpy (search->msgid, msgid1, msgid_len);
+ search->domainname = (char *) domainname;
+ search->category = category;
+
+ foundp = (struct known_translation_t **) tfind (search, &root, transcmp);
+ freea (search);
+ if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr)
+ {
+ /* Now deal with plural. */
+ if (plural)
+ retval = plural_lookup ((*foundp)->domain, n, (*foundp)->translation,
+ (*foundp)->translation_length);
+ else
+ retval = (char *) (*foundp)->translation;
+
+ __libc_rwlock_unlock (_nl_state_lock);
+ return retval;
+ }
+#endif
+
+ /* Preserve the `errno' value. */
+ saved_errno = errno;
+
+ /* See whether this is a SUID binary or not. */
+ DETERMINE_SECURE;
+
+ /* First find matching binding. */
+ for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
+ {
+ int compare = strcmp (domainname, binding->domainname);
+ if (compare == 0)
+ /* We found it! */
+ break;
+ if (compare < 0)
+ {
+ /* It is not in the list. */
+ binding = NULL;
+ break;
+ }
+ }
+
+ if (binding == NULL)
+ dirname = (char *) INTUSE(_nl_default_dirname);
+ else if (IS_ABSOLUTE_PATH (binding->dirname))
+ dirname = binding->dirname;
+ else
+ {
+ /* We have a relative path. Make it absolute now. */
+ size_t dirname_len = strlen (binding->dirname) + 1;
+ size_t path_max;
+ char *ret;
+
+ path_max = (unsigned int) PATH_MAX;
+ path_max += 2; /* The getcwd docs say to do this. */
+
+ for (;;)
+ {
+ dirname = (char *) alloca (path_max + dirname_len);
+ ADD_BLOCK (block_list, dirname);
+
+ __set_errno (0);
+ ret = getcwd (dirname, path_max);
+ if (ret != NULL || errno != ERANGE)
+ break;
+
+ path_max += path_max / 2;
+ path_max += PATH_INCR;
+ }
+
+ if (ret == NULL)
+ /* We cannot get the current working directory. Don't signal an
+ error but simply return the default string. */
+ goto return_untranslated;
+
+ stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname);
+ }
+
+ /* Now determine the symbolic name of CATEGORY and its value. */
+ categoryname = category_to_name (category);
+ categoryvalue = guess_category_value (category, categoryname);
+
+ domainname_len = strlen (domainname);
+ xdomainname = (char *) alloca (strlen (categoryname)
+ + domainname_len + 5);
+ ADD_BLOCK (block_list, xdomainname);
+
+ stpcpy (mempcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"),
+ domainname, domainname_len),
+ ".mo");
+
+ /* Creating working area. */
+ single_locale = (char *) alloca (strlen (categoryvalue) + 1);
+ ADD_BLOCK (block_list, single_locale);
+
+
+ /* Search for the given string. This is a loop because we perhaps
+ got an ordered list of languages to consider for the translation. */
+ while (1)
+ {
+ /* Make CATEGORYVALUE point to the next element of the list. */
+ while (categoryvalue[0] != '\0' && categoryvalue[0] == ':')
+ ++categoryvalue;
+ if (categoryvalue[0] == '\0')
+ {
+ /* The whole contents of CATEGORYVALUE has been searched but
+ no valid entry has been found. We solve this situation
+ by implicitly appending a "C" entry, i.e. no translation
+ will take place. */
+ single_locale[0] = 'C';
+ single_locale[1] = '\0';
+ }
+ else
+ {
+ char *cp = single_locale;
+ while (categoryvalue[0] != '\0' && categoryvalue[0] != ':')
+ *cp++ = *categoryvalue++;
+ *cp = '\0';
+
+ /* When this is a SUID binary we must not allow accessing files
+ outside the dedicated directories. */
+ if (ENABLE_SECURE && IS_PATH_WITH_DIR (single_locale))
+ /* Ingore this entry. */
+ continue;
+ }
+
+ /* If the current locale value is C (or POSIX) we don't load a
+ domain. Return the MSGID. */
+ if (strcmp (single_locale, "C") == 0
+ || strcmp (single_locale, "POSIX") == 0)
+ break;
+
+ /* Find structure describing the message catalog matching the
+ DOMAINNAME and CATEGORY. */
+ domain = _nl_find_domain (dirname, single_locale, xdomainname, binding);
+
+ if (domain != NULL)
+ {
+ retval = _nl_find_msg (domain, binding, msgid1, &retlen);
+
+ if (retval == NULL)
+ {
+ int cnt;
+
+ for (cnt = 0; domain->successor[cnt] != NULL; ++cnt)
+ {
+ retval = _nl_find_msg (domain->successor[cnt], binding,
+ msgid1, &retlen);
+
+ if (retval != NULL)
+ {
+ domain = domain->successor[cnt];
+ break;
+ }
+ }
+ }
+
+ if (retval != NULL)
+ {
+ /* Found the translation of MSGID1 in domain DOMAIN:
+ starting at RETVAL, RETLEN bytes. */
+ FREE_BLOCKS (block_list);
+#if defined HAVE_TSEARCH || defined _LIBC
+ if (foundp == NULL)
+ {
+ /* Create a new entry and add it to the search tree. */
+ struct known_translation_t *newp;
+
+ newp = (struct known_translation_t *)
+ malloc (offsetof (struct known_translation_t, msgid)
+ + msgid_len + domainname_len + 1);
+ if (newp != NULL)
+ {
+ newp->domainname =
+ mempcpy (newp->msgid, msgid1, msgid_len);
+ memcpy (newp->domainname, domainname, domainname_len + 1);
+ newp->category = category;
+ newp->counter = _nl_msg_cat_cntr;
+ newp->domain = domain;
+ newp->translation = retval;
+ newp->translation_length = retlen;
+
+ /* Insert the entry in the search tree. */
+ foundp = (struct known_translation_t **)
+ tsearch (newp, &root, transcmp);
+ if (foundp == NULL
+ || __builtin_expect (*foundp != newp, 0))
+ /* The insert failed. */
+ free (newp);
+ }
+ }
+ else
+ {
+ /* We can update the existing entry. */
+ (*foundp)->counter = _nl_msg_cat_cntr;
+ (*foundp)->domain = domain;
+ (*foundp)->translation = retval;
+ (*foundp)->translation_length = retlen;
+ }
+#endif
+ __set_errno (saved_errno);
+
+ /* Now deal with plural. */
+ if (plural)
+ retval = plural_lookup (domain, n, retval, retlen);
+
+ __libc_rwlock_unlock (_nl_state_lock);
+ return retval;
+ }
+ }
+ }
+
+ return_untranslated:
+ /* Return the untranslated MSGID. */
+ FREE_BLOCKS (block_list);
+ __libc_rwlock_unlock (_nl_state_lock);
+#ifndef _LIBC
+ if (!ENABLE_SECURE)
+ {
+ extern void _nl_log_untranslated PARAMS ((const char *logfilename,
+ const char *domainname,
+ const char *msgid1,
+ const char *msgid2,
+ int plural));
+ const char *logfilename = getenv ("GETTEXT_LOG_UNTRANSLATED");
+
+ if (logfilename != NULL && logfilename[0] != '\0')
+ _nl_log_untranslated (logfilename, domainname, msgid1, msgid2, plural);
+ }
+#endif
+ __set_errno (saved_errno);
+ return (plural == 0
+ ? (char *) msgid1
+ /* Use the Germanic plural rule. */
+ : n == 1 ? (char *) msgid1 : (char *) msgid2);
+}
+
+
+char *
+internal_function
+_nl_find_msg (domain_file, domainbinding, msgid, lengthp)
+ struct loaded_l10nfile *domain_file;
+ struct binding *domainbinding;
+ const char *msgid;
+ size_t *lengthp;
+{
+ struct loaded_domain *domain;
+ nls_uint32 nstrings;
+ size_t act;
+ char *result;
+ size_t resultlen;
+
+ if (domain_file->decided == 0)
+ _nl_load_domain (domain_file, domainbinding);
+
+ if (domain_file->data == NULL)
+ return NULL;
+
+ domain = (struct loaded_domain *) domain_file->data;
+
+ nstrings = domain->nstrings;
+
+ /* Locate the MSGID and its translation. */
+ if (domain->hash_tab != NULL)
+ {
+ /* Use the hashing table. */
+ nls_uint32 len = strlen (msgid);
+ nls_uint32 hash_val = hash_string (msgid);
+ nls_uint32 idx = hash_val % domain->hash_size;
+ nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
+
+ while (1)
+ {
+ nls_uint32 nstr =
+ W (domain->must_swap_hash_tab, domain->hash_tab[idx]);
+
+ if (nstr == 0)
+ /* Hash table entry is empty. */
+ return NULL;
+
+ nstr--;
+
+ /* Compare msgid with the original string at index nstr.
+ We compare the lengths with >=, not ==, because plural entries
+ are represented by strings with an embedded NUL. */
+ if (nstr < nstrings
+ ? W (domain->must_swap, domain->orig_tab[nstr].length) >= len
+ && (strcmp (msgid,
+ domain->data + W (domain->must_swap,
+ domain->orig_tab[nstr].offset))
+ == 0)
+ : domain->orig_sysdep_tab[nstr - nstrings].length > len
+ && (strcmp (msgid,
+ domain->orig_sysdep_tab[nstr - nstrings].pointer)
+ == 0))
+ {
+ act = nstr;
+ goto found;
+ }
+
+ if (idx >= domain->hash_size - incr)
+ idx -= domain->hash_size - incr;
+ else
+ idx += incr;
+ }
+ /* NOTREACHED */
+ }
+ else
+ {
+ /* Try the default method: binary search in the sorted array of
+ messages. */
+ size_t top, bottom;
+
+ bottom = 0;
+ top = nstrings;
+ while (bottom < top)
+ {
+ int cmp_val;
+
+ act = (bottom + top) / 2;
+ cmp_val = strcmp (msgid, (domain->data
+ + W (domain->must_swap,
+ domain->orig_tab[act].offset)));
+ if (cmp_val < 0)
+ top = act;
+ else if (cmp_val > 0)
+ bottom = act + 1;
+ else
+ goto found;
+ }
+ /* No translation was found. */
+ return NULL;
+ }
+
+ found:
+ /* The translation was found at index ACT. If we have to convert the
+ string to use a different character set, this is the time. */
+ if (act < nstrings)
+ {
+ result = (char *)
+ (domain->data + W (domain->must_swap, domain->trans_tab[act].offset));
+ resultlen = W (domain->must_swap, domain->trans_tab[act].length) + 1;
+ }
+ else
+ {
+ result = (char *) domain->trans_sysdep_tab[act - nstrings].pointer;
+ resultlen = domain->trans_sysdep_tab[act - nstrings].length;
+ }
+
+#if defined _LIBC || HAVE_ICONV
+ if (domain->codeset_cntr
+ != (domainbinding != NULL ? domainbinding->codeset_cntr : 0))
+ {
+ /* The domain's codeset has changed through bind_textdomain_codeset()
+ since the message catalog was initialized or last accessed. We
+ have to reinitialize the converter. */
+ _nl_free_domain_conv (domain);
+ _nl_init_domain_conv (domain_file, domain, domainbinding);
+ }
+
+ if (
+# ifdef _LIBC
+ domain->conv != (__gconv_t) -1
+# else
+# if HAVE_ICONV
+ domain->conv != (iconv_t) -1
+# endif
+# endif
+ )
+ {
+ /* We are supposed to do a conversion. First allocate an
+ appropriate table with the same structure as the table
+ of translations in the file, where we can put the pointers
+ to the converted strings in.
+ There is a slight complication with plural entries. They
+ are represented by consecutive NUL terminated strings. We
+ handle this case by converting RESULTLEN bytes, including
+ NULs. */
+
+ if (domain->conv_tab == NULL
+ && ((domain->conv_tab =
+ (char **) calloc (nstrings + domain->n_sysdep_strings,
+ sizeof (char *)))
+ == NULL))
+ /* Mark that we didn't succeed allocating a table. */
+ domain->conv_tab = (char **) -1;
+
+ if (__builtin_expect (domain->conv_tab == (char **) -1, 0))
+ /* Nothing we can do, no more memory. */
+ goto converted;
+
+ if (domain->conv_tab[act] == NULL)
+ {
+ /* We haven't used this string so far, so it is not
+ translated yet. Do this now. */
+ /* We use a bit more efficient memory handling.
+ We allocate always larger blocks which get used over
+ time. This is faster than many small allocations. */
+ __libc_lock_define_initialized (static, lock)
+# define INITIAL_BLOCK_SIZE 4080
+ static unsigned char *freemem;
+ static size_t freemem_size;
+
+ const unsigned char *inbuf;
+ unsigned char *outbuf;
+ int malloc_count;
+# ifndef _LIBC
+ transmem_block_t *transmem_list = NULL;
+# endif
+
+ __libc_lock_lock (lock);
+
+ inbuf = (const unsigned char *) result;
+ outbuf = freemem + sizeof (size_t);
+
+ malloc_count = 0;
+ while (1)
+ {
+ transmem_block_t *newmem;
+# ifdef _LIBC
+ size_t non_reversible;
+ int res;
+
+ if (freemem_size < sizeof (size_t))
+ goto resize_freemem;
+
+ res = __gconv (domain->conv,
+ &inbuf, inbuf + resultlen,
+ &outbuf,
+ outbuf + freemem_size - sizeof (size_t),
+ &non_reversible);
+
+ if (res == __GCONV_OK || res == __GCONV_EMPTY_INPUT)
+ break;
+
+ if (res != __GCONV_FULL_OUTPUT)
+ {
+ __libc_lock_unlock (lock);
+ goto converted;
+ }
+
+ inbuf = result;
+# else
+# if HAVE_ICONV
+ const char *inptr = (const char *) inbuf;
+ size_t inleft = resultlen;
+ char *outptr = (char *) outbuf;
+ size_t outleft;
+
+ if (freemem_size < sizeof (size_t))
+ goto resize_freemem;
+
+ outleft = freemem_size - sizeof (size_t);
+ if (iconv (domain->conv,
+ (ICONV_CONST char **) &inptr, &inleft,
+ &outptr, &outleft)
+ != (size_t) (-1))
+ {
+ outbuf = (unsigned char *) outptr;
+ break;
+ }
+ if (errno != E2BIG)
+ {
+ __libc_lock_unlock (lock);
+ goto converted;
+ }
+# endif
+# endif
+
+ resize_freemem:
+ /* We must allocate a new buffer or resize the old one. */
+ if (malloc_count > 0)
+ {
+ ++malloc_count;
+ freemem_size = malloc_count * INITIAL_BLOCK_SIZE;
+ newmem = (transmem_block_t *) realloc (transmem_list,
+ freemem_size);
+# ifdef _LIBC
+ if (newmem != NULL)
+ transmem_list = transmem_list->next;
+ else
+ {
+ struct transmem_list *old = transmem_list;
+
+ transmem_list = transmem_list->next;
+ free (old);
+ }
+# endif
+ }
+ else
+ {
+ malloc_count = 1;
+ freemem_size = INITIAL_BLOCK_SIZE;
+ newmem = (transmem_block_t *) malloc (freemem_size);
+ }
+ if (__builtin_expect (newmem == NULL, 0))
+ {
+ freemem = NULL;
+ freemem_size = 0;
+ __libc_lock_unlock (lock);
+ goto converted;
+ }
+
+# ifdef _LIBC
+ /* Add the block to the list of blocks we have to free
+ at some point. */
+ newmem->next = transmem_list;
+ transmem_list = newmem;
+
+ freemem = newmem->data;
+ freemem_size -= offsetof (struct transmem_list, data);
+# else
+ transmem_list = newmem;
+ freemem = newmem;
+# endif
+
+ outbuf = freemem + sizeof (size_t);
+ }
+
+ /* We have now in our buffer a converted string. Put this
+ into the table of conversions. */
+ *(size_t *) freemem = outbuf - freemem - sizeof (size_t);
+ domain->conv_tab[act] = (char *) freemem;
+ /* Shrink freemem, but keep it aligned. */
+ freemem_size -= outbuf - freemem;
+ freemem = outbuf;
+ freemem += freemem_size & (alignof (size_t) - 1);
+ freemem_size = freemem_size & ~ (alignof (size_t) - 1);
+
+ __libc_lock_unlock (lock);
+ }
+
+ /* Now domain->conv_tab[act] contains the translation of all
+ the plural variants. */
+ result = domain->conv_tab[act] + sizeof (size_t);
+ resultlen = *(size_t *) domain->conv_tab[act];
+ }
+
+ converted:
+ /* The result string is converted. */
+
+#endif /* _LIBC || HAVE_ICONV */
+
+ *lengthp = resultlen;
+ return result;
+}
+
+
+/* Look up a plural variant. */
+static char *
+internal_function
+plural_lookup (domain, n, translation, translation_len)
+ struct loaded_l10nfile *domain;
+ unsigned long int n;
+ const char *translation;
+ size_t translation_len;
+{
+ struct loaded_domain *domaindata = (struct loaded_domain *) domain->data;
+ unsigned long int index;
+ const char *p;
+
+ index = plural_eval (domaindata->plural, n);
+ if (index >= domaindata->nplurals)
+ /* This should never happen. It means the plural expression and the
+ given maximum value do not match. */
+ index = 0;
+
+ /* Skip INDEX strings at TRANSLATION. */
+ p = translation;
+ while (index-- > 0)
+ {
+#ifdef _LIBC
+ p = __rawmemchr (p, '\0');
+#else
+ p = strchr (p, '\0');
+#endif
+ /* And skip over the NUL byte. */
+ p++;
+
+ if (p >= translation + translation_len)
+ /* This should never happen. It means the plural expression
+ evaluated to a value larger than the number of variants
+ available for MSGID1. */
+ return (char *) translation;
+ }
+ return (char *) p;
+}
+
+#ifndef _LIBC
+/* Return string representation of locale CATEGORY. */
+static const char *
+internal_function
+category_to_name (category)
+ int category;
+{
+ const char *retval;
+
+ switch (category)
+ {
+#ifdef LC_COLLATE
+ case LC_COLLATE:
+ retval = "LC_COLLATE";
+ break;
+#endif
+#ifdef LC_CTYPE
+ case LC_CTYPE:
+ retval = "LC_CTYPE";
+ break;
+#endif
+#ifdef LC_MONETARY
+ case LC_MONETARY:
+ retval = "LC_MONETARY";
+ break;
+#endif
+#ifdef LC_NUMERIC
+ case LC_NUMERIC:
+ retval = "LC_NUMERIC";
+ break;
+#endif
+#ifdef LC_TIME
+ case LC_TIME:
+ retval = "LC_TIME";
+ break;
+#endif
+#ifdef LC_MESSAGES
+ case LC_MESSAGES:
+ retval = "LC_MESSAGES";
+ break;
+#endif
+#ifdef LC_RESPONSE
+ case LC_RESPONSE:
+ retval = "LC_RESPONSE";
+ break;
+#endif
+#ifdef LC_ALL
+ case LC_ALL:
+ /* This might not make sense but is perhaps better than any other
+ value. */
+ retval = "LC_ALL";
+ break;
+#endif
+ default:
+ /* If you have a better idea for a default value let me know. */
+ retval = "LC_XXX";
+ }
+
+ return retval;
+}
+#endif
+
+/* Guess value of current locale from value of the environment variables. */
+static const char *
+internal_function
+guess_category_value (category, categoryname)
+ int category;
+ const char *categoryname;
+{
+ const char *language;
+ const char *retval;
+
+ /* The highest priority value is the `LANGUAGE' environment
+ variable. But we don't use the value if the currently selected
+ locale is the C locale. This is a GNU extension. */
+ language = getenv ("LANGUAGE");
+ if (language != NULL && language[0] == '\0')
+ language = NULL;
+
+ /* We have to proceed with the POSIX methods of looking to `LC_ALL',
+ `LC_xxx', and `LANG'. On some systems this can be done by the
+ `setlocale' function itself. */
+#ifdef _LIBC
+ retval = __current_locale_name (category);
+#else
+ retval = _nl_locale_name (category, categoryname);
+#endif
+
+ /* Ignore LANGUAGE if the locale is set to "C" because
+ 1. "C" locale usually uses the ASCII encoding, and most international
+ messages use non-ASCII characters. These characters get displayed
+ as question marks (if using glibc's iconv()) or as invalid 8-bit
+ characters (because other iconv()s refuse to convert most non-ASCII
+ characters to ASCII). In any case, the output is ugly.
+ 2. The precise output of some programs in the "C" locale is specified
+ by POSIX and should not depend on environment variables like
+ "LANGUAGE". We allow such programs to use gettext(). */
+ return language != NULL && strcmp (retval, "C") != 0 ? language : retval;
+}
+
+/* @@ begin of epilog @@ */
+
+/* We don't want libintl.a to depend on any other library. So we
+ avoid the non-standard function stpcpy. In GNU C Library this
+ function is available, though. Also allow the symbol HAVE_STPCPY
+ to be defined. */
+#if !_LIBC && !HAVE_STPCPY
+static char *
+stpcpy (dest, src)
+ char *dest;
+ const char *src;
+{
+ while ((*dest++ = *src++) != '\0')
+ /* Do nothing. */ ;
+ return dest - 1;
+}
+#endif
+
+#if !_LIBC && !HAVE_MEMPCPY
+static void *
+mempcpy (dest, src, n)
+ void *dest;
+ const void *src;
+ size_t n;
+{
+ return (void *) ((char *) memcpy (dest, src, n) + n);
+}
+#endif
+
+
+#ifdef _LIBC
+/* If we want to free all resources we have to do some work at
+ program's end. */
+libc_freeres_fn (free_mem)
+{
+ void *old;
+
+ while (_nl_domain_bindings != NULL)
+ {
+ struct binding *oldp = _nl_domain_bindings;
+ _nl_domain_bindings = _nl_domain_bindings->next;
+ if (oldp->dirname != INTUSE(_nl_default_dirname))
+ /* Yes, this is a pointer comparison. */
+ free (oldp->dirname);
+ free (oldp->codeset);
+ free (oldp);
+ }
+
+ if (_nl_current_default_domain != _nl_default_default_domain)
+ /* Yes, again a pointer comparison. */
+ free ((char *) _nl_current_default_domain);
+
+ /* Remove the search tree with the known translations. */
+ __tdestroy (root, free);
+ root = NULL;
+
+ while (transmem_list != NULL)
+ {
+ old = transmem_list;
+ transmem_list = transmem_list->next;
+ free (old);
+ }
+}
+#endif
Index: or1k-gcc/intl/dngettext.c
===================================================================
--- or1k-gcc/intl/dngettext.c (nonexistent)
+++ or1k-gcc/intl/dngettext.c (revision 728)
@@ -0,0 +1,62 @@
+/* Implementation of the dngettext(3) function.
+ Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU 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. */
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+#include "gettextP.h"
+
+#include
+
+#ifdef _LIBC
+# include
+#else
+# include "libgnuintl.h"
+#endif
+
+/* @@ end of prolog @@ */
+
+/* Names for the libintl functions are a problem. They must not clash
+ with existing names and they should follow ANSI C. But this source
+ code is also used in GNU C Library where the names have a __
+ prefix. So we have to make a difference here. */
+#ifdef _LIBC
+# define DNGETTEXT __dngettext
+# define DCNGETTEXT __dcngettext
+#else
+# define DNGETTEXT libintl_dngettext
+# define DCNGETTEXT libintl_dcngettext
+#endif
+
+/* Look up MSGID in the DOMAINNAME message catalog of the current
+ LC_MESSAGES locale and skip message according to the plural form. */
+char *
+DNGETTEXT (domainname, msgid1, msgid2, n)
+ const char *domainname;
+ const char *msgid1;
+ const char *msgid2;
+ unsigned long int n;
+{
+ return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES);
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library. */
+weak_alias (__dngettext, dngettext);
+#endif
Index: or1k-gcc/intl/localealias.c
===================================================================
--- or1k-gcc/intl/localealias.c (nonexistent)
+++ or1k-gcc/intl/localealias.c (revision 728)
@@ -0,0 +1,419 @@
+/* Handle aliases for locale names.
+ Copyright (C) 1995-1999, 2000-2001, 2003 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. */
+
+/* Tell glibc's to provide a prototype for mempcpy().
+ This must come before because may include
+ , and once has been included, it's too late. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+#include
+#include
+#if defined _LIBC || defined HAVE___FSETLOCKING
+# include
+#endif
+#include
+
+#ifdef __GNUC__
+# undef alloca
+# define alloca __builtin_alloca
+# define HAVE_ALLOCA 1
+#else
+# ifdef _MSC_VER
+# include
+# define alloca _alloca
+# else
+# if defined HAVE_ALLOCA_H || defined _LIBC
+# include
+# else
+# ifdef _AIX
+ #pragma alloca
+# else
+# ifndef alloca
+char *alloca ();
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#include
+#include
+
+#include "gettextP.h"
+
+#if ENABLE_RELOCATABLE
+# include "relocatable.h"
+#else
+# define relocate(pathname) (pathname)
+#endif
+
+/* @@ end of prolog @@ */
+
+#ifdef _LIBC
+/* Rename the non ANSI C functions. This is required by the standard
+ because some ANSI C functions will require linking with this object
+ file and the name space must not be polluted. */
+# define strcasecmp __strcasecmp
+
+# ifndef mempcpy
+# define mempcpy __mempcpy
+# endif
+# define HAVE_MEMPCPY 1
+# define HAVE___FSETLOCKING 1
+
+/* We need locking here since we can be called from different places. */
+# include
+
+__libc_lock_define_initialized (static, lock);
+#endif
+
+#ifndef internal_function
+# define internal_function
+#endif
+
+/* Some optimizations for glibc. */
+#ifdef _LIBC
+# define FEOF(fp) feof_unlocked (fp)
+# define FGETS(buf, n, fp) fgets_unlocked (buf, n, fp)
+#else
+# define FEOF(fp) feof (fp)
+# define FGETS(buf, n, fp) fgets (buf, n, fp)
+#endif
+
+/* For those losing systems which don't have `alloca' we have to add
+ some additional code emulating it. */
+#ifdef HAVE_ALLOCA
+# define freea(p) /* nothing */
+#else
+# define alloca(n) malloc (n)
+# define freea(p) free (p)
+#endif
+
+#if defined _LIBC_REENTRANT || defined HAVE_FGETS_UNLOCKED
+# undef fgets
+# define fgets(buf, len, s) fgets_unlocked (buf, len, s)
+#endif
+#if defined _LIBC_REENTRANT || defined HAVE_FEOF_UNLOCKED
+# undef feof
+# define feof(s) feof_unlocked (s)
+#endif
+
+
+struct alias_map
+{
+ const char *alias;
+ const char *value;
+};
+
+
+#ifndef _LIBC
+# define libc_freeres_ptr(decl) decl
+#endif
+
+libc_freeres_ptr (static char *string_space);
+static size_t string_space_act;
+static size_t string_space_max;
+libc_freeres_ptr (static struct alias_map *map);
+static size_t nmap;
+static size_t maxmap;
+
+
+/* Prototypes for local functions. */
+static size_t read_alias_file PARAMS ((const char *fname, int fname_len))
+ internal_function;
+static int extend_alias_table PARAMS ((void));
+static int alias_compare PARAMS ((const struct alias_map *map1,
+ const struct alias_map *map2));
+
+
+const char *
+_nl_expand_alias (name)
+ const char *name;
+{
+ static const char *locale_alias_path;
+ struct alias_map *retval;
+ const char *result = NULL;
+ size_t added;
+
+#ifdef _LIBC
+ __libc_lock_lock (lock);
+#endif
+
+ if (locale_alias_path == NULL)
+ locale_alias_path = LOCALE_ALIAS_PATH;
+
+ do
+ {
+ struct alias_map item;
+
+ item.alias = name;
+
+ if (nmap > 0)
+ retval = (struct alias_map *) bsearch (&item, map, nmap,
+ sizeof (struct alias_map),
+ (int (*) PARAMS ((const void *,
+ const void *))
+ ) alias_compare);
+ else
+ retval = NULL;
+
+ /* We really found an alias. Return the value. */
+ if (retval != NULL)
+ {
+ result = retval->value;
+ break;
+ }
+
+ /* Perhaps we can find another alias file. */
+ added = 0;
+ while (added == 0 && locale_alias_path[0] != '\0')
+ {
+ const char *start;
+
+ while (locale_alias_path[0] == PATH_SEPARATOR)
+ ++locale_alias_path;
+ start = locale_alias_path;
+
+ while (locale_alias_path[0] != '\0'
+ && locale_alias_path[0] != PATH_SEPARATOR)
+ ++locale_alias_path;
+
+ if (start < locale_alias_path)
+ added = read_alias_file (start, locale_alias_path - start);
+ }
+ }
+ while (added != 0);
+
+#ifdef _LIBC
+ __libc_lock_unlock (lock);
+#endif
+
+ return result;
+}
+
+
+static size_t
+internal_function
+read_alias_file (fname, fname_len)
+ const char *fname;
+ int fname_len;
+{
+ FILE *fp;
+ char *full_fname;
+ size_t added;
+ static const char aliasfile[] = "/locale.alias";
+
+ full_fname = (char *) alloca (fname_len + sizeof aliasfile);
+#ifdef HAVE_MEMPCPY
+ mempcpy (mempcpy (full_fname, fname, fname_len),
+ aliasfile, sizeof aliasfile);
+#else
+ memcpy (full_fname, fname, fname_len);
+ memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile);
+#endif
+
+ fp = fopen (relocate (full_fname), "r");
+ freea (full_fname);
+ if (fp == NULL)
+ return 0;
+
+#ifdef HAVE___FSETLOCKING
+ /* No threads present. */
+ __fsetlocking (fp, FSETLOCKING_BYCALLER);
+#endif
+
+ added = 0;
+ while (!FEOF (fp))
+ {
+ /* It is a reasonable approach to use a fix buffer here because
+ a) we are only interested in the first two fields
+ b) these fields must be usable as file names and so must not
+ be that long
+ We avoid a multi-kilobyte buffer here since this would use up
+ stack space which we might not have if the program ran out of
+ memory. */
+ char buf[400];
+ char *alias;
+ char *value;
+ char *cp;
+
+ if (FGETS (buf, sizeof buf, fp) == NULL)
+ /* EOF reached. */
+ break;
+
+ cp = buf;
+ /* Ignore leading white space. */
+ while (isspace ((unsigned char) cp[0]))
+ ++cp;
+
+ /* A leading '#' signals a comment line. */
+ if (cp[0] != '\0' && cp[0] != '#')
+ {
+ alias = cp++;
+ while (cp[0] != '\0' && !isspace ((unsigned char) cp[0]))
+ ++cp;
+ /* Terminate alias name. */
+ if (cp[0] != '\0')
+ *cp++ = '\0';
+
+ /* Now look for the beginning of the value. */
+ while (isspace ((unsigned char) cp[0]))
+ ++cp;
+
+ if (cp[0] != '\0')
+ {
+ size_t alias_len;
+ size_t value_len;
+
+ value = cp++;
+ while (cp[0] != '\0' && !isspace ((unsigned char) cp[0]))
+ ++cp;
+ /* Terminate value. */
+ if (cp[0] == '\n')
+ {
+ /* This has to be done to make the following test
+ for the end of line possible. We are looking for
+ the terminating '\n' which do not overwrite here. */
+ *cp++ = '\0';
+ *cp = '\n';
+ }
+ else if (cp[0] != '\0')
+ *cp++ = '\0';
+
+ if (nmap >= maxmap)
+ if (__builtin_expect (extend_alias_table (), 0))
+ return added;
+
+ alias_len = strlen (alias) + 1;
+ value_len = strlen (value) + 1;
+
+ if (string_space_act + alias_len + value_len > string_space_max)
+ {
+ /* Increase size of memory pool. */
+ size_t new_size = (string_space_max
+ + (alias_len + value_len > 1024
+ ? alias_len + value_len : 1024));
+ char *new_pool = (char *) realloc (string_space, new_size);
+ if (new_pool == NULL)
+ return added;
+
+ if (__builtin_expect (string_space != new_pool, 0))
+ {
+ size_t i;
+
+ for (i = 0; i < nmap; i++)
+ {
+ map[i].alias += new_pool - string_space;
+ map[i].value += new_pool - string_space;
+ }
+ }
+
+ string_space = new_pool;
+ string_space_max = new_size;
+ }
+
+ map[nmap].alias = memcpy (&string_space[string_space_act],
+ alias, alias_len);
+ string_space_act += alias_len;
+
+ map[nmap].value = memcpy (&string_space[string_space_act],
+ value, value_len);
+ string_space_act += value_len;
+
+ ++nmap;
+ ++added;
+ }
+ }
+
+ /* Possibly not the whole line fits into the buffer. Ignore
+ the rest of the line. */
+ while (strchr (buf, '\n') == NULL)
+ if (FGETS (buf, sizeof buf, fp) == NULL)
+ /* Make sure the inner loop will be left. The outer loop
+ will exit at the `feof' test. */
+ break;
+ }
+
+ /* Should we test for ferror()? I think we have to silently ignore
+ errors. --drepper */
+ fclose (fp);
+
+ if (added > 0)
+ qsort (map, nmap, sizeof (struct alias_map),
+ (int (*) PARAMS ((const void *, const void *))) alias_compare);
+
+ return added;
+}
+
+
+static int
+extend_alias_table ()
+{
+ size_t new_size;
+ struct alias_map *new_map;
+
+ new_size = maxmap == 0 ? 100 : 2 * maxmap;
+ new_map = (struct alias_map *) realloc (map, (new_size
+ * sizeof (struct alias_map)));
+ if (new_map == NULL)
+ /* Simply don't extend: we don't have any more core. */
+ return -1;
+
+ map = new_map;
+ maxmap = new_size;
+ return 0;
+}
+
+
+static int
+alias_compare (map1, map2)
+ const struct alias_map *map1;
+ const struct alias_map *map2;
+{
+#if defined _LIBC || defined HAVE_STRCASECMP
+ return strcasecmp (map1->alias, map2->alias);
+#else
+ const unsigned char *p1 = (const unsigned char *) map1->alias;
+ const unsigned char *p2 = (const unsigned char *) map2->alias;
+ unsigned char c1, c2;
+
+ if (p1 == p2)
+ return 0;
+
+ do
+ {
+ /* I know this seems to be odd but the tolower() function in
+ some systems libc cannot handle nonalpha characters. */
+ c1 = isupper (*p1) ? tolower (*p1) : *p1;
+ c2 = isupper (*p2) ? tolower (*p2) : *p2;
+ if (c1 == '\0')
+ break;
+ ++p1;
+ ++p2;
+ }
+ while (c1 == c2);
+
+ return c1 - c2;
+#endif
+}
Index: or1k-gcc/intl/localcharset.h
===================================================================
--- or1k-gcc/intl/localcharset.h (nonexistent)
+++ or1k-gcc/intl/localcharset.h (revision 728)
@@ -0,0 +1,42 @@
+/* Determine a canonical name for the current locale's character encoding.
+ Copyright (C) 2000-2003 Free Software Foundation, Inc.
+ This file is part of the GNU CHARSET Library.
+
+ 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 _LOCALCHARSET_H
+#define _LOCALCHARSET_H
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Determine the current locale's character encoding, and canonicalize it
+ into one of the canonical names listed in config.charset.
+ The result must not be freed; it is statically allocated.
+ If the canonical name cannot be determined, the result is a non-canonical
+ name. */
+extern const char * locale_charset (void);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _LOCALCHARSET_H */
Index: or1k-gcc/intl/textdomain.c
===================================================================
--- or1k-gcc/intl/textdomain.c (nonexistent)
+++ or1k-gcc/intl/textdomain.c (revision 728)
@@ -0,0 +1,142 @@
+/* Implementation of the textdomain(3) function.
+ Copyright (C) 1995-1998, 2000, 2001, 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. */
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+#include
+#include
+
+#ifdef _LIBC
+# include
+#else
+# include "libgnuintl.h"
+#endif
+#include "gettextP.h"
+
+#ifdef _LIBC
+/* We have to handle multi-threaded applications. */
+# include
+#else
+/* Provide dummy implementation if this is outside glibc. */
+# define __libc_rwlock_define(CLASS, NAME)
+# define __libc_rwlock_wrlock(NAME)
+# define __libc_rwlock_unlock(NAME)
+#endif
+
+/* The internal variables in the standalone libintl.a must have different
+ names than the internal variables in GNU libc, otherwise programs
+ using libintl.a cannot be linked statically. */
+#if !defined _LIBC
+# define _nl_default_default_domain libintl_nl_default_default_domain
+# define _nl_current_default_domain libintl_nl_current_default_domain
+#endif
+
+/* @@ end of prolog @@ */
+
+/* Name of the default text domain. */
+extern const char _nl_default_default_domain[] attribute_hidden;
+
+/* Default text domain in which entries for gettext(3) are to be found. */
+extern const char *_nl_current_default_domain attribute_hidden;
+
+
+/* Names for the libintl functions are a problem. They must not clash
+ with existing names and they should follow ANSI C. But this source
+ code is also used in GNU C Library where the names have a __
+ prefix. So we have to make a difference here. */
+#ifdef _LIBC
+# define TEXTDOMAIN __textdomain
+# ifndef strdup
+# define strdup(str) __strdup (str)
+# endif
+#else
+# define TEXTDOMAIN libintl_textdomain
+#endif
+
+/* Lock variable to protect the global data in the gettext implementation. */
+__libc_rwlock_define (extern, _nl_state_lock attribute_hidden)
+
+/* 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". */
+char *
+TEXTDOMAIN (domainname)
+ const char *domainname;
+{
+ char *new_domain;
+ char *old_domain;
+
+ /* A NULL pointer requests the current setting. */
+ if (domainname == NULL)
+ return (char *) _nl_current_default_domain;
+
+ __libc_rwlock_wrlock (_nl_state_lock);
+
+ old_domain = (char *) _nl_current_default_domain;
+
+ /* If domain name is the null string set to default domain "messages". */
+ if (domainname[0] == '\0'
+ || strcmp (domainname, _nl_default_default_domain) == 0)
+ {
+ _nl_current_default_domain = _nl_default_default_domain;
+ new_domain = (char *) _nl_current_default_domain;
+ }
+ else if (strcmp (domainname, old_domain) == 0)
+ /* This can happen and people will use it to signal that some
+ environment variable changed. */
+ new_domain = old_domain;
+ else
+ {
+ /* If the following malloc fails `_nl_current_default_domain'
+ will be NULL. This value will be returned and so signals we
+ are out of core. */
+#if defined _LIBC || defined HAVE_STRDUP
+ new_domain = strdup (domainname);
+#else
+ size_t len = strlen (domainname) + 1;
+ new_domain = (char *) malloc (len);
+ if (new_domain != NULL)
+ memcpy (new_domain, domainname, len);
+#endif
+
+ if (new_domain != NULL)
+ _nl_current_default_domain = new_domain;
+ }
+
+ /* We use this possibility to signal a change of the loaded catalogs
+ since this is most likely the case and there is no other easy we
+ to do it. Do it only when the call was successful. */
+ if (new_domain != NULL)
+ {
+ ++_nl_msg_cat_cntr;
+
+ if (old_domain != new_domain && old_domain != _nl_default_default_domain)
+ free (old_domain);
+ }
+
+ __libc_rwlock_unlock (_nl_state_lock);
+
+ return new_domain;
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library. */
+weak_alias (__textdomain, textdomain);
+#endif
Index: or1k-gcc/intl/relocatable.c
===================================================================
--- or1k-gcc/intl/relocatable.c (nonexistent)
+++ or1k-gcc/intl/relocatable.c (revision 728)
@@ -0,0 +1,439 @@
+/* Provide relocatable packages.
+ Copyright (C) 2003 Free Software Foundation, Inc.
+ Written by Bruno Haible , 2003.
+
+ 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. */
+
+
+/* Tell glibc's to provide a prototype for getline().
+ This must come before because may include
+ , and once has been included, it's too late. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+/* Specification. */
+#include "relocatable.h"
+
+#if ENABLE_RELOCATABLE
+
+#include
+#include
+#include
+#include
+
+#ifdef NO_XMALLOC
+# define xmalloc malloc
+#else
+# include "xmalloc.h"
+#endif
+
+#if DEPENDS_ON_LIBCHARSET
+# include
+#endif
+#if DEPENDS_ON_LIBICONV && HAVE_ICONV
+# include
+#endif
+#if DEPENDS_ON_LIBINTL && ENABLE_NLS
+# include
+#endif
+
+/* Faked cheap 'bool'. */
+#undef bool
+#undef false
+#undef true
+#define bool int
+#define false 0
+#define true 1
+
+/* Pathname support.
+ ISSLASH(C) tests whether C is a directory separator character.
+ IS_PATH_WITH_DIR(P) tests whether P contains a directory specification.
+ */
+#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
+ /* Win32, OS/2, DOS */
+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+# define HAS_DEVICE(P) \
+ ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
+ && (P)[1] == ':')
+# define IS_PATH_WITH_DIR(P) \
+ (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P))
+# define FILESYSTEM_PREFIX_LEN(P) (HAS_DEVICE (P) ? 2 : 0)
+#else
+ /* Unix */
+# define ISSLASH(C) ((C) == '/')
+# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL)
+# define FILESYSTEM_PREFIX_LEN(P) 0
+#endif
+
+/* Original installation prefix. */
+static char *orig_prefix;
+static size_t orig_prefix_len;
+/* Current installation prefix. */
+static char *curr_prefix;
+static size_t curr_prefix_len;
+/* These prefixes do not end in a slash. Anything that will be concatenated
+ to them must start with a slash. */
+
+/* Sets the original and the current installation prefix of this module.
+ 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 "/"). */
+static void
+set_this_relocation_prefix (const char *orig_prefix_arg,
+ const char *curr_prefix_arg)
+{
+ if (orig_prefix_arg != NULL && curr_prefix_arg != NULL
+ /* Optimization: if orig_prefix and curr_prefix are equal, the
+ relocation is a nop. */
+ && strcmp (orig_prefix_arg, curr_prefix_arg) != 0)
+ {
+ /* Duplicate the argument strings. */
+ char *memory;
+
+ orig_prefix_len = strlen (orig_prefix_arg);
+ curr_prefix_len = strlen (curr_prefix_arg);
+ memory = (char *) xmalloc (orig_prefix_len + 1 + curr_prefix_len + 1);
+#ifdef NO_XMALLOC
+ if (memory != NULL)
+#endif
+ {
+ memcpy (memory, orig_prefix_arg, orig_prefix_len + 1);
+ orig_prefix = memory;
+ memory += orig_prefix_len + 1;
+ memcpy (memory, curr_prefix_arg, curr_prefix_len + 1);
+ curr_prefix = memory;
+ return;
+ }
+ }
+ orig_prefix = NULL;
+ curr_prefix = NULL;
+ /* Don't worry about wasted memory here - this function is usually only
+ called once. */
+}
+
+/* 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 "/"). */
+void
+set_relocation_prefix (const char *orig_prefix_arg, const char *curr_prefix_arg)
+{
+ set_this_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
+
+ /* Now notify all dependent libraries. */
+#if DEPENDS_ON_LIBCHARSET
+ libcharset_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
+#endif
+#if DEPENDS_ON_LIBICONV && HAVE_ICONV && _LIBICONV_VERSION >= 0x0109
+ libiconv_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
+#endif
+#if DEPENDS_ON_LIBINTL && ENABLE_NLS && defined libintl_set_relocation_prefix
+ libintl_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
+#endif
+}
+
+/* Convenience function:
+ Computes the current installation prefix, based on the original
+ installation prefix, the original installation directory of a particular
+ file, and the current pathname of this file. Returns NULL upon failure. */
+#ifdef IN_LIBRARY
+#define compute_curr_prefix local_compute_curr_prefix
+static
+#endif
+const char *
+compute_curr_prefix (const char *orig_installprefix,
+ const char *orig_installdir,
+ const char *curr_pathname)
+{
+ const char *curr_installdir;
+ const char *rel_installdir;
+
+ if (curr_pathname == NULL)
+ return NULL;
+
+ /* Determine the relative installation directory, relative to the prefix.
+ This is simply the difference between orig_installprefix and
+ orig_installdir. */
+ if (strncmp (orig_installprefix, orig_installdir, strlen (orig_installprefix))
+ != 0)
+ /* Shouldn't happen - nothing should be installed outside $(prefix). */
+ return NULL;
+ rel_installdir = orig_installdir + strlen (orig_installprefix);
+
+ /* Determine the current installation directory. */
+ {
+ const char *p_base = curr_pathname + FILESYSTEM_PREFIX_LEN (curr_pathname);
+ const char *p = curr_pathname + strlen (curr_pathname);
+ char *q;
+
+ while (p > p_base)
+ {
+ p--;
+ if (ISSLASH (*p))
+ break;
+ }
+
+ q = (char *) xmalloc (p - curr_pathname + 1);
+#ifdef NO_XMALLOC
+ if (q == NULL)
+ return NULL;
+#endif
+ memcpy (q, curr_pathname, p - curr_pathname);
+ q[p - curr_pathname] = '\0';
+ curr_installdir = q;
+ }
+
+ /* Compute the current installation prefix by removing the trailing
+ rel_installdir from it. */
+ {
+ const char *rp = rel_installdir + strlen (rel_installdir);
+ const char *cp = curr_installdir + strlen (curr_installdir);
+ const char *cp_base =
+ curr_installdir + FILESYSTEM_PREFIX_LEN (curr_installdir);
+
+ while (rp > rel_installdir && cp > cp_base)
+ {
+ bool same = false;
+ const char *rpi = rp;
+ const char *cpi = cp;
+
+ while (rpi > rel_installdir && cpi > cp_base)
+ {
+ rpi--;
+ cpi--;
+ if (ISSLASH (*rpi) || ISSLASH (*cpi))
+ {
+ if (ISSLASH (*rpi) && ISSLASH (*cpi))
+ same = true;
+ break;
+ }
+#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
+ /* Win32, OS/2, DOS - case insignificant filesystem */
+ if ((*rpi >= 'a' && *rpi <= 'z' ? *rpi - 'a' + 'A' : *rpi)
+ != (*cpi >= 'a' && *cpi <= 'z' ? *cpi - 'a' + 'A' : *cpi))
+ break;
+#else
+ if (*rpi != *cpi)
+ break;
+#endif
+ }
+ if (!same)
+ break;
+ /* The last pathname component was the same. opi and cpi now point
+ to the slash before it. */
+ rp = rpi;
+ cp = cpi;
+ }
+
+ if (rp > rel_installdir)
+ /* Unexpected: The curr_installdir does not end with rel_installdir. */
+ return NULL;
+
+ {
+ size_t curr_prefix_len = cp - curr_installdir;
+ char *curr_prefix;
+
+ curr_prefix = (char *) xmalloc (curr_prefix_len + 1);
+#ifdef NO_XMALLOC
+ if (curr_prefix == NULL)
+ return NULL;
+#endif
+ memcpy (curr_prefix, curr_installdir, curr_prefix_len);
+ curr_prefix[curr_prefix_len] = '\0';
+
+ return curr_prefix;
+ }
+ }
+}
+
+#if defined PIC && defined INSTALLDIR
+
+/* Full pathname of shared library, or NULL. */
+static char *shared_library_fullname;
+
+#if defined _WIN32 || defined __WIN32__
+
+/* Determine the full pathname of the shared library when it is loaded. */
+
+BOOL WINAPI
+DllMain (HINSTANCE module_handle, DWORD event, LPVOID reserved)
+{
+ (void) reserved;
+
+ if (event == DLL_PROCESS_ATTACH)
+ {
+ /* The DLL is being loaded into an application's address range. */
+ static char location[MAX_PATH];
+
+ if (!GetModuleFileName (module_handle, location, sizeof (location)))
+ /* Shouldn't happen. */
+ return FALSE;
+
+ if (!IS_PATH_WITH_DIR (location))
+ /* Shouldn't happen. */
+ return FALSE;
+
+ shared_library_fullname = strdup (location);
+ }
+
+ return TRUE;
+}
+
+#else /* Unix */
+
+static void
+find_shared_library_fullname ()
+{
+#ifdef __linux__
+ FILE *fp;
+
+ /* Open the current process' maps file. It describes one VMA per line. */
+ fp = fopen ("/proc/self/maps", "r");
+ if (fp)
+ {
+ unsigned long address = (unsigned long) &find_shared_library_fullname;
+ for (;;)
+ {
+ unsigned long start, end;
+ int c;
+
+ if (fscanf (fp, "%lx-%lx", &start, &end) != 2)
+ break;
+ if (address >= start && address <= end - 1)
+ {
+ /* Found it. Now see if this line contains a filename. */
+ while (c = getc (fp), c != EOF && c != '\n' && c != '/')
+ continue;
+ if (c == '/')
+ {
+ size_t size;
+ int len;
+
+ ungetc (c, fp);
+ shared_library_fullname = NULL; size = 0;
+ len = getline (&shared_library_fullname, &size, fp);
+ if (len >= 0)
+ {
+ /* Success: filled shared_library_fullname. */
+ if (len > 0 && shared_library_fullname[len - 1] == '\n')
+ shared_library_fullname[len - 1] = '\0';
+ }
+ }
+ break;
+ }
+ while (c = getc (fp), c != EOF && c != '\n')
+ continue;
+ }
+ fclose (fp);
+ }
+#endif
+}
+
+#endif /* WIN32 / Unix */
+
+/* Return the full pathname of the current shared library.
+ Return NULL if unknown.
+ Guaranteed to work only on Linux and Woe32. */
+static char *
+get_shared_library_fullname ()
+{
+#if !(defined _WIN32 || defined __WIN32__)
+ static bool tried_find_shared_library_fullname;
+ if (!tried_find_shared_library_fullname)
+ {
+ find_shared_library_fullname ();
+ tried_find_shared_library_fullname = true;
+ }
+#endif
+ return shared_library_fullname;
+}
+
+#endif /* PIC */
+
+/* Returns the pathname, relocated according to the current installation
+ directory. */
+const char *
+relocate (const char *pathname)
+{
+#if defined PIC && defined INSTALLDIR
+ static int initialized;
+
+ /* Initialization code for a shared library. */
+ if (!initialized)
+ {
+ /* At this point, orig_prefix and curr_prefix likely have already been
+ set through the main program's set_program_name_and_installdir
+ function. This is sufficient in the case that the library has
+ initially been installed in the same orig_prefix. But we can do
+ better, to also cover the cases that 1. it has been installed
+ in a different prefix before being moved to orig_prefix and (later)
+ to curr_prefix, 2. unlike the program, it has not moved away from
+ orig_prefix. */
+ const char *orig_installprefix = INSTALLPREFIX;
+ const char *orig_installdir = INSTALLDIR;
+ const char *curr_prefix_better;
+
+ curr_prefix_better =
+ compute_curr_prefix (orig_installprefix, orig_installdir,
+ get_shared_library_fullname ());
+ if (curr_prefix_better == NULL)
+ curr_prefix_better = curr_prefix;
+
+ set_relocation_prefix (orig_installprefix, curr_prefix_better);
+
+ initialized = 1;
+ }
+#endif
+
+ /* Note: It is not necessary to perform case insensitive comparison here,
+ even for DOS-like filesystems, because the pathname argument was
+ typically created from the same Makefile variable as orig_prefix came
+ from. */
+ if (orig_prefix != NULL && curr_prefix != NULL
+ && strncmp (pathname, orig_prefix, orig_prefix_len) == 0)
+ {
+ if (pathname[orig_prefix_len] == '\0')
+ /* pathname equals orig_prefix. */
+ return curr_prefix;
+ if (ISSLASH (pathname[orig_prefix_len]))
+ {
+ /* pathname starts with orig_prefix. */
+ const char *pathname_tail = &pathname[orig_prefix_len];
+ char *result =
+ (char *) xmalloc (curr_prefix_len + strlen (pathname_tail) + 1);
+
+#ifdef NO_XMALLOC
+ if (result != NULL)
+#endif
+ {
+ memcpy (result, curr_prefix, curr_prefix_len);
+ strcpy (result + curr_prefix_len, pathname_tail);
+ return result;
+ }
+ }
+ }
+ /* Nothing to relocate. */
+ return pathname;
+}
+
+#endif
Index: or1k-gcc/intl/bindtextdom.c
===================================================================
--- or1k-gcc/intl/bindtextdom.c (nonexistent)
+++ or1k-gcc/intl/bindtextdom.c (revision 728)
@@ -0,0 +1,374 @@
+/* Implementation of the bindtextdomain(3) function
+ Copyright (C) 1995-1998, 2000, 2001, 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. */
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+#include
+#include
+#include
+
+#ifdef _LIBC
+# include
+#else
+# include "libgnuintl.h"
+#endif
+#include "gettextP.h"
+
+#ifdef _LIBC
+/* We have to handle multi-threaded applications. */
+# include
+#else
+/* Provide dummy implementation if this is outside glibc. */
+# define __libc_rwlock_define(CLASS, NAME)
+# define __libc_rwlock_wrlock(NAME)
+# define __libc_rwlock_unlock(NAME)
+#endif
+
+/* The internal variables in the standalone libintl.a must have different
+ names than the internal variables in GNU libc, otherwise programs
+ using libintl.a cannot be linked statically. */
+#if !defined _LIBC
+# define _nl_default_dirname libintl_nl_default_dirname
+# define _nl_domain_bindings libintl_nl_domain_bindings
+#endif
+
+/* Some compilers, like SunOS4 cc, don't have offsetof in . */
+#ifndef offsetof
+# define offsetof(type,ident) ((size_t)&(((type*)0)->ident))
+#endif
+
+/* @@ end of prolog @@ */
+
+/* Contains the default location of the message catalogs. */
+extern const char _nl_default_dirname[];
+#ifdef _LIBC
+extern const char _nl_default_dirname_internal[] attribute_hidden;
+#else
+# define INTUSE(name) name
+#endif
+
+/* List with bindings of specific domains. */
+extern struct binding *_nl_domain_bindings;
+
+/* Lock variable to protect the global data in the gettext implementation. */
+__libc_rwlock_define (extern, _nl_state_lock attribute_hidden)
+
+
+/* Names for the libintl functions are a problem. They must not clash
+ with existing names and they should follow ANSI C. But this source
+ code is also used in GNU C Library where the names have a __
+ prefix. So we have to make a difference here. */
+#ifdef _LIBC
+# define BINDTEXTDOMAIN __bindtextdomain
+# define BIND_TEXTDOMAIN_CODESET __bind_textdomain_codeset
+# ifndef strdup
+# define strdup(str) __strdup (str)
+# endif
+#else
+# define BINDTEXTDOMAIN libintl_bindtextdomain
+# define BIND_TEXTDOMAIN_CODESET libintl_bind_textdomain_codeset
+#endif
+
+/* Prototypes for local functions. */
+static void set_binding_values PARAMS ((const char *domainname,
+ const char **dirnamep,
+ const char **codesetp));
+
+/* Specifies the directory name *DIRNAMEP and the output codeset *CODESETP
+ to be used for the DOMAINNAME message catalog.
+ If *DIRNAMEP or *CODESETP is NULL, the corresponding attribute is not
+ modified, only the current value is returned.
+ If DIRNAMEP or CODESETP is NULL, the corresponding attribute is neither
+ modified nor returned. */
+static void
+set_binding_values (domainname, dirnamep, codesetp)
+ const char *domainname;
+ const char **dirnamep;
+ const char **codesetp;
+{
+ struct binding *binding;
+ int modified;
+
+ /* Some sanity checks. */
+ if (domainname == NULL || domainname[0] == '\0')
+ {
+ if (dirnamep)
+ *dirnamep = NULL;
+ if (codesetp)
+ *codesetp = NULL;
+ return;
+ }
+
+ __libc_rwlock_wrlock (_nl_state_lock);
+
+ modified = 0;
+
+ for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
+ {
+ int compare = strcmp (domainname, binding->domainname);
+ if (compare == 0)
+ /* We found it! */
+ break;
+ if (compare < 0)
+ {
+ /* It is not in the list. */
+ binding = NULL;
+ break;
+ }
+ }
+
+ if (binding != NULL)
+ {
+ if (dirnamep)
+ {
+ const char *dirname = *dirnamep;
+
+ if (dirname == NULL)
+ /* The current binding has be to returned. */
+ *dirnamep = binding->dirname;
+ else
+ {
+ /* The domain is already bound. If the new value and the old
+ one are equal we simply do nothing. Otherwise replace the
+ old binding. */
+ char *result = binding->dirname;
+ if (strcmp (dirname, result) != 0)
+ {
+ if (strcmp (dirname, INTUSE(_nl_default_dirname)) == 0)
+ result = (char *) INTUSE(_nl_default_dirname);
+ else
+ {
+#if defined _LIBC || defined HAVE_STRDUP
+ result = strdup (dirname);
+#else
+ size_t len = strlen (dirname) + 1;
+ result = (char *) malloc (len);
+ if (__builtin_expect (result != NULL, 1))
+ memcpy (result, dirname, len);
+#endif
+ }
+
+ if (__builtin_expect (result != NULL, 1))
+ {
+ if (binding->dirname != INTUSE(_nl_default_dirname))
+ free (binding->dirname);
+
+ binding->dirname = result;
+ modified = 1;
+ }
+ }
+ *dirnamep = result;
+ }
+ }
+
+ if (codesetp)
+ {
+ const char *codeset = *codesetp;
+
+ if (codeset == NULL)
+ /* The current binding has be to returned. */
+ *codesetp = binding->codeset;
+ else
+ {
+ /* The domain is already bound. If the new value and the old
+ one are equal we simply do nothing. Otherwise replace the
+ old binding. */
+ char *result = binding->codeset;
+ if (result == NULL || strcmp (codeset, result) != 0)
+ {
+#if defined _LIBC || defined HAVE_STRDUP
+ result = strdup (codeset);
+#else
+ size_t len = strlen (codeset) + 1;
+ result = (char *) malloc (len);
+ if (__builtin_expect (result != NULL, 1))
+ memcpy (result, codeset, len);
+#endif
+
+ if (__builtin_expect (result != NULL, 1))
+ {
+ if (binding->codeset != NULL)
+ free (binding->codeset);
+
+ binding->codeset = result;
+ binding->codeset_cntr++;
+ modified = 1;
+ }
+ }
+ *codesetp = result;
+ }
+ }
+ }
+ else if ((dirnamep == NULL || *dirnamep == NULL)
+ && (codesetp == NULL || *codesetp == NULL))
+ {
+ /* Simply return the default values. */
+ if (dirnamep)
+ *dirnamep = INTUSE(_nl_default_dirname);
+ if (codesetp)
+ *codesetp = NULL;
+ }
+ else
+ {
+ /* We have to create a new binding. */
+ size_t len = strlen (domainname) + 1;
+ struct binding *new_binding =
+ (struct binding *) malloc (offsetof (struct binding, domainname) + len);
+
+ if (__builtin_expect (new_binding == NULL, 0))
+ goto failed;
+
+ memcpy (new_binding->domainname, domainname, len);
+
+ if (dirnamep)
+ {
+ const char *dirname = *dirnamep;
+
+ if (dirname == NULL)
+ /* The default value. */
+ dirname = INTUSE(_nl_default_dirname);
+ else
+ {
+ if (strcmp (dirname, INTUSE(_nl_default_dirname)) == 0)
+ dirname = INTUSE(_nl_default_dirname);
+ else
+ {
+ char *result;
+#if defined _LIBC || defined HAVE_STRDUP
+ result = strdup (dirname);
+ if (__builtin_expect (result == NULL, 0))
+ goto failed_dirname;
+#else
+ size_t len = strlen (dirname) + 1;
+ result = (char *) malloc (len);
+ if (__builtin_expect (result == NULL, 0))
+ goto failed_dirname;
+ memcpy (result, dirname, len);
+#endif
+ dirname = result;
+ }
+ }
+ *dirnamep = dirname;
+ new_binding->dirname = (char *) dirname;
+ }
+ else
+ /* The default value. */
+ new_binding->dirname = (char *) INTUSE(_nl_default_dirname);
+
+ new_binding->codeset_cntr = 0;
+
+ if (codesetp)
+ {
+ const char *codeset = *codesetp;
+
+ if (codeset != NULL)
+ {
+ char *result;
+
+#if defined _LIBC || defined HAVE_STRDUP
+ result = strdup (codeset);
+ if (__builtin_expect (result == NULL, 0))
+ goto failed_codeset;
+#else
+ size_t len = strlen (codeset) + 1;
+ result = (char *) malloc (len);
+ if (__builtin_expect (result == NULL, 0))
+ goto failed_codeset;
+ memcpy (result, codeset, len);
+#endif
+ codeset = result;
+ new_binding->codeset_cntr++;
+ }
+ *codesetp = codeset;
+ new_binding->codeset = (char *) codeset;
+ }
+ else
+ new_binding->codeset = NULL;
+
+ /* Now enqueue it. */
+ if (_nl_domain_bindings == NULL
+ || strcmp (domainname, _nl_domain_bindings->domainname) < 0)
+ {
+ new_binding->next = _nl_domain_bindings;
+ _nl_domain_bindings = new_binding;
+ }
+ else
+ {
+ binding = _nl_domain_bindings;
+ while (binding->next != NULL
+ && strcmp (domainname, binding->next->domainname) > 0)
+ binding = binding->next;
+
+ new_binding->next = binding->next;
+ binding->next = new_binding;
+ }
+
+ modified = 1;
+
+ /* Here we deal with memory allocation failures. */
+ if (0)
+ {
+ failed_codeset:
+ if (new_binding->dirname != INTUSE(_nl_default_dirname))
+ free (new_binding->dirname);
+ failed_dirname:
+ free (new_binding);
+ failed:
+ if (dirnamep)
+ *dirnamep = NULL;
+ if (codesetp)
+ *codesetp = NULL;
+ }
+ }
+
+ /* If we modified any binding, we flush the caches. */
+ if (modified)
+ ++_nl_msg_cat_cntr;
+
+ __libc_rwlock_unlock (_nl_state_lock);
+}
+
+/* Specify that the DOMAINNAME message catalog will be found
+ in DIRNAME rather than in the system locale data base. */
+char *
+BINDTEXTDOMAIN (domainname, dirname)
+ const char *domainname;
+ const char *dirname;
+{
+ set_binding_values (domainname, &dirname, NULL);
+ return (char *) dirname;
+}
+
+/* Specify the character encoding in which the messages from the
+ DOMAINNAME message catalog will be returned. */
+char *
+BIND_TEXTDOMAIN_CODESET (domainname, codeset)
+ const char *domainname;
+ const char *codeset;
+{
+ set_binding_values (domainname, NULL, &codeset);
+ return (char *) codeset;
+}
+
+#ifdef _LIBC
+/* Aliases for function names in GNU C Library. */
+weak_alias (__bindtextdomain, bindtextdomain);
+weak_alias (__bind_textdomain_codeset, bind_textdomain_codeset);
+#endif
Index: or1k-gcc/intl/configure.ac
===================================================================
--- or1k-gcc/intl/configure.ac (nonexistent)
+++ or1k-gcc/intl/configure.ac (revision 728)
@@ -0,0 +1,51 @@
+AC_PREREQ(2.64)
+AC_INIT
+AC_CONFIG_SRCDIR(gettext.c)
+AC_CONFIG_HEADER(config.h)
+AC_CONFIG_MACRO_DIR(../config)
+AM_GNU_GETTEXT_VERSION(0.12.1)
+AM_GNU_GETTEXT
+
+# This replaces the extensive use of DEFS in the original Makefile.in.
+AC_DEFINE(IN_LIBINTL, 1, [Define because this is libintl.])
+AC_DEFINE(IN_LIBRARY, 1, [Define because this is a library.])
+AC_DEFINE(DEPENDS_ON_LIBICONV, 1, [Define because we depend on libiconv.])
+AC_DEFINE(ENABLE_RELOCATABLE, 1, [Define to enable relocation.])
+AC_DEFINE(NO_XMALLOC, 1, [Define if there is no xmalloc.])
+AC_DEFINE(set_relocation_prefix, libintl_set_relocation_prefix,
+[Define this entry point correctly.])
+AC_DEFINE(relocate, libintl_relocate,
+[Define this entry point correctly.])
+
+MISSING=`cd $ac_aux_dir && ${PWDCMD-pwd}`/missing
+AC_CHECK_PROGS([ACLOCAL], [aclocal], [$MISSING aclocal])
+AC_CHECK_PROGS([AUTOCONF], [autoconf], [$MISSING autoconf])
+AC_CHECK_PROGS([AUTOHEADER], [autoheader], [$MISSING autoheader])
+
+AC_ARG_ENABLE(maintainer-mode,
+[ --enable-maintainer-mode enable rules only needed by maintainers],,
+enable_maintainer_mode=no)
+if test "x$enable_maintainer_mode" = xno; then
+ MAINT='#'
+else
+ MAINT=
+fi
+AC_SUBST(MAINT)
+
+# Additional info for config.intl.
+AC_SUBST(LIBINTL_DEP)
+AC_SUBST(INCINTL)
+
+LIBINTL_DEP=
+INCINTL=
+case $USE_INCLUDED_LIBINTL in
+ yes)
+ LIBINTL=`echo $LIBINTL | sed 's,${top_builddir},&/..,' `
+ LTLIBINTL=`echo $LTLIBINTL | sed 's,${top_builddir},&/..,' `
+ LIBINTL_DEP='${top_builddir}/../intl/libintl.a'
+ INCINTL='-I${top_builddir}/../intl'
+ ;;
+esac
+
+AC_CONFIG_FILES(Makefile config.intl)
+AC_OUTPUT
Index: or1k-gcc/intl/relocatable.h
===================================================================
--- or1k-gcc/intl/relocatable.h (nonexistent)
+++ or1k-gcc/intl/relocatable.h (revision 728)
@@ -0,0 +1,67 @@
+/* Provide relocatable packages.
+ Copyright (C) 2003 Free Software Foundation, Inc.
+ Written by Bruno Haible , 2003.
+
+ 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 _RELOCATABLE_H
+#define _RELOCATABLE_H
+
+/* This can be enabled through the configure --enable-relocatable option. */
+#if ENABLE_RELOCATABLE
+
+/* When building a DLL, we must export some functions. Note that because
+ this is a private .h file, we don't need to use __declspec(dllimport)
+ in any case. */
+#if defined _MSC_VER && BUILDING_DLL
+# define RELOCATABLE_DLL_EXPORTED __declspec(dllexport)
+#else
+# define RELOCATABLE_DLL_EXPORTED
+#endif
+
+/* 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 "/"). */
+extern RELOCATABLE_DLL_EXPORTED void
+ set_relocation_prefix (const char *orig_prefix,
+ const char *curr_prefix);
+
+/* Returns the pathname, relocated according to the current installation
+ directory. */
+extern const char * relocate (const char *pathname);
+
+/* Memory management: relocate() leaks memory, because it has to construct
+ a fresh pathname. If this is a problem because your program calls
+ relocate() frequently, think about caching the result. */
+
+/* Convenience function:
+ Computes the current installation prefix, based on the original
+ installation prefix, the original installation directory of a particular
+ file, and the current pathname of this file. Returns NULL upon failure. */
+extern const char * compute_curr_prefix (const char *orig_installprefix,
+ const char *orig_installdir,
+ const char *curr_pathname);
+
+#else
+
+/* By default, we use the hardwired pathnames. */
+#define relocate(pathname) (pathname)
+
+#endif
+
+#endif /* _RELOCATABLE_H */
Index: or1k-gcc/intl/intl-compat.c
===================================================================
--- or1k-gcc/intl/intl-compat.c (nonexistent)
+++ or1k-gcc/intl/intl-compat.c (revision 728)
@@ -0,0 +1,151 @@
+/* intl-compat.c - Stub functions to call gettext functions from GNU gettext
+ Library.
+ Copyright (C) 1995, 2000-2003 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. */
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+#include "gettextP.h"
+
+/* @@ end of prolog @@ */
+
+/* This file redirects the gettext functions (without prefix) to those
+ defined in the included GNU libintl library (with "libintl_" prefix).
+ It is compiled into libintl in order to make the AM_GNU_GETTEXT test
+ of gettext <= 0.11.2 work with the libintl library >= 0.11.3 which
+ has the redirections primarily in the include file.
+ It is also compiled into libgnuintl so that libgnuintl.so can be used
+ as LD_PRELOADable library on glibc systems, to provide the extra
+ features that the functions in the libc don't have (namely, logging). */
+
+
+#undef gettext
+#undef dgettext
+#undef dcgettext
+#undef ngettext
+#undef dngettext
+#undef dcngettext
+#undef textdomain
+#undef bindtextdomain
+#undef bind_textdomain_codeset
+
+
+/* When building a DLL, we must export some functions. Note that because
+ the functions are only defined for binary backward compatibility, we
+ don't need to use __declspec(dllimport) in any case. */
+#if defined _MSC_VER && BUILDING_DLL
+# define DLL_EXPORTED __declspec(dllexport)
+#else
+# define DLL_EXPORTED
+#endif
+
+
+DLL_EXPORTED
+char *
+gettext (msgid)
+ const char *msgid;
+{
+ return libintl_gettext (msgid);
+}
+
+
+DLL_EXPORTED
+char *
+dgettext (domainname, msgid)
+ const char *domainname;
+ const char *msgid;
+{
+ return libintl_dgettext (domainname, msgid);
+}
+
+
+DLL_EXPORTED
+char *
+dcgettext (domainname, msgid, category)
+ const char *domainname;
+ const char *msgid;
+ int category;
+{
+ return libintl_dcgettext (domainname, msgid, category);
+}
+
+
+DLL_EXPORTED
+char *
+ngettext (msgid1, msgid2, n)
+ const char *msgid1;
+ const char *msgid2;
+ unsigned long int n;
+{
+ return libintl_ngettext (msgid1, msgid2, n);
+}
+
+
+DLL_EXPORTED
+char *
+dngettext (domainname, msgid1, msgid2, n)
+ const char *domainname;
+ const char *msgid1;
+ const char *msgid2;
+ unsigned long int n;
+{
+ return libintl_dngettext (domainname, msgid1, msgid2, n);
+}
+
+
+DLL_EXPORTED
+char *
+dcngettext (domainname, msgid1, msgid2, n, category)
+ const char *domainname;
+ const char *msgid1;
+ const char *msgid2;
+ unsigned long int n;
+ int category;
+{
+ return libintl_dcngettext (domainname, msgid1, msgid2, n, category);
+}
+
+
+DLL_EXPORTED
+char *
+textdomain (domainname)
+ const char *domainname;
+{
+ return libintl_textdomain (domainname);
+}
+
+
+DLL_EXPORTED
+char *
+bindtextdomain (domainname, dirname)
+ const char *domainname;
+ const char *dirname;
+{
+ return libintl_bindtextdomain (domainname, dirname);
+}
+
+
+DLL_EXPORTED
+char *
+bind_textdomain_codeset (domainname, codeset)
+ const char *domainname;
+ const char *codeset;
+{
+ return libintl_bind_textdomain_codeset (domainname, codeset);
+}
Index: or1k-gcc/intl/dgettext.c
===================================================================
--- or1k-gcc/intl/dgettext.c (nonexistent)
+++ or1k-gcc/intl/dgettext.c (revision 728)
@@ -0,0 +1,60 @@
+/* Implementation of the dgettext(3) function.
+ Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU 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. */
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+#include "gettextP.h"
+
+#include
+
+#ifdef _LIBC
+# include
+#else
+# include "libgnuintl.h"
+#endif
+
+/* @@ end of prolog @@ */
+
+/* Names for the libintl functions are a problem. They must not clash
+ with existing names and they should follow ANSI C. But this source
+ code is also used in GNU C Library where the names have a __
+ prefix. So we have to make a difference here. */
+#ifdef _LIBC
+# define DGETTEXT __dgettext
+# define DCGETTEXT INTUSE(__dcgettext)
+#else
+# define DGETTEXT libintl_dgettext
+# define DCGETTEXT libintl_dcgettext
+#endif
+
+/* Look up MSGID in the DOMAINNAME message catalog of the current
+ LC_MESSAGES locale. */
+char *
+DGETTEXT (domainname, msgid)
+ const char *domainname;
+ const char *msgid;
+{
+ return DCGETTEXT (domainname, msgid, LC_MESSAGES);
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library. */
+weak_alias (__dgettext, dgettext);
+#endif
Index: or1k-gcc/intl/dcgettext.c
===================================================================
--- or1k-gcc/intl/dcgettext.c (nonexistent)
+++ or1k-gcc/intl/dcgettext.c (revision 728)
@@ -0,0 +1,59 @@
+/* Implementation of the dcgettext(3) function.
+ Copyright (C) 1995-1999, 2000, 2001, 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. */
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+#include "gettextP.h"
+#ifdef _LIBC
+# include
+#else
+# include "libgnuintl.h"
+#endif
+
+/* @@ end of prolog @@ */
+
+/* Names for the libintl functions are a problem. They must not clash
+ with existing names and they should follow ANSI C. But this source
+ code is also used in GNU C Library where the names have a __
+ prefix. So we have to make a difference here. */
+#ifdef _LIBC
+# define DCGETTEXT __dcgettext
+# define DCIGETTEXT __dcigettext
+#else
+# define DCGETTEXT libintl_dcgettext
+# define DCIGETTEXT libintl_dcigettext
+#endif
+
+/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
+ locale. */
+char *
+DCGETTEXT (domainname, msgid, category)
+ const char *domainname;
+ const char *msgid;
+ int category;
+{
+ return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category);
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library. */
+INTDEF(__dcgettext)
+weak_alias (__dcgettext, dcgettext);
+#endif
Index: or1k-gcc/intl/plural.c
===================================================================
--- or1k-gcc/intl/plural.c (nonexistent)
+++ or1k-gcc/intl/plural.c (revision 728)
@@ -0,0 +1,1518 @@
+/* A Bison parser, made from plural.y
+ by GNU bison 1.35. */
+
+#define YYBISON 1 /* Identify Bison output. */
+
+#define yyparse __gettextparse
+#define yylex __gettextlex
+#define yyerror __gettexterror
+#define yylval __gettextlval
+#define yychar __gettextchar
+#define yydebug __gettextdebug
+#define yynerrs __gettextnerrs
+# define EQUOP2 257
+# define CMPOP2 258
+# define ADDOP2 259
+# define MULOP2 260
+# define NUMBER 261
+
+#line 1 "plural.y"
+
+/* Expression parsing for plural form selection.
+ Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+ Written by Ulrich Drepper , 2000.
+
+ 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. */
+
+/* The bison generated parser uses alloca. AIX 3 forces us to put this
+ declaration at the beginning of the file. The declaration in bison's
+ skeleton file comes too late. This must come before
+ because may include arbitrary system headers. */
+#if defined _AIX && !defined __GNUC__
+ #pragma alloca
+#endif
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+#include
+#include
+#include "plural-exp.h"
+
+/* The main function generated by the parser is called __gettextparse,
+ but we want it to be called PLURAL_PARSE. */
+#ifndef _LIBC
+# define __gettextparse PLURAL_PARSE
+#endif
+
+#define YYLEX_PARAM &((struct parse_args *) arg)->cp
+#define YYPARSE_PARAM arg
+
+#line 49 "plural.y"
+#ifndef YYSTYPE
+typedef union {
+ unsigned long int num;
+ enum operator op;
+ struct expression *exp;
+} yystype;
+# define YYSTYPE yystype
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+#line 55 "plural.y"
+
+/* Prototypes for local functions. */
+static struct expression *new_exp PARAMS ((int nargs, enum operator op,
+ struct expression * const *args));
+static inline struct expression *new_exp_0 PARAMS ((enum operator op));
+static inline struct expression *new_exp_1 PARAMS ((enum operator op,
+ struct expression *right));
+static struct expression *new_exp_2 PARAMS ((enum operator op,
+ struct expression *left,
+ struct expression *right));
+static inline struct expression *new_exp_3 PARAMS ((enum operator op,
+ struct expression *bexp,
+ struct expression *tbranch,
+ struct expression *fbranch));
+static int yylex PARAMS ((YYSTYPE *lval, const char **pexp));
+static void yyerror PARAMS ((const char *str));
+
+/* Allocation of expressions. */
+
+static struct expression *
+new_exp (nargs, op, args)
+ int nargs;
+ enum operator op;
+ struct expression * const *args;
+{
+ int i;
+ struct expression *newp;
+
+ /* If any of the argument could not be malloc'ed, just return NULL. */
+ for (i = nargs - 1; i >= 0; i--)
+ if (args[i] == NULL)
+ goto fail;
+
+ /* Allocate a new expression. */
+ newp = (struct expression *) malloc (sizeof (*newp));
+ if (newp != NULL)
+ {
+ newp->nargs = nargs;
+ newp->operation = op;
+ for (i = nargs - 1; i >= 0; i--)
+ newp->val.args[i] = args[i];
+ return newp;
+ }
+
+ fail:
+ for (i = nargs - 1; i >= 0; i--)
+ FREE_EXPRESSION (args[i]);
+
+ return NULL;
+}
+
+static inline struct expression *
+new_exp_0 (op)
+ enum operator op;
+{
+ return new_exp (0, op, NULL);
+}
+
+static inline struct expression *
+new_exp_1 (op, right)
+ enum operator op;
+ struct expression *right;
+{
+ struct expression *args[1];
+
+ args[0] = right;
+ return new_exp (1, op, args);
+}
+
+static struct expression *
+new_exp_2 (op, left, right)
+ enum operator op;
+ struct expression *left;
+ struct expression *right;
+{
+ struct expression *args[2];
+
+ args[0] = left;
+ args[1] = right;
+ return new_exp (2, op, args);
+}
+
+static inline struct expression *
+new_exp_3 (op, bexp, tbranch, fbranch)
+ enum operator op;
+ struct expression *bexp;
+ struct expression *tbranch;
+ struct expression *fbranch;
+{
+ struct expression *args[3];
+
+ args[0] = bexp;
+ args[1] = tbranch;
+ args[2] = fbranch;
+ return new_exp (3, op, args);
+}
+
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+
+
+#define YYFINAL 27
+#define YYFLAG -32768
+#define YYNTBASE 16
+
+/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
+#define YYTRANSLATE(x) ((unsigned)(x) <= 261 ? yytranslate[x] : 18)
+
+/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
+static const char yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 10, 2, 2, 2, 2, 5, 2,
+ 14, 15, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 12, 2,
+ 2, 2, 2, 3, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 13, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 4, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 6, 7, 8,
+ 9, 11
+};
+
+#if YYDEBUG
+static const short yyprhs[] =
+{
+ 0, 0, 2, 8, 12, 16, 20, 24, 28, 32,
+ 35, 37, 39
+};
+static const short yyrhs[] =
+{
+ 17, 0, 17, 3, 17, 12, 17, 0, 17, 4,
+ 17, 0, 17, 5, 17, 0, 17, 6, 17, 0,
+ 17, 7, 17, 0, 17, 8, 17, 0, 17, 9,
+ 17, 0, 10, 17, 0, 13, 0, 11, 0, 14,
+ 17, 15, 0
+};
+
+#endif
+
+#if YYDEBUG
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const short yyrline[] =
+{
+ 0, 174, 182, 186, 190, 194, 198, 202, 206, 210,
+ 214, 218, 223
+};
+#endif
+
+
+#if (YYDEBUG) || defined YYERROR_VERBOSE
+
+/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
+static const char *const yytname[] =
+{
+ "$", "error", "$undefined.", "'?'", "'|'", "'&'", "EQUOP2", "CMPOP2",
+ "ADDOP2", "MULOP2", "'!'", "NUMBER", "':'", "'n'", "'('", "')'",
+ "start", "exp", 0
+};
+#endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const short yyr1[] =
+{
+ 0, 16, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const short yyr2[] =
+{
+ 0, 1, 5, 3, 3, 3, 3, 3, 3, 2,
+ 1, 1, 3
+};
+
+/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
+ doesn't specify something else to do. Zero means the default is an
+ error. */
+static const short yydefact[] =
+{
+ 0, 0, 11, 10, 0, 1, 9, 0, 0, 0,
+ 0, 0, 0, 0, 0, 12, 0, 3, 4, 5,
+ 6, 7, 8, 0, 2, 0, 0, 0
+};
+
+static const short yydefgoto[] =
+{
+ 25, 5
+};
+
+static const short yypact[] =
+{
+ -9, -9,-32768,-32768, -9, 34,-32768, 11, -9, -9,
+ -9, -9, -9, -9, -9,-32768, 24, 39, 43, 16,
+ 26, -3,-32768, -9, 34, 21, 53,-32768
+};
+
+static const short yypgoto[] =
+{
+ -32768, -1
+};
+
+
+#define YYLAST 53
+
+
+static const short yytable[] =
+{
+ 6, 1, 2, 7, 3, 4, 14, 16, 17, 18,
+ 19, 20, 21, 22, 8, 9, 10, 11, 12, 13,
+ 14, 26, 24, 12, 13, 14, 15, 8, 9, 10,
+ 11, 12, 13, 14, 13, 14, 23, 8, 9, 10,
+ 11, 12, 13, 14, 10, 11, 12, 13, 14, 11,
+ 12, 13, 14, 27
+};
+
+static const short yycheck[] =
+{
+ 1, 10, 11, 4, 13, 14, 9, 8, 9, 10,
+ 11, 12, 13, 14, 3, 4, 5, 6, 7, 8,
+ 9, 0, 23, 7, 8, 9, 15, 3, 4, 5,
+ 6, 7, 8, 9, 8, 9, 12, 3, 4, 5,
+ 6, 7, 8, 9, 5, 6, 7, 8, 9, 6,
+ 7, 8, 9, 0
+};
+#define YYPURE 1
+
+/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
+#line 3 "/usr/local/share/bison/bison.simple"
+
+/* Skeleton output parser for bison,
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street - Fifth Floor,
+ Boston, MA 02110-1301, USA. */
+
+/* As a special exception, when this file is copied by Bison into a
+ Bison output file, you may use that output file without restriction.
+ This special exception was added by the Free Software Foundation
+ in version 1.24 of Bison. */
+
+/* This is the parser code that is written into each bison parser when
+ the %semantic_parser declaration is not specified in the grammar.
+ It was written by Richard Stallman by simplifying the hairy parser
+ used when %semantic_parser is specified. */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+ infringing on user name space. This should be done even for local
+ variables, as they might otherwise be expanded by user macros.
+ There are some unavoidable exceptions within include files to
+ define necessary library symbols; they are noted "INFRINGES ON
+ USER NAME SPACE" below. */
+
+#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
+
+/* The parser invokes alloca or malloc; define the necessary symbols. */
+
+# if YYSTACK_USE_ALLOCA
+# define YYSTACK_ALLOC alloca
+# else
+# ifndef YYSTACK_USE_ALLOCA
+# if defined (alloca) || defined (_ALLOCA_H)
+# define YYSTACK_ALLOC alloca
+# else
+# ifdef __GNUC__
+# define YYSTACK_ALLOC __builtin_alloca
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# else
+# if defined (__STDC__) || defined (__cplusplus)
+# include /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# endif
+# define YYSTACK_ALLOC malloc
+# define YYSTACK_FREE free
+# endif
+#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */
+
+
+#if (! defined (yyoverflow) \
+ && (! defined (__cplusplus) \
+ || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member. */
+union yyalloc
+{
+ short yyss;
+ YYSTYPE yyvs;
+# if YYLSP_NEEDED
+ YYLTYPE yyls;
+# endif
+};
+
+/* The size of the maximum gap between one aligned stack and the next. */
+# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+ N elements. */
+# if YYLSP_NEEDED
+# define YYSTACK_BYTES(N) \
+ ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
+ + 2 * YYSTACK_GAP_MAX)
+# else
+# define YYSTACK_BYTES(N) \
+ ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
+ + YYSTACK_GAP_MAX)
+# endif
+
+/* Copy COUNT objects from FROM to TO. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if 1 < __GNUC__
+# define YYCOPY(To, From, Count) \
+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+# else
+# define YYCOPY(To, From, Count) \
+ do \
+ { \
+ register YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (To)[yyi] = (From)[yyi]; \
+ } \
+ while (0)
+# endif
+# endif
+
+/* Relocate STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+ elements in the stack, and YYPTR gives the new location of the
+ stack. Advance YYPTR to a properly aligned location for the next
+ stack. */
+# define YYSTACK_RELOCATE(Stack) \
+ do \
+ { \
+ YYSIZE_T yynewbytes; \
+ YYCOPY (&yyptr->Stack, Stack, yysize); \
+ Stack = &yyptr->Stack; \
+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
+ } \
+ while (0)
+
+#endif
+
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# if defined (__STDC__) || defined (__cplusplus)
+# include /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# endif
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY -2
+#define YYEOF 0
+#define YYACCEPT goto yyacceptlab
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrlab1
+/* Like YYERROR except do call yyerror. This remains here temporarily
+ to ease the transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. */
+#define YYFAIL goto yyerrlab
+#define YYRECOVERING() (!!yyerrstatus)
+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ yychar1 = YYTRANSLATE (yychar); \
+ YYPOPSTACK; \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror ("syntax error: cannot back up"); \
+ YYERROR; \
+ } \
+while (0)
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+
+/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+ are run).
+
+ When YYLLOC_DEFAULT is run, CURRENT is set the location of the
+ first token. By default, to implement support for ranges, extend
+ its range to the last symbol. */
+
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ Current.last_line = Rhs[N].last_line; \
+ Current.last_column = Rhs[N].last_column;
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments. */
+
+#if YYPURE
+# if YYLSP_NEEDED
+# ifdef YYLEX_PARAM
+# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
+# else
+# define YYLEX yylex (&yylval, &yylloc)
+# endif
+# else /* !YYLSP_NEEDED */
+# ifdef YYLEX_PARAM
+# define YYLEX yylex (&yylval, YYLEX_PARAM)
+# else
+# define YYLEX yylex (&yylval)
+# endif
+# endif /* !YYLSP_NEEDED */
+#else /* !YYPURE */
+# define YYLEX yylex ()
+#endif /* !YYPURE */
+
+
+/* Enable debugging if requested. */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+# include /* INFRINGES ON USER NAME SPACE */
+# define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (0)
+/* Nonzero means print parse trace. It is left uninitialized so that
+ multiple parsers can coexist. */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+#endif /* !YYDEBUG */
+
+/* YYINITDEPTH -- initial size of the parser's stacks. */
+#ifndef YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+ if the built-in stack extension method is used).
+
+ Do not make this value too large; the results are undefined if
+ SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
+ evaluated with infinite-precision integer arithmetic. */
+
+#if YYMAXDEPTH == 0
+# undef YYMAXDEPTH
+#endif
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+#ifdef YYERROR_VERBOSE
+
+# ifndef yystrlen
+# if defined (__GLIBC__) && defined (_STRING_H)
+# define yystrlen strlen
+# else
+/* Return the length of YYSTR. */
+static YYSIZE_T
+# if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+# else
+yystrlen (yystr)
+ const char *yystr;
+# endif
+{
+ register const char *yys = yystr;
+
+ while (*yys++ != '\0')
+ continue;
+
+ return yys - yystr - 1;
+}
+# endif
+# endif
+
+# ifndef yystpcpy
+# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+# define yystpcpy stpcpy
+# else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+ YYDEST. */
+static char *
+# if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+# else
+yystpcpy (yydest, yysrc)
+ char *yydest;
+ const char *yysrc;
+# endif
+{
+ register char *yyd = yydest;
+ register const char *yys = yysrc;
+
+ while ((*yyd++ = *yys++) != '\0')
+ continue;
+
+ return yyd - 1;
+}
+# endif
+# endif
+#endif
+
+#line 315 "/usr/local/share/bison/bison.simple"
+
+
+/* The user can define YYPARSE_PARAM as the name of an argument to be passed
+ into yyparse. The argument should have type void *.
+ It should actually point to an object.
+ Grammar actions can access the variable by casting it
+ to the proper pointer type. */
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
+# define YYPARSE_PARAM_DECL
+# else
+# define YYPARSE_PARAM_ARG YYPARSE_PARAM
+# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+# endif
+#else /* !YYPARSE_PARAM */
+# define YYPARSE_PARAM_ARG
+# define YYPARSE_PARAM_DECL
+#endif /* !YYPARSE_PARAM */
+
+/* Prevent warning if -Wstrict-prototypes. */
+#ifdef __GNUC__
+# ifdef YYPARSE_PARAM
+int yyparse (void *);
+# else
+int yyparse (void);
+# endif
+#endif
+
+/* YY_DECL_VARIABLES -- depending whether we use a pure parser,
+ variables are global, or local to YYPARSE. */
+
+#define YY_DECL_NON_LSP_VARIABLES \
+/* The lookahead symbol. */ \
+int yychar; \
+ \
+/* The semantic value of the lookahead symbol. */ \
+YYSTYPE yylval; \
+ \
+/* Number of parse errors so far. */ \
+int yynerrs;
+
+#if YYLSP_NEEDED
+# define YY_DECL_VARIABLES \
+YY_DECL_NON_LSP_VARIABLES \
+ \
+/* Location data for the lookahead symbol. */ \
+YYLTYPE yylloc;
+#else
+# define YY_DECL_VARIABLES \
+YY_DECL_NON_LSP_VARIABLES
+#endif
+
+
+/* If nonreentrant, generate the variables here. */
+
+#if !YYPURE
+YY_DECL_VARIABLES
+#endif /* !YYPURE */
+
+int
+yyparse (YYPARSE_PARAM_ARG)
+ YYPARSE_PARAM_DECL
+{
+ /* If reentrant, generate the variables here. */
+#if YYPURE
+ YY_DECL_VARIABLES
+#endif /* !YYPURE */
+
+ register int yystate;
+ register int yyn;
+ int yyresult;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
+ /* Lookahead token as an internal (translated) token number. */
+ int yychar1 = 0;
+
+ /* Three stacks and their tools:
+ `yyss': related to states,
+ `yyvs': related to semantic values,
+ `yyls': related to locations.
+
+ Refer to the stacks thru separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+ short yyssa[YYINITDEPTH];
+ short *yyss = yyssa;
+ register short *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs = yyvsa;
+ register YYSTYPE *yyvsp;
+
+#if YYLSP_NEEDED
+ /* The location stack. */
+ YYLTYPE yylsa[YYINITDEPTH];
+ YYLTYPE *yyls = yylsa;
+ YYLTYPE *yylsp;
+#endif
+
+#if YYLSP_NEEDED
+# define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
+#else
+# define YYPOPSTACK (yyvsp--, yyssp--)
+#endif
+
+ YYSIZE_T yystacksize = YYINITDEPTH;
+
+
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+#if YYLSP_NEEDED
+ YYLTYPE yyloc;
+#endif
+
+ /* When reducing, the number of symbols on the RHS of the reduced
+ rule. */
+ int yylen;
+
+ YYDPRINTF ((stderr, "Starting parse\n"));
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+
+ yyssp = yyss;
+ yyvsp = yyvs;
+#if YYLSP_NEEDED
+ yylsp = yyls;
+#endif
+ goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate. |
+`------------------------------------------------------------*/
+ yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+ have just been pushed. so pushing a state here evens the stacks.
+ */
+ yyssp++;
+
+ yysetstate:
+ *yyssp = yystate;
+
+ if (yyssp >= yyss + yystacksize - 1)
+ {
+ /* Get the current used size of the three stacks, in elements. */
+ YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ {
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ short *yyss1 = yyss;
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. */
+# if YYLSP_NEEDED
+ YYLTYPE *yyls1 = yyls;
+ /* This used to be a conditional around just the two extra args,
+ but that might be undefined if yyoverflow is a macro. */
+ yyoverflow ("parser stack overflow",
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+ &yyls1, yysize * sizeof (*yylsp),
+ &yystacksize);
+ yyls = yyls1;
+# else
+ yyoverflow ("parser stack overflow",
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+ &yystacksize);
+# endif
+ yyss = yyss1;
+ yyvs = yyvs1;
+ }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+ goto yyoverflowlab;
+# else
+ /* Extend the stack our own way. */
+ if (yystacksize >= YYMAXDEPTH)
+ goto yyoverflowlab;
+ yystacksize *= 2;
+ if (yystacksize > YYMAXDEPTH)
+ yystacksize = YYMAXDEPTH;
+
+ {
+ short *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+ goto yyoverflowlab;
+ YYSTACK_RELOCATE (yyss);
+ YYSTACK_RELOCATE (yyvs);
+# if YYLSP_NEEDED
+ YYSTACK_RELOCATE (yyls);
+# endif
+# undef YYSTACK_RELOCATE
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
+ }
+# endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+#if YYLSP_NEEDED
+ yylsp = yyls + yysize - 1;
+#endif
+
+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+ (unsigned long int) yystacksize));
+
+ if (yyssp >= yyss + yystacksize - 1)
+ YYABORT;
+ }
+
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+ goto yybackup;
+
+
+/*-----------.
+| yybackup. |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state. */
+/* Read a lookahead token if we need one and don't already have one. */
+/* yyresume: */
+
+ /* First try to decide what to do without reference to lookahead token. */
+
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* yychar is either YYEMPTY or YYEOF
+ or a valid token in external form. */
+
+ if (yychar == YYEMPTY)
+ {
+ YYDPRINTF ((stderr, "Reading a token: "));
+ yychar = YYLEX;
+ }
+
+ /* Convert token to internal form (in yychar1) for indexing tables with */
+
+ if (yychar <= 0) /* This means end of input. */
+ {
+ yychar1 = 0;
+ yychar = YYEOF; /* Don't call YYLEX any more */
+
+ YYDPRINTF ((stderr, "Now at end of input.\n"));
+ }
+ else
+ {
+ yychar1 = YYTRANSLATE (yychar);
+
+#if YYDEBUG
+ /* We have to keep this `#if YYDEBUG', since we use variables
+ which are defined only if `YYDEBUG' is set. */
+ if (yydebug)
+ {
+ YYFPRINTF (stderr, "Next token is %d (%s",
+ yychar, yytname[yychar1]);
+ /* Give the individual parser a way to print the precise
+ meaning of a token, for further debugging info. */
+# ifdef YYPRINT
+ YYPRINT (stderr, yychar, yylval);
+# endif
+ YYFPRINTF (stderr, ")\n");
+ }
+#endif
+ }
+
+ yyn += yychar1;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+ goto yydefault;
+
+ yyn = yytable[yyn];
+
+ /* yyn is what to do for this token type in this state.
+ Negative => reduce, -yyn is rule number.
+ Positive => shift, yyn is new state.
+ New state is final state => don't bother to shift,
+ just return success.
+ 0, or most negative number => error. */
+
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrlab;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ /* Shift the lookahead token. */
+ YYDPRINTF ((stderr, "Shifting token %d (%s), ",
+ yychar, yytname[yychar1]));
+
+ /* Discard the token being shifted unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ *++yyvsp = yylval;
+#if YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state. |
+`-----------------------------------------------------------*/
+yydefault:
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+ goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction. |
+`-----------------------------*/
+yyreduce:
+ /* yyn is the number of a rule to reduce with. */
+ yylen = yyr2[yyn];
+
+ /* If YYLEN is nonzero, implement the default value of the action:
+ `$$ = $1'.
+
+ Otherwise, the following line sets YYVAL to the semantic value of
+ the lookahead token. This behavior is undocumented and Bison
+ users should not rely upon it. Assigning to YYVAL
+ unconditionally makes the parser a bit smaller, and it avoids a
+ GCC warning that YYVAL may be used uninitialized. */
+ yyval = yyvsp[1-yylen];
+
+#if YYLSP_NEEDED
+ /* Similarly for the default location. Let the user run additional
+ commands if for instance locations are ranges. */
+ yyloc = yylsp[1-yylen];
+ YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
+#endif
+
+#if YYDEBUG
+ /* We have to keep this `#if YYDEBUG', since we use variables which
+ are defined only if `YYDEBUG' is set. */
+ if (yydebug)
+ {
+ int yyi;
+
+ YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
+ yyn, yyrline[yyn]);
+
+ /* Print the symbols being reduced, and their result. */
+ for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
+ YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+ YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
+ }
+#endif
+
+ switch (yyn) {
+
+case 1:
+#line 175 "plural.y"
+{
+ if (yyvsp[0].exp == NULL)
+ YYABORT;
+ ((struct parse_args *) arg)->res = yyvsp[0].exp;
+ }
+ break;
+case 2:
+#line 183 "plural.y"
+{
+ yyval.exp = new_exp_3 (qmop, yyvsp[-4].exp, yyvsp[-2].exp, yyvsp[0].exp);
+ }
+ break;
+case 3:
+#line 187 "plural.y"
+{
+ yyval.exp = new_exp_2 (lor, yyvsp[-2].exp, yyvsp[0].exp);
+ }
+ break;
+case 4:
+#line 191 "plural.y"
+{
+ yyval.exp = new_exp_2 (land, yyvsp[-2].exp, yyvsp[0].exp);
+ }
+ break;
+case 5:
+#line 195 "plural.y"
+{
+ yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
+ }
+ break;
+case 6:
+#line 199 "plural.y"
+{
+ yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
+ }
+ break;
+case 7:
+#line 203 "plural.y"
+{
+ yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
+ }
+ break;
+case 8:
+#line 207 "plural.y"
+{
+ yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
+ }
+ break;
+case 9:
+#line 211 "plural.y"
+{
+ yyval.exp = new_exp_1 (lnot, yyvsp[0].exp);
+ }
+ break;
+case 10:
+#line 215 "plural.y"
+{
+ yyval.exp = new_exp_0 (var);
+ }
+ break;
+case 11:
+#line 219 "plural.y"
+{
+ if ((yyval.exp = new_exp_0 (num)) != NULL)
+ yyval.exp->val.num = yyvsp[0].num;
+ }
+ break;
+case 12:
+#line 224 "plural.y"
+{
+ yyval.exp = yyvsp[-1].exp;
+ }
+ break;
+}
+
+#line 705 "/usr/local/share/bison/bison.simple"
+
+
+ yyvsp -= yylen;
+ yyssp -= yylen;
+#if YYLSP_NEEDED
+ yylsp -= yylen;
+#endif
+
+#if YYDEBUG
+ if (yydebug)
+ {
+ short *yyssp1 = yyss - 1;
+ YYFPRINTF (stderr, "state stack now");
+ while (yyssp1 != yyssp)
+ YYFPRINTF (stderr, " %d", *++yyssp1);
+ YYFPRINTF (stderr, "\n");
+ }
+#endif
+
+ *++yyvsp = yyval;
+#if YYLSP_NEEDED
+ *++yylsp = yyloc;
+#endif
+
+ /* Now `shift' the result of the reduction. Determine what state
+ that goes to, based on the state we popped back to and the rule
+ number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
+ if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTBASE];
+
+ goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+
+#ifdef YYERROR_VERBOSE
+ yyn = yypact[yystate];
+
+ if (yyn > YYFLAG && yyn < YYLAST)
+ {
+ YYSIZE_T yysize = 0;
+ char *yymsg;
+ int yyx, yycount;
+
+ yycount = 0;
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. */
+ for (yyx = yyn < 0 ? -yyn : 0;
+ yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
+ if (yycheck[yyx + yyn] == yyx)
+ yysize += yystrlen (yytname[yyx]) + 15, yycount++;
+ yysize += yystrlen ("parse error, unexpected ") + 1;
+ yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
+ yymsg = (char *) YYSTACK_ALLOC (yysize);
+ if (yymsg != 0)
+ {
+ char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
+ yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
+
+ if (yycount < 5)
+ {
+ yycount = 0;
+ for (yyx = yyn < 0 ? -yyn : 0;
+ yyx < (int) (sizeof (yytname) / sizeof (char *));
+ yyx++)
+ if (yycheck[yyx + yyn] == yyx)
+ {
+ const char *yyq = ! yycount ? ", expecting " : " or ";
+ yyp = yystpcpy (yyp, yyq);
+ yyp = yystpcpy (yyp, yytname[yyx]);
+ yycount++;
+ }
+ }
+ yyerror (yymsg);
+ YYSTACK_FREE (yymsg);
+ }
+ else
+ yyerror ("parse error; also virtual memory exhausted");
+ }
+ else
+#endif /* defined (YYERROR_VERBOSE) */
+ yyerror ("parse error");
+ }
+ goto yyerrlab1;
+
+
+/*--------------------------------------------------.
+| yyerrlab1 -- error raised explicitly by an action |
+`--------------------------------------------------*/
+yyerrlab1:
+ if (yyerrstatus == 3)
+ {
+ /* If just tried and failed to reuse lookahead token after an
+ error, discard it. */
+
+ /* return failure if at end of input */
+ if (yychar == YYEOF)
+ YYABORT;
+ YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
+ yychar, yytname[yychar1]));
+ yychar = YYEMPTY;
+ }
+
+ /* Else will try to reuse lookahead token after shifting the error
+ token. */
+
+ yyerrstatus = 3; /* Each real token shifted decrements this */
+
+ goto yyerrhandle;
+
+
+/*-------------------------------------------------------------------.
+| yyerrdefault -- current state does not do anything special for the |
+| error token. |
+`-------------------------------------------------------------------*/
+yyerrdefault:
+#if 0
+ /* This is wrong; only states that explicitly want error tokens
+ should shift them. */
+
+ /* If its default is to accept any token, ok. Otherwise pop it. */
+ yyn = yydefact[yystate];
+ if (yyn)
+ goto yydefault;
+#endif
+
+
+/*---------------------------------------------------------------.
+| yyerrpop -- pop the current state because it cannot handle the |
+| error token |
+`---------------------------------------------------------------*/
+yyerrpop:
+ if (yyssp == yyss)
+ YYABORT;
+ yyvsp--;
+ yystate = *--yyssp;
+#if YYLSP_NEEDED
+ yylsp--;
+#endif
+
+#if YYDEBUG
+ if (yydebug)
+ {
+ short *yyssp1 = yyss - 1;
+ YYFPRINTF (stderr, "Error: state stack now");
+ while (yyssp1 != yyssp)
+ YYFPRINTF (stderr, " %d", *++yyssp1);
+ YYFPRINTF (stderr, "\n");
+ }
+#endif
+
+/*--------------.
+| yyerrhandle. |
+`--------------*/
+yyerrhandle:
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yyerrdefault;
+
+ yyn += YYTERROR;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
+ goto yyerrdefault;
+
+ yyn = yytable[yyn];
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrpop;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrpop;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ YYDPRINTF ((stderr, "Shifting error token, "));
+
+ *++yyvsp = yylval;
+#if YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here. |
+`-------------------------------------*/
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here. |
+`-----------------------------------*/
+yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+
+/*---------------------------------------------.
+| yyoverflowab -- parser overflow comes here. |
+`---------------------------------------------*/
+yyoverflowlab:
+ yyerror ("parser stack overflow");
+ yyresult = 2;
+ /* Fall through. */
+
+yyreturn:
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+ return yyresult;
+}
+#line 229 "plural.y"
+
+
+void
+internal_function
+FREE_EXPRESSION (exp)
+ struct expression *exp;
+{
+ if (exp == NULL)
+ return;
+
+ /* Handle the recursive case. */
+ switch (exp->nargs)
+ {
+ case 3:
+ FREE_EXPRESSION (exp->val.args[2]);
+ /* FALLTHROUGH */
+ case 2:
+ FREE_EXPRESSION (exp->val.args[1]);
+ /* FALLTHROUGH */
+ case 1:
+ FREE_EXPRESSION (exp->val.args[0]);
+ /* FALLTHROUGH */
+ default:
+ break;
+ }
+
+ free (exp);
+}
+
+
+static int
+yylex (lval, pexp)
+ YYSTYPE *lval;
+ const char **pexp;
+{
+ const char *exp = *pexp;
+ int result;
+
+ while (1)
+ {
+ if (exp[0] == '\0')
+ {
+ *pexp = exp;
+ return YYEOF;
+ }
+
+ if (exp[0] != ' ' && exp[0] != '\t')
+ break;
+
+ ++exp;
+ }
+
+ result = *exp++;
+ switch (result)
+ {
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ {
+ unsigned long int n = result - '0';
+ while (exp[0] >= '0' && exp[0] <= '9')
+ {
+ n *= 10;
+ n += exp[0] - '0';
+ ++exp;
+ }
+ lval->num = n;
+ result = NUMBER;
+ }
+ break;
+
+ case '=':
+ if (exp[0] == '=')
+ {
+ ++exp;
+ lval->op = equal;
+ result = EQUOP2;
+ }
+ else
+ result = YYERRCODE;
+ break;
+
+ case '!':
+ if (exp[0] == '=')
+ {
+ ++exp;
+ lval->op = not_equal;
+ result = EQUOP2;
+ }
+ break;
+
+ case '&':
+ case '|':
+ if (exp[0] == result)
+ ++exp;
+ else
+ result = YYERRCODE;
+ break;
+
+ case '<':
+ if (exp[0] == '=')
+ {
+ ++exp;
+ lval->op = less_or_equal;
+ }
+ else
+ lval->op = less_than;
+ result = CMPOP2;
+ break;
+
+ case '>':
+ if (exp[0] == '=')
+ {
+ ++exp;
+ lval->op = greater_or_equal;
+ }
+ else
+ lval->op = greater_than;
+ result = CMPOP2;
+ break;
+
+ case '*':
+ lval->op = mult;
+ result = MULOP2;
+ break;
+
+ case '/':
+ lval->op = divide;
+ result = MULOP2;
+ break;
+
+ case '%':
+ lval->op = module;
+ result = MULOP2;
+ break;
+
+ case '+':
+ lval->op = plus;
+ result = ADDOP2;
+ break;
+
+ case '-':
+ lval->op = minus;
+ result = ADDOP2;
+ break;
+
+ case 'n':
+ case '?':
+ case ':':
+ case '(':
+ case ')':
+ /* Nothing, just return the character. */
+ break;
+
+ case ';':
+ case '\n':
+ case '\0':
+ /* Be safe and let the user call this function again. */
+ --exp;
+ result = YYEOF;
+ break;
+
+ default:
+ result = YYERRCODE;
+#if YYDEBUG != 0
+ --exp;
+#endif
+ break;
+ }
+
+ *pexp = exp;
+
+ return result;
+}
+
+
+static void
+yyerror (str)
+ const char *str;
+{
+ /* Do nothing. We don't print error messages here. */
+}
Index: or1k-gcc/intl/localename.c
===================================================================
--- or1k-gcc/intl/localename.c (nonexistent)
+++ or1k-gcc/intl/localename.c (revision 728)
@@ -0,0 +1,772 @@
+/* Determine the current selected locale.
+ Copyright (C) 1995-1999, 2000-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. */
+
+/* Written by Ulrich Drepper , 1995. */
+/* Win32 code written by Tor Lillqvist . */
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+#include
+#include
+
+#if defined _WIN32 || defined __WIN32__
+# undef WIN32 /* avoid warning on mingw32 */
+# define WIN32
+#endif
+
+#ifdef WIN32
+# define WIN32_LEAN_AND_MEAN
+# include
+/* Mingw headers don't have latest language and sublanguage codes. */
+# ifndef LANG_AFRIKAANS
+# define LANG_AFRIKAANS 0x36
+# endif
+# ifndef LANG_ALBANIAN
+# define LANG_ALBANIAN 0x1c
+# endif
+# ifndef LANG_ARABIC
+# define LANG_ARABIC 0x01
+# endif
+# ifndef LANG_ARMENIAN
+# define LANG_ARMENIAN 0x2b
+# endif
+# ifndef LANG_ASSAMESE
+# define LANG_ASSAMESE 0x4d
+# endif
+# ifndef LANG_AZERI
+# define LANG_AZERI 0x2c
+# endif
+# ifndef LANG_BASQUE
+# define LANG_BASQUE 0x2d
+# endif
+# ifndef LANG_BELARUSIAN
+# define LANG_BELARUSIAN 0x23
+# endif
+# ifndef LANG_BENGALI
+# define LANG_BENGALI 0x45
+# endif
+# ifndef LANG_CATALAN
+# define LANG_CATALAN 0x03
+# endif
+# ifndef LANG_DIVEHI
+# define LANG_DIVEHI 0x65
+# endif
+# ifndef LANG_ESTONIAN
+# define LANG_ESTONIAN 0x25
+# endif
+# ifndef LANG_FAEROESE
+# define LANG_FAEROESE 0x38
+# endif
+# ifndef LANG_FARSI
+# define LANG_FARSI 0x29
+# endif
+# ifndef LANG_GALICIAN
+# define LANG_GALICIAN 0x56
+# endif
+# ifndef LANG_GEORGIAN
+# define LANG_GEORGIAN 0x37
+# endif
+# ifndef LANG_GUJARATI
+# define LANG_GUJARATI 0x47
+# endif
+# ifndef LANG_HEBREW
+# define LANG_HEBREW 0x0d
+# endif
+# ifndef LANG_HINDI
+# define LANG_HINDI 0x39
+# endif
+# ifndef LANG_INDONESIAN
+# define LANG_INDONESIAN 0x21
+# endif
+# ifndef LANG_KANNADA
+# define LANG_KANNADA 0x4b
+# endif
+# ifndef LANG_KASHMIRI
+# define LANG_KASHMIRI 0x60
+# endif
+# ifndef LANG_KAZAK
+# define LANG_KAZAK 0x3f
+# endif
+# ifndef LANG_KONKANI
+# define LANG_KONKANI 0x57
+# endif
+# ifndef LANG_KYRGYZ
+# define LANG_KYRGYZ 0x40
+# endif
+# ifndef LANG_LATVIAN
+# define LANG_LATVIAN 0x26
+# endif
+# ifndef LANG_LITHUANIAN
+# define LANG_LITHUANIAN 0x27
+# endif
+# ifndef LANG_MACEDONIAN
+# define LANG_MACEDONIAN 0x2f
+# endif
+# ifndef LANG_MALAY
+# define LANG_MALAY 0x3e
+# endif
+# ifndef LANG_MALAYALAM
+# define LANG_MALAYALAM 0x4c
+# endif
+# ifndef LANG_MANIPURI
+# define LANG_MANIPURI 0x58
+# endif
+# ifndef LANG_MARATHI
+# define LANG_MARATHI 0x4e
+# endif
+# ifndef LANG_MONGOLIAN
+# define LANG_MONGOLIAN 0x50
+# endif
+# ifndef LANG_NEPALI
+# define LANG_NEPALI 0x61
+# endif
+# ifndef LANG_ORIYA
+# define LANG_ORIYA 0x48
+# endif
+# ifndef LANG_PUNJABI
+# define LANG_PUNJABI 0x46
+# endif
+# ifndef LANG_SANSKRIT
+# define LANG_SANSKRIT 0x4f
+# endif
+# ifndef LANG_SERBIAN
+# define LANG_SERBIAN 0x1a
+# endif
+# ifndef LANG_SINDHI
+# define LANG_SINDHI 0x59
+# endif
+# ifndef LANG_SLOVAK
+# define LANG_SLOVAK 0x1b
+# endif
+# ifndef LANG_SORBIAN
+# define LANG_SORBIAN 0x2e
+# endif
+# ifndef LANG_SWAHILI
+# define LANG_SWAHILI 0x41
+# endif
+# ifndef LANG_SYRIAC
+# define LANG_SYRIAC 0x5a
+# endif
+# ifndef LANG_TAMIL
+# define LANG_TAMIL 0x49
+# endif
+# ifndef LANG_TATAR
+# define LANG_TATAR 0x44
+# endif
+# ifndef LANG_TELUGU
+# define LANG_TELUGU 0x4a
+# endif
+# ifndef LANG_THAI
+# define LANG_THAI 0x1e
+# endif
+# ifndef LANG_UKRAINIAN
+# define LANG_UKRAINIAN 0x22
+# endif
+# ifndef LANG_URDU
+# define LANG_URDU 0x20
+# endif
+# ifndef LANG_UZBEK
+# define LANG_UZBEK 0x43
+# endif
+# ifndef LANG_VIETNAMESE
+# define LANG_VIETNAMESE 0x2a
+# endif
+# ifndef SUBLANG_ARABIC_SAUDI_ARABIA
+# define SUBLANG_ARABIC_SAUDI_ARABIA 0x01
+# endif
+# ifndef SUBLANG_ARABIC_IRAQ
+# define SUBLANG_ARABIC_IRAQ 0x02
+# endif
+# ifndef SUBLANG_ARABIC_EGYPT
+# define SUBLANG_ARABIC_EGYPT 0x03
+# endif
+# ifndef SUBLANG_ARABIC_LIBYA
+# define SUBLANG_ARABIC_LIBYA 0x04
+# endif
+# ifndef SUBLANG_ARABIC_ALGERIA
+# define SUBLANG_ARABIC_ALGERIA 0x05
+# endif
+# ifndef SUBLANG_ARABIC_MOROCCO
+# define SUBLANG_ARABIC_MOROCCO 0x06
+# endif
+# ifndef SUBLANG_ARABIC_TUNISIA
+# define SUBLANG_ARABIC_TUNISIA 0x07
+# endif
+# ifndef SUBLANG_ARABIC_OMAN
+# define SUBLANG_ARABIC_OMAN 0x08
+# endif
+# ifndef SUBLANG_ARABIC_YEMEN
+# define SUBLANG_ARABIC_YEMEN 0x09
+# endif
+# ifndef SUBLANG_ARABIC_SYRIA
+# define SUBLANG_ARABIC_SYRIA 0x0a
+# endif
+# ifndef SUBLANG_ARABIC_JORDAN
+# define SUBLANG_ARABIC_JORDAN 0x0b
+# endif
+# ifndef SUBLANG_ARABIC_LEBANON
+# define SUBLANG_ARABIC_LEBANON 0x0c
+# endif
+# ifndef SUBLANG_ARABIC_KUWAIT
+# define SUBLANG_ARABIC_KUWAIT 0x0d
+# endif
+# ifndef SUBLANG_ARABIC_UAE
+# define SUBLANG_ARABIC_UAE 0x0e
+# endif
+# ifndef SUBLANG_ARABIC_BAHRAIN
+# define SUBLANG_ARABIC_BAHRAIN 0x0f
+# endif
+# ifndef SUBLANG_ARABIC_QATAR
+# define SUBLANG_ARABIC_QATAR 0x10
+# endif
+# ifndef SUBLANG_AZERI_LATIN
+# define SUBLANG_AZERI_LATIN 0x01
+# endif
+# ifndef SUBLANG_AZERI_CYRILLIC
+# define SUBLANG_AZERI_CYRILLIC 0x02
+# endif
+# ifndef SUBLANG_CHINESE_MACAU
+# define SUBLANG_CHINESE_MACAU 0x05
+# endif
+# ifndef SUBLANG_ENGLISH_SOUTH_AFRICA
+# define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07
+# endif
+# ifndef SUBLANG_ENGLISH_JAMAICA
+# define SUBLANG_ENGLISH_JAMAICA 0x08
+# endif
+# ifndef SUBLANG_ENGLISH_CARIBBEAN
+# define SUBLANG_ENGLISH_CARIBBEAN 0x09
+# endif
+# ifndef SUBLANG_ENGLISH_BELIZE
+# define SUBLANG_ENGLISH_BELIZE 0x0a
+# endif
+# ifndef SUBLANG_ENGLISH_TRINIDAD
+# define SUBLANG_ENGLISH_TRINIDAD 0x0b
+# endif
+# ifndef SUBLANG_ENGLISH_ZIMBABWE
+# define SUBLANG_ENGLISH_ZIMBABWE 0x0c
+# endif
+# ifndef SUBLANG_ENGLISH_PHILIPPINES
+# define SUBLANG_ENGLISH_PHILIPPINES 0x0d
+# endif
+# ifndef SUBLANG_FRENCH_LUXEMBOURG
+# define SUBLANG_FRENCH_LUXEMBOURG 0x05
+# endif
+# ifndef SUBLANG_FRENCH_MONACO
+# define SUBLANG_FRENCH_MONACO 0x06
+# endif
+# ifndef SUBLANG_GERMAN_LUXEMBOURG
+# define SUBLANG_GERMAN_LUXEMBOURG 0x04
+# endif
+# ifndef SUBLANG_GERMAN_LIECHTENSTEIN
+# define SUBLANG_GERMAN_LIECHTENSTEIN 0x05
+# endif
+# ifndef SUBLANG_KASHMIRI_INDIA
+# define SUBLANG_KASHMIRI_INDIA 0x02
+# endif
+# ifndef SUBLANG_MALAY_MALAYSIA
+# define SUBLANG_MALAY_MALAYSIA 0x01
+# endif
+# ifndef SUBLANG_MALAY_BRUNEI_DARUSSALAM
+# define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
+# endif
+# ifndef SUBLANG_NEPALI_INDIA
+# define SUBLANG_NEPALI_INDIA 0x02
+# endif
+# ifndef SUBLANG_SERBIAN_LATIN
+# define SUBLANG_SERBIAN_LATIN 0x02
+# endif
+# ifndef SUBLANG_SERBIAN_CYRILLIC
+# define SUBLANG_SERBIAN_CYRILLIC 0x03
+# endif
+# ifndef SUBLANG_SPANISH_GUATEMALA
+# define SUBLANG_SPANISH_GUATEMALA 0x04
+# endif
+# ifndef SUBLANG_SPANISH_COSTA_RICA
+# define SUBLANG_SPANISH_COSTA_RICA 0x05
+# endif
+# ifndef SUBLANG_SPANISH_PANAMA
+# define SUBLANG_SPANISH_PANAMA 0x06
+# endif
+# ifndef SUBLANG_SPANISH_DOMINICAN_REPUBLIC
+# define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
+# endif
+# ifndef SUBLANG_SPANISH_VENEZUELA
+# define SUBLANG_SPANISH_VENEZUELA 0x08
+# endif
+# ifndef SUBLANG_SPANISH_COLOMBIA
+# define SUBLANG_SPANISH_COLOMBIA 0x09
+# endif
+# ifndef SUBLANG_SPANISH_PERU
+# define SUBLANG_SPANISH_PERU 0x0a
+# endif
+# ifndef SUBLANG_SPANISH_ARGENTINA
+# define SUBLANG_SPANISH_ARGENTINA 0x0b
+# endif
+# ifndef SUBLANG_SPANISH_ECUADOR
+# define SUBLANG_SPANISH_ECUADOR 0x0c
+# endif
+# ifndef SUBLANG_SPANISH_CHILE
+# define SUBLANG_SPANISH_CHILE 0x0d
+# endif
+# ifndef SUBLANG_SPANISH_URUGUAY
+# define SUBLANG_SPANISH_URUGUAY 0x0e
+# endif
+# ifndef SUBLANG_SPANISH_PARAGUAY
+# define SUBLANG_SPANISH_PARAGUAY 0x0f
+# endif
+# ifndef SUBLANG_SPANISH_BOLIVIA
+# define SUBLANG_SPANISH_BOLIVIA 0x10
+# endif
+# ifndef SUBLANG_SPANISH_EL_SALVADOR
+# define SUBLANG_SPANISH_EL_SALVADOR 0x11
+# endif
+# ifndef SUBLANG_SPANISH_HONDURAS
+# define SUBLANG_SPANISH_HONDURAS 0x12
+# endif
+# ifndef SUBLANG_SPANISH_NICARAGUA
+# define SUBLANG_SPANISH_NICARAGUA 0x13
+# endif
+# ifndef SUBLANG_SPANISH_PUERTO_RICO
+# define SUBLANG_SPANISH_PUERTO_RICO 0x14
+# endif
+# ifndef SUBLANG_SWEDISH_FINLAND
+# define SUBLANG_SWEDISH_FINLAND 0x02
+# endif
+# ifndef SUBLANG_URDU_PAKISTAN
+# define SUBLANG_URDU_PAKISTAN 0x01
+# endif
+# ifndef SUBLANG_URDU_INDIA
+# define SUBLANG_URDU_INDIA 0x02
+# endif
+# ifndef SUBLANG_UZBEK_LATIN
+# define SUBLANG_UZBEK_LATIN 0x01
+# endif
+# ifndef SUBLANG_UZBEK_CYRILLIC
+# define SUBLANG_UZBEK_CYRILLIC 0x02
+# endif
+#endif
+
+/* XPG3 defines the result of 'setlocale (category, NULL)' as:
+ "Directs 'setlocale()' to query 'category' and return the current
+ setting of 'local'."
+ However it does not specify the exact format. Neither do SUSV2 and
+ ISO C 99. So we can use this feature only on selected systems (e.g.
+ those using GNU C Library). */
+#if defined _LIBC || (defined __GNU_LIBRARY__ && __GNU_LIBRARY__ >= 2)
+# define HAVE_LOCALE_NULL
+#endif
+
+/* Determine the current locale's name, and canonicalize it into XPG syntax
+ language[_territory[.codeset]][@modifier]
+ The codeset part in the result is not reliable; the locale_charset()
+ should be used for codeset information instead.
+ The result must not be freed; it is statically allocated. */
+
+const char *
+_nl_locale_name (category, categoryname)
+ int category;
+ const char *categoryname;
+{
+ const char *retval;
+
+#ifndef WIN32
+
+ /* Use the POSIX methods of looking to 'LC_ALL', 'LC_xxx', and 'LANG'.
+ On some systems this can be done by the 'setlocale' function itself. */
+# if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL
+ retval = setlocale (category, NULL);
+# else
+ /* Setting of LC_ALL overwrites all other. */
+ retval = getenv ("LC_ALL");
+ if (retval == NULL || retval[0] == '\0')
+ {
+ /* Next comes the name of the desired category. */
+ retval = getenv (categoryname);
+ if (retval == NULL || retval[0] == '\0')
+ {
+ /* Last possibility is the LANG environment variable. */
+ retval = getenv ("LANG");
+ if (retval == NULL || retval[0] == '\0')
+ /* We use C as the default domain. POSIX says this is
+ implementation defined. */
+ retval = "C";
+ }
+ }
+# endif
+
+ return retval;
+
+#else /* WIN32 */
+
+ /* Return an XPG style locale name language[_territory][@modifier].
+ Don't even bother determining the codeset; it's not useful in this
+ context, because message catalogs are not specific to a single
+ codeset. */
+
+ LCID lcid;
+ LANGID langid;
+ int primary, sub;
+
+ /* Let the user override the system settings through environment
+ variables, as on POSIX systems. */
+ retval = getenv ("LC_ALL");
+ if (retval != NULL && retval[0] != '\0')
+ return retval;
+ retval = getenv (categoryname);
+ if (retval != NULL && retval[0] != '\0')
+ return retval;
+ retval = getenv ("LANG");
+ if (retval != NULL && retval[0] != '\0')
+ return retval;
+
+ /* Use native Win32 API locale ID. */
+ lcid = GetThreadLocale ();
+
+ /* Strip off the sorting rules, keep only the language part. */
+ langid = LANGIDFROMLCID (lcid);
+
+ /* Split into language and territory part. */
+ primary = PRIMARYLANGID (langid);
+ sub = SUBLANGID (langid);
+
+ /* Dispatch on language.
+ See also http://www.unicode.org/unicode/onlinedat/languages.html .
+ For details about languages, see http://www.ethnologue.com/ . */
+ switch (primary)
+ {
+ case LANG_AFRIKAANS: return "af_ZA";
+ case LANG_ALBANIAN: return "sq_AL";
+ case 0x5e: /* AMHARIC */ return "am_ET";
+ case LANG_ARABIC:
+ switch (sub)
+ {
+ case SUBLANG_ARABIC_SAUDI_ARABIA: return "ar_SA";
+ case SUBLANG_ARABIC_IRAQ: return "ar_IQ";
+ case SUBLANG_ARABIC_EGYPT: return "ar_EG";
+ case SUBLANG_ARABIC_LIBYA: return "ar_LY";
+ case SUBLANG_ARABIC_ALGERIA: return "ar_DZ";
+ case SUBLANG_ARABIC_MOROCCO: return "ar_MA";
+ case SUBLANG_ARABIC_TUNISIA: return "ar_TN";
+ case SUBLANG_ARABIC_OMAN: return "ar_OM";
+ case SUBLANG_ARABIC_YEMEN: return "ar_YE";
+ case SUBLANG_ARABIC_SYRIA: return "ar_SY";
+ case SUBLANG_ARABIC_JORDAN: return "ar_JO";
+ case SUBLANG_ARABIC_LEBANON: return "ar_LB";
+ case SUBLANG_ARABIC_KUWAIT: return "ar_KW";
+ case SUBLANG_ARABIC_UAE: return "ar_AE";
+ case SUBLANG_ARABIC_BAHRAIN: return "ar_BH";
+ case SUBLANG_ARABIC_QATAR: return "ar_QA";
+ }
+ return "ar";
+ case LANG_ARMENIAN: return "hy_AM";
+ case LANG_ASSAMESE: return "as_IN";
+ case LANG_AZERI:
+ switch (sub)
+ {
+ /* FIXME: Adjust this when Azerbaijani locales appear on Unix. */
+ case SUBLANG_AZERI_LATIN: return "az_AZ@latin";
+ case SUBLANG_AZERI_CYRILLIC: return "az_AZ@cyrillic";
+ }
+ return "az";
+ case LANG_BASQUE:
+ return "eu"; /* Ambiguous: could be "eu_ES" or "eu_FR". */
+ case LANG_BELARUSIAN: return "be_BY";
+ case LANG_BENGALI: return "bn_IN";
+ case LANG_BULGARIAN: return "bg_BG";
+ case 0x55: /* BURMESE */ return "my_MM";
+ case 0x53: /* CAMBODIAN */ return "km_KH";
+ case LANG_CATALAN: return "ca_ES";
+ case 0x5c: /* CHEROKEE */ return "chr_US";
+ case LANG_CHINESE:
+ switch (sub)
+ {
+ case SUBLANG_CHINESE_TRADITIONAL: return "zh_TW";
+ case SUBLANG_CHINESE_SIMPLIFIED: return "zh_CN";
+ case SUBLANG_CHINESE_HONGKONG: return "zh_HK";
+ case SUBLANG_CHINESE_SINGAPORE: return "zh_SG";
+ case SUBLANG_CHINESE_MACAU: return "zh_MO";
+ }
+ return "zh";
+ case LANG_CROATIAN: /* LANG_CROATIAN == LANG_SERBIAN
+ * What used to be called Serbo-Croatian
+ * should really now be two separate
+ * languages because of political reasons.
+ * (Says tml, who knows nothing about Serbian
+ * or Croatian.)
+ * (I can feel those flames coming already.)
+ */
+ switch (sub)
+ {
+ case SUBLANG_DEFAULT: return "hr_HR";
+ case SUBLANG_SERBIAN_LATIN: return "sr_YU";
+ case SUBLANG_SERBIAN_CYRILLIC: return "sr_YU@cyrillic";
+ }
+ return "hr";
+ case LANG_CZECH: return "cs_CZ";
+ case LANG_DANISH: return "da_DK";
+ case LANG_DIVEHI: return "div_MV";
+ case LANG_DUTCH:
+ switch (sub)
+ {
+ case SUBLANG_DUTCH: return "nl_NL";
+ case SUBLANG_DUTCH_BELGIAN: /* FLEMISH, VLAAMS */ return "nl_BE";
+ }
+ return "nl";
+ case 0x66: /* EDO */ return "bin_NG";
+ case LANG_ENGLISH:
+ switch (sub)
+ {
+ /* SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. Heh. I thought
+ * English was the language spoken in England.
+ * Oh well.
+ */
+ case SUBLANG_ENGLISH_US: return "en_US";
+ case SUBLANG_ENGLISH_UK: return "en_GB";
+ case SUBLANG_ENGLISH_AUS: return "en_AU";
+ case SUBLANG_ENGLISH_CAN: return "en_CA";
+ case SUBLANG_ENGLISH_NZ: return "en_NZ";
+ case SUBLANG_ENGLISH_EIRE: return "en_IE";
+ case SUBLANG_ENGLISH_SOUTH_AFRICA: return "en_ZA";
+ case SUBLANG_ENGLISH_JAMAICA: return "en_JM";
+ case SUBLANG_ENGLISH_CARIBBEAN: return "en_GD"; /* Grenada? */
+ case SUBLANG_ENGLISH_BELIZE: return "en_BZ";
+ case SUBLANG_ENGLISH_TRINIDAD: return "en_TT";
+ case SUBLANG_ENGLISH_ZIMBABWE: return "en_ZW";
+ case SUBLANG_ENGLISH_PHILIPPINES: return "en_PH";
+ }
+ return "en";
+ case LANG_ESTONIAN: return "et_EE";
+ case LANG_FAEROESE: return "fo_FO";
+ case LANG_FARSI: return "fa_IR";
+ case LANG_FINNISH: return "fi_FI";
+ case LANG_FRENCH:
+ switch (sub)
+ {
+ case SUBLANG_FRENCH: return "fr_FR";
+ case SUBLANG_FRENCH_BELGIAN: /* WALLOON */ return "fr_BE";
+ case SUBLANG_FRENCH_CANADIAN: return "fr_CA";
+ case SUBLANG_FRENCH_SWISS: return "fr_CH";
+ case SUBLANG_FRENCH_LUXEMBOURG: return "fr_LU";
+ case SUBLANG_FRENCH_MONACO: return "fr_MC";
+ }
+ return "fr";
+ case 0x62: /* FRISIAN */ return "fy_NL";
+ case 0x67: /* FULFULDE */ return "ful_NG";
+ case 0x3c: /* GAELIC */
+ switch (sub)
+ {
+ case 0x01: /* SCOTTISH */ return "gd_GB";
+ case 0x02: /* IRISH */ return "ga_IE";
+ }
+ return "C";
+ case LANG_GALICIAN: return "gl_ES";
+ case LANG_GEORGIAN: return "ka_GE";
+ case LANG_GERMAN:
+ switch (sub)
+ {
+ case SUBLANG_GERMAN: return "de_DE";
+ case SUBLANG_GERMAN_SWISS: return "de_CH";
+ case SUBLANG_GERMAN_AUSTRIAN: return "de_AT";
+ case SUBLANG_GERMAN_LUXEMBOURG: return "de_LU";
+ case SUBLANG_GERMAN_LIECHTENSTEIN: return "de_LI";
+ }
+ return "de";
+ case LANG_GREEK: return "el_GR";
+ case 0x74: /* GUARANI */ return "gn_PY";
+ case LANG_GUJARATI: return "gu_IN";
+ case 0x68: /* HAUSA */ return "ha_NG";
+ case 0x75: /* HAWAIIAN */
+ /* FIXME: Do they mean Hawaiian ("haw_US", 1000 speakers)
+ or Hawaii Creole English ("cpe_US", 600000 speakers)? */
+ return "cpe_US";
+ case LANG_HEBREW: return "he_IL";
+ case LANG_HINDI: return "hi_IN";
+ case LANG_HUNGARIAN: return "hu_HU";
+ case 0x69: /* IBIBIO */ return "nic_NG";
+ case LANG_ICELANDIC: return "is_IS";
+ case 0x70: /* IGBO */ return "ibo_NG";
+ case LANG_INDONESIAN: return "id_ID";
+ case 0x5d: /* INUKTITUT */ return "iu_CA";
+ case LANG_ITALIAN:
+ switch (sub)
+ {
+ case SUBLANG_ITALIAN: return "it_IT";
+ case SUBLANG_ITALIAN_SWISS: return "it_CH";
+ }
+ return "it";
+ case LANG_JAPANESE: return "ja_JP";
+ case LANG_KANNADA: return "kn_IN";
+ case 0x71: /* KANURI */ return "kau_NG";
+ case LANG_KASHMIRI:
+ switch (sub)
+ {
+ case SUBLANG_DEFAULT: return "ks_PK";
+ case SUBLANG_KASHMIRI_INDIA: return "ks_IN";
+ }
+ return "ks";
+ case LANG_KAZAK: return "kk_KZ";
+ case LANG_KONKANI:
+ /* FIXME: Adjust this when such locales appear on Unix. */
+ return "kok_IN";
+ case LANG_KOREAN: return "ko_KR";
+ case LANG_KYRGYZ: return "ky_KG";
+ case 0x54: /* LAO */ return "lo_LA";
+ case 0x76: /* LATIN */ return "la_VA";
+ case LANG_LATVIAN: return "lv_LV";
+ case LANG_LITHUANIAN: return "lt_LT";
+ case LANG_MACEDONIAN: return "mk_MK";
+ case LANG_MALAY:
+ switch (sub)
+ {
+ case SUBLANG_MALAY_MALAYSIA: return "ms_MY";
+ case SUBLANG_MALAY_BRUNEI_DARUSSALAM: return "ms_BN";
+ }
+ return "ms";
+ case LANG_MALAYALAM: return "ml_IN";
+ case 0x3a: /* MALTESE */ return "mt_MT";
+ case LANG_MANIPURI:
+ /* FIXME: Adjust this when such locales appear on Unix. */
+ return "mni_IN";
+ case LANG_MARATHI: return "mr_IN";
+ case LANG_MONGOLIAN:
+ return "mn"; /* Ambiguous: could be "mn_CN" or "mn_MN". */
+ case LANG_NEPALI:
+ switch (sub)
+ {
+ case SUBLANG_DEFAULT: return "ne_NP";
+ case SUBLANG_NEPALI_INDIA: return "ne_IN";
+ }
+ return "ne";
+ case LANG_NORWEGIAN:
+ switch (sub)
+ {
+ case SUBLANG_NORWEGIAN_BOKMAL: return "no_NO";
+ case SUBLANG_NORWEGIAN_NYNORSK: return "nn_NO";
+ }
+ return "no";
+ case LANG_ORIYA: return "or_IN";
+ case 0x72: /* OROMO */ return "om_ET";
+ case 0x79: /* PAPIAMENTU */ return "pap_AN";
+ case 0x63: /* PASHTO */
+ return "ps"; /* Ambiguous: could be "ps_PK" or "ps_AF". */
+ case LANG_POLISH: return "pl_PL";
+ case LANG_PORTUGUESE:
+ switch (sub)
+ {
+ case SUBLANG_PORTUGUESE: return "pt_PT";
+ /* Hmm. SUBLANG_PORTUGUESE_BRAZILIAN == SUBLANG_DEFAULT.
+ Same phenomenon as SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. */
+ case SUBLANG_PORTUGUESE_BRAZILIAN: return "pt_BR";
+ }
+ return "pt";
+ case LANG_PUNJABI: return "pa_IN";
+ case 0x17: /* RHAETO-ROMANCE */ return "rm_CH";
+ case LANG_ROMANIAN: return "ro_RO";
+ case LANG_RUSSIAN:
+ return "ru"; /* Ambiguous: could be "ru_RU" or "ru_UA". */
+ case 0x3b: /* SAMI */ return "se_NO";
+ case LANG_SANSKRIT: return "sa_IN";
+ case LANG_SINDHI: return "sd";
+ case 0x5b: /* SINHALESE */ return "si_LK";
+ case LANG_SLOVAK: return "sk_SK";
+ case LANG_SLOVENIAN: return "sl_SI";
+ case 0x77: /* SOMALI */ return "so_SO";
+ case LANG_SORBIAN:
+ /* FIXME: Adjust this when such locales appear on Unix. */
+ return "wen_DE";
+ case LANG_SPANISH:
+ switch (sub)
+ {
+ case SUBLANG_SPANISH: return "es_ES";
+ case SUBLANG_SPANISH_MEXICAN: return "es_MX";
+ case SUBLANG_SPANISH_MODERN:
+ return "es_ES@modern"; /* not seen on Unix */
+ case SUBLANG_SPANISH_GUATEMALA: return "es_GT";
+ case SUBLANG_SPANISH_COSTA_RICA: return "es_CR";
+ case SUBLANG_SPANISH_PANAMA: return "es_PA";
+ case SUBLANG_SPANISH_DOMINICAN_REPUBLIC: return "es_DO";
+ case SUBLANG_SPANISH_VENEZUELA: return "es_VE";
+ case SUBLANG_SPANISH_COLOMBIA: return "es_CO";
+ case SUBLANG_SPANISH_PERU: return "es_PE";
+ case SUBLANG_SPANISH_ARGENTINA: return "es_AR";
+ case SUBLANG_SPANISH_ECUADOR: return "es_EC";
+ case SUBLANG_SPANISH_CHILE: return "es_CL";
+ case SUBLANG_SPANISH_URUGUAY: return "es_UY";
+ case SUBLANG_SPANISH_PARAGUAY: return "es_PY";
+ case SUBLANG_SPANISH_BOLIVIA: return "es_BO";
+ case SUBLANG_SPANISH_EL_SALVADOR: return "es_SV";
+ case SUBLANG_SPANISH_HONDURAS: return "es_HN";
+ case SUBLANG_SPANISH_NICARAGUA: return "es_NI";
+ case SUBLANG_SPANISH_PUERTO_RICO: return "es_PR";
+ }
+ return "es";
+ case 0x30: /* SUTU */ return "bnt_TZ";
+ case LANG_SWAHILI: return "sw_KE";
+ case LANG_SWEDISH:
+ switch (sub)
+ {
+ case SUBLANG_DEFAULT: return "sv_SE";
+ case SUBLANG_SWEDISH_FINLAND: return "sv_FI";
+ }
+ return "sv";
+ case LANG_SYRIAC: return "syr_TR"; /* An extinct language. */
+ case 0x64: /* TAGALOG */ return "tl_PH";
+ case 0x28: /* TAJIK */ return "tg_TJ";
+ case 0x5f: /* TAMAZIGHT */ return "ber_MA";
+ case LANG_TAMIL:
+ return "ta"; /* Ambiguous: could be "ta_IN" or "ta_LK" or "ta_SG". */
+ case LANG_TATAR: return "tt_RU";
+ case LANG_TELUGU: return "te_IN";
+ case LANG_THAI: return "th_TH";
+ case 0x51: /* TIBETAN */ return "bo_CN";
+ case 0x73: /* TIGRINYA */ return "ti_ET";
+ case 0x31: /* TSONGA */ return "ts_ZA";
+ case LANG_TURKISH: return "tr_TR";
+ case 0x42: /* TURKMEN */ return "tk_TM";
+ case LANG_UKRAINIAN: return "uk_UA";
+ case LANG_URDU:
+ switch (sub)
+ {
+ case SUBLANG_URDU_PAKISTAN: return "ur_PK";
+ case SUBLANG_URDU_INDIA: return "ur_IN";
+ }
+ return "ur";
+ case LANG_UZBEK:
+ switch (sub)
+ {
+ /* FIXME: Adjust this when Uzbek locales appear on Unix. */
+ case SUBLANG_UZBEK_LATIN: return "uz_UZ@latin";
+ case SUBLANG_UZBEK_CYRILLIC: return "uz_UZ@cyrillic";
+ }
+ return "uz";
+ case 0x33: /* VENDA */ return "ven_ZA";
+ case LANG_VIETNAMESE: return "vi_VN";
+ case 0x52: /* WELSH */ return "cy_GB";
+ case 0x34: /* XHOSA */ return "xh_ZA";
+ case 0x78: /* YI */ return "sit_CN";
+ case 0x3d: /* YIDDISH */ return "yi_IL";
+ case 0x6a: /* YORUBA */ return "yo_NG";
+ case 0x35: /* ZULU */ return "zu_ZA";
+ default: return "C";
+ }
+
+#endif
+}
Index: or1k-gcc/intl/loadinfo.h
===================================================================
--- or1k-gcc/intl/loadinfo.h (nonexistent)
+++ or1k-gcc/intl/loadinfo.h (revision 728)
@@ -0,0 +1,156 @@
+/* Copyright (C) 1996-1999, 2000-2002 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper , 1996.
+
+ 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 _LOADINFO_H
+#define _LOADINFO_H 1
+
+/* Declarations of locale dependent catalog lookup functions.
+ Implemented in
+
+ localealias.c Possibly replace a locale name by another.
+ explodename.c Split a locale name into its various fields.
+ l10nflist.c Generate a list of filenames of possible message catalogs.
+ finddomain.c Find and open the relevant message catalogs.
+
+ The main function _nl_find_domain() in finddomain.c is declared
+ in gettextP.h.
+ */
+
+#ifndef PARAMS
+# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES
+# define PARAMS(args) args
+# else
+# define PARAMS(args) ()
+# endif
+#endif
+
+#ifndef internal_function
+# define internal_function
+#endif
+
+/* Tell the compiler when a conditional or integer expression is
+ almost always true or almost always false. */
+#ifndef HAVE_BUILTIN_EXPECT
+# define __builtin_expect(expr, val) (expr)
+#endif
+
+/* Separator in PATH like lists of pathnames. */
+#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
+ /* Win32, OS/2, DOS */
+# define PATH_SEPARATOR ';'
+#else
+ /* Unix */
+# define PATH_SEPARATOR ':'
+#endif
+
+/* Encoding of locale name parts. */
+#define CEN_REVISION 1
+#define CEN_SPONSOR 2
+#define CEN_SPECIAL 4
+#define XPG_NORM_CODESET 8
+#define XPG_CODESET 16
+#define TERRITORY 32
+#define CEN_AUDIENCE 64
+#define XPG_MODIFIER 128
+
+#define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE)
+#define XPG_SPECIFIC (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER)
+
+
+struct loaded_l10nfile
+{
+ const char *filename;
+ int decided;
+
+ const void *data;
+
+ struct loaded_l10nfile *next;
+ struct loaded_l10nfile *successor[1];
+};
+
+
+/* Normalize codeset name. There is no standard for the codeset
+ names. Normalization allows the user to use any of the common
+ names. The return value is dynamically allocated and has to be
+ freed by the caller. */
+extern const char *_nl_normalize_codeset PARAMS ((const char *codeset,
+ size_t name_len));
+
+/* Lookup a locale dependent file.
+ *L10NFILE_LIST denotes a pool of lookup results of locale dependent
+ files of the same kind, sorted in decreasing order of ->filename.
+ DIRLIST and DIRLIST_LEN are an argz list of directories in which to
+ look, containing at least one directory (i.e. DIRLIST_LEN > 0).
+ MASK, LANGUAGE, TERRITORY, CODESET, NORMALIZED_CODESET, MODIFIER,
+ SPECIAL, SPONSOR, REVISION are the pieces of the locale name, as
+ produced by _nl_explode_name(). FILENAME is the filename suffix.
+ The return value is the lookup result, either found in *L10NFILE_LIST,
+ or - if DO_ALLOCATE is nonzero - freshly allocated, or possibly NULL.
+ If the return value is non-NULL, it is added to *L10NFILE_LIST, and
+ its ->next field denotes the chaining inside *L10NFILE_LIST, and
+ furthermore its ->successor[] field contains a list of other lookup
+ results from which this lookup result inherits. */
+extern struct loaded_l10nfile *
+_nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list,
+ const char *dirlist, size_t dirlist_len, int mask,
+ const char *language, const char *territory,
+ const char *codeset,
+ const char *normalized_codeset,
+ const char *modifier, const char *special,
+ const char *sponsor, const char *revision,
+ const char *filename, int do_allocate));
+
+/* Lookup the real locale name for a locale alias NAME, or NULL if
+ NAME is not a locale alias (but possibly a real locale name).
+ The return value is statically allocated and must not be freed. */
+extern const char *_nl_expand_alias PARAMS ((const char *name));
+
+/* Split a locale name NAME into its pieces: language, modifier,
+ territory, codeset, special, sponsor, revision.
+ NAME gets destructively modified: NUL bytes are inserted here and
+ there. *LANGUAGE gets assigned NAME. Each of *MODIFIER, *TERRITORY,
+ *CODESET, *SPECIAL, *SPONSOR, *REVISION gets assigned either a
+ pointer into the old NAME string, or NULL. *NORMALIZED_CODESET
+ gets assigned the expanded *CODESET, if it is different from *CODESET;
+ this one is dynamically allocated and has to be freed by the caller.
+ The return value is a bitmask, where each bit corresponds to one
+ filled-in value:
+ XPG_MODIFIER, CEN_AUDIENCE for *MODIFIER,
+ TERRITORY for *TERRITORY,
+ XPG_CODESET for *CODESET,
+ XPG_NORM_CODESET for *NORMALIZED_CODESET,
+ CEN_SPECIAL for *SPECIAL,
+ CEN_SPONSOR for *SPONSOR,
+ CEN_REVISION for *REVISION.
+ */
+extern int _nl_explode_name PARAMS ((char *name, const char **language,
+ const char **modifier,
+ const char **territory,
+ const char **codeset,
+ const char **normalized_codeset,
+ const char **special,
+ const char **sponsor,
+ const char **revision));
+
+/* Split a locale name NAME into a leading language part and all the
+ rest. Return a pointer to the first character after the language,
+ i.e. to the first byte of the rest. */
+extern char *_nl_find_language PARAMS ((const char *name));
+
+#endif /* loadinfo.h */
Index: or1k-gcc/intl/ngettext.c
===================================================================
--- or1k-gcc/intl/ngettext.c (nonexistent)
+++ or1k-gcc/intl/ngettext.c (revision 728)
@@ -0,0 +1,68 @@
+/* Implementation of ngettext(3) function.
+ Copyright (C) 1995, 1997, 2000, 2001, 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. */
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+#ifdef _LIBC
+# define __need_NULL
+# include
+#else
+# include /* Just for NULL. */
+#endif
+
+#include "gettextP.h"
+#ifdef _LIBC
+# include
+#else
+# include "libgnuintl.h"
+#endif
+
+#include
+
+/* @@ end of prolog @@ */
+
+/* Names for the libintl functions are a problem. They must not clash
+ with existing names and they should follow ANSI C. But this source
+ code is also used in GNU C Library where the names have a __
+ prefix. So we have to make a difference here. */
+#ifdef _LIBC
+# define NGETTEXT __ngettext
+# define DCNGETTEXT __dcngettext
+#else
+# define NGETTEXT libintl_ngettext
+# define DCNGETTEXT libintl_dcngettext
+#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). */
+char *
+NGETTEXT (msgid1, msgid2, n)
+ const char *msgid1;
+ const char *msgid2;
+ unsigned long int n;
+{
+ return DCNGETTEXT (NULL, msgid1, msgid2, n, LC_MESSAGES);
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library. */
+weak_alias (__ngettext, ngettext);
+#endif
Index: or1k-gcc/intl/locale.alias
===================================================================
--- or1k-gcc/intl/locale.alias (nonexistent)
+++ or1k-gcc/intl/locale.alias (revision 728)
@@ -0,0 +1,78 @@
+# Locale name alias data base.
+# Copyright (C) 1996,1997,1998,1999,2000,2001 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.
+
+# The format of this file is the same as for the corresponding file of
+# the X Window System, which normally can be found in
+# /usr/lib/X11/locale/locale.alias
+# A single line contains two fields: an alias and a substitution value.
+# All entries are case independent.
+
+# Note: This file is far from being complete. If you have a value for
+# your own site which you think might be useful for others too, share
+# it with the rest of us. Send it using the `glibcbug' script to
+# bugs@gnu.org.
+
+# Packages using this file:
+
+bokmal no_NO.ISO-8859-1
+bokmål no_NO.ISO-8859-1
+catalan ca_ES.ISO-8859-1
+croatian hr_HR.ISO-8859-2
+czech cs_CZ.ISO-8859-2
+danish da_DK.ISO-8859-1
+dansk da_DK.ISO-8859-1
+deutsch de_DE.ISO-8859-1
+dutch nl_NL.ISO-8859-1
+eesti et_EE.ISO-8859-1
+estonian et_EE.ISO-8859-1
+finnish fi_FI.ISO-8859-1
+français fr_FR.ISO-8859-1
+french fr_FR.ISO-8859-1
+galego gl_ES.ISO-8859-1
+galician gl_ES.ISO-8859-1
+german de_DE.ISO-8859-1
+greek el_GR.ISO-8859-7
+hebrew he_IL.ISO-8859-8
+hrvatski hr_HR.ISO-8859-2
+hungarian hu_HU.ISO-8859-2
+icelandic is_IS.ISO-8859-1
+italian it_IT.ISO-8859-1
+japanese ja_JP.eucJP
+japanese.euc ja_JP.eucJP
+ja_JP ja_JP.eucJP
+ja_JP.ujis ja_JP.eucJP
+japanese.sjis ja_JP.SJIS
+korean ko_KR.eucKR
+korean.euc ko_KR.eucKR
+ko_KR ko_KR.eucKR
+lithuanian lt_LT.ISO-8859-13
+nb_NO no_NO.ISO-8859-1
+nb_NO.ISO-8859-1 no_NO.ISO-8859-1
+norwegian no_NO.ISO-8859-1
+nynorsk nn_NO.ISO-8859-1
+polish pl_PL.ISO-8859-2
+portuguese pt_PT.ISO-8859-1
+romanian ro_RO.ISO-8859-2
+russian ru_RU.ISO-8859-5
+slovak sk_SK.ISO-8859-2
+slovene sl_SI.ISO-8859-2
+slovenian sl_SI.ISO-8859-2
+spanish es_ES.ISO-8859-1
+swedish sv_SE.ISO-8859-1
+thai th_TH.TIS-620
+turkish tr_TR.ISO-8859-9
Index: or1k-gcc/intl/ChangeLog
===================================================================
--- or1k-gcc/intl/ChangeLog (nonexistent)
+++ or1k-gcc/intl/ChangeLog (revision 728)
@@ -0,0 +1,176 @@
+2010-06-27 Ralf Wildenhues
+
+ PR bootstrap/44621
+ * configure: Regenerate.
+
+2010-04-02 Ralf Wildenhues
+
+ * aclocal.m4: Regenerate.
+
+2009-10-15 Jim Blandy
+
+ * libgnuintl.h (_INTL_MAY_RETURN_STRING_ARG, gettext, dgettext)
+ (dcgettext, ngettext, dngettext, dcngettext): Backport changes
+ from current gettext to provide GCC format_arg attributes.
+
+2009-08-24 Ralf Wildenhues
+
+ * configure.ac (AC_PREREQ): Bump to 2.64.
+
+2009-08-22 Ralf Wildenhues
+
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+ * config.h.in: Regenerate.
+
+2009-07-30 Ralf Wildenhues
+
+ * Makefile.in (aclocal_deps): New variable.
+ ($(srcdir)/aclocal.m4): Use it, for portable makefile syntax.
+
+2008-06-17 Ralf Wildenhues
+
+ * configure: Regenerate.
+
+2008-06-16 Ralf Wildenhues
+
+ * Makefile.in (datarootdir): New variable.
+
+2008-04-18 Paolo Bonzini
+
+ PR bootstrap/35457
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
+2008-03-17 Ralf Wildenhues
+
+ * aclocal.m4: Regenerate.
+ * configure: Likewise.
+
+2006-09-27 Alan Modra
+
+ * Makefile.in (distclean): Delete config files.
+
+2006-09-13 Eric Botcazou
+
+ PR other/23541
+ PR other/26507
+ Backport from gettext repository:
+
+ 2003-09-04 Bruno Haible
+ * dgettext.c: Include after gettextP.h, not before. This
+ ensures that libintl_dcgettext is correctly declared on Solaris.
+ (Needed because Solaris includes libintl.h.)
+ * dngettext.c: Likewise, for the libintl_dcngettext declaration.
+
+2006-06-07 Daniel Jacobowitz
+
+ * Makefile.in (install-info, install-dvi, install-ps, install-pdf):
+ New dummy targets.
+
+2005-05-23 Carlos O'Donell
+
+ * Makefile.in: Add info dvi ps pdf html install-html to .PHONY
+ Add install-html target.
+
+2005-05-13 Nick Clifton
+
+ * Update the address and phone number of the FSF organization in
+ the GPL notices in the following files:
+ Makefile.in, bindtextdom.c, dcgettext.c, dcigettext.c,
+ dcngettext.c, dgettext.c, dngettext.c, eval-plural.h,
+ explodename.c, finddomain.c, gettext.c, gettextP.h, gmo.h,
+ hash-string.h, intl-compat.c, l10nflist.c, libgnuintl.h,
+ loadinfo.h, loadmsgcat.c, localcharset.c, localcharset.h,
+ locale.alias, localealias.c, localename.c, log.c, ngettext.c,
+ osdep.c, plural-exp.c, plural-exp.h, plural.c, plural.y,
+ relocatable.c, relocatable.h, textdomain.c
+
+2004-11-24 Kelley Cook
+
+ * aclocal.m4: Regenerate.
+
+2004-09-23 Kelley Cook
+
+ * Makefile.in (config.h.in): Correct dependencies.
+ (stamp-h1): Likewise.
+ (config.intl): Likewise.
+
+2004-09-22 Kelley Cook
+
+ * configure.ac (AC_CONFIG_MACRO_DIR): New.
+ (ACLOCAL, AUTOCONF, AUTOHEADER, MAINT): Substitute.
+ * Makefile.in: Update with maintainer mode rules.
+ * README: Update aclocal regeneration instructions.
+ * aclocal.m4, configure: Regenerate.
+
+2004-09-22 Kelley Cook
+
+ * .cvsignore: Ignore autom4te.cache
+
+2004-04-25 Paolo Bonzini
+
+ * configure.ac: Point config.intl to the parent directory of
+ ${top_builddir}.
+ * configure: Regenerate.
+
+2004-03-10 Kelley Cook
+
+ * configure.ac: Bump AC_PREREQ to 2.59.
+ * configure: Regenerate.
+ * config.h.in: Regenerate.
+
+2004-02-29 Nathanael Nerode
+
+ * configure.in: Convert to autoconf 2.57, gratuitous stylistic
+ cleanup, rename to configure.ac.
+ * configure.ac: Renamed from configure.in.
+ * config.h.in: Rebuilt with autoheader 2.57.
+ * configure: Rebuilt with autoconf 2.57
+ * README: Update to reflect rename of configure.in to configure.ac.
+
+2003-07-07 Zack Weinberg
+
+ * README: Update.
+ * Makefile.in (INSTALL, INSTALL_DATA, MKINSTALLDIRS,
+ mkinstalldirs, gettextsrcdir, l): Delete.
+ (COMPILE): Add $(DEFS-$@), remove $(XCFLAGS).
+ (HEADERS): libgnuintl.h not libgnuintl.h.in. Remove os2compat.h.
+ (SOURCES): Remove os2compat.c.
+ (DEFS-dcigettext.o, DEFS-localealias.o, DEFS-localcharset.o,
+ DEFS-relocatable.o): New.
+ (all-yes): Add config.intl.
+ (libintl.h): Use cp, not cat.
+ (INCLUDES): Remove -I..
+ (TAGS, CTAGS, ID): Word wrap.
+ (mostlyclean, distclean): Remove junk.
+ (config.intl): New rule.
+ * aclocal.m4: sinclude ../config/progtest.m4 instead of
+ including it inline.
+ * config.intl.in: New file.
+ * configure.in: Take out unnecessary AC_CONFIG_AUX_DIR.
+ Take out AC_DEFINEs for LOCALEDIR, LOCALE_ALIAS_PATH,
+ LIBDIR, INSTALLDIR. Set LIBINTL_DEP and INCINTL and AC_SUBST
+ them. Add config.intl to AC_OUTPUT.
+ * os2compat.c, os2compat.h: Delete, unused.
+
+2003-07-04 Zack Weinberg
+
+ * Makefile.in: Remove unnecessary capabilities for
+ installation, build of shared libraries, generation of
+ distribution tarballs, etc. Fix all the places that rely on
+ the parent directory. Don't generate libgnuintl.h from
+ anything; do generate $(objdir)/libintl.h from libgnuintl.h if
+ necessary. Adjust DEFS for use of config.h.
+ * libgnuintl.h.in: Rename libgnuintl.h.
+ * README: New file.
+ * config.charset, ref-add.sin, ref-del.sin: Delete (unused).
+ * COPYING.LIB-2.0, COPYING.LIB-2.1: Delete (redundant).
+ * aclocal.m4: New; generated per instructions in gettext manual.
+ * configure.in: New; written from scratch for this configuration.
+ * configure, config.h.in: Generated.
+
+2003-05-22 GNU
+
+ * Version 0.12.1 released.
+
Index: or1k-gcc/intl/finddomain.c
===================================================================
--- or1k-gcc/intl/finddomain.c (nonexistent)
+++ or1k-gcc/intl/finddomain.c (revision 728)
@@ -0,0 +1,195 @@
+/* Handle list of needed message catalogs
+ Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
+ Written by Ulrich Drepper , 1995.
+
+ 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. */
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+#include
+#include
+#include
+#include
+
+#if defined HAVE_UNISTD_H || defined _LIBC
+# include
+#endif
+
+#include "gettextP.h"
+#ifdef _LIBC
+# include
+#else
+# include "libgnuintl.h"
+#endif
+
+/* @@ end of prolog @@ */
+/* List of already loaded domains. */
+static struct loaded_l10nfile *_nl_loaded_domains;
+
+
+/* Return a data structure describing the message catalog described by
+ the DOMAINNAME and CATEGORY parameters with respect to the currently
+ established bindings. */
+struct loaded_l10nfile *
+internal_function
+_nl_find_domain (dirname, locale, domainname, domainbinding)
+ const char *dirname;
+ char *locale;
+ const char *domainname;
+ struct binding *domainbinding;
+{
+ struct loaded_l10nfile *retval;
+ const char *language;
+ const char *modifier;
+ const char *territory;
+ const char *codeset;
+ const char *normalized_codeset;
+ const char *special;
+ const char *sponsor;
+ const char *revision;
+ const char *alias_value;
+ int mask;
+
+ /* LOCALE can consist of up to four recognized parts for the XPG syntax:
+
+ language[_territory[.codeset]][@modifier]
+
+ and six parts for the CEN syntax:
+
+ language[_territory][+audience][+special][,[sponsor][_revision]]
+
+ Beside the first part all of them are allowed to be missing. If
+ the full specified locale is not found, the less specific one are
+ looked for. The various parts will be stripped off according to
+ the following order:
+ (1) revision
+ (2) sponsor
+ (3) special
+ (4) codeset
+ (5) normalized codeset
+ (6) territory
+ (7) audience/modifier
+ */
+
+ /* If we have already tested for this locale entry there has to
+ be one data set in the list of loaded domains. */
+ retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
+ strlen (dirname) + 1, 0, locale, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, domainname, 0);
+ if (retval != NULL)
+ {
+ /* We know something about this locale. */
+ int cnt;
+
+ if (retval->decided == 0)
+ _nl_load_domain (retval, domainbinding);
+
+ if (retval->data != NULL)
+ return retval;
+
+ for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
+ {
+ if (retval->successor[cnt]->decided == 0)
+ _nl_load_domain (retval->successor[cnt], domainbinding);
+
+ if (retval->successor[cnt]->data != NULL)
+ break;
+ }
+ return cnt >= 0 ? retval : NULL;
+ /* NOTREACHED */
+ }
+
+ /* See whether the locale value is an alias. If yes its value
+ *overwrites* the alias name. No test for the original value is
+ done. */
+ alias_value = _nl_expand_alias (locale);
+ if (alias_value != NULL)
+ {
+#if defined _LIBC || defined HAVE_STRDUP
+ locale = strdup (alias_value);
+ if (locale == NULL)
+ return NULL;
+#else
+ size_t len = strlen (alias_value) + 1;
+ locale = (char *) malloc (len);
+ if (locale == NULL)
+ return NULL;
+
+ memcpy (locale, alias_value, len);
+#endif
+ }
+
+ /* Now we determine the single parts of the locale name. First
+ look for the language. Termination symbols are `_' and `@' if
+ we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */
+ mask = _nl_explode_name (locale, &language, &modifier, &territory,
+ &codeset, &normalized_codeset, &special,
+ &sponsor, &revision);
+
+ /* Create all possible locale entries which might be interested in
+ generalization. */
+ retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
+ strlen (dirname) + 1, mask, language, territory,
+ codeset, normalized_codeset, modifier, special,
+ sponsor, revision, domainname, 1);
+ if (retval == NULL)
+ /* This means we are out of core. */
+ return NULL;
+
+ if (retval->decided == 0)
+ _nl_load_domain (retval, domainbinding);
+ if (retval->data == NULL)
+ {
+ int cnt;
+ for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
+ {
+ if (retval->successor[cnt]->decided == 0)
+ _nl_load_domain (retval->successor[cnt], domainbinding);
+ if (retval->successor[cnt]->data != NULL)
+ break;
+ }
+ }
+
+ /* The room for an alias was dynamically allocated. Free it now. */
+ if (alias_value != NULL)
+ free (locale);
+
+ /* The space for normalized_codeset is dynamically allocated. Free it. */
+ if (mask & XPG_NORM_CODESET)
+ free ((void *) normalized_codeset);
+
+ return retval;
+}
+
+
+#ifdef _LIBC
+libc_freeres_fn (free_mem)
+{
+ struct loaded_l10nfile *runp = _nl_loaded_domains;
+
+ while (runp != NULL)
+ {
+ struct loaded_l10nfile *here = runp;
+ if (runp->data != NULL)
+ _nl_unload_domain ((struct loaded_domain *) runp->data);
+ runp = runp->next;
+ free ((char *) here->filename);
+ free (here);
+ }
+}
+#endif
Index: or1k-gcc/intl/gettextP.h
===================================================================
--- or1k-gcc/intl/gettextP.h (nonexistent)
+++ or1k-gcc/intl/gettextP.h (revision 728)
@@ -0,0 +1,224 @@
+/* Header describing internals of libintl library.
+ Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
+ Written by Ulrich Drepper , 1995.
+
+ 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 _GETTEXTP_H
+#define _GETTEXTP_H
+
+#include /* Get size_t. */
+
+#ifdef _LIBC
+# include "../iconv/gconv_int.h"
+#else
+# if HAVE_ICONV
+# include
+# endif
+#endif
+
+#include "loadinfo.h"
+
+#include "gmo.h" /* Get nls_uint32. */
+
+/* @@ end of prolog @@ */
+
+#ifndef PARAMS
+# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES
+# define PARAMS(args) args
+# else
+# define PARAMS(args) ()
+# endif
+#endif
+
+#ifndef internal_function
+# define internal_function
+#endif
+
+#ifndef attribute_hidden
+# define attribute_hidden
+#endif
+
+/* Tell the compiler when a conditional or integer expression is
+ almost always true or almost always false. */
+#ifndef HAVE_BUILTIN_EXPECT
+# define __builtin_expect(expr, val) (expr)
+#endif
+
+#ifndef W
+# define W(flag, data) ((flag) ? SWAP (data) : (data))
+#endif
+
+
+#ifdef _LIBC
+# include
+# define SWAP(i) bswap_32 (i)
+#else
+static inline nls_uint32
+SWAP (i)
+ nls_uint32 i;
+{
+ return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
+}
+#endif
+
+
+/* In-memory representation of system dependent string. */
+struct sysdep_string_desc
+{
+ /* Length of addressed string, including the trailing NUL. */
+ size_t length;
+ /* Pointer to addressed string. */
+ const char *pointer;
+};
+
+/* The representation of an opened message catalog. */
+struct loaded_domain
+{
+ /* Pointer to memory containing the .mo file. */
+ const char *data;
+ /* 1 if the memory is mmap()ed, 0 if the memory is malloc()ed. */
+ int use_mmap;
+ /* Size of mmap()ed memory. */
+ size_t mmap_size;
+ /* 1 if the .mo file uses a different endianness than this machine. */
+ int must_swap;
+ /* Pointer to additional malloc()ed memory. */
+ void *malloced;
+
+ /* Number of static strings pairs. */
+ nls_uint32 nstrings;
+ /* Pointer to descriptors of original strings in the file. */
+ const struct string_desc *orig_tab;
+ /* Pointer to descriptors of translated strings in the file. */
+ const struct string_desc *trans_tab;
+
+ /* Number of system dependent strings pairs. */
+ nls_uint32 n_sysdep_strings;
+ /* Pointer to descriptors of original sysdep strings. */
+ const struct sysdep_string_desc *orig_sysdep_tab;
+ /* Pointer to descriptors of translated sysdep strings. */
+ const struct sysdep_string_desc *trans_sysdep_tab;
+
+ /* Size of hash table. */
+ nls_uint32 hash_size;
+ /* Pointer to hash table. */
+ const nls_uint32 *hash_tab;
+ /* 1 if the hash table uses a different endianness than this machine. */
+ int must_swap_hash_tab;
+
+ int codeset_cntr;
+#ifdef _LIBC
+ __gconv_t conv;
+#else
+# if HAVE_ICONV
+ iconv_t conv;
+# endif
+#endif
+ char **conv_tab;
+
+ struct expression *plural;
+ unsigned long int nplurals;
+};
+
+/* We want to allocate a string at the end of the struct. But ISO C
+ doesn't allow zero sized arrays. */
+#ifdef __GNUC__
+# define ZERO 0
+#else
+# define ZERO 1
+#endif
+
+/* A set of settings bound to a message domain. Used to store settings
+ from bindtextdomain() and bind_textdomain_codeset(). */
+struct binding
+{
+ struct binding *next;
+ char *dirname;
+ int codeset_cntr; /* Incremented each time codeset changes. */
+ char *codeset;
+ char domainname[ZERO];
+};
+
+/* A counter which is incremented each time some previous translations
+ become invalid.
+ This variable is part of the external ABI of the GNU libintl. */
+extern int _nl_msg_cat_cntr;
+
+#ifndef _LIBC
+const char *_nl_locale_name PARAMS ((int category, const char *categoryname));
+#endif
+
+struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname,
+ char *__locale,
+ const char *__domainname,
+ struct binding *__domainbinding))
+ internal_function;
+void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain,
+ struct binding *__domainbinding))
+ internal_function;
+void _nl_unload_domain PARAMS ((struct loaded_domain *__domain))
+ internal_function;
+const char *_nl_init_domain_conv PARAMS ((struct loaded_l10nfile *__domain_file,
+ struct loaded_domain *__domain,
+ struct binding *__domainbinding))
+ internal_function;
+void _nl_free_domain_conv PARAMS ((struct loaded_domain *__domain))
+ internal_function;
+
+char *_nl_find_msg PARAMS ((struct loaded_l10nfile *domain_file,
+ struct binding *domainbinding,
+ const char *msgid, size_t *lengthp))
+ internal_function;
+
+#ifdef _LIBC
+extern char *__gettext PARAMS ((const char *__msgid));
+extern char *__dgettext PARAMS ((const char *__domainname,
+ const char *__msgid));
+extern char *__dcgettext PARAMS ((const char *__domainname,
+ const char *__msgid, int __category));
+extern char *__ngettext PARAMS ((const char *__msgid1, const char *__msgid2,
+ unsigned long int __n));
+extern char *__dngettext PARAMS ((const char *__domainname,
+ const char *__msgid1, const char *__msgid2,
+ unsigned long int n));
+extern char *__dcngettext PARAMS ((const char *__domainname,
+ const char *__msgid1, const char *__msgid2,
+ unsigned long int __n, int __category));
+extern char *__dcigettext PARAMS ((const char *__domainname,
+ const char *__msgid1, const char *__msgid2,
+ int __plural, unsigned long int __n,
+ int __category));
+extern char *__textdomain PARAMS ((const char *__domainname));
+extern char *__bindtextdomain PARAMS ((const char *__domainname,
+ const char *__dirname));
+extern char *__bind_textdomain_codeset PARAMS ((const char *__domainname,
+ const char *__codeset));
+#else
+/* Declare the exported libintl_* functions, in a way that allows us to
+ call them under their real name. */
+# define _INTL_REDIRECT_MACROS
+# include "libintl.h"
+extern char *libintl_dcigettext PARAMS ((const char *__domainname,
+ const char *__msgid1,
+ const char *__msgid2,
+ int __plural, unsigned long int __n,
+ int __category));
+#endif
+
+/* @@ begin of epilog @@ */
+
+#endif /* gettextP.h */
Index: or1k-gcc/intl/dcngettext.c
===================================================================
--- or1k-gcc/intl/dcngettext.c (nonexistent)
+++ or1k-gcc/intl/dcngettext.c (revision 728)
@@ -0,0 +1,60 @@
+/* Implementation of the dcngettext(3) function.
+ Copyright (C) 1995-1999, 2000, 2001, 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. */
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+#include "gettextP.h"
+#ifdef _LIBC
+# include
+#else
+# include "libgnuintl.h"
+#endif
+
+/* @@ end of prolog @@ */
+
+/* Names for the libintl functions are a problem. They must not clash
+ with existing names and they should follow ANSI C. But this source
+ code is also used in GNU C Library where the names have a __
+ prefix. So we have to make a difference here. */
+#ifdef _LIBC
+# define DCNGETTEXT __dcngettext
+# define DCIGETTEXT __dcigettext
+#else
+# define DCNGETTEXT libintl_dcngettext
+# define DCIGETTEXT libintl_dcigettext
+#endif
+
+/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
+ locale. */
+char *
+DCNGETTEXT (domainname, msgid1, msgid2, n, category)
+ const char *domainname;
+ const char *msgid1;
+ const char *msgid2;
+ unsigned long int n;
+ int category;
+{
+ return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category);
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library. */
+weak_alias (__dcngettext, dcngettext);
+#endif
Index: or1k-gcc/intl/osdep.c
===================================================================
--- or1k-gcc/intl/osdep.c (nonexistent)
+++ or1k-gcc/intl/osdep.c (revision 728)
@@ -0,0 +1,24 @@
+/* OS dependent parts of libintl.
+ Copyright (C) 2001-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. */
+
+#if defined __EMX__
+# include "os2compat.c"
+#else
+/* Avoid AIX compiler warning. */
+typedef int dummy;
+#endif
Index: or1k-gcc/intl/libgnuintl.h
===================================================================
--- or1k-gcc/intl/libgnuintl.h (nonexistent)
+++ or1k-gcc/intl/libgnuintl.h (revision 728)
@@ -0,0 +1,330 @@
+/* Message catalogs for internationalization.
+ Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU 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
+
+/* 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, defines __LOCALE_H (or _LOCALE_H in Solaris 2.5)
+ then includes (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 ? 1 : -1)
+
+/* Resolve a platform specific conflict on DJGPP. GNU gettext takes
+ precedence over _conio_gettext. */
+#ifdef __DJGPP__
+# undef gettext
+#endif
+
+/* Use _INTL_PARAMS, not PARAMS, in order to avoid clashes with identifiers
+ used by programs. Similarly, test __PROTOTYPES, not PROTOTYPES. */
+#ifndef _INTL_PARAMS
+# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES
+# define _INTL_PARAMS(args) args
+# else
+# define _INTL_PARAMS(args) ()
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* 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 __GNUC__ >= 2 && !defined __APPLE_CC__ && (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 __GNUC__ >= 3 && !(__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 _INTL_PARAMS ((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 _INTL_PARAMS ((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 _INTL_PARAMS ((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 _INTL_PARAMS ((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 _INTL_PARAMS ((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 _INTL_PARAMS ((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 _INTL_PARAMS ((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 _INTL_PARAMS ((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 _INTL_PARAMS ((const char *__domainname,
+ const char *__codeset))
+ _INTL_ASM (libintl_bind_textdomain_codeset);
+#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 _INTL_PARAMS ((const char *orig_prefix,
+ const char *curr_prefix));
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* libintl.h */
Index: or1k-gcc/intl/l10nflist.c
===================================================================
--- or1k-gcc/intl/l10nflist.c (nonexistent)
+++ or1k-gcc/intl/l10nflist.c (revision 728)
@@ -0,0 +1,453 @@
+/* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Contributed by Ulrich Drepper , 1995.
+
+ 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. */
+
+/* Tell glibc's to provide a prototype for stpcpy().
+ This must come before because may include
+ , and once has been included, it's too late. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+#include
+
+#if defined _LIBC || defined HAVE_ARGZ_H
+# include
+#endif
+#include
+#include
+#include
+
+#include "loadinfo.h"
+
+/* On some strange systems still no definition of NULL is found. Sigh! */
+#ifndef NULL
+# if defined __STDC__ && __STDC__
+# define NULL ((void *) 0)
+# else
+# define NULL 0
+# endif
+#endif
+
+/* @@ end of prolog @@ */
+
+#ifdef _LIBC
+/* Rename the non ANSI C functions. This is required by the standard
+ because some ANSI C functions will require linking with this object
+ file and the name space must not be polluted. */
+# ifndef stpcpy
+# define stpcpy(dest, src) __stpcpy(dest, src)
+# endif
+#else
+# ifndef HAVE_STPCPY
+static char *stpcpy PARAMS ((char *dest, const char *src));
+# endif
+#endif
+
+/* Pathname support.
+ ISSLASH(C) tests whether C is a directory separator character.
+ IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not,
+ it may be concatenated to a directory pathname.
+ */
+#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
+ /* Win32, OS/2, DOS */
+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+# define HAS_DEVICE(P) \
+ ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
+ && (P)[1] == ':')
+# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P))
+#else
+ /* Unix */
+# define ISSLASH(C) ((C) == '/')
+# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0])
+#endif
+
+/* Define function which are usually not available. */
+
+#if !defined _LIBC && !defined HAVE___ARGZ_COUNT
+/* Returns the number of strings in ARGZ. */
+static size_t argz_count__ PARAMS ((const char *argz, size_t len));
+
+static size_t
+argz_count__ (argz, len)
+ const char *argz;
+ size_t len;
+{
+ size_t count = 0;
+ while (len > 0)
+ {
+ size_t part_len = strlen (argz);
+ argz += part_len + 1;
+ len -= part_len + 1;
+ count++;
+ }
+ return count;
+}
+# undef __argz_count
+# define __argz_count(argz, len) argz_count__ (argz, len)
+#else
+# ifdef _LIBC
+# define __argz_count(argz, len) INTUSE(__argz_count) (argz, len)
+# endif
+#endif /* !_LIBC && !HAVE___ARGZ_COUNT */
+
+#if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY
+/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's
+ except the last into the character SEP. */
+static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep));
+
+static void
+argz_stringify__ (argz, len, sep)
+ char *argz;
+ size_t len;
+ int sep;
+{
+ while (len > 0)
+ {
+ size_t part_len = strlen (argz);
+ argz += part_len;
+ len -= part_len + 1;
+ if (len > 0)
+ *argz++ = sep;
+ }
+}
+# undef __argz_stringify
+# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep)
+#else
+# ifdef _LIBC
+# define __argz_stringify(argz, len, sep) \
+ INTUSE(__argz_stringify) (argz, len, sep)
+# endif
+#endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */
+
+#if !defined _LIBC && !defined HAVE___ARGZ_NEXT
+static char *argz_next__ PARAMS ((char *argz, size_t argz_len,
+ const char *entry));
+
+static char *
+argz_next__ (argz, argz_len, entry)
+ char *argz;
+ size_t argz_len;
+ const char *entry;
+{
+ if (entry)
+ {
+ if (entry < argz + argz_len)
+ entry = strchr (entry, '\0') + 1;
+
+ return entry >= argz + argz_len ? NULL : (char *) entry;
+ }
+ else
+ if (argz_len > 0)
+ return argz;
+ else
+ return 0;
+}
+# undef __argz_next
+# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry)
+#endif /* !_LIBC && !HAVE___ARGZ_NEXT */
+
+
+/* Return number of bits set in X. */
+static int pop PARAMS ((int x));
+
+static inline int
+pop (x)
+ int x;
+{
+ /* We assume that no more than 16 bits are used. */
+ x = ((x & ~0x5555) >> 1) + (x & 0x5555);
+ x = ((x & ~0x3333) >> 2) + (x & 0x3333);
+ x = ((x >> 4) + x) & 0x0f0f;
+ x = ((x >> 8) + x) & 0xff;
+
+ return x;
+}
+
+
+struct loaded_l10nfile *
+_nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language,
+ territory, codeset, normalized_codeset, modifier, special,
+ sponsor, revision, filename, do_allocate)
+ struct loaded_l10nfile **l10nfile_list;
+ const char *dirlist;
+ size_t dirlist_len;
+ int mask;
+ const char *language;
+ const char *territory;
+ const char *codeset;
+ const char *normalized_codeset;
+ const char *modifier;
+ const char *special;
+ const char *sponsor;
+ const char *revision;
+ const char *filename;
+ int do_allocate;
+{
+ char *abs_filename;
+ struct loaded_l10nfile **lastp;
+ struct loaded_l10nfile *retval;
+ char *cp;
+ size_t dirlist_count;
+ size_t entries;
+ int cnt;
+
+ /* If LANGUAGE contains an absolute directory specification, we ignore
+ DIRLIST. */
+ if (IS_ABSOLUTE_PATH (language))
+ dirlist_len = 0;
+
+ /* Allocate room for the full file name. */
+ abs_filename = (char *) malloc (dirlist_len
+ + strlen (language)
+ + ((mask & TERRITORY) != 0
+ ? strlen (territory) + 1 : 0)
+ + ((mask & XPG_CODESET) != 0
+ ? strlen (codeset) + 1 : 0)
+ + ((mask & XPG_NORM_CODESET) != 0
+ ? strlen (normalized_codeset) + 1 : 0)
+ + (((mask & XPG_MODIFIER) != 0
+ || (mask & CEN_AUDIENCE) != 0)
+ ? strlen (modifier) + 1 : 0)
+ + ((mask & CEN_SPECIAL) != 0
+ ? strlen (special) + 1 : 0)
+ + (((mask & CEN_SPONSOR) != 0
+ || (mask & CEN_REVISION) != 0)
+ ? (1 + ((mask & CEN_SPONSOR) != 0
+ ? strlen (sponsor) : 0)
+ + ((mask & CEN_REVISION) != 0
+ ? strlen (revision) + 1 : 0)) : 0)
+ + 1 + strlen (filename) + 1);
+
+ if (abs_filename == NULL)
+ return NULL;
+
+ /* Construct file name. */
+ cp = abs_filename;
+ if (dirlist_len > 0)
+ {
+ memcpy (cp, dirlist, dirlist_len);
+ __argz_stringify (cp, dirlist_len, PATH_SEPARATOR);
+ cp += dirlist_len;
+ cp[-1] = '/';
+ }
+
+ cp = stpcpy (cp, language);
+
+ if ((mask & TERRITORY) != 0)
+ {
+ *cp++ = '_';
+ cp = stpcpy (cp, territory);
+ }
+ if ((mask & XPG_CODESET) != 0)
+ {
+ *cp++ = '.';
+ cp = stpcpy (cp, codeset);
+ }
+ if ((mask & XPG_NORM_CODESET) != 0)
+ {
+ *cp++ = '.';
+ cp = stpcpy (cp, normalized_codeset);
+ }
+ if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0)
+ {
+ /* This component can be part of both syntaces but has different
+ leading characters. For CEN we use `+', else `@'. */
+ *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@';
+ cp = stpcpy (cp, modifier);
+ }
+ if ((mask & CEN_SPECIAL) != 0)
+ {
+ *cp++ = '+';
+ cp = stpcpy (cp, special);
+ }
+ if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0)
+ {
+ *cp++ = ',';
+ if ((mask & CEN_SPONSOR) != 0)
+ cp = stpcpy (cp, sponsor);
+ if ((mask & CEN_REVISION) != 0)
+ {
+ *cp++ = '_';
+ cp = stpcpy (cp, revision);
+ }
+ }
+
+ *cp++ = '/';
+ stpcpy (cp, filename);
+
+ /* Look in list of already loaded domains whether it is already
+ available. */
+ lastp = l10nfile_list;
+ for (retval = *l10nfile_list; retval != NULL; retval = retval->next)
+ if (retval->filename != NULL)
+ {
+ int compare = strcmp (retval->filename, abs_filename);
+ if (compare == 0)
+ /* We found it! */
+ break;
+ if (compare < 0)
+ {
+ /* It's not in the list. */
+ retval = NULL;
+ break;
+ }
+
+ lastp = &retval->next;
+ }
+
+ if (retval != NULL || do_allocate == 0)
+ {
+ free (abs_filename);
+ return retval;
+ }
+
+ dirlist_count = (dirlist_len > 0 ? __argz_count (dirlist, dirlist_len) : 1);
+
+ /* Allocate a new loaded_l10nfile. */
+ retval =
+ (struct loaded_l10nfile *)
+ malloc (sizeof (*retval)
+ + (((dirlist_count << pop (mask)) + (dirlist_count > 1 ? 1 : 0))
+ * sizeof (struct loaded_l10nfile *)));
+ if (retval == NULL)
+ return NULL;
+
+ retval->filename = abs_filename;
+
+ /* We set retval->data to NULL here; it is filled in later.
+ Setting retval->decided to 1 here means that retval does not
+ correspond to a real file (dirlist_count > 1) or is not worth
+ looking up (if an unnormalized codeset was specified). */
+ retval->decided = (dirlist_count > 1
+ || ((mask & XPG_CODESET) != 0
+ && (mask & XPG_NORM_CODESET) != 0));
+ retval->data = NULL;
+
+ retval->next = *lastp;
+ *lastp = retval;
+
+ entries = 0;
+ /* Recurse to fill the inheritance list of RETVAL.
+ If the DIRLIST is a real list (i.e. DIRLIST_COUNT > 1), the RETVAL
+ entry does not correspond to a real file; retval->filename contains
+ colons. In this case we loop across all elements of DIRLIST and
+ across all bit patterns dominated by MASK.
+ If the DIRLIST is a single directory or entirely redundant (i.e.
+ DIRLIST_COUNT == 1), we loop across all bit patterns dominated by
+ MASK, excluding MASK itself.
+ In either case, we loop down from MASK to 0. This has the effect
+ that the extra bits in the locale name are dropped in this order:
+ first the modifier, then the territory, then the codeset, then the
+ normalized_codeset. */
+ for (cnt = dirlist_count > 1 ? mask : mask - 1; cnt >= 0; --cnt)
+ if ((cnt & ~mask) == 0
+ && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0)
+ && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0))
+ {
+ if (dirlist_count > 1)
+ {
+ /* Iterate over all elements of the DIRLIST. */
+ char *dir = NULL;
+
+ while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir))
+ != NULL)
+ retval->successor[entries++]
+ = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1,
+ cnt, language, territory, codeset,
+ normalized_codeset, modifier, special,
+ sponsor, revision, filename, 1);
+ }
+ else
+ retval->successor[entries++]
+ = _nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len,
+ cnt, language, territory, codeset,
+ normalized_codeset, modifier, special,
+ sponsor, revision, filename, 1);
+ }
+ retval->successor[entries] = NULL;
+
+ return retval;
+}
+
+/* Normalize codeset name. There is no standard for the codeset
+ names. Normalization allows the user to use any of the common
+ names. The return value is dynamically allocated and has to be
+ freed by the caller. */
+const char *
+_nl_normalize_codeset (codeset, name_len)
+ const char *codeset;
+ size_t name_len;
+{
+ int len = 0;
+ int only_digit = 1;
+ char *retval;
+ char *wp;
+ size_t cnt;
+
+ for (cnt = 0; cnt < name_len; ++cnt)
+ if (isalnum ((unsigned char) codeset[cnt]))
+ {
+ ++len;
+
+ if (isalpha ((unsigned char) codeset[cnt]))
+ only_digit = 0;
+ }
+
+ retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1);
+
+ if (retval != NULL)
+ {
+ if (only_digit)
+ wp = stpcpy (retval, "iso");
+ else
+ wp = retval;
+
+ for (cnt = 0; cnt < name_len; ++cnt)
+ if (isalpha ((unsigned char) codeset[cnt]))
+ *wp++ = tolower ((unsigned char) codeset[cnt]);
+ else if (isdigit ((unsigned char) codeset[cnt]))
+ *wp++ = codeset[cnt];
+
+ *wp = '\0';
+ }
+
+ return (const char *) retval;
+}
+
+
+/* @@ begin of epilog @@ */
+
+/* We don't want libintl.a to depend on any other library. So we
+ avoid the non-standard function stpcpy. In GNU C Library this
+ function is available, though. Also allow the symbol HAVE_STPCPY
+ to be defined. */
+#if !_LIBC && !HAVE_STPCPY
+static char *
+stpcpy (dest, src)
+ char *dest;
+ const char *src;
+{
+ while ((*dest++ = *src++) != '\0')
+ /* Do nothing. */ ;
+ return dest - 1;
+}
+#endif
Index: or1k-gcc/intl/README
===================================================================
--- or1k-gcc/intl/README (nonexistent)
+++ or1k-gcc/intl/README (revision 728)
@@ -0,0 +1,21 @@
+GNU toolchain edition of GNU libintl 0.12.1
+
+Most of the content of this directory is taken from gettext 0.12.1
+and is owned by that project. Patches should be directed to the
+gettext developers first. However, note the following:
+
+* libintl.h comes from gettext, but is named libgnuintl.h.in in that
+ project's source tree.
+
+* The files COPYING.LIB-2.0 and COPYING.LIB-2.1 are redundant with the
+ top-level COPYING.LIB and have therefore been removed.
+
+* The files config.charset, ref-add.sin, ref-del.sin, os2compat.c,
+ and os2compat.h are not used in this setup and have therefore been
+ removed.
+
+* aclocal.m4 was constructed using automake's "aclocal -I ../config".
+
+* configure.ac, config.intl.in, and Makefile.in were written for this
+ directory layout, by Zack Weinberg . Please
+ direct patches for these files to gcc-patches@gcc.gnu.org.
Index: or1k-gcc/intl/loadmsgcat.c
===================================================================
--- or1k-gcc/intl/loadmsgcat.c (nonexistent)
+++ or1k-gcc/intl/loadmsgcat.c (revision 728)
@@ -0,0 +1,1322 @@
+/* Load needed message catalogs.
+ Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU 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. */
+
+/* Tell glibc's to provide a prototype for mempcpy().
+ This must come before because may include
+ , and once has been included, it's too late. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+#include
+#include
+#include
+#include
+#include
+
+#ifdef __GNUC__
+# undef alloca
+# define alloca __builtin_alloca
+# define HAVE_ALLOCA 1
+#else
+# ifdef _MSC_VER
+# include
+# define alloca _alloca
+# else
+# if defined HAVE_ALLOCA_H || defined _LIBC
+# include
+# else
+# ifdef _AIX
+ #pragma alloca
+# else
+# ifndef alloca
+char *alloca ();
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#include
+#include
+
+#if defined HAVE_UNISTD_H || defined _LIBC
+# include
+#endif
+
+#ifdef _LIBC
+# include
+# include
+#endif
+
+#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
+ || (defined _LIBC && defined _POSIX_MAPPED_FILES)
+# include
+# undef HAVE_MMAP
+# define HAVE_MMAP 1
+#else
+# undef HAVE_MMAP
+#endif
+
+#if defined HAVE_STDINT_H_WITH_UINTMAX || defined _LIBC
+# include
+#endif
+#if defined HAVE_INTTYPES_H || defined _LIBC
+# include
+#endif
+
+#include "gmo.h"
+#include "gettextP.h"
+#include "hash-string.h"
+#include "plural-exp.h"
+
+#ifdef _LIBC
+# include "../locale/localeinfo.h"
+#endif
+
+/* Provide fallback values for macros that ought to be defined in .
+ Note that our fallback values need not be literal strings, because we don't
+ use them with preprocessor string concatenation. */
+#if !defined PRId8 || PRI_MACROS_BROKEN
+# undef PRId8
+# define PRId8 "d"
+#endif
+#if !defined PRIi8 || PRI_MACROS_BROKEN
+# undef PRIi8
+# define PRIi8 "i"
+#endif
+#if !defined PRIo8 || PRI_MACROS_BROKEN
+# undef PRIo8
+# define PRIo8 "o"
+#endif
+#if !defined PRIu8 || PRI_MACROS_BROKEN
+# undef PRIu8
+# define PRIu8 "u"
+#endif
+#if !defined PRIx8 || PRI_MACROS_BROKEN
+# undef PRIx8
+# define PRIx8 "x"
+#endif
+#if !defined PRIX8 || PRI_MACROS_BROKEN
+# undef PRIX8
+# define PRIX8 "X"
+#endif
+#if !defined PRId16 || PRI_MACROS_BROKEN
+# undef PRId16
+# define PRId16 "d"
+#endif
+#if !defined PRIi16 || PRI_MACROS_BROKEN
+# undef PRIi16
+# define PRIi16 "i"
+#endif
+#if !defined PRIo16 || PRI_MACROS_BROKEN
+# undef PRIo16
+# define PRIo16 "o"
+#endif
+#if !defined PRIu16 || PRI_MACROS_BROKEN
+# undef PRIu16
+# define PRIu16 "u"
+#endif
+#if !defined PRIx16 || PRI_MACROS_BROKEN
+# undef PRIx16
+# define PRIx16 "x"
+#endif
+#if !defined PRIX16 || PRI_MACROS_BROKEN
+# undef PRIX16
+# define PRIX16 "X"
+#endif
+#if !defined PRId32 || PRI_MACROS_BROKEN
+# undef PRId32
+# define PRId32 "d"
+#endif
+#if !defined PRIi32 || PRI_MACROS_BROKEN
+# undef PRIi32
+# define PRIi32 "i"
+#endif
+#if !defined PRIo32 || PRI_MACROS_BROKEN
+# undef PRIo32
+# define PRIo32 "o"
+#endif
+#if !defined PRIu32 || PRI_MACROS_BROKEN
+# undef PRIu32
+# define PRIu32 "u"
+#endif
+#if !defined PRIx32 || PRI_MACROS_BROKEN
+# undef PRIx32
+# define PRIx32 "x"
+#endif
+#if !defined PRIX32 || PRI_MACROS_BROKEN
+# undef PRIX32
+# define PRIX32 "X"
+#endif
+#if !defined PRId64 || PRI_MACROS_BROKEN
+# undef PRId64
+# define PRId64 (sizeof (long) == 8 ? "ld" : "lld")
+#endif
+#if !defined PRIi64 || PRI_MACROS_BROKEN
+# undef PRIi64
+# define PRIi64 (sizeof (long) == 8 ? "li" : "lli")
+#endif
+#if !defined PRIo64 || PRI_MACROS_BROKEN
+# undef PRIo64
+# define PRIo64 (sizeof (long) == 8 ? "lo" : "llo")
+#endif
+#if !defined PRIu64 || PRI_MACROS_BROKEN
+# undef PRIu64
+# define PRIu64 (sizeof (long) == 8 ? "lu" : "llu")
+#endif
+#if !defined PRIx64 || PRI_MACROS_BROKEN
+# undef PRIx64
+# define PRIx64 (sizeof (long) == 8 ? "lx" : "llx")
+#endif
+#if !defined PRIX64 || PRI_MACROS_BROKEN
+# undef PRIX64
+# define PRIX64 (sizeof (long) == 8 ? "lX" : "llX")
+#endif
+#if !defined PRIdLEAST8 || PRI_MACROS_BROKEN
+# undef PRIdLEAST8
+# define PRIdLEAST8 "d"
+#endif
+#if !defined PRIiLEAST8 || PRI_MACROS_BROKEN
+# undef PRIiLEAST8
+# define PRIiLEAST8 "i"
+#endif
+#if !defined PRIoLEAST8 || PRI_MACROS_BROKEN
+# undef PRIoLEAST8
+# define PRIoLEAST8 "o"
+#endif
+#if !defined PRIuLEAST8 || PRI_MACROS_BROKEN
+# undef PRIuLEAST8
+# define PRIuLEAST8 "u"
+#endif
+#if !defined PRIxLEAST8 || PRI_MACROS_BROKEN
+# undef PRIxLEAST8
+# define PRIxLEAST8 "x"
+#endif
+#if !defined PRIXLEAST8 || PRI_MACROS_BROKEN
+# undef PRIXLEAST8
+# define PRIXLEAST8 "X"
+#endif
+#if !defined PRIdLEAST16 || PRI_MACROS_BROKEN
+# undef PRIdLEAST16
+# define PRIdLEAST16 "d"
+#endif
+#if !defined PRIiLEAST16 || PRI_MACROS_BROKEN
+# undef PRIiLEAST16
+# define PRIiLEAST16 "i"
+#endif
+#if !defined PRIoLEAST16 || PRI_MACROS_BROKEN
+# undef PRIoLEAST16
+# define PRIoLEAST16 "o"
+#endif
+#if !defined PRIuLEAST16 || PRI_MACROS_BROKEN
+# undef PRIuLEAST16
+# define PRIuLEAST16 "u"
+#endif
+#if !defined PRIxLEAST16 || PRI_MACROS_BROKEN
+# undef PRIxLEAST16
+# define PRIxLEAST16 "x"
+#endif
+#if !defined PRIXLEAST16 || PRI_MACROS_BROKEN
+# undef PRIXLEAST16
+# define PRIXLEAST16 "X"
+#endif
+#if !defined PRIdLEAST32 || PRI_MACROS_BROKEN
+# undef PRIdLEAST32
+# define PRIdLEAST32 "d"
+#endif
+#if !defined PRIiLEAST32 || PRI_MACROS_BROKEN
+# undef PRIiLEAST32
+# define PRIiLEAST32 "i"
+#endif
+#if !defined PRIoLEAST32 || PRI_MACROS_BROKEN
+# undef PRIoLEAST32
+# define PRIoLEAST32 "o"
+#endif
+#if !defined PRIuLEAST32 || PRI_MACROS_BROKEN
+# undef PRIuLEAST32
+# define PRIuLEAST32 "u"
+#endif
+#if !defined PRIxLEAST32 || PRI_MACROS_BROKEN
+# undef PRIxLEAST32
+# define PRIxLEAST32 "x"
+#endif
+#if !defined PRIXLEAST32 || PRI_MACROS_BROKEN
+# undef PRIXLEAST32
+# define PRIXLEAST32 "X"
+#endif
+#if !defined PRIdLEAST64 || PRI_MACROS_BROKEN
+# undef PRIdLEAST64
+# define PRIdLEAST64 PRId64
+#endif
+#if !defined PRIiLEAST64 || PRI_MACROS_BROKEN
+# undef PRIiLEAST64
+# define PRIiLEAST64 PRIi64
+#endif
+#if !defined PRIoLEAST64 || PRI_MACROS_BROKEN
+# undef PRIoLEAST64
+# define PRIoLEAST64 PRIo64
+#endif
+#if !defined PRIuLEAST64 || PRI_MACROS_BROKEN
+# undef PRIuLEAST64
+# define PRIuLEAST64 PRIu64
+#endif
+#if !defined PRIxLEAST64 || PRI_MACROS_BROKEN
+# undef PRIxLEAST64
+# define PRIxLEAST64 PRIx64
+#endif
+#if !defined PRIXLEAST64 || PRI_MACROS_BROKEN
+# undef PRIXLEAST64
+# define PRIXLEAST64 PRIX64
+#endif
+#if !defined PRIdFAST8 || PRI_MACROS_BROKEN
+# undef PRIdFAST8
+# define PRIdFAST8 "d"
+#endif
+#if !defined PRIiFAST8 || PRI_MACROS_BROKEN
+# undef PRIiFAST8
+# define PRIiFAST8 "i"
+#endif
+#if !defined PRIoFAST8 || PRI_MACROS_BROKEN
+# undef PRIoFAST8
+# define PRIoFAST8 "o"
+#endif
+#if !defined PRIuFAST8 || PRI_MACROS_BROKEN
+# undef PRIuFAST8
+# define PRIuFAST8 "u"
+#endif
+#if !defined PRIxFAST8 || PRI_MACROS_BROKEN
+# undef PRIxFAST8
+# define PRIxFAST8 "x"
+#endif
+#if !defined PRIXFAST8 || PRI_MACROS_BROKEN
+# undef PRIXFAST8
+# define PRIXFAST8 "X"
+#endif
+#if !defined PRIdFAST16 || PRI_MACROS_BROKEN
+# undef PRIdFAST16
+# define PRIdFAST16 "d"
+#endif
+#if !defined PRIiFAST16 || PRI_MACROS_BROKEN
+# undef PRIiFAST16
+# define PRIiFAST16 "i"
+#endif
+#if !defined PRIoFAST16 || PRI_MACROS_BROKEN
+# undef PRIoFAST16
+# define PRIoFAST16 "o"
+#endif
+#if !defined PRIuFAST16 || PRI_MACROS_BROKEN
+# undef PRIuFAST16
+# define PRIuFAST16 "u"
+#endif
+#if !defined PRIxFAST16 || PRI_MACROS_BROKEN
+# undef PRIxFAST16
+# define PRIxFAST16 "x"
+#endif
+#if !defined PRIXFAST16 || PRI_MACROS_BROKEN
+# undef PRIXFAST16
+# define PRIXFAST16 "X"
+#endif
+#if !defined PRIdFAST32 || PRI_MACROS_BROKEN
+# undef PRIdFAST32
+# define PRIdFAST32 "d"
+#endif
+#if !defined PRIiFAST32 || PRI_MACROS_BROKEN
+# undef PRIiFAST32
+# define PRIiFAST32 "i"
+#endif
+#if !defined PRIoFAST32 || PRI_MACROS_BROKEN
+# undef PRIoFAST32
+# define PRIoFAST32 "o"
+#endif
+#if !defined PRIuFAST32 || PRI_MACROS_BROKEN
+# undef PRIuFAST32
+# define PRIuFAST32 "u"
+#endif
+#if !defined PRIxFAST32 || PRI_MACROS_BROKEN
+# undef PRIxFAST32
+# define PRIxFAST32 "x"
+#endif
+#if !defined PRIXFAST32 || PRI_MACROS_BROKEN
+# undef PRIXFAST32
+# define PRIXFAST32 "X"
+#endif
+#if !defined PRIdFAST64 || PRI_MACROS_BROKEN
+# undef PRIdFAST64
+# define PRIdFAST64 PRId64
+#endif
+#if !defined PRIiFAST64 || PRI_MACROS_BROKEN
+# undef PRIiFAST64
+# define PRIiFAST64 PRIi64
+#endif
+#if !defined PRIoFAST64 || PRI_MACROS_BROKEN
+# undef PRIoFAST64
+# define PRIoFAST64 PRIo64
+#endif
+#if !defined PRIuFAST64 || PRI_MACROS_BROKEN
+# undef PRIuFAST64
+# define PRIuFAST64 PRIu64
+#endif
+#if !defined PRIxFAST64 || PRI_MACROS_BROKEN
+# undef PRIxFAST64
+# define PRIxFAST64 PRIx64
+#endif
+#if !defined PRIXFAST64 || PRI_MACROS_BROKEN
+# undef PRIXFAST64
+# define PRIXFAST64 PRIX64
+#endif
+#if !defined PRIdMAX || PRI_MACROS_BROKEN
+# undef PRIdMAX
+# define PRIdMAX (sizeof (uintmax_t) == sizeof (long) ? "ld" : "lld")
+#endif
+#if !defined PRIiMAX || PRI_MACROS_BROKEN
+# undef PRIiMAX
+# define PRIiMAX (sizeof (uintmax_t) == sizeof (long) ? "li" : "lli")
+#endif
+#if !defined PRIoMAX || PRI_MACROS_BROKEN
+# undef PRIoMAX
+# define PRIoMAX (sizeof (uintmax_t) == sizeof (long) ? "lo" : "llo")
+#endif
+#if !defined PRIuMAX || PRI_MACROS_BROKEN
+# undef PRIuMAX
+# define PRIuMAX (sizeof (uintmax_t) == sizeof (long) ? "lu" : "llu")
+#endif
+#if !defined PRIxMAX || PRI_MACROS_BROKEN
+# undef PRIxMAX
+# define PRIxMAX (sizeof (uintmax_t) == sizeof (long) ? "lx" : "llx")
+#endif
+#if !defined PRIXMAX || PRI_MACROS_BROKEN
+# undef PRIXMAX
+# define PRIXMAX (sizeof (uintmax_t) == sizeof (long) ? "lX" : "llX")
+#endif
+#if !defined PRIdPTR || PRI_MACROS_BROKEN
+# undef PRIdPTR
+# define PRIdPTR \
+ (sizeof (void *) == sizeof (long) ? "ld" : \
+ sizeof (void *) == sizeof (int) ? "d" : \
+ "lld")
+#endif
+#if !defined PRIiPTR || PRI_MACROS_BROKEN
+# undef PRIiPTR
+# define PRIiPTR \
+ (sizeof (void *) == sizeof (long) ? "li" : \
+ sizeof (void *) == sizeof (int) ? "i" : \
+ "lli")
+#endif
+#if !defined PRIoPTR || PRI_MACROS_BROKEN
+# undef PRIoPTR
+# define PRIoPTR \
+ (sizeof (void *) == sizeof (long) ? "lo" : \
+ sizeof (void *) == sizeof (int) ? "o" : \
+ "llo")
+#endif
+#if !defined PRIuPTR || PRI_MACROS_BROKEN
+# undef PRIuPTR
+# define PRIuPTR \
+ (sizeof (void *) == sizeof (long) ? "lu" : \
+ sizeof (void *) == sizeof (int) ? "u" : \
+ "llu")
+#endif
+#if !defined PRIxPTR || PRI_MACROS_BROKEN
+# undef PRIxPTR
+# define PRIxPTR \
+ (sizeof (void *) == sizeof (long) ? "lx" : \
+ sizeof (void *) == sizeof (int) ? "x" : \
+ "llx")
+#endif
+#if !defined PRIXPTR || PRI_MACROS_BROKEN
+# undef PRIXPTR
+# define PRIXPTR \
+ (sizeof (void *) == sizeof (long) ? "lX" : \
+ sizeof (void *) == sizeof (int) ? "X" : \
+ "llX")
+#endif
+
+/* @@ end of prolog @@ */
+
+#ifdef _LIBC
+/* Rename the non ISO C functions. This is required by the standard
+ because some ISO C functions will require linking with this object
+ file and the name space must not be polluted. */
+# define open __open
+# define close __close
+# define read __read
+# define mmap __mmap
+# define munmap __munmap
+#endif
+
+/* For those losing systems which don't have `alloca' we have to add
+ some additional code emulating it. */
+#ifdef HAVE_ALLOCA
+# define freea(p) /* nothing */
+#else
+# define alloca(n) malloc (n)
+# define freea(p) free (p)
+#endif
+
+/* For systems that distinguish between text and binary I/O.
+ O_BINARY is usually declared in . */
+#if !defined O_BINARY && defined _O_BINARY
+ /* For MSC-compatible compilers. */
+# define O_BINARY _O_BINARY
+# define O_TEXT _O_TEXT
+#endif
+#ifdef __BEOS__
+ /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect. */
+# undef O_BINARY
+# undef O_TEXT
+#endif
+/* On reasonable systems, binary I/O is the default. */
+#ifndef O_BINARY
+# define O_BINARY 0
+#endif
+
+
+/* Prototypes for local functions. Needed to ensure compiler checking of
+ function argument counts despite of K&R C function definition syntax. */
+static const char *get_sysdep_segment_value PARAMS ((const char *name));
+
+
+/* We need a sign, whether a new catalog was loaded, which can be associated
+ with all translations. This is important if the translations are
+ cached by one of GCC's features. */
+int _nl_msg_cat_cntr;
+
+
+/* Expand a system dependent string segment. Return NULL if unsupported. */
+static const char *
+get_sysdep_segment_value (name)
+ const char *name;
+{
+ /* Test for an ISO C 99 section 7.8.1 format string directive.
+ Syntax:
+ P R I { d | i | o | u | x | X }
+ { { | LEAST | FAST } { 8 | 16 | 32 | 64 } | MAX | PTR } */
+ /* We don't use a table of 14 times 6 'const char *' strings here, because
+ data relocations cost startup time. */
+ if (name[0] == 'P' && name[1] == 'R' && name[2] == 'I')
+ {
+ if (name[3] == 'd' || name[3] == 'i' || name[3] == 'o' || name[3] == 'u'
+ || name[3] == 'x' || name[3] == 'X')
+ {
+ if (name[4] == '8' && name[5] == '\0')
+ {
+ if (name[3] == 'd')
+ return PRId8;
+ if (name[3] == 'i')
+ return PRIi8;
+ if (name[3] == 'o')
+ return PRIo8;
+ if (name[3] == 'u')
+ return PRIu8;
+ if (name[3] == 'x')
+ return PRIx8;
+ if (name[3] == 'X')
+ return PRIX8;
+ abort ();
+ }
+ if (name[4] == '1' && name[5] == '6' && name[6] == '\0')
+ {
+ if (name[3] == 'd')
+ return PRId16;
+ if (name[3] == 'i')
+ return PRIi16;
+ if (name[3] == 'o')
+ return PRIo16;
+ if (name[3] == 'u')
+ return PRIu16;
+ if (name[3] == 'x')
+ return PRIx16;
+ if (name[3] == 'X')
+ return PRIX16;
+ abort ();
+ }
+ if (name[4] == '3' && name[5] == '2' && name[6] == '\0')
+ {
+ if (name[3] == 'd')
+ return PRId32;
+ if (name[3] == 'i')
+ return PRIi32;
+ if (name[3] == 'o')
+ return PRIo32;
+ if (name[3] == 'u')
+ return PRIu32;
+ if (name[3] == 'x')
+ return PRIx32;
+ if (name[3] == 'X')
+ return PRIX32;
+ abort ();
+ }
+ if (name[4] == '6' && name[5] == '4' && name[6] == '\0')
+ {
+ if (name[3] == 'd')
+ return PRId64;
+ if (name[3] == 'i')
+ return PRIi64;
+ if (name[3] == 'o')
+ return PRIo64;
+ if (name[3] == 'u')
+ return PRIu64;
+ if (name[3] == 'x')
+ return PRIx64;
+ if (name[3] == 'X')
+ return PRIX64;
+ abort ();
+ }
+ if (name[4] == 'L' && name[5] == 'E' && name[6] == 'A'
+ && name[7] == 'S' && name[8] == 'T')
+ {
+ if (name[9] == '8' && name[10] == '\0')
+ {
+ if (name[3] == 'd')
+ return PRIdLEAST8;
+ if (name[3] == 'i')
+ return PRIiLEAST8;
+ if (name[3] == 'o')
+ return PRIoLEAST8;
+ if (name[3] == 'u')
+ return PRIuLEAST8;
+ if (name[3] == 'x')
+ return PRIxLEAST8;
+ if (name[3] == 'X')
+ return PRIXLEAST8;
+ abort ();
+ }
+ if (name[9] == '1' && name[10] == '6' && name[11] == '\0')
+ {
+ if (name[3] == 'd')
+ return PRIdLEAST16;
+ if (name[3] == 'i')
+ return PRIiLEAST16;
+ if (name[3] == 'o')
+ return PRIoLEAST16;
+ if (name[3] == 'u')
+ return PRIuLEAST16;
+ if (name[3] == 'x')
+ return PRIxLEAST16;
+ if (name[3] == 'X')
+ return PRIXLEAST16;
+ abort ();
+ }
+ if (name[9] == '3' && name[10] == '2' && name[11] == '\0')
+ {
+ if (name[3] == 'd')
+ return PRIdLEAST32;
+ if (name[3] == 'i')
+ return PRIiLEAST32;
+ if (name[3] == 'o')
+ return PRIoLEAST32;
+ if (name[3] == 'u')
+ return PRIuLEAST32;
+ if (name[3] == 'x')
+ return PRIxLEAST32;
+ if (name[3] == 'X')
+ return PRIXLEAST32;
+ abort ();
+ }
+ if (name[9] == '6' && name[10] == '4' && name[11] == '\0')
+ {
+ if (name[3] == 'd')
+ return PRIdLEAST64;
+ if (name[3] == 'i')
+ return PRIiLEAST64;
+ if (name[3] == 'o')
+ return PRIoLEAST64;
+ if (name[3] == 'u')
+ return PRIuLEAST64;
+ if (name[3] == 'x')
+ return PRIxLEAST64;
+ if (name[3] == 'X')
+ return PRIXLEAST64;
+ abort ();
+ }
+ }
+ if (name[4] == 'F' && name[5] == 'A' && name[6] == 'S'
+ && name[7] == 'T')
+ {
+ if (name[8] == '8' && name[9] == '\0')
+ {
+ if (name[3] == 'd')
+ return PRIdFAST8;
+ if (name[3] == 'i')
+ return PRIiFAST8;
+ if (name[3] == 'o')
+ return PRIoFAST8;
+ if (name[3] == 'u')
+ return PRIuFAST8;
+ if (name[3] == 'x')
+ return PRIxFAST8;
+ if (name[3] == 'X')
+ return PRIXFAST8;
+ abort ();
+ }
+ if (name[8] == '1' && name[9] == '6' && name[10] == '\0')
+ {
+ if (name[3] == 'd')
+ return PRIdFAST16;
+ if (name[3] == 'i')
+ return PRIiFAST16;
+ if (name[3] == 'o')
+ return PRIoFAST16;
+ if (name[3] == 'u')
+ return PRIuFAST16;
+ if (name[3] == 'x')
+ return PRIxFAST16;
+ if (name[3] == 'X')
+ return PRIXFAST16;
+ abort ();
+ }
+ if (name[8] == '3' && name[9] == '2' && name[10] == '\0')
+ {
+ if (name[3] == 'd')
+ return PRIdFAST32;
+ if (name[3] == 'i')
+ return PRIiFAST32;
+ if (name[3] == 'o')
+ return PRIoFAST32;
+ if (name[3] == 'u')
+ return PRIuFAST32;
+ if (name[3] == 'x')
+ return PRIxFAST32;
+ if (name[3] == 'X')
+ return PRIXFAST32;
+ abort ();
+ }
+ if (name[8] == '6' && name[9] == '4' && name[10] == '\0')
+ {
+ if (name[3] == 'd')
+ return PRIdFAST64;
+ if (name[3] == 'i')
+ return PRIiFAST64;
+ if (name[3] == 'o')
+ return PRIoFAST64;
+ if (name[3] == 'u')
+ return PRIuFAST64;
+ if (name[3] == 'x')
+ return PRIxFAST64;
+ if (name[3] == 'X')
+ return PRIXFAST64;
+ abort ();
+ }
+ }
+ if (name[4] == 'M' && name[5] == 'A' && name[6] == 'X'
+ && name[7] == '\0')
+ {
+ if (name[3] == 'd')
+ return PRIdMAX;
+ if (name[3] == 'i')
+ return PRIiMAX;
+ if (name[3] == 'o')
+ return PRIoMAX;
+ if (name[3] == 'u')
+ return PRIuMAX;
+ if (name[3] == 'x')
+ return PRIxMAX;
+ if (name[3] == 'X')
+ return PRIXMAX;
+ abort ();
+ }
+ if (name[4] == 'P' && name[5] == 'T' && name[6] == 'R'
+ && name[7] == '\0')
+ {
+ if (name[3] == 'd')
+ return PRIdPTR;
+ if (name[3] == 'i')
+ return PRIiPTR;
+ if (name[3] == 'o')
+ return PRIoPTR;
+ if (name[3] == 'u')
+ return PRIuPTR;
+ if (name[3] == 'x')
+ return PRIxPTR;
+ if (name[3] == 'X')
+ return PRIXPTR;
+ abort ();
+ }
+ }
+ }
+ /* Other system dependent strings are not valid. */
+ return NULL;
+}
+
+/* Initialize the codeset dependent parts of an opened message catalog.
+ Return the header entry. */
+const char *
+internal_function
+_nl_init_domain_conv (domain_file, domain, domainbinding)
+ struct loaded_l10nfile *domain_file;
+ struct loaded_domain *domain;
+ struct binding *domainbinding;
+{
+ /* Find out about the character set the file is encoded with.
+ This can be found (in textual form) in the entry "". If this
+ entry does not exist or if this does not contain the `charset='
+ information, we will assume the charset matches the one the
+ current locale and we don't have to perform any conversion. */
+ char *nullentry;
+ size_t nullentrylen;
+
+ /* Preinitialize fields, to avoid recursion during _nl_find_msg. */
+ domain->codeset_cntr =
+ (domainbinding != NULL ? domainbinding->codeset_cntr : 0);
+#ifdef _LIBC
+ domain->conv = (__gconv_t) -1;
+#else
+# if HAVE_ICONV
+ domain->conv = (iconv_t) -1;
+# endif
+#endif
+ domain->conv_tab = NULL;
+
+ /* Get the header entry. */
+ nullentry = _nl_find_msg (domain_file, domainbinding, "", &nullentrylen);
+
+ if (nullentry != NULL)
+ {
+#if defined _LIBC || HAVE_ICONV
+ const char *charsetstr;
+
+ charsetstr = strstr (nullentry, "charset=");
+ if (charsetstr != NULL)
+ {
+ size_t len;
+ char *charset;
+ const char *outcharset;
+
+ charsetstr += strlen ("charset=");
+ len = strcspn (charsetstr, " \t\n");
+
+ charset = (char *) alloca (len + 1);
+# if defined _LIBC || HAVE_MEMPCPY
+ *((char *) mempcpy (charset, charsetstr, len)) = '\0';
+# else
+ memcpy (charset, charsetstr, len);
+ charset[len] = '\0';
+# endif
+
+ /* The output charset should normally be determined by the
+ locale. But sometimes the locale is not used or not correctly
+ set up, so we provide a possibility for the user to override
+ this. Moreover, the value specified through
+ bind_textdomain_codeset overrides both. */
+ if (domainbinding != NULL && domainbinding->codeset != NULL)
+ outcharset = domainbinding->codeset;
+ else
+ {
+ outcharset = getenv ("OUTPUT_CHARSET");
+ if (outcharset == NULL || outcharset[0] == '\0')
+ {
+# ifdef _LIBC
+ outcharset = _NL_CURRENT (LC_CTYPE, CODESET);
+# else
+# if HAVE_ICONV
+ extern const char *locale_charset PARAMS ((void));
+ outcharset = locale_charset ();
+# endif
+# endif
+ }
+ }
+
+# ifdef _LIBC
+ /* We always want to use transliteration. */
+ outcharset = norm_add_slashes (outcharset, "TRANSLIT");
+ charset = norm_add_slashes (charset, NULL);
+ if (__gconv_open (outcharset, charset, &domain->conv,
+ GCONV_AVOID_NOCONV)
+ != __GCONV_OK)
+ domain->conv = (__gconv_t) -1;
+# else
+# if HAVE_ICONV
+ /* When using GNU libc >= 2.2 or GNU libiconv >= 1.5,
+ we want to use transliteration. */
+# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 \
+ || _LIBICONV_VERSION >= 0x0105
+ if (strchr (outcharset, '/') == NULL)
+ {
+ char *tmp;
+
+ len = strlen (outcharset);
+ tmp = (char *) alloca (len + 10 + 1);
+ memcpy (tmp, outcharset, len);
+ memcpy (tmp + len, "//TRANSLIT", 10 + 1);
+ outcharset = tmp;
+
+ domain->conv = iconv_open (outcharset, charset);
+
+ freea (outcharset);
+ }
+ else
+# endif
+ domain->conv = iconv_open (outcharset, charset);
+# endif
+# endif
+
+ freea (charset);
+ }
+#endif /* _LIBC || HAVE_ICONV */
+ }
+
+ return nullentry;
+}
+
+/* Frees the codeset dependent parts of an opened message catalog. */
+void
+internal_function
+_nl_free_domain_conv (domain)
+ struct loaded_domain *domain;
+{
+ if (domain->conv_tab != NULL && domain->conv_tab != (char **) -1)
+ free (domain->conv_tab);
+
+#ifdef _LIBC
+ if (domain->conv != (__gconv_t) -1)
+ __gconv_close (domain->conv);
+#else
+# if HAVE_ICONV
+ if (domain->conv != (iconv_t) -1)
+ iconv_close (domain->conv);
+# endif
+#endif
+}
+
+/* Load the message catalogs specified by FILENAME. If it is no valid
+ message catalog do nothing. */
+void
+internal_function
+_nl_load_domain (domain_file, domainbinding)
+ struct loaded_l10nfile *domain_file;
+ struct binding *domainbinding;
+{
+ int fd;
+ size_t size;
+#ifdef _LIBC
+ struct stat64 st;
+#else
+ struct stat st;
+#endif
+ struct mo_file_header *data = (struct mo_file_header *) -1;
+ int use_mmap = 0;
+ struct loaded_domain *domain;
+ int revision;
+ const char *nullentry;
+
+ domain_file->decided = 1;
+ domain_file->data = NULL;
+
+ /* Note that it would be useless to store domainbinding in domain_file
+ because domainbinding might be == NULL now but != NULL later (after
+ a call to bind_textdomain_codeset). */
+
+ /* If the record does not represent a valid locale the FILENAME
+ might be NULL. This can happen when according to the given
+ specification the locale file name is different for XPG and CEN
+ syntax. */
+ if (domain_file->filename == NULL)
+ return;
+
+ /* Try to open the addressed file. */
+ fd = open (domain_file->filename, O_RDONLY | O_BINARY);
+ if (fd == -1)
+ return;
+
+ /* We must know about the size of the file. */
+ if (
+#ifdef _LIBC
+ __builtin_expect (fstat64 (fd, &st) != 0, 0)
+#else
+ __builtin_expect (fstat (fd, &st) != 0, 0)
+#endif
+ || __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0)
+ || __builtin_expect (size < sizeof (struct mo_file_header), 0))
+ {
+ /* Something went wrong. */
+ close (fd);
+ return;
+ }
+
+#ifdef HAVE_MMAP
+ /* Now we are ready to load the file. If mmap() is available we try
+ this first. If not available or it failed we try to load it. */
+ data = (struct mo_file_header *) mmap (NULL, size, PROT_READ,
+ MAP_PRIVATE, fd, 0);
+
+ if (__builtin_expect (data != (struct mo_file_header *) -1, 1))
+ {
+ /* mmap() call was successful. */
+ close (fd);
+ use_mmap = 1;
+ }
+#endif
+
+ /* If the data is not yet available (i.e. mmap'ed) we try to load
+ it manually. */
+ if (data == (struct mo_file_header *) -1)
+ {
+ size_t to_read;
+ char *read_ptr;
+
+ data = (struct mo_file_header *) malloc (size);
+ if (data == NULL)
+ return;
+
+ to_read = size;
+ read_ptr = (char *) data;
+ do
+ {
+ long int nb = (long int) read (fd, read_ptr, to_read);
+ if (nb <= 0)
+ {
+#ifdef EINTR
+ if (nb == -1 && errno == EINTR)
+ continue;
+#endif
+ close (fd);
+ return;
+ }
+ read_ptr += nb;
+ to_read -= nb;
+ }
+ while (to_read > 0);
+
+ close (fd);
+ }
+
+ /* Using the magic number we can test whether it really is a message
+ catalog file. */
+ if (__builtin_expect (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED,
+ 0))
+ {
+ /* The magic number is wrong: not a message catalog file. */
+#ifdef HAVE_MMAP
+ if (use_mmap)
+ munmap ((caddr_t) data, size);
+ else
+#endif
+ free (data);
+ return;
+ }
+
+ domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain));
+ if (domain == NULL)
+ return;
+ domain_file->data = domain;
+
+ domain->data = (char *) data;
+ domain->use_mmap = use_mmap;
+ domain->mmap_size = size;
+ domain->must_swap = data->magic != _MAGIC;
+ domain->malloced = NULL;
+
+ /* Fill in the information about the available tables. */
+ revision = W (domain->must_swap, data->revision);
+ /* We support only the major revision 0. */
+ switch (revision >> 16)
+ {
+ case 0:
+ domain->nstrings = W (domain->must_swap, data->nstrings);
+ domain->orig_tab = (const struct string_desc *)
+ ((char *) data + W (domain->must_swap, data->orig_tab_offset));
+ domain->trans_tab = (const struct string_desc *)
+ ((char *) data + W (domain->must_swap, data->trans_tab_offset));
+ domain->hash_size = W (domain->must_swap, data->hash_tab_size);
+ domain->hash_tab =
+ (domain->hash_size > 2
+ ? (const nls_uint32 *)
+ ((char *) data + W (domain->must_swap, data->hash_tab_offset))
+ : NULL);
+ domain->must_swap_hash_tab = domain->must_swap;
+
+ /* Now dispatch on the minor revision. */
+ switch (revision & 0xffff)
+ {
+ case 0:
+ domain->n_sysdep_strings = 0;
+ domain->orig_sysdep_tab = NULL;
+ domain->trans_sysdep_tab = NULL;
+ break;
+ case 1:
+ default:
+ {
+ nls_uint32 n_sysdep_strings;
+
+ if (domain->hash_tab == NULL)
+ /* This is invalid. These minor revisions need a hash table. */
+ goto invalid;
+
+ n_sysdep_strings =
+ W (domain->must_swap, data->n_sysdep_strings);
+ if (n_sysdep_strings > 0)
+ {
+ nls_uint32 n_sysdep_segments;
+ const struct sysdep_segment *sysdep_segments;
+ const char **sysdep_segment_values;
+ const nls_uint32 *orig_sysdep_tab;
+ const nls_uint32 *trans_sysdep_tab;
+ size_t memneed;
+ char *mem;
+ struct sysdep_string_desc *inmem_orig_sysdep_tab;
+ struct sysdep_string_desc *inmem_trans_sysdep_tab;
+ nls_uint32 *inmem_hash_tab;
+ unsigned int i;
+
+ /* Get the values of the system dependent segments. */
+ n_sysdep_segments =
+ W (domain->must_swap, data->n_sysdep_segments);
+ sysdep_segments = (const struct sysdep_segment *)
+ ((char *) data
+ + W (domain->must_swap, data->sysdep_segments_offset));
+ sysdep_segment_values =
+ alloca (n_sysdep_segments * sizeof (const char *));
+ for (i = 0; i < n_sysdep_segments; i++)
+ {
+ const char *name =
+ (char *) data
+ + W (domain->must_swap, sysdep_segments[i].offset);
+ nls_uint32 namelen =
+ W (domain->must_swap, sysdep_segments[i].length);
+
+ if (!(namelen > 0 && name[namelen - 1] == '\0'))
+ {
+ freea (sysdep_segment_values);
+ goto invalid;
+ }
+
+ sysdep_segment_values[i] = get_sysdep_segment_value (name);
+ }
+
+ orig_sysdep_tab = (const nls_uint32 *)
+ ((char *) data
+ + W (domain->must_swap, data->orig_sysdep_tab_offset));
+ trans_sysdep_tab = (const nls_uint32 *)
+ ((char *) data
+ + W (domain->must_swap, data->trans_sysdep_tab_offset));
+
+ /* Compute the amount of additional memory needed for the
+ system dependent strings and the augmented hash table. */
+ memneed = 2 * n_sysdep_strings
+ * sizeof (struct sysdep_string_desc)
+ + domain->hash_size * sizeof (nls_uint32);
+ for (i = 0; i < 2 * n_sysdep_strings; i++)
+ {
+ const struct sysdep_string *sysdep_string =
+ (const struct sysdep_string *)
+ ((char *) data
+ + W (domain->must_swap,
+ i < n_sysdep_strings
+ ? orig_sysdep_tab[i]
+ : trans_sysdep_tab[i - n_sysdep_strings]));
+ size_t need = 0;
+ const struct segment_pair *p = sysdep_string->segments;
+
+ if (W (domain->must_swap, p->sysdepref) != SEGMENTS_END)
+ for (p = sysdep_string->segments;; p++)
+ {
+ nls_uint32 sysdepref;
+
+ need += W (domain->must_swap, p->segsize);
+
+ sysdepref = W (domain->must_swap, p->sysdepref);
+ if (sysdepref == SEGMENTS_END)
+ break;
+
+ if (sysdepref >= n_sysdep_segments)
+ {
+ /* Invalid. */
+ freea (sysdep_segment_values);
+ goto invalid;
+ }
+
+ need += strlen (sysdep_segment_values[sysdepref]);
+ }
+
+ memneed += need;
+ }
+
+ /* Allocate additional memory. */
+ mem = (char *) malloc (memneed);
+ if (mem == NULL)
+ goto invalid;
+
+ domain->malloced = mem;
+ inmem_orig_sysdep_tab = (struct sysdep_string_desc *) mem;
+ mem += n_sysdep_strings * sizeof (struct sysdep_string_desc);
+ inmem_trans_sysdep_tab = (struct sysdep_string_desc *) mem;
+ mem += n_sysdep_strings * sizeof (struct sysdep_string_desc);
+ inmem_hash_tab = (nls_uint32 *) mem;
+ mem += domain->hash_size * sizeof (nls_uint32);
+
+ /* Compute the system dependent strings. */
+ for (i = 0; i < 2 * n_sysdep_strings; i++)
+ {
+ const struct sysdep_string *sysdep_string =
+ (const struct sysdep_string *)
+ ((char *) data
+ + W (domain->must_swap,
+ i < n_sysdep_strings
+ ? orig_sysdep_tab[i]
+ : trans_sysdep_tab[i - n_sysdep_strings]));
+ const char *static_segments =
+ (char *) data
+ + W (domain->must_swap, sysdep_string->offset);
+ const struct segment_pair *p = sysdep_string->segments;
+
+ /* Concatenate the segments, and fill
+ inmem_orig_sysdep_tab[i] (for i < n_sysdep_strings) and
+ inmem_trans_sysdep_tab[i-n_sysdep_strings] (for
+ i >= n_sysdep_strings). */
+
+ if (W (domain->must_swap, p->sysdepref) == SEGMENTS_END)
+ {
+ /* Only one static segment. */
+ inmem_orig_sysdep_tab[i].length =
+ W (domain->must_swap, p->segsize);
+ inmem_orig_sysdep_tab[i].pointer = static_segments;
+ }
+ else
+ {
+ inmem_orig_sysdep_tab[i].pointer = mem;
+
+ for (p = sysdep_string->segments;; p++)
+ {
+ nls_uint32 segsize =
+ W (domain->must_swap, p->segsize);
+ nls_uint32 sysdepref =
+ W (domain->must_swap, p->sysdepref);
+ size_t n;
+
+ if (segsize > 0)
+ {
+ memcpy (mem, static_segments, segsize);
+ mem += segsize;
+ static_segments += segsize;
+ }
+
+ if (sysdepref == SEGMENTS_END)
+ break;
+
+ n = strlen (sysdep_segment_values[sysdepref]);
+ memcpy (mem, sysdep_segment_values[sysdepref], n);
+ mem += n;
+ }
+
+ inmem_orig_sysdep_tab[i].length =
+ mem - inmem_orig_sysdep_tab[i].pointer;
+ }
+ }
+
+ /* Compute the augmented hash table. */
+ for (i = 0; i < domain->hash_size; i++)
+ inmem_hash_tab[i] =
+ W (domain->must_swap_hash_tab, domain->hash_tab[i]);
+ for (i = 0; i < n_sysdep_strings; i++)
+ {
+ const char *msgid = inmem_orig_sysdep_tab[i].pointer;
+ nls_uint32 hash_val = hash_string (msgid);
+ nls_uint32 idx = hash_val % domain->hash_size;
+ nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
+
+ for (;;)
+ {
+ if (inmem_hash_tab[idx] == 0)
+ {
+ /* Hash table entry is empty. Use it. */
+ inmem_hash_tab[idx] = 1 + domain->nstrings + i;
+ break;
+ }
+
+ if (idx >= domain->hash_size - incr)
+ idx -= domain->hash_size - incr;
+ else
+ idx += incr;
+ }
+ }
+
+ freea (sysdep_segment_values);
+
+ domain->n_sysdep_strings = n_sysdep_strings;
+ domain->orig_sysdep_tab = inmem_orig_sysdep_tab;
+ domain->trans_sysdep_tab = inmem_trans_sysdep_tab;
+
+ domain->hash_tab = inmem_hash_tab;
+ domain->must_swap_hash_tab = 0;
+ }
+ else
+ {
+ domain->n_sysdep_strings = 0;
+ domain->orig_sysdep_tab = NULL;
+ domain->trans_sysdep_tab = NULL;
+ }
+ }
+ break;
+ }
+ break;
+ default:
+ /* This is an invalid revision. */
+ invalid:
+ /* This is an invalid .mo file. */
+ if (domain->malloced)
+ free (domain->malloced);
+#ifdef HAVE_MMAP
+ if (use_mmap)
+ munmap ((caddr_t) data, size);
+ else
+#endif
+ free (data);
+ free (domain);
+ domain_file->data = NULL;
+ return;
+ }
+
+ /* Now initialize the character set converter from the character set
+ the file is encoded with (found in the header entry) to the domain's
+ specified character set or the locale's character set. */
+ nullentry = _nl_init_domain_conv (domain_file, domain, domainbinding);
+
+ /* Also look for a plural specification. */
+ EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals);
+}
+
+
+#ifdef _LIBC
+void
+internal_function
+_nl_unload_domain (domain)
+ struct loaded_domain *domain;
+{
+ if (domain->plural != &__gettext_germanic_plural)
+ __gettext_free_exp (domain->plural);
+
+ _nl_free_domain_conv (domain);
+
+ if (domain->malloced)
+ free (domain->malloced);
+
+# ifdef _POSIX_MAPPED_FILES
+ if (domain->use_mmap)
+ munmap ((caddr_t) domain->data, domain->mmap_size);
+ else
+# endif /* _POSIX_MAPPED_FILES */
+ free ((void *) domain->data);
+
+ free (domain);
+}
+#endif
Index: or1k-gcc/intl/config.h.in
===================================================================
--- or1k-gcc/intl/config.h.in (nonexistent)
+++ or1k-gcc/intl/config.h.in (revision 728)
@@ -0,0 +1,248 @@
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+ systems. This function is required for `alloca.c' support on those systems.
+ */
+#undef CRAY_STACKSEG_END
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* Define because we depend on libiconv. */
+#undef DEPENDS_ON_LIBICONV
+
+/* Define to 1 if translation of program messages to the user's native
+ language is requested. */
+#undef ENABLE_NLS
+
+/* Define to enable relocation. */
+#undef ENABLE_RELOCATABLE
+
+/* Define to 1 if you have `alloca', as a function or macro. */
+#undef HAVE_ALLOCA
+
+/* Define to 1 if you have and it should be used (not on Ultrix).
+ */
+#undef HAVE_ALLOCA_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_ARGZ_H
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+ */
+#undef HAVE_DCGETTEXT
+
+/* Define to 1 if you have the `feof_unlocked' function. */
+#undef HAVE_FEOF_UNLOCKED
+
+/* Define to 1 if you have the `fgets_unlocked' function. */
+#undef HAVE_FGETS_UNLOCKED
+
+/* Define to 1 if you have the `getcwd' function. */
+#undef HAVE_GETCWD
+
+/* Define to 1 if you have the `getc_unlocked' function. */
+#undef HAVE_GETC_UNLOCKED
+
+/* Define to 1 if you have the `getegid' function. */
+#undef HAVE_GETEGID
+
+/* Define to 1 if you have the `geteuid' function. */
+#undef HAVE_GETEUID
+
+/* Define to 1 if you have the `getgid' function. */
+#undef HAVE_GETGID
+
+/* Define to 1 if you have the `getpagesize' function. */
+#undef HAVE_GETPAGESIZE
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
+/* Define to 1 if you have the `getuid' function. */
+#undef HAVE_GETUID
+
+/* Define if you have the iconv() function. */
+#undef HAVE_ICONV
+
+/* Define if exists and doesn't clash with . */
+#undef HAVE_INTTYPES_H
+
+/* Define if exists, doesn't clash with , and
+ declares uintmax_t. */
+#undef HAVE_INTTYPES_H_WITH_UINTMAX
+
+/* Define if you have and nl_langinfo(CODESET). */
+#undef HAVE_LANGINFO_CODESET
+
+/* Define if your file defines LC_MESSAGES. */
+#undef HAVE_LC_MESSAGES
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_LIMITS_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_LOCALE_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_MALLOC_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `mempcpy' function. */
+#undef HAVE_MEMPCPY
+
+/* Define to 1 if you have a working `mmap' system call. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the `munmap' function. */
+#undef HAVE_MUNMAP
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_NL_TYPES_H
+
+/* Define to 1 if you have the `putenv' function. */
+#undef HAVE_PUTENV
+
+/* Define to 1 if you have the `setenv' function. */
+#undef HAVE_SETENV
+
+/* Define to 1 if you have the `setlocale' function. */
+#undef HAVE_SETLOCALE
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_STDDEF_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_STDINT_H
+
+/* Define if exists, doesn't clash with , and declares
+ uintmax_t. */
+#undef HAVE_STDINT_H_WITH_UINTMAX
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `stpcpy' function. */
+#undef HAVE_STPCPY
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#undef HAVE_STRCASECMP
+
+/* Define to 1 if you have the `strdup' function. */
+#undef HAVE_STRDUP
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strtoul' function. */
+#undef HAVE_STRTOUL
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the `tsearch' function. */
+#undef HAVE_TSEARCH
+
+/* Define if you have the 'uintmax_t' type in or . */
+#undef HAVE_UINTMAX_T
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_UNISTD_H
+
+/* Define if you have the unsigned long long type. */
+#undef HAVE_UNSIGNED_LONG_LONG
+
+/* Define to 1 if you have the `__argz_count' function. */
+#undef HAVE___ARGZ_COUNT
+
+/* Define to 1 if you have the `__argz_next' function. */
+#undef HAVE___ARGZ_NEXT
+
+/* Define to 1 if you have the `__argz_stringify' function. */
+#undef HAVE___ARGZ_STRINGIFY
+
+/* Define to 1 if you have the `__fsetlocking' function. */
+#undef HAVE___FSETLOCKING
+
+/* Define as const if the declaration of iconv() needs const. */
+#undef ICONV_CONST
+
+/* Define if integer division by zero raises signal SIGFPE. */
+#undef INTDIV0_RAISES_SIGFPE
+
+/* Define because this is libintl. */
+#undef IN_LIBINTL
+
+/* Define because this is a library. */
+#undef IN_LIBRARY
+
+/* Define if there is no xmalloc. */
+#undef NO_XMALLOC
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define if exists and defines unusable PRI* macros. */
+#undef PRI_MACROS_BROKEN
+
+/* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+ automatically deduced at runtime.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#undef inline
+#endif
+
+/* Define to `long int' if does not define. */
+#undef off_t
+
+/* Define this entry point correctly. */
+#undef relocate
+
+/* Define this entry point correctly. */
+#undef set_relocation_prefix
+
+/* Define to `unsigned int' if does not define. */
+#undef size_t
+
+/* Define to unsigned long or unsigned long long if and
+ don't define. */
+#undef uintmax_t
Index: or1k-gcc/intl/log.c
===================================================================
--- or1k-gcc/intl/log.c (nonexistent)
+++ or1k-gcc/intl/log.c (revision 728)
@@ -0,0 +1,104 @@
+/* Log file output.
+ Copyright (C) 2003 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. */
+
+/* Written by Bruno Haible . */
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+#include
+#include
+#include
+
+/* Print an ASCII string with quotes and escape sequences where needed. */
+static void
+print_escaped (stream, str)
+ FILE *stream;
+ const char *str;
+{
+ putc ('"', stream);
+ for (; *str != '\0'; str++)
+ if (*str == '\n')
+ {
+ fputs ("\\n\"", stream);
+ if (str[1] == '\0')
+ return;
+ fputs ("\n\"", stream);
+ }
+ else
+ {
+ if (*str == '"' || *str == '\\')
+ putc ('\\', stream);
+ putc (*str, stream);
+ }
+ putc ('"', stream);
+}
+
+/* Add to the log file an entry denoting a failed translation. */
+void
+_nl_log_untranslated (logfilename, domainname, msgid1, msgid2, plural)
+ const char *logfilename;
+ const char *domainname;
+ const char *msgid1;
+ const char *msgid2;
+ int plural;
+{
+ static char *last_logfilename = NULL;
+ static FILE *last_logfile = NULL;
+ FILE *logfile;
+
+ /* Can we reuse the last opened logfile? */
+ if (last_logfilename == NULL || strcmp (logfilename, last_logfilename) != 0)
+ {
+ /* Close the last used logfile. */
+ if (last_logfilename != NULL)
+ {
+ if (last_logfile != NULL)
+ {
+ fclose (last_logfile);
+ last_logfile = NULL;
+ }
+ free (last_logfilename);
+ last_logfilename = NULL;
+ }
+ /* Open the logfile. */
+ last_logfilename = (char *) malloc (strlen (logfilename) + 1);
+ if (last_logfilename == NULL)
+ return;
+ strcpy (last_logfilename, logfilename);
+ last_logfile = fopen (logfilename, "a");
+ if (last_logfile == NULL)
+ return;
+ }
+ logfile = last_logfile;
+
+ fprintf (logfile, "domain ");
+ print_escaped (logfile, domainname);
+ fprintf (logfile, "\nmsgid ");
+ print_escaped (logfile, msgid1);
+ if (plural)
+ {
+ fprintf (logfile, "\nmsgid_plural ");
+ print_escaped (logfile, msgid2);
+ fprintf (logfile, "\nmsgstr[0] \"\"\n");
+ }
+ else
+ fprintf (logfile, "\nmsgstr \"\"\n");
+ putc ('\n', logfile);
+}
Index: or1k-gcc/intl/gettext.c
===================================================================
--- or1k-gcc/intl/gettext.c (nonexistent)
+++ or1k-gcc/intl/gettext.c (revision 728)
@@ -0,0 +1,64 @@
+/* Implementation of gettext(3) function.
+ Copyright (C) 1995, 1997, 2000, 2001, 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. */
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+#ifdef _LIBC
+# define __need_NULL
+# include
+#else
+# include /* Just for NULL. */
+#endif
+
+#include "gettextP.h"
+#ifdef _LIBC
+# include
+#else
+# include "libgnuintl.h"
+#endif
+
+/* @@ end of prolog @@ */
+
+/* Names for the libintl functions are a problem. They must not clash
+ with existing names and they should follow ANSI C. But this source
+ code is also used in GNU C Library where the names have a __
+ prefix. So we have to make a difference here. */
+#ifdef _LIBC
+# define GETTEXT __gettext
+# define DCGETTEXT INTUSE(__dcgettext)
+#else
+# define GETTEXT libintl_gettext
+# define DCGETTEXT libintl_dcgettext
+#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). */
+char *
+GETTEXT (msgid)
+ const char *msgid;
+{
+ return DCGETTEXT (NULL, msgid, LC_MESSAGES);
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library. */
+weak_alias (__gettext, gettext);
+#endif
Index: or1k-gcc/intl/plural.y
===================================================================
--- or1k-gcc/intl/plural.y (nonexistent)
+++ or1k-gcc/intl/plural.y (revision 728)
@@ -0,0 +1,409 @@
+%{
+/* Expression parsing for plural form selection.
+ Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+ Written by Ulrich Drepper , 2000.
+
+ 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. */
+
+/* The bison generated parser uses alloca. AIX 3 forces us to put this
+ declaration at the beginning of the file. The declaration in bison's
+ skeleton file comes too late. This must come before
+ because may include arbitrary system headers. */
+#if defined _AIX && !defined __GNUC__
+ #pragma alloca
+#endif
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+#include
+#include
+#include "plural-exp.h"
+
+/* The main function generated by the parser is called __gettextparse,
+ but we want it to be called PLURAL_PARSE. */
+#ifndef _LIBC
+# define __gettextparse PLURAL_PARSE
+#endif
+
+#define YYLEX_PARAM &((struct parse_args *) arg)->cp
+#define YYPARSE_PARAM arg
+%}
+%pure_parser
+%expect 7
+
+%union {
+ unsigned long int num;
+ enum operator op;
+ struct expression *exp;
+}
+
+%{
+/* Prototypes for local functions. */
+static struct expression *new_exp PARAMS ((int nargs, enum operator op,
+ struct expression * const *args));
+static inline struct expression *new_exp_0 PARAMS ((enum operator op));
+static inline struct expression *new_exp_1 PARAMS ((enum operator op,
+ struct expression *right));
+static struct expression *new_exp_2 PARAMS ((enum operator op,
+ struct expression *left,
+ struct expression *right));
+static inline struct expression *new_exp_3 PARAMS ((enum operator op,
+ struct expression *bexp,
+ struct expression *tbranch,
+ struct expression *fbranch));
+static int yylex PARAMS ((YYSTYPE *lval, const char **pexp));
+static void yyerror PARAMS ((const char *str));
+
+/* Allocation of expressions. */
+
+static struct expression *
+new_exp (nargs, op, args)
+ int nargs;
+ enum operator op;
+ struct expression * const *args;
+{
+ int i;
+ struct expression *newp;
+
+ /* If any of the argument could not be malloc'ed, just return NULL. */
+ for (i = nargs - 1; i >= 0; i--)
+ if (args[i] == NULL)
+ goto fail;
+
+ /* Allocate a new expression. */
+ newp = (struct expression *) malloc (sizeof (*newp));
+ if (newp != NULL)
+ {
+ newp->nargs = nargs;
+ newp->operation = op;
+ for (i = nargs - 1; i >= 0; i--)
+ newp->val.args[i] = args[i];
+ return newp;
+ }
+
+ fail:
+ for (i = nargs - 1; i >= 0; i--)
+ FREE_EXPRESSION (args[i]);
+
+ return NULL;
+}
+
+static inline struct expression *
+new_exp_0 (op)
+ enum operator op;
+{
+ return new_exp (0, op, NULL);
+}
+
+static inline struct expression *
+new_exp_1 (op, right)
+ enum operator op;
+ struct expression *right;
+{
+ struct expression *args[1];
+
+ args[0] = right;
+ return new_exp (1, op, args);
+}
+
+static struct expression *
+new_exp_2 (op, left, right)
+ enum operator op;
+ struct expression *left;
+ struct expression *right;
+{
+ struct expression *args[2];
+
+ args[0] = left;
+ args[1] = right;
+ return new_exp (2, op, args);
+}
+
+static inline struct expression *
+new_exp_3 (op, bexp, tbranch, fbranch)
+ enum operator op;
+ struct expression *bexp;
+ struct expression *tbranch;
+ struct expression *fbranch;
+{
+ struct expression *args[3];
+
+ args[0] = bexp;
+ args[1] = tbranch;
+ args[2] = fbranch;
+ return new_exp (3, op, args);
+}
+
+%}
+
+/* This declares that all operators have the same associativity and the
+ precedence order as in C. See [Harbison, Steele: C, A Reference Manual].
+ There is no unary minus and no bitwise operators.
+ Operators with the same syntactic behaviour have been merged into a single
+ token, to save space in the array generated by bison. */
+%right '?' /* ? */
+%left '|' /* || */
+%left '&' /* && */
+%left EQUOP2 /* == != */
+%left CMPOP2 /* < > <= >= */
+%left ADDOP2 /* + - */
+%left MULOP2 /* * / % */
+%right '!' /* ! */
+
+%token EQUOP2 CMPOP2 ADDOP2 MULOP2
+%token NUMBER
+%type exp
+
+%%
+
+start: exp
+ {
+ if ($1 == NULL)
+ YYABORT;
+ ((struct parse_args *) arg)->res = $1;
+ }
+ ;
+
+exp: exp '?' exp ':' exp
+ {
+ $$ = new_exp_3 (qmop, $1, $3, $5);
+ }
+ | exp '|' exp
+ {
+ $$ = new_exp_2 (lor, $1, $3);
+ }
+ | exp '&' exp
+ {
+ $$ = new_exp_2 (land, $1, $3);
+ }
+ | exp EQUOP2 exp
+ {
+ $$ = new_exp_2 ($2, $1, $3);
+ }
+ | exp CMPOP2 exp
+ {
+ $$ = new_exp_2 ($2, $1, $3);
+ }
+ | exp ADDOP2 exp
+ {
+ $$ = new_exp_2 ($2, $1, $3);
+ }
+ | exp MULOP2 exp
+ {
+ $$ = new_exp_2 ($2, $1, $3);
+ }
+ | '!' exp
+ {
+ $$ = new_exp_1 (lnot, $2);
+ }
+ | 'n'
+ {
+ $$ = new_exp_0 (var);
+ }
+ | NUMBER
+ {
+ if (($$ = new_exp_0 (num)) != NULL)
+ $$->val.num = $1;
+ }
+ | '(' exp ')'
+ {
+ $$ = $2;
+ }
+ ;
+
+%%
+
+void
+internal_function
+FREE_EXPRESSION (exp)
+ struct expression *exp;
+{
+ if (exp == NULL)
+ return;
+
+ /* Handle the recursive case. */
+ switch (exp->nargs)
+ {
+ case 3:
+ FREE_EXPRESSION (exp->val.args[2]);
+ /* FALLTHROUGH */
+ case 2:
+ FREE_EXPRESSION (exp->val.args[1]);
+ /* FALLTHROUGH */
+ case 1:
+ FREE_EXPRESSION (exp->val.args[0]);
+ /* FALLTHROUGH */
+ default:
+ break;
+ }
+
+ free (exp);
+}
+
+
+static int
+yylex (lval, pexp)
+ YYSTYPE *lval;
+ const char **pexp;
+{
+ const char *exp = *pexp;
+ int result;
+
+ while (1)
+ {
+ if (exp[0] == '\0')
+ {
+ *pexp = exp;
+ return YYEOF;
+ }
+
+ if (exp[0] != ' ' && exp[0] != '\t')
+ break;
+
+ ++exp;
+ }
+
+ result = *exp++;
+ switch (result)
+ {
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ {
+ unsigned long int n = result - '0';
+ while (exp[0] >= '0' && exp[0] <= '9')
+ {
+ n *= 10;
+ n += exp[0] - '0';
+ ++exp;
+ }
+ lval->num = n;
+ result = NUMBER;
+ }
+ break;
+
+ case '=':
+ if (exp[0] == '=')
+ {
+ ++exp;
+ lval->op = equal;
+ result = EQUOP2;
+ }
+ else
+ result = YYERRCODE;
+ break;
+
+ case '!':
+ if (exp[0] == '=')
+ {
+ ++exp;
+ lval->op = not_equal;
+ result = EQUOP2;
+ }
+ break;
+
+ case '&':
+ case '|':
+ if (exp[0] == result)
+ ++exp;
+ else
+ result = YYERRCODE;
+ break;
+
+ case '<':
+ if (exp[0] == '=')
+ {
+ ++exp;
+ lval->op = less_or_equal;
+ }
+ else
+ lval->op = less_than;
+ result = CMPOP2;
+ break;
+
+ case '>':
+ if (exp[0] == '=')
+ {
+ ++exp;
+ lval->op = greater_or_equal;
+ }
+ else
+ lval->op = greater_than;
+ result = CMPOP2;
+ break;
+
+ case '*':
+ lval->op = mult;
+ result = MULOP2;
+ break;
+
+ case '/':
+ lval->op = divide;
+ result = MULOP2;
+ break;
+
+ case '%':
+ lval->op = module;
+ result = MULOP2;
+ break;
+
+ case '+':
+ lval->op = plus;
+ result = ADDOP2;
+ break;
+
+ case '-':
+ lval->op = minus;
+ result = ADDOP2;
+ break;
+
+ case 'n':
+ case '?':
+ case ':':
+ case '(':
+ case ')':
+ /* Nothing, just return the character. */
+ break;
+
+ case ';':
+ case '\n':
+ case '\0':
+ /* Be safe and let the user call this function again. */
+ --exp;
+ result = YYEOF;
+ break;
+
+ default:
+ result = YYERRCODE;
+#if YYDEBUG != 0
+ --exp;
+#endif
+ break;
+ }
+
+ *pexp = exp;
+
+ return result;
+}
+
+
+static void
+yyerror (str)
+ const char *str;
+{
+ /* Do nothing. We don't print error messages here. */
+}
Index: or1k-gcc/intl/gmo.h
===================================================================
--- or1k-gcc/intl/gmo.h (nonexistent)
+++ or1k-gcc/intl/gmo.h (revision 728)
@@ -0,0 +1,148 @@
+/* Description of GNU message catalog format: general file layout.
+ Copyright (C) 1995, 1997, 2000-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 _GETTEXT_H
+#define _GETTEXT_H 1
+
+#include
+
+/* @@ end of prolog @@ */
+
+/* The magic number of the GNU message catalog format. */
+#define _MAGIC 0x950412de
+#define _MAGIC_SWAPPED 0xde120495
+
+/* Revision number of the currently used .mo (binary) file format. */
+#define MO_REVISION_NUMBER 0
+
+/* The following contortions are an attempt to use the C preprocessor
+ to determine an unsigned integral type that is 32 bits wide. An
+ alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
+ as of version autoconf-2.13, the AC_CHECK_SIZEOF macro doesn't work
+ when cross-compiling. */
+
+#if __STDC__
+# define UINT_MAX_32_BITS 4294967295U
+#else
+# define UINT_MAX_32_BITS 0xFFFFFFFF
+#endif
+
+/* If UINT_MAX isn't defined, assume it's a 32-bit type.
+ This should be valid for all systems GNU cares about because
+ that doesn't include 16-bit systems, and only modern systems
+ (that certainly have ) have 64+-bit integral types. */
+
+#ifndef UINT_MAX
+# define UINT_MAX UINT_MAX_32_BITS
+#endif
+
+#if UINT_MAX == UINT_MAX_32_BITS
+typedef unsigned nls_uint32;
+#else
+# if USHRT_MAX == UINT_MAX_32_BITS
+typedef unsigned short nls_uint32;
+# else
+# if ULONG_MAX == UINT_MAX_32_BITS
+typedef unsigned long nls_uint32;
+# else
+ /* The following line is intended to throw an error. Using #error is
+ not portable enough. */
+ "Cannot determine unsigned 32-bit data type."
+# endif
+# endif
+#endif
+
+
+/* Header for binary .mo file format. */
+struct mo_file_header
+{
+ /* The magic number. */
+ nls_uint32 magic;
+ /* The revision number of the file format. */
+ nls_uint32 revision;
+
+ /* The following are only used in .mo files with major revision 0. */
+
+ /* The number of strings pairs. */
+ nls_uint32 nstrings;
+ /* Offset of table with start offsets of original strings. */
+ nls_uint32 orig_tab_offset;
+ /* Offset of table with start offsets of translated strings. */
+ nls_uint32 trans_tab_offset;
+ /* Size of hash table. */
+ nls_uint32 hash_tab_size;
+ /* Offset of first hash table entry. */
+ nls_uint32 hash_tab_offset;
+
+ /* The following are only used in .mo files with minor revision >= 1. */
+
+ /* The number of system dependent segments. */
+ nls_uint32 n_sysdep_segments;
+ /* Offset of table describing system dependent segments. */
+ nls_uint32 sysdep_segments_offset;
+ /* The number of system dependent strings pairs. */
+ nls_uint32 n_sysdep_strings;
+ /* Offset of table with start offsets of original sysdep strings. */
+ nls_uint32 orig_sysdep_tab_offset;
+ /* Offset of table with start offsets of translated sysdep strings. */
+ nls_uint32 trans_sysdep_tab_offset;
+};
+
+/* Descriptor for static string contained in the binary .mo file. */
+struct string_desc
+{
+ /* Length of addressed string, not including the trailing NUL. */
+ nls_uint32 length;
+ /* Offset of string in file. */
+ nls_uint32 offset;
+};
+
+/* The following are only used in .mo files with minor revision >= 1. */
+
+/* Descriptor for system dependent string segment. */
+struct sysdep_segment
+{
+ /* Length of addressed string, including the trailing NUL. */
+ nls_uint32 length;
+ /* Offset of string in file. */
+ nls_uint32 offset;
+};
+
+/* Descriptor for system dependent string. */
+struct sysdep_string
+{
+ /* Offset of static string segments in file. */
+ nls_uint32 offset;
+ /* Alternating sequence of static and system dependent segments.
+ The last segment is a static segment, including the trailing NUL. */
+ struct segment_pair
+ {
+ /* Size of static segment. */
+ nls_uint32 segsize;
+ /* Reference to system dependent string segment, or ~0 at the end. */
+ nls_uint32 sysdepref;
+ } segments[1];
+};
+
+/* Marker for the end of the segments[] array. This has the value 0xFFFFFFFF,
+ regardless whether 'int' is 16 bit, 32 bit, or 64 bit. */
+#define SEGMENTS_END ((nls_uint32) ~0)
+
+/* @@ begin of epilog @@ */
+
+#endif /* gettext.h */
Index: or1k-gcc/intl/eval-plural.h
===================================================================
--- or1k-gcc/intl/eval-plural.h (nonexistent)
+++ or1k-gcc/intl/eval-plural.h (revision 728)
@@ -0,0 +1,114 @@
+/* Plural expression evaluation.
+ Copyright (C) 2000-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 STATIC
+#define STATIC static
+#endif
+
+/* Evaluate the plural expression and return an index value. */
+STATIC unsigned long int plural_eval PARAMS ((struct expression *pexp,
+ unsigned long int n))
+ internal_function;
+
+STATIC
+unsigned long int
+internal_function
+plural_eval (pexp, n)
+ struct expression *pexp;
+ unsigned long int n;
+{
+ switch (pexp->nargs)
+ {
+ case 0:
+ switch (pexp->operation)
+ {
+ case var:
+ return n;
+ case num:
+ return pexp->val.num;
+ default:
+ break;
+ }
+ /* NOTREACHED */
+ break;
+ case 1:
+ {
+ /* pexp->operation must be lnot. */
+ unsigned long int arg = plural_eval (pexp->val.args[0], n);
+ return ! arg;
+ }
+ case 2:
+ {
+ unsigned long int leftarg = plural_eval (pexp->val.args[0], n);
+ if (pexp->operation == lor)
+ return leftarg || plural_eval (pexp->val.args[1], n);
+ else if (pexp->operation == land)
+ return leftarg && plural_eval (pexp->val.args[1], n);
+ else
+ {
+ unsigned long int rightarg = plural_eval (pexp->val.args[1], n);
+
+ switch (pexp->operation)
+ {
+ case mult:
+ return leftarg * rightarg;
+ case divide:
+#if !INTDIV0_RAISES_SIGFPE
+ if (rightarg == 0)
+ raise (SIGFPE);
+#endif
+ return leftarg / rightarg;
+ case module:
+#if !INTDIV0_RAISES_SIGFPE
+ if (rightarg == 0)
+ raise (SIGFPE);
+#endif
+ return leftarg % rightarg;
+ case plus:
+ return leftarg + rightarg;
+ case minus:
+ return leftarg - rightarg;
+ case less_than:
+ return leftarg < rightarg;
+ case greater_than:
+ return leftarg > rightarg;
+ case less_or_equal:
+ return leftarg <= rightarg;
+ case greater_or_equal:
+ return leftarg >= rightarg;
+ case equal:
+ return leftarg == rightarg;
+ case not_equal:
+ return leftarg != rightarg;
+ default:
+ break;
+ }
+ }
+ /* NOTREACHED */
+ break;
+ }
+ case 3:
+ {
+ /* pexp->operation must be qmop. */
+ unsigned long int boolarg = plural_eval (pexp->val.args[0], n);
+ return plural_eval (pexp->val.args[boolarg ? 1 : 2], n);
+ }
+ }
+ /* NOTREACHED */
+ return 0;
+}
Index: or1k-gcc/intl/plural-exp.c
===================================================================
--- or1k-gcc/intl/plural-exp.c (nonexistent)
+++ or1k-gcc/intl/plural-exp.c (revision 728)
@@ -0,0 +1,156 @@
+/* Expression parsing for plural form selection.
+ Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+ Written by Ulrich Drepper , 2000.
+
+ 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. */
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif
+
+#include
+#include
+#include
+
+#include "plural-exp.h"
+
+#if (defined __GNUC__ && !defined __APPLE_CC__) \
+ || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)
+
+/* These structs are the constant expression for the germanic plural
+ form determination. It represents the expression "n != 1". */
+static const struct expression plvar =
+{
+ .nargs = 0,
+ .operation = var,
+};
+static const struct expression plone =
+{
+ .nargs = 0,
+ .operation = num,
+ .val =
+ {
+ .num = 1
+ }
+};
+struct expression GERMANIC_PLURAL =
+{
+ .nargs = 2,
+ .operation = not_equal,
+ .val =
+ {
+ .args =
+ {
+ [0] = (struct expression *) &plvar,
+ [1] = (struct expression *) &plone
+ }
+ }
+};
+
+# define INIT_GERMANIC_PLURAL()
+
+#else
+
+/* For compilers without support for ISO C 99 struct/union initializers:
+ Initialization at run-time. */
+
+static struct expression plvar;
+static struct expression plone;
+struct expression GERMANIC_PLURAL;
+
+static void
+init_germanic_plural ()
+{
+ if (plone.val.num == 0)
+ {
+ plvar.nargs = 0;
+ plvar.operation = var;
+
+ plone.nargs = 0;
+ plone.operation = num;
+ plone.val.num = 1;
+
+ GERMANIC_PLURAL.nargs = 2;
+ GERMANIC_PLURAL.operation = not_equal;
+ GERMANIC_PLURAL.val.args[0] = &plvar;
+ GERMANIC_PLURAL.val.args[1] = &plone;
+ }
+}
+
+# define INIT_GERMANIC_PLURAL() init_germanic_plural ()
+
+#endif
+
+void
+internal_function
+EXTRACT_PLURAL_EXPRESSION (nullentry, pluralp, npluralsp)
+ const char *nullentry;
+ struct expression **pluralp;
+ unsigned long int *npluralsp;
+{
+ if (nullentry != NULL)
+ {
+ const char *plural;
+ const char *nplurals;
+
+ plural = strstr (nullentry, "plural=");
+ nplurals = strstr (nullentry, "nplurals=");
+ if (plural == NULL || nplurals == NULL)
+ goto no_plural;
+ else
+ {
+ char *endp;
+ unsigned long int n;
+ struct parse_args args;
+
+ /* First get the number. */
+ nplurals += 9;
+ while (*nplurals != '\0' && isspace ((unsigned char) *nplurals))
+ ++nplurals;
+ if (!(*nplurals >= '0' && *nplurals <= '9'))
+ goto no_plural;
+#if defined HAVE_STRTOUL || defined _LIBC
+ n = strtoul (nplurals, &endp, 10);
+#else
+ for (endp = nplurals, n = 0; *endp >= '0' && *endp <= '9'; endp++)
+ n = n * 10 + (*endp - '0');
+#endif
+ if (nplurals == endp)
+ goto no_plural;
+ *npluralsp = n;
+
+ /* Due to the restrictions bison imposes onto the interface of the
+ scanner function we have to put the input string and the result
+ passed up from the parser into the same structure which address
+ is passed down to the parser. */
+ plural += 7;
+ args.cp = plural;
+ if (PLURAL_PARSE (&args) != 0)
+ goto no_plural;
+ *pluralp = args.res;
+ }
+ }
+ else
+ {
+ /* By default we are using the Germanic form: singular form only
+ for `one', the plural form otherwise. Yes, this is also what
+ English is using since English is a Germanic language. */
+ no_plural:
+ INIT_GERMANIC_PLURAL ();
+ *pluralp = &GERMANIC_PLURAL;
+ *npluralsp = 2;
+ }
+}
Index: or1k-gcc/intl/hash-string.h
===================================================================
--- or1k-gcc/intl/hash-string.h (nonexistent)
+++ or1k-gcc/intl/hash-string.h (revision 728)
@@ -0,0 +1,59 @@
+/* Description of GNU message catalog format: string hashing function.
+ Copyright (C) 1995, 1997, 1998, 2000, 2001 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. */
+
+/* @@ end of prolog @@ */
+
+#ifndef PARAMS
+# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES
+# define PARAMS(Args) Args
+# else
+# define PARAMS(Args) ()
+# endif
+#endif
+
+/* We assume to have `unsigned long int' value with at least 32 bits. */
+#define HASHWORDBITS 32
+
+
+/* Defines the so called `hashpjw' function by P.J. Weinberger
+ [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
+ 1986, 1987 Bell Telephone Laboratories, Inc.] */
+static unsigned long int hash_string PARAMS ((const char *__str_param));
+
+static inline unsigned long int
+hash_string (str_param)
+ const char *str_param;
+{
+ unsigned long int hval, g;
+ const char *str = str_param;
+
+ /* Compute the hash value for the given string. */
+ hval = 0;
+ while (*str != '\0')
+ {
+ hval <<= 4;
+ hval += (unsigned long int) *str++;
+ g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
+ if (g != 0)
+ {
+ hval ^= g >> (HASHWORDBITS - 8);
+ hval ^= g;
+ }
+ }
+ return hval;
+}
Index: or1k-gcc/intl/aclocal.m4
===================================================================
--- or1k-gcc/intl/aclocal.m4 (nonexistent)
+++ or1k-gcc/intl/aclocal.m4 (revision 728)
@@ -0,0 +1,32 @@
+# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_include([../config/codeset.m4])
+m4_include([../config/gettext.m4])
+m4_include([../config/glibc21.m4])
+m4_include([../config/iconv.m4])
+m4_include([../config/intdiv0.m4])
+m4_include([../config/inttypes-pri.m4])
+m4_include([../config/inttypes.m4])
+m4_include([../config/inttypes_h.m4])
+m4_include([../config/lcmessage.m4])
+m4_include([../config/lib-ld.m4])
+m4_include([../config/lib-link.m4])
+m4_include([../config/lib-prefix.m4])
+m4_include([../config/nls.m4])
+m4_include([../config/override.m4])
+m4_include([../config/po.m4])
+m4_include([../config/progtest.m4])
+m4_include([../config/stdint_h.m4])
+m4_include([../config/uintmax_t.m4])
+m4_include([../config/ulonglong.m4])