diff options
Diffstat (limited to 'libgloss/doc')
-rw-r--r-- | libgloss/doc/Makefile.in | 159 | ||||
-rwxr-xr-x | libgloss/doc/configure | 2766 | ||||
-rw-r--r-- | libgloss/doc/configure.in | 16 | ||||
-rw-r--r-- | libgloss/doc/porting.texi | 2100 |
4 files changed, 0 insertions, 5041 deletions
diff --git a/libgloss/doc/Makefile.in b/libgloss/doc/Makefile.in deleted file mode 100644 index 07fb1e135..000000000 --- a/libgloss/doc/Makefile.in +++ /dev/null @@ -1,159 +0,0 @@ -# Copyright (c) 1995, 1996 Cygnus Support -# -# The authors hereby grant permission to use, copy, modify, distribute, -# and license this software and its documentation for any purpose, provided -# that existing copyright notices are retained in all copies and that this -# notice is included verbatim in any distributions. No written agreement, -# license, or royalty fee is required for any of the authorized uses. -# Modifications to this software may be copyrighted by their authors -# and need not follow the licensing terms described here, provided that -# the new terms are clearly indicated on the first page of each file where -# they apply. -# - -DESTDIR = -srcdir = @srcdir@ -VPATH = @srcdir@ - -prefix = @prefix@ -exec_prefix = @exec_prefix@ -datarootdir = @datarootdir@ - -mandir = @mandir@ -man1dir = $(mandir)/man1 -infodir = @infodir@ - -MAKEINFO = makeinfo -TEXI2DVI = TEXINPUTS=$(TEXIDIR):$(srcdir):$$TEXINPUTS texi2dvi - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -# Where to find texinfo.tex to format docn with TeX -TEXIDIR = $(srcdir)/../../texinfo - -MANPAGES = - -all: - -info: porting.info - -html: porting.html - -dvi: porting.dvi - -pdf: porting.pdf - -ps: porting.ps - -doc: info dvi - -porting: porting.dvi porting.info - -###################################################################### -# DOCUMENTATION TARGETS -# TeX output -porting.dvi: $(srcdir)/porting.texi $(srcdir)/porting.texi - $(TEXI2DVI) $(srcdir)/porting.texi - -porting.pdf: $(srcdir)/porting.texi $(srcdir)/porting.texi - $(TEXI2DVI) --pdf $(srcdir)/porting.texi - -# info file for online browsing -porting.info: $(srcdir)/porting.texi $(srcdir)/porting.texi - $(MAKEINFO) -I $(srcdir) -o porting.info $(srcdir)/porting.texi - -porting.html: $(srcdir)/porting.texi $(srcdir)/porting.texi - $(MAKEINFO) --html -I $(srcdir) -o porting.html $(srcdir)/porting.texi - -porting.ps: porting.dvi - dvips -f porting.dvi > porting.ps - -# different targets for -ms, -mm, -me -# Try to use a recent texi2roff. v2 was put on prep in jan91. -# If you want an index, see texi2roff doc for postprocessing -# and add -i to texi2roff invocations below. -# Workarounds for texi2roff-2 (probably fixed in later texi2roff's, delete -# correspondint -e lines when later texi2roff's are current) -# + @ifinfo's deleted explicitly due to texi2roff-2 bug w nested constructs. -# + @c's deleted explicitly because texi2roff sees texinfo commands in them -# + @ (that's at-BLANK) not recognized by texi2roff, turned into blank -# + @alphaenumerate is ridiculously new, turned into @enumerate - -# roff output (-ms) -porting.ms: $(srcdir)/porting.texi - sed -e '/\\input texinfo/d' \ - -e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \ - -e '/^@ifinfo/,/^@end ifinfo/d' \ - -e '/^@c/d' \ - -e 's/{.*,,/{/' \ - -e 's/@ / /g' \ - -e 's/^@alphaenumerate/@enumerate/g' \ - -e 's/^@end alphaenumerate/@end enumerate/g' \ - $(srcdir)/porting.texi | \ - $(TEXI2ROFF) -ms | \ - sed -e 's/---/\\(em/g' \ - >porting.ms - -# roff output (-mm) -# '@noindent's removed due to texi2roff-2 mm bug; if yours is newer, -# try leaving them in -porting.mm: $(srcdir)/porting.texi - sed -e '/\\input texinfo/d' \ - -e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \ - -e '/^@ifinfo/,/^@end ifinfo/d' \ - -e '/^@c/d' \ - -e 's/{.*,,/{/' \ - -e '/@noindent/d' \ - -e 's/@ / /g' \ - -e 's/^@alphaenumerate/@enumerate/g' \ - -e 's/^@end alphaenumerate/@end enumerate/g' \ - $(srcdir)/porting.texi | \ - $(TEXI2ROFF) -mm | \ - sed -e 's/---/\\(em/g' \ - >porting.mm - -# roff output (-me) -porting.me: $(srcdir)/porting.texi - sed -e '/\\input texinfo/d' \ - -e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \ - -e '/^@ifinfo/,/^@end ifinfo/d' \ - -e '/^@c/d' \ - -e 's/{.*,,/{/' \ - -e 's/@ / /g' \ - -e 's/^@alphaenumerate/@enumerate/g' \ - -e 's/^@end alphaenumerate/@end enumerate/g' \ - $(srcdir)/porting.texi | \ - $(TEXI2ROFF) -me | \ - sed -e 's/---/\\(em/g' \ - >porting.me - - -###################################################################### - -clean mostlyclean: - -rm -f *.o *~ \#* core *.aux *.cp *.dvi *.fn *.ky *.log *.pg *.toc \ - *.tp *.vr *.cps *.fns *.kys *.pgs *.tps *.vrs *.info* *.1 *.ps - -maintainer-clean realclean: clean - -rm -f - -install: - -install-info: info - for i in *.info* ; do \ - $(INSTALL_DATA) $$i $(DESTDIR)$(infodir)/$$i ; \ - done - -clean-info: - -rm -rf *.info* - -distclean: clean - -rm -f Makefile config.cache config.log config.status - -Makefile: Makefile.in config.status - $(SHELL) config.status - -config.status: configure - $(SHELL) config.status --recheck diff --git a/libgloss/doc/configure b/libgloss/doc/configure deleted file mode 100755 index 996ca129a..000000000 --- a/libgloss/doc/configure +++ /dev/null @@ -1,2766 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61. -# -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006 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=: - # Zsh 3.x and 4.x performs 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 - - - - -# PATH needs CR -# 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 - -# 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 - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -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.) -as_nl=' -' -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 - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } -fi - -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - fi -done - -# Required to use basename. -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 - - -# Name of the executable. -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# CDPATH. -$as_unset CDPATH - - -if test "x$CONFIG_SHELL" = x; then - if (eval ":") 2>/dev/null; then - as_have_required=yes -else - as_have_required=no -fi - - if test $as_have_required = yes && (eval ": -(as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test \$exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=\$LINENO - as_lineno_2=\$LINENO - test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && - test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } -") 2> /dev/null; then - : -else - as_candidate_shells= - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - case $as_dir in - /*) - for as_base in sh bash ksh sh5; do - as_candidate_shells="$as_candidate_shells $as_dir/$as_base" - done;; - esac -done -IFS=$as_save_IFS - - - for as_shell in $as_candidate_shells $SHELL; do - # Try only shells that exist, to save several forks. - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { ("$as_shell") 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs 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 - - -: -_ASEOF -}; then - CONFIG_SHELL=$as_shell - as_have_required=yes - if { "$as_shell" 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs 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_func_return () { - (exit $1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = "$1" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test $exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } - -_ASEOF -}; then - break -fi - -fi - - done - - if test "x$CONFIG_SHELL" != x; then - for as_var in BASH_ENV ENV - do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - done - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -fi - - - if test $as_have_required = no; then - echo This script requires a shell more modern than all the - echo shells that I found on your system. Please install a - echo modern shell, or manually run the script under such a - echo shell if you do have one. - { (exit 1); exit 1; } -fi - - -fi - -fi - - - -(eval "as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test \$exitcode = 0") || { - echo No shell found that supports shell functions. - echo Please tell autoconf@gnu.org about your system, - echo including any error possibly output before this - echo message -} - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. 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" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); 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 -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in --n*) - case `echo 'x\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; - esac;; -*) - ECHO_N='-n';; -esac - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -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 -fi -echo >conf$$.file -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 -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=: -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= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= - -ac_unique_file="porting.texi" -ac_subst_vars='SHELL -PATH_SEPARATOR -PACKAGE_NAME -PACKAGE_TARNAME -PACKAGE_VERSION -PACKAGE_STRING -PACKAGE_BUGREPORT -exec_prefix -prefix -program_transform_name -bindir -sbindir -libexecdir -datarootdir -datadir -sysconfdir -sharedstatedir -localstatedir -includedir -oldincludedir -docdir -infodir -htmldir -dvidir -pdfdir -psdir -libdir -localedir -mandir -DEFS -ECHO_C -ECHO_N -ECHO_T -LIBS -build_alias -host_alias -target_alias -INSTALL_PROGRAM -INSTALL_SCRIPT -INSTALL_DATA -LIBOBJS -LTLIBOBJS' -ac_subst_files='' - ac_precious_vars='build_alias -host_alias -target_alias' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# 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_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=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_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=\$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_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=\$ac_optarg ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=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 ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - 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'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute directory names. -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 - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; } -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 - 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 .` || - { echo "$as_me: error: Working directory cannot be determined" >&2 - { (exit 1); exit 1; }; } -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - { echo "$as_me: error: pwd does not report name of working directory" >&2 - { (exit 1); exit 1; }; } - - -# 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 -- "$0" || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X"$0" | - 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 .." - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 - { (exit 1); exit 1; }; } - 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 -_ACEOF -fi - -if test -n "$ac_init_help"; then - - cat <<\_ACEOF - -_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" || continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`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 - 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.61 - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006 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 -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.61. 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=. - 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=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; - 2) - ac_configure_args1="$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 - ac_configure_args="$ac_configure_args '$ac_arg'" - ;; - esac - done -done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export 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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - *) $as_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=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - 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=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - 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 && - echo "$as_me: caught signal $ac_signal" - 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'; { (exit 1); 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 - -# 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 - - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -n "$CONFIG_SITE"; then - set x "$CONFIG_SITE" -elif test "x$prefix" != xNONE; then - set x "$prefix/share/config.site" "$prefix/etc/config.site" -else - set x "$ac_default_prefix/share/config.site" \ - "$ac_default_prefix/etc/config.site" -fi -shift -for ac_site_file -do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -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 - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -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,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -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 - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`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. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -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 - - - -if test "$srcdir" = "." ; then - mdir=`echo "${with_multisubdir}/" \ - | sed -e 's,\([^/][^/]*\),..,g' -e 's,^/$,,'` - ac_aux_dir= -for ac_dir in ${mdir}../../.. "$srcdir"/${mdir}../../..; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ${mdir}../../.. \"$srcdir\"/${mdir}../../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in ${mdir}../../.. \"$srcdir\"/${mdir}../../.." >&2;} - { (exit 1); exit 1; }; } -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. - - -else - ac_aux_dir= -for ac_dir in ${srcdir}/../.. "$srcdir"/${srcdir}/../..; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ${srcdir}/../.. \"$srcdir\"/${srcdir}/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in ${srcdir}/../.. \"$srcdir\"/${srcdir}/../.." >&2;} - { (exit 1); exit 1; }; } -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. - - -fi - -# 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. -{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&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 - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done -IFS=$as_save_IFS - - -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 -{ echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$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' - - -ac_config_files="$ac_config_files Makefile" - -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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - *) $as_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" && - { echo "$as_me:$LINENO: updating cache $cache_file" >&5 -echo "$as_me: updating cache $cache_file" >&6;} - cat confcache >$cache_file - else - { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 -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}' - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -ac_script=' -t clear -:clear -s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g -t quote -s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g -t quote -b any -:quote -s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g -s/\[/\\&/g -s/\]/\\&/g -s/\$/$$/g -H -:any -${ - g - s/^\n// - s/\n/ /g - p -} -' -DEFS=`sed -n "$ac_script" confdefs.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=`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. - ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - -: ${CONFIG_STATUS=./config.status} -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $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} -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -## --------------------- ## -## 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=: - # Zsh 3.x and 4.x performs 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 - - - - -# PATH needs CR -# 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 - -# 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 - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -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.) -as_nl=' -' -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 - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } -fi - -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - fi -done - -# Required to use basename. -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 - - -# Name of the executable. -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# CDPATH. -$as_unset CDPATH - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. 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" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); 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 -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in --n*) - case `echo 'x\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; - esac;; -*) - ECHO_N='-n';; -esac - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -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 -fi -echo >conf$$.file -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 -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=: -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 - -# 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.61. 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 - -cat >>$CONFIG_STATUS <<_ACEOF -# Files that config.status was made for. -config_files="$ac_config_files" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - -q, --quiet 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 - -Configuration files: -$config_files - -Report bugs to <bug-autoconf@gnu.org>." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -ac_cs_version="\\ -config.status -configured by $0, generated by GNU Autoconf 2.61, - with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" - -Copyright (C) 2006 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' -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -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 ) - echo "$ac_cs_version"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" - ac_need_defaults=false;; - --he | --h | --help | --hel | -h ) - 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. - -*) { echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$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 -if \$ac_cs_recheck; then - echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - CONFIG_SHELL=$SHELL - export CONFIG_SHELL - exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - 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 -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 '{ (exit 1); 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") -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - -# -# Set up the sed scripts for CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "$CONFIG_FILES"; then - -_ACEOF - - - -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -SHELL!$SHELL$ac_delim -PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim -PACKAGE_NAME!$PACKAGE_NAME$ac_delim -PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim -PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim -PACKAGE_STRING!$PACKAGE_STRING$ac_delim -PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim -exec_prefix!$exec_prefix$ac_delim -prefix!$prefix$ac_delim -program_transform_name!$program_transform_name$ac_delim -bindir!$bindir$ac_delim -sbindir!$sbindir$ac_delim -libexecdir!$libexecdir$ac_delim -datarootdir!$datarootdir$ac_delim -datadir!$datadir$ac_delim -sysconfdir!$sysconfdir$ac_delim -sharedstatedir!$sharedstatedir$ac_delim -localstatedir!$localstatedir$ac_delim -includedir!$includedir$ac_delim -oldincludedir!$oldincludedir$ac_delim -docdir!$docdir$ac_delim -infodir!$infodir$ac_delim -htmldir!$htmldir$ac_delim -dvidir!$dvidir$ac_delim -pdfdir!$pdfdir$ac_delim -psdir!$psdir$ac_delim -libdir!$libdir$ac_delim -localedir!$localedir$ac_delim -mandir!$mandir$ac_delim -DEFS!$DEFS$ac_delim -ECHO_C!$ECHO_C$ac_delim -ECHO_N!$ECHO_N$ac_delim -ECHO_T!$ECHO_T$ac_delim -LIBS!$LIBS$ac_delim -build_alias!$build_alias$ac_delim -host_alias!$host_alias$ac_delim -target_alias!$target_alias$ac_delim -INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim -INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim -INSTALL_DATA!$INSTALL_DATA$ac_delim -LIBOBJS!$LIBOBJS$ac_delim -LTLIBOBJS!$LTLIBOBJS$ac_delim -_ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 42; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi - -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS <conf$$subs.sed -rm -f conf$$subs.sed -cat >>$CONFIG_STATUS <<_ACEOF -:end -s/|#_!!_#|//g -CEOF$ac_eof -_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 -fi # test -n "$CONFIG_FILES" - - -for ac_tag in :F $CONFIG_FILES -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 -echo "$as_me: error: Invalid tag $ac_tag." >&2;} - { (exit 1); exit 1; }; };; - :[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 || - { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -echo "$as_me: error: cannot find input file: $ac_f" >&2;} - { (exit 1); exit 1; }; };; - esac - ac_file_inputs="$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 "`IFS=: - echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - fi - - case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin";; - 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 || -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" - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`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 || -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" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} - { (exit 1); exit 1; }; }; } - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`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 -# 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= - -case `sed -n '/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p -' $ac_file_inputs` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - 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 - sed "$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s&@configure_input@&$configure_input&;t t -s&@top_builddir@&$ac_top_builddir_sub&;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 -" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out - -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"; } && - { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&5 -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 - ;; - - - - esac - -done # for ac_tag - - -{ (exit 0); exit 0; } -_ACEOF -chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - - -# 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 || { (exit 1); exit 1; } -fi - diff --git a/libgloss/doc/configure.in b/libgloss/doc/configure.in deleted file mode 100644 index ab165642a..000000000 --- a/libgloss/doc/configure.in +++ /dev/null @@ -1,16 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_PREREQ(2.59) -AC_INIT(porting.texi) - -if test "$srcdir" = "." ; then - mdir=`echo "${with_multisubdir}/" \ - | sed -e 's,\([[^/]][[^/]]*\),..,g' -e 's,^/$,,'` - AC_CONFIG_AUX_DIR(${mdir}../../..) -else - AC_CONFIG_AUX_DIR(${srcdir}/../..) -fi - -AC_PROG_INSTALL - -AC_CONFIG_FILES(Makefile) -AC_OUTPUT diff --git a/libgloss/doc/porting.texi b/libgloss/doc/porting.texi deleted file mode 100644 index 9e1d9286e..000000000 --- a/libgloss/doc/porting.texi +++ /dev/null @@ -1,2100 +0,0 @@ -\input texinfo @c -*- Texinfo -*- -@setfilename porting.info -@settitle Embed with GNU - -@c -@c This file documents the process of porting the GNU tools to an -@c embedded environment. -@c - -@finalout -@setchapternewpage off -@iftex -@raggedbottom -@global@parindent=0pt -@end iftex - -@titlepage -@title Embed With GNU -@subtitle Porting The GNU Tools To Embedded Systems -@sp 4 -@subtitle Spring 1995 -@subtitle Very *Rough* Draft -@author Rob Savoye - Cygnus Support -@page - -@vskip 0pt plus 1filll -Copyright @copyright{} 1993, 1994, 1995 Cygnus Support - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided also that -the entire resulting derived work is distributed under the terms of a -permission notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions. -@end titlepage - -@ifinfo -@format -START-INFO-DIR-ENTRY -* Embed with GNU: (porting-). Embed with GNU -END-INFO-DIR-ENTRY -@end format -Copyright (c) 1993, 1994, 1995 Cygnus Support - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided also that -the entire resulting derived work is distributed under the terms of a -permission notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions. - -@node Top -@top Embed with GNU - -@end ifinfo -@strong{Rough Draft} - -The goal of this document is to gather all the information needed to -port the GNU tools to a new embedded target in one place. This will -duplicate some info found in the other manual for the GNU tools, but -this should be all you'll need. - -@menu -* Libgloss:: Libgloss, a library of board support packages. -* GCC:: Porting GCC/G++ to a new embedded target. -* Libraries:: Making Newlib run on an new embedded target. -* GDB:: Making GDB understand a new back end. -* Binutils:: Using the GNU binary utilities. -* Code Listings:: Listings of the commented source code from the - text. -@end menu - -@node Libgloss, GCC, Top, Top -@chapter Libgloss -Libgloss is a library for all the details that usually get glossed over. -This library refers to things like startup code, and usually I/O support -for @code{gcc} and @code{C library}. The C library used through out -this manual is @code{newlib}. Newlib is a ANSI conforming C library -developed by Cygnus Support. Libgloss could easily be made to -support other C libraries, and it can be used standalone as well. The -standalone configuration is typically used when bringing up new -hardware, or on small systems. - -For a long time, these details were part of newlib. This approach worked -well when a complete tool chain only had to support one system. A tool -chain refers to the series of compiler passes required to produce a -binary file that will run on an embedded system. For C, the passes are -cpp, gcc, gas, ld. Cpp is the preprocessor, which process all the header -files and macros. Gcc is the compiler, which produces assembler from the -processed C files. Gas assembles the code into object files, and then ld -combines the object files and binds the code to addresses and produces -the final executable image. - -Most of the time a tool chain does only have to support one target -execution environment. An example of this would be a tool chain for the -AMD 29k processor family. All of the execution environments for this -processor have the same interface, the same memory map, and the same -I/O code. In this case all of the support code is under newlib/libc/sys. -Libgloss's creation was forced initially because of the @code{cpu32} -processor family. There are many different execution environments for -this line, and they vary wildly. newlib itself has only a few -dependencies that it needs for each target. These are explained later in -this doc. The hardware dependent part of newlib was reorganized into a -separate directory structure within newlib called the stub dirs. It was -initially called this because most of the routines newlib needs for a -target were simple stubs that do nothing, but return a value to the -application. They only exist so the linker can produce a final -executable image. This work was done during the early part of 1993. - -After a while it became apparent that this approach of isolating the -hardware and systems files together made sense. Around this same time -the stub dirs were made to run standalone, mostly so it could also be -used to support GDB's remote debugging needs. At this time it was -decided to move the stub dirs out of newlib and into it's own separate -library so it could be used standalone, and be included in various other -GNU tools without having to bring in all of newlib, which is large. The -new library is called Libgloss, for Gnu Low-level OS support. - -@menu -* Supported targets:: What targets libgloss currently - supports. -* Building libgloss:: How to configure and built libgloss - for a target. -* Board support:: How to add support for a new board. -@end menu - -@node Supported targets, Building libgloss, Libgloss, Libgloss -@section Supported Targets -Currently libgloss is being used for the following targets: - -@menu -* Sparclite:: Fujitsu's sparclite. -* CPU32:: Various m68k based targets. -* Mips:: Mips code based targets. -* PA-RISC:: Precision Risc Organization.. -@end menu - -@node Sparclite, CPU32, , Supported targets -@subsection Sparclite Targets Supported -@c FIXME: put links to the docs in etc/targetdoc -This is for the Fujitsu Sparclite family of processors. Currently this -covers the ex930, ex931, ex932, ex933, and the ex934. In addition to the -I/O code a startup file, this has a GDB debug-stub that gets linked into -your application. This is an exception handler style debug stub. For -more info, see the section on Porting GDB. @ref{GDB,,Porting GDB}. - -The Fujitsu eval boards use a host based terminal program to load and -execute programs on the target. This program, @code{pciuh} is relatively -new (in 1994) and it replaced the previous ROM monitor which had the -shell in the ROM. GDB uses the the GDB remote protocol, the relevant -source files from the gdb sources are remote-sparcl.c. The debug stub is -part of libgloss and is called sparcl-stub.c. - -@node CPU32, Mips, Sparclite, Supported targets -@subsection Motorola CPU32 Targets supported -This refers to Motorola's m68k based CPU32 processor family. The crt0.S -startup file should be usable with any target environment, and it's -mostly just the I/O code and linker scripts that vary. Currently there -is support for the Motorola MVME line of 6U VME boards and IDP -line of eval boards. All of the -Motorola VME boards run @code{Bug}, a ROM based debug monitor. -This monitor has the feature of using user level traps to do I/O, so -this code should be portable to other MVME boards with little if any -change. The startup file also can remain unchanged. About the only thing -that varies is the address for where the text section begins. This can -be accomplished either in the linker script, or on the command line -using the @samp{-Ttext [address]}. - -@c FIXME: Intermetrics or ISI wrote rom68k ? -There is also support for the @code{rom68k} monitor as shipped on -Motorola's IDP eval board line. This code should be portable across the -range of CPU's the board supports. There is also GDB support for this -target environment in the GDB source tree. The relevant files are -gdb/monitor.c, monitor.h, and rom58k-rom.c. The usage of these files is -discussed in the GDB section. - -@node Mips, PA-RISC, CPU32, Supported targets -@subsection Mips core Targets Supported -The Crt0 startup file should run on any mips target that doesn't require -additional hardware initialization. The I/O code so far only supports a -custom LSI33k based RAID disk controller board. It should easy to -change to support the IDT line of eval boards. Currently the two -debugging protocols supported by GDB for mips targets is IDT's mips -debug protocol, and a customized hybrid of the standard GDB remote -protocol and GDB's standard ROM monitor support. Included here is the -debug stub for the hybrid monitor. This supports the LSI33k processor, -and only has support for the GDB protocol commands @code{g}, @code{G}, -@code{m}, @code{M}, which basically only supports the register and -memory reading and writing commands. This is part of libgloss and is -called lsi33k-stub.c. - -The crt0.S should also work on the IDT line of eval boards, but has only -been run on the LSI33k for now. There is no I/O support for the IDT eval -board at this time. The current I/O code is for a customized version of -LSI's @code{pmon} ROM monitor. This uses entry points into the monitor, -and should easily port to other versions of the pmon monitor. Pmon is -distributed in source by LSI. - -@node PA-RISC, , Mips, Supported targets -@subsection PA-RISC Targets Supported -This supports the various boards manufactured by the HP-PRO consortium. -This is a group of companies all making variations on the PA-RISC -processor. Currently supported are ports to the WinBond @samp{Cougar} -board based around their w89k version of the PA. Also supported is the -Oki op50n processor. - -There is also included, but never built an unfinished port to the HP 743 -board. This board is the main CPU board for the HP700 line of industrial -computers. This target isn't exactly an embedded system, in fact it's -really only designed to load and run HP-UX. Still, the crt0.S and I/O -code are fully working. It is included mostly because their is a barely -functioning exception handler GDB debug stub, and I hope somebody could -use it. The other PRO targets all use GDB's ability to talk to ROM -monitors directly, so it doesn't need a debug stub. There is also a -utility that will produce a bootable file by HP's ROM monitor. This is -all included in the hopes somebody else will finish it. :-) - -Both the WinBond board and the Oki board download srecords. The WinBond -board also has support for loading the SOM files as produced by the -native compiler on HP-UX. WinBond supplies a set of DOS programs that -will allow the loading of files via a bidirectional parallel port. This -has never been tested with the output of GNU SOM, as this manual is -mostly for Unix based systems. - -@node Building libgloss, Board support, Supported targets, Libgloss -@section Configuring and building libgloss. - -Libgloss uses an autoconf based script to configure. Autoconf scripts -are portable shell scripts that are generated from a configure.in file. -Configure input scripts are based themselves on m4. Most configure -scripts run a series of tests to determine features the various -supported features of the target. For features that can't be determined -by a feature test, a makefile fragment is merged in. The configure -process leaves creates a Makefile in the build directory. For libgloss, -there are only a few configure options of importance. These are --target -and --srcdir. - -Typically libgloss is built in a separate tree just for objects. In this -manner, it's possible to have a single source tree, and multiple object -trees. If you only need to configure for a single target environment, -then you can configure in the source tree. The argument for --target is -a config string. It's usually safest to use the full canonical opposed -to the target alias. So, to configure for a CPU32 (m68k) with a separate -source tree, use: - -@smallexample -../src/libgloss/configure --verbose --target m68k-coff -@end smallexample - -The configure script is in the source tree. When configure is invoked -it will determine it's own source tree, so the --srcdir is would be -redundant here. - -Once libgloss is configured, @code{make} is sufficient to build it. The -default values for @code{Makefiles} are typically correct for all -supported systems. The test cases in the testsuite will also built -automatically as opposed to a @code{make check}, where test binaries -aren't built till test time. This is mostly cause the libgloss -testsuites are the last thing built when building the entire GNU source -tree, so it's a good test of all the other compilation passes. - -The default values for the Makefiles are set in the Makefile fragment -merged in during configuration. This fragment typically has rules like - -@smallexample -CC_FOR_TARGET = `if [ -f $$@{OBJROOT@}/gcc/xgcc ] ; \ - then echo $@{OBJROOT@}/gcc/xgcc -B$@{OBJROOT@}/gcc/ ; \ - else t='$@{program_transform_name@}'; echo gcc | sed -e '' $$t ; fi` -@end smallexample - -Basically this is a runtime test to determine whether there are freshly -built executables for the other main passes of the GNU tools. If there -isn't an executable built in the same object tree, then -@emph{transformed}the generic tool name (like gcc) is transformed to the -name typically used in GNU cross compilers. The names are -typically based on the target's canonical name, so if you've configured -for @code{m68k-coff} the transformed name is @code{m68k-coff-gcc} in -this case. If you install with aliases or rename the tools, this won't -work, and it will always look for tools in the path. You can force the a -different name to work by reconfiguring with the -@code{--program-transform-name} option to configure. This option takes a -sed script like this @code{-e s,^,m68k-coff-,} which produces tools -using the standard names (at least here at Cygnus). - -The search for the other GNU development tools is exactly the same idea. -This technique gets messier when build options like @code{-msoft-float} -support are used. The Makefile fragments set the @code{MUTILIB} -variable, and if it is set, the search path is modified. If the linking -is done with an installed cross compiler, then none of this needs to be -used. This is done so libgloss will build automatically with a fresh, -and uninstalled object tree. It also makes it easier to debug the other -tools using libgloss's test suites. - -@node Board support, , Building libgloss, Libgloss -@section Adding Support for a New Board - -This section explains how to add support for a new board to libgloss. -In order to add support for a board, you must already have developed a -toolchain for the target architecture. - -All of the changes you will make will be in the subdirectory named -after the architecture used by your board. For example, if you are -developing support for a new ColdFire board, you will modify files in -the @file{m68k} subdirectory, as that subdirectory contains support -for all 68K devices, including architecture variants like ColdFire. - -In general, you will be adding three components: a @file{crt0.S} file -(@pxref{Crt0}), a linker script (@pxref{Linker Scripts}), and a -hardware support library. Each should be prefixed with the name of -your board. For example, if you ard adding support for a new Surf -board, then you will be adding the assembly @file{surf-crt0.S} (which -will be assembled into @file{surf-crt0.o}), the linker script -@file{surf.ld}, and other C and assembly files which will be combined -into the hardware support library @file{libsurf.a}. - -You should modify @file{Makefile.in} to define new variables -corresponding to your board. Although there is some variation between -architectures, the general convention is to use the following format: - -@example -# The name of the crt0.o file. -SURF_CRT0 = surf-crt0.o -# The name of the linker script. -SURF_SCRIPTS = surf.ld -# The name of the hardware support library. -SURF_BSP = libsurf.a -# The object files that make up the hardware support library. -SURF_OBJS = surf-file1.o surf-file2.o -# The name of the Makefile target to use for installation. -SURF_INSTALL = install-surf -@end example - -Then, you should create the @code{$@{SURF_BSP@}} and -@code{$@{SURF_INSTALL@}} make targets. Add @code{$@{SURF_CRT0@}} to -the dependencies for the @code{all} target and add -@code{$@{SURF_INSTALL@}} to the dependencies for the @code{install} -target. Now, when libgloss is built and installed, support for your -BSP will be installed as well. - -@node GCC, Libraries, Libgloss, Top -@chapter Porting GCC - -Porting GCC requires two things, neither of which has anything to do -with GCC. If GCC already supports a processor type, then all the work in -porting GCC is really a linker issue. All GCC has to do is produce -assembler output in the proper syntax. Most of the work is done by the -linker, which is described elsewhere. - -Mostly all GCC does is format the command line for the linker pass. The -command line for GCC is set in the various config subdirectories of gcc. -The options of interest to us are @code{CPP_SPEC} and -@code{STARTFILE_SPEC}. CPP_SPEC sets the builtin defines for your -environment. If you support multiple environments with the same -processor, then OS specific defines will need to be elsewhere. -@c FIXME: Check these names - -@code{STARTFILE_SPEC} - -Once you have linker support, GCC will be able to produce a fully linked -executable image. The only @emph{part} of GCC that the linker wants is a -crt0.o, and a memory map. If you plan on running any programs that do -I/O of any kind, you'll need to write support for the C library, which -is described elsewhere. - -@menu -* Overview:: An overview as to the compilation passes. -* Options:: Useful GCC options for embedded systems. -@end menu - -@node Overview, Options, , GCC -@section Compilation passes - -GCC by itself only compiles the C or C++ code into assembler. Typically -GCC invokes all the passes required for you. These passes are cpp, cc1, -gas, ld. @code{cpp} is the C preprocessor. This will merge in the -include files, expand all macros definitions, and process all the -@code{#ifdef} sections. To see the output of ccp, invoke gcc with the -@code{-E} option, and the preprocessed file will be printed on the -stdout. cc1 is the actual compiler pass that produces the assembler for -the processed file. GCC is actually only a driver program for all the -compiler passes. It will format command line options for the other passes. -The usual command line GCC uses for the final link phase will have LD -link in the startup code and additional libraries by default. - -GNU AS started it's life to only function as a compiler pass, but -these days it can also be used as a source level assembler. When used as -a source level assembler, it has a companion assembler preprocessor -called @code{gasp}. This has a syntax similar to most other assembler -macros packages. GAS emits a relocatable object file from the assembler -source. The object file contains the executable part of the application, -and debug symbols. - -LD is responsible for resolving the addresses and symbols to something -that will be fully self-contained. Some RTOS's use relocatable object -file formats like @code{a.out}, but more commonly the final image will -only use absolute addresses for symbols. This enables code to be burned -into PROMS as well. Although LD can produce an executable image, there -is usually a hidden object file called @code{crt0.o} that is required as -startup code. With this startup code and a memory map, the executable -image will actually run on the target environment. @ref{Crt0,,Startup -Files}. - -The startup code usually defines a special symbol like @code{_start} -that is the default base address for the application, and the first -symbol in the executable image. If you plan to use any routines from the -standard C library, you'll also need to implement the functions that -this library is dependent on. @ref{Libraries,,Porting Newlib}. - -@node Options, , Overview, GCC -@c FIXME: Need stuff here about -fpic, -Ttext, etc... - -Options for the various development tools are covered in more detail -elsewhere. Still, the amount of options can be an overwhelming amount of -stuff, so the options most suited to embedded systems are summarized -here. If you use GCC as the main driver for all the passes, most of the -linker options can be passed directly to the compiler. There are also -GCC options that control how the GCC driver formats the command line -arguments for the linker. - -@menu -* GCC Options:: Options for the compiler. -* GAS Options:: Options for the assembler. -* LD Options:: Options for the linker. -@end menu - -@node GCC Options, GAS Options, , Options -Most of the GCC options that we're interested control how the GCC driver -formats the options for the linker pass. - -@c FIXME: this section is still under work. -@table @code -@item -nostartfiles -@item -nostdlib -@item -Xlinker -Pass the next option directly to the linker. - -@item -v -@item -fpic -@end table - -@node GAS Options, LD Options, GCC Options, Options -@c FIXME: Needs stuff here - -@node LD Options, , GAS Options, Options -@c FIXME: Needs stuff here - - -@node Libraries, GDB, GCC, Top -@chapter Porting newlib - -@menu -* Crt0:: Crt0.S. -* Linker Scripts:: Linker scripts for memory management. -* What to do now:: Tricks for manipulating formats. -* Libc:: Making libc work. -@end menu - -@node Crt0, Linker Scripts, , Libraries -@section Crt0, the main startup file - -To make a program that has been compiled with GCC to run, you -need to write some startup code. The initial piece of startup code is -called a crt0. (C RunTime 0) This is usually written in assembler, and -it's object gets linked in first, and bootstraps the rest of the -application when executed. This file needs to do the following things. - -@enumerate -@item -Initialize anything that needs it. This init section varies. If you are -developing an application that gets download to a ROM monitor, then -there is usually no need for any special initialization. The ROM monitor -handles it for you. - -If you plan to burn your code in a ROM, then the crt0 typically has to -do all the hardware initialization that is required to run an -application. This can include things like initializing serial ports or -run a memory check. It all depends on the hardware. - -@item -Zero the BSS section. This is for uninitialized data. All the addresses in -this section need to be initialized to zero so that programs that forget -to check new variables default value will get unpredictable results. - -@item -Call main() -This is what basically starts things running. If your ROM monitor -supports it, then first setup argc and argv for command line arguments -and an environment pointer. Then branch to main(). For G++ the the main -routine gets a branch to __main inserted by the code generator at the -very top. __main() is used by G++ to initialize it's internal tables. -__main() then returns back to your original main() and your code gets -executed. - -@item -Call exit() -After main() has returned, you need to cleanup things and return control -of the hardware from the application. On some hardware, there is nothing -to return to, especially if your program is in ROM. Sometimes the best -thing to do in this case is do a hardware reset, or branch back to the -start address all over again. - -When there is a ROM monitor present, usually a user trap can be called -and then the ROM takes over. Pick a safe vector with no side -effects. Some ROMs have a builtin trap handler just for this case. -@end enumerate -portable between all the m68k based boards we have here. -@ref{crt0.S,,Example Crt0.S}. - - -@smallexample -/* ANSI concatenation macros. */ - -#define CONCAT1(a, b) CONCAT2(a, b) -#define CONCAT2(a, b) a ## b -@end smallexample -These we'll use later. - -@smallexample -/* These are predefined by new versions of GNU cpp. */ - -#ifndef __USER_LABEL_PREFIX__ -#define __USER_LABEL_PREFIX__ _ -#endif - -/* Use the right prefix for global labels. */ -#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x) - -@end smallexample - -These macros are to make this code portable between both @emph{COFF} and -@emph{a.out}. @emph{COFF} always has an @var{_ (underline)} prepended on -the front of all global symbol names. @emph{a.out} has none. - -@smallexample -#ifndef __REGISTER_PREFIX__ -#define __REGISTER_PREFIX__ -#endif - -/* Use the right prefix for registers. */ -#define REG(x) CONCAT1 (__REGISTER_PREFIX__, x) - -#define d0 REG (d0) -#define d1 REG (d1) -#define d2 REG (d2) -#define d3 REG (d3) -#define d4 REG (d4) -#define d5 REG (d5) -#define d6 REG (d6) -#define d7 REG (d7) -#define a0 REG (a0) -#define a1 REG (a1) -#define a2 REG (a2) -#define a3 REG (a3) -#define a4 REG (a4) -#define a5 REG (a5) -#define a6 REG (a6) -#define fp REG (fp) -#define sp REG (sp) -@end smallexample - -This is for portability between assemblers. Some register names have a -@var{%} or @var{$} prepended to the register name. - -@smallexample -/* - * Set up some room for a stack. We just grab a chunk of memory. - */ - .set stack_size, 0x2000 - .comm SYM (stack), stack_size -@end smallexample - -Set up space for the stack. This can also be done in the linker script, -but it typically gets done here. - -@smallexample -/* - * Define an empty environment. - */ - .data - .align 2 -SYM (environ): - .long 0 -@end smallexample - -Set up an empty space for the environment. This is bogus on any most ROM -monitor, but we setup a valid address for it, and pass it to main. At -least that way if an application checks for it, it won't crash. - -@smallexample - .align 2 - .text - .global SYM (stack) - - .global SYM (main) - .global SYM (exit) -/* - * This really should be __bss_start, not SYM (__bss_start). - */ - .global __bss_start -@end smallexample - -Setup a few global symbols that get used elsewhere. @var{__bss_start} -needs to be unchanged, as it's setup by the linker script. - -@smallexample -/* - * start -- set things up so the application will run. - */ -SYM (start): - link a6, #-8 - moveal #SYM (stack) + stack_size, sp - -/* - * zerobss -- zero out the bss section - */ - moveal #__bss_start, a0 - moveal #SYM (end), a1 -1: - movel #0, (a0) - leal 4(a0), a0 - cmpal a0, a1 - bne 1b -@end smallexample - -The global symbol @code{start} is used by the linker as the default -address to use for the @code{.text} section. then it zeros the -@code{.bss} section so the uninitialized data will all be cleared. Some -programs have wild side effects from having the .bss section let -uncleared. Particularly it causes problems with some implementations of -@code{malloc}. - -@smallexample -/* - * Call the main routine from the application to get it going. - * main (argc, argv, environ) - * We pass argv as a pointer to NULL. - */ - pea 0 - pea SYM (environ) - pea sp@@(4) - pea 0 - jsr SYM (main) - movel d0, sp@@- -@end smallexample - -Setup the environment pointer and jump to @code{main()}. When -@code{main()} returns, it drops down to the @code{exit} routine below. - -@smallexample -/* - * _exit -- Exit from the application. Normally we cause a user trap - * to return to the ROM monitor for another run. - */ -SYM (exit): - trap #0 -@end smallexample - -Implementing @code{exit} here is easy. Both the @code{rom68k} and @code{bug} -can handle a user caused exception of @code{zero} with no side effects. -Although the @code{bug} monitor has a user caused trap that will return -control to the ROM monitor, this solution has been more portable. - -@node Linker Scripts, What to do now, Crt0, Libraries -@section Linker scripts for memory management - -The linker script sets up the memory map of an application. It also -sets up default values for variables used elsewhere by sbrk() and the -crt0. These default variables are typically called @code{_bss_start} and -@code{_end}. - -For G++, the constructor and destructor tables must also be setup here. -The actual section names vary depending on the object file format. For -@code{a.out} and @code{coff}, the three main sections are @code{.text}, -@code{.data}, and @code{.bss}. - -Now that you have an image, you can test to make sure it got the -memory map right. You can do this by having the linker create a memory -map (by using the @code{-Map} option), or afterwards by using @code{nm} to -check a few critical addresses like @code{start}, @code{bss_end}, and -@code{_etext}. - -Here's a breakdown of a linker script for a m68k based target board. -See the file @code{libgloss/m68k/idp.ld}, or go to the appendixes in -the end of the manual. @ref{idp.ld,,Example Linker Script}. - -@smallexample -STARTUP(crt0.o) -OUTPUT_ARCH(m68k) -INPUT(idp.o) -SEARCH_DIR(.) -__DYNAMIC = 0; -@end smallexample - -The @code{STARTUP} command loads the file specified so that it's -first. In this case it also doubles to load the file as well, because -the m68k-coff configuration defaults to not linking in the crt0.o by -default. It assumes that the developer probably has their own crt0.o. -This behavior is controlled in the config file for each architecture. -It's a macro called @code{STARTFILE_SPEC}, and if it's set to -@code{null}, then when @code{gcc} formats it's command line, it doesn't -add @code{crto.o}. Any file name can be specified here, but the default -is always @code{crt0.o}. - -Course if you only use @code{ld} to link, then the control of whether or -not to link in @code{crt0.o} is done on the command line. If you have -multiple crto files, then you can leave this out all together, and link -in the @code{crt0.o} in the makefile, or by having different linker -scripts. Sometimes this is done for initializing floating point -optionally, or to add device support. - -The @code{OUTPUT_ARCH} sets architecture the output file is for. - -@code{INPUT} loads in the file specified. In this case, it's a relocated -library that contains the definitions for the low-level functions need -by libc.a. This could have also been specified on the command line, but -as it's always needed, it might as well be here as a default. -@code{SEARCH_DIR} specifies the path to look for files, and -@code{_DYNAMIC} means in this case there are no shared libraries. - -@c FIXME: Check the linker manual to make sure this is accurate. -@smallexample -/* - * Setup the memory map of the MC68ec0x0 Board (IDP) - * stack grows up towards high memory. This works for - * both the rom68k and the mon68k monitors. - */ -MEMORY -@{ - ram : ORIGIN = 0x10000, LENGTH = 2M -@} -@end smallexample - -This specifies a name for a section that can be referred to later in the -script. In this case, it's only a pointer to the beginning of free RAM -space, with an upper limit at 2M. If the output file exceeds the upper -limit, it will produce an error message. - -@smallexample -/* - * stick everything in ram (of course) - */ -SECTIONS -@{ - .text : - @{ - CREATE_OBJECT_SYMBOLS - *(.text) - etext = .; - __CTOR_LIST__ = .; - LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) - *(.ctors) - LONG(0) - __CTOR_END__ = .; - __DTOR_LIST__ = .; - LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) - *(.dtors) - LONG(0) - __DTOR_END__ = .; - *(.lit) - *(.shdata) - @} > ram - .shbss SIZEOF(.text) + ADDR(.text) : @{ - *(.shbss) - @} -@end smallexample - -Set up the @code{.text} section. In a @code{COFF} file, .text is where -all the actual instructions are. This also sets up the @emph{CONTRUCTOR} -and the @emph{DESTRUCTOR} tables for @code{G++}. Notice that the section -description redirects itself to the @emph{ram} variable setup earlier. - -@smallexample - .talias : @{ @} > ram - .data : @{ - *(.data) - CONSTRUCTORS - _edata = .; - @} > ram -@end smallexample - -Setup the @code{.data} section. In a @code{coff} file, this is where all -he initialized data goes. @code{CONSTRUCTORS} is a special command used -by @code{ld}. - -@smallexample - .bss SIZEOF(.data) + ADDR(.data) : - @{ - __bss_start = ALIGN(0x8); - *(.bss) - *(COMMON) - end = ALIGN(0x8); - _end = ALIGN(0x8); - __end = ALIGN(0x8); - @} - .mstack : @{ @} > ram - .rstack : @{ @} > ram - .stab . (NOLOAD) : - @{ - [ .stab ] - @} - .stabstr . (NOLOAD) : - @{ - [ .stabstr ] - @} -@} -@end smallexample - -Setup the @code{.bss} section. In a @code{COFF} file, this is where -unitialized data goes. The symbols @code{_bss_start} and @code{_end} -are setup here for use by the @code{crt0.o} when it zero's the -@code{.bss} section. - - -@node What to do now, Libc, Linker Scripts, Libraries -@section What to do when you have a binary image - -A few ROM monitors load binary images, typically @code{a.out}, but most all -will load an @code{srecord}. An srecord is an ASCII representation of a binary -image. At it's simplest, an srecord is an address, followed by a byte -count, followed by the bytes, and a 2's compliment checksum. A whole -srecord file has an optional @emph{start} record, and a required @emph{end} -record. To make an srecord from a binary image, the GNU @code{objcopy} program -is used. This will read the image and make an srecord from it. To do -this, invoke objcopy like this: @code{objcopy -O srec infile outfile}. Most -PROM burners also read srecords or a similar format. Use @code{objdump -i} to -get a list of support object files types for your architecture. - -@node Libc, , What to do now, Libraries -@section Libraries - -This describes @code{newlib}, a freely available libc replacement. Most -applications use calls in the standard C library. When initially linking -in libc.a, several I/O functions are undefined. If you don't plan on -doing any I/O, then you're OK, otherwise they need to be created. These -routines are read, write, open, close. sbrk, and kill. Open & close -don't need to be fully supported unless you have a filesystems, so -typically they are stubbed out. Kill is also a stub, since you can't do -process control on an embedded system. - -Sbrk() is only needed by applications that do dynamic memory -allocation. It's uses the symbol @code{_end} that is setup in the linker -script. It also requires a compile time option to set the upper size -limit on the heap space. This leaves us with read and write, which are -required for serial I/O. Usually these two routines are written in C, -and call a lower level function for the actual I/O operation. These two -lowest level I/O primitives are inbyte() and outbyte(), and are also -used by GDB back ends if you've written an exception handler. Some -systems also implement a havebyte() for input as well. - -Other commonly included functions are routines for manipulating -LED's on the target (if they exist) or low level debug help. Typically a -putnum() for printing words and bytes as a hex number is helpful, as -well as a low-level print() to output simple strings. - -As libg++ uses the I/O routines in libc.a, if read and write work, -then libg++ will also work with no additional changes. - -@menu -* I/O Support:: Functions that make serial I/O work. -* Memory Support:: Memory support. -* Misc Support:: Other needed functions. -* Debugging:: Useful Debugging Functions -@end menu - -@node I/O Support, Memory Support, , Libc -@subsection Making I/O work - -@node Memory Support, Misc Support, I/O Support, Libc -@subsection Routines for dynamic memory allocation -To support using any of the memory functions, you need to implement -sbrk(). @code{malloc()}, @code{calloc()}, and @code{realloc()} all call -@code{sbrk()} at there lowest level. @code{caddr_t} is defined elsewhere -as @code{char *}. @code{RAMSIZE} is presently a compile time option. All -this does is move a pointer to heap memory and check for the upper -limit. @ref{glue.c,,Example libc support code}. @code{sbrk()} returns a -pointer to the previous value before more memory was allocated. - -@smallexample -/* _end is set in the linker command file * -extern caddr_t _end;/ - -/* just in case, most boards have at least some memory */ -#ifndef RAMSIZE -# define RAMSIZE (caddr_t)0x100000 -#endif - -/* - * sbrk -- changes heap size size. Get nbytes more - * RAM. We just increment a pointer in what's - * left of memory on the board. - */ -caddr_t -sbrk(nbytes) - int nbytes; -@{ - static caddr_t heap_ptr = NULL; - caddr_t base; - - if (heap_ptr == NULL) @{ - heap_ptr = (caddr_t)&_end; - @} - - if ((RAMSIZE - heap_ptr) >= 0) @{ - base = heap_ptr; - heap_ptr += nbytes; - return (base); - @} else @{ - errno = ENOMEM; - return ((caddr_t)-1); - @} -@} -@end smallexample - -@node Misc Support, Debugging, Memory Support, Libc -@subsection Misc support routines - -These are called by @code{newlib} but don't apply to the embedded -environment. @code{isatty()} is self explanatory. @code{kill()} doesn't -apply either in an environment withno process control, so it justs -exits, which is a similar enough behavior. @code{getpid()} can safely -return any value greater than 1. The value doesn't effect anything in -@code{newlib} because once again there is no process control. - -@smallexample -/* - * isatty -- returns 1 if connected to a terminal device, - * returns 0 if not. Since we're hooked up to a - * serial port, we'll say yes and return a 1. - */ -int -isatty(fd) - int fd; -@{ - return (1); -@} - -/* - * getpid -- only one process, so just return 1. - */ -#define __MYPID 1 -int -getpid() -@{ - return __MYPID; -@} - -/* - * kill -- go out via exit... - */ -int -kill(pid, sig) - int pid; - int sig; -@{ - if(pid == __MYPID) - _exit(sig); - return 0; -@} -@end smallexample - -@node Debugging, , Misc Support, Libc -@subsection Useful debugging functions - -There are always a few useful functions for debugging your project in -progress. I typically implement a simple @code{print()} routine that -runs standalone in liblgoss, with no @code{newlib} support. The I/O -function @code{outbyte()} can also be used for low level debugging. Many -times print will work when there are problems that cause @code{printf()} to -cause an exception. @code{putnum()} is just to print out values in hex -so they are easier to read. - -@smallexample -/* - * print -- do a raw print of a string - */ -int -print(ptr) -char *ptr; -@{ - while (*ptr) @{ - outbyte (*ptr++); - @} -@} - -/* - * putnum -- print a 32 bit number in hex - */ -int -putnum (num) -unsigned int num; -@{ - char buffer[9]; - int count; - char *bufptr = buffer; - int digit; - - for (count = 7 ; count >= 0 ; count--) @{ - digit = (num >> (count * 4)) & 0xf; - - if (digit <= 9) - *bufptr++ = (char) ('0' + digit); - else - *bufptr++ = (char) ('a' - 10 + digit); - @} - - *bufptr = (char) 0; - print (buffer); - return; -@} -@end smallexample - -If there are LEDs on the board, they can also be put to use for -debugging when the serial I/O code is being written. I usually implement -a @code{zylons()} function, which strobes the LEDS (if there is more -than one) in sequence, creating a rotating effect. This is convenient -between I/O to see if the target is still alive. Another useful LED -function is @code{led_putnum()}, which takes a digit and displays it as -a bit pattern or number. These usually have to be written in assembler -for each target board. Here are a number of C based routines that may be -useful. - -@code{led_putnum()} puts a number on a single digit segmented -LED display. This LED is set by setting a bit mask to an address, where -1 turns the segment off, and 0 turns it on. There is also a little -decimal point on the LED display, so it gets the leftmost bit. The other -bits specify the segment location. The bits look like: - -@smallexample - [d.p | g | f | e | d | c | b | a ] is the byte. -@end smallexample - -The locations are set up as: - -@smallexample - a - ----- - f | | b - | g | - ----- - | | - e | | c - ----- - d -@end smallexample - -This takes a number that's already been converted to a string, and -prints it. - -@smallexample -#define LED_ADDR 0xd00003 - -void -led_putnum ( num ) -char num; -@{ - static unsigned char *leds = (unsigned char *)LED_ADDR; - static unsigned char num_bits [18] = @{ - 0xff, /* clear all */ - 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x98, /* numbers 0-9 */ - 0x98, 0x20, 0x3, 0x27, 0x21, 0x4, 0xe /* letters a-f */ - @}; - - if (num >= '0' && num <= '9') - num = (num - '0') + 1; - - if (num >= 'a' && num <= 'f') - num = (num - 'a') + 12; - - if (num == ' ') - num = 0; - - *leds = num_bits[num]; -@} - -/* - * zylons -- draw a rotating pattern. NOTE: this function never returns. - */ -void -zylons() -@{ - unsigned char *leds = (unsigned char *)LED_ADDR; - unsigned char curled = 0xfe; - - while (1) - @{ - *leds = curled; - curled = (curled >> 1) | (curled << 7); - delay ( 200 ); - @} -@} -@end smallexample - - -@node GDB, Binutils, Libraries, Top -@chapter Writing a new GDB backend - -Typically, either the low-level I/O routines are used for debugging, or -LEDs, if present. It is much easier to use GDb for debugging an -application. There are several different techniques used to have GDB work -remotely. Commonly more than one kind of GDB interface is used to cober -a wide variety of development needs. - -The most common style of GDB backend is an exception handler for -breakpoints. This is also called a @emph{gdb stub}, and is requires the -two additional lines of init code in your @code{main()} routine. The GDB -stubs all use the GDB @emph{remote protocol}. When the application gets a -breakpoint exception, it communicates to GDB on the host. - -Another common style of interfacing GDB to a target is by using an -existing ROM monitor. These break down into two main kinds, a similar -protocol to the GDB remote protocol, and an interface that uses the ROM -monitor directly. This kind has GDB simulating a human operator, and all -GDB does is work as a command formatter and parser. - -@menu -* GNU remote protocol:: The standard remote protocol. -* Exception handler:: A linked in exception handler. -* ROM monitors:: Using a ROM monitor as a backend. -* Other remote protocols:: Adding support for new protocols. -@end menu - -@node GNU remote protocol, Exception handler, ,GDB -@section The standard remote protocol - -The standard remote protocol is a simple, packet based scheme. A debug -packet whose contents are @emph{<data>} is encapsulated for transmission -in the form: - -@smallexample - $ <data> # CSUM1 CSUM2 -@end smallexample - -@emph{<data>} must be ASCII alphanumeric and cannot include characters -@code{$} or @code{#}. If @emph{<data>} starts with two characters -followed by @code{:}, then the existing stubs interpret this as a -sequence number. For example, the command @code{g} is used to read the -values of the registers. So, a packet to do this would look like - -@smallexample - $g#67 -@end smallexample - -@emph{CSUM1} and @emph{CSUM2} are an ascii representation in hex of an -8-bit checksum of @emph{<data>}, the most significant nibble is sent first. -the hex digits 0-9,a-f are used. - -A simple protocol is used when communicating with the target. This is -mainly to give a degree of error handling over the serial cable. For -each packet transmitted successfully, the target responds with a -@code{+} (@code{ACK}). If there was a transmission error, then the target -responds with a @code{-} (@code{NAK}). An error is determined when the -checksum doesn't match the calculated checksum for that data record. -Upon reciept of the @code{ACK}, @code{GDB} can then transmit the next -packet. - -Here is a list of the main functions that need to be supported. Each data -packet is a command with a set number of bytes in the command packet. -Most commands either return data, or respond with a @code{NAK}. Commands -that don't return data respond with an @code{ACK}. All data values are -ascii hex digits. Every byte needs two hex digits to represent t. This -means that a byte with the value @samp{7} becomes @samp{07}. On a 32 bit -machine this works out to 8 characters per word. All of the bytes in a -word are stored in the target byte order. When writing the host side of -the GDB protocol, be careful of byte order, and make sure that the code -will run on both big and little endian hosts and produce the same answers. - -These functions are the minimum required to make a GDB backend work. All -other commands are optional, and not supported by all GDB backends. - -@table @samp -@item read registers @code{g} - -returns @code{XXXXXXXX...} - -Registers are in the internal order for GDB, and the bytes in a register -are in the same order the machine uses. All values are in sequence -starting with register 0. All registers are listed in the same packet. A -sample packet would look like @code{$g#}. - -@item write registers @code{GXXXXXXXX...} -@code{XXXXXXXX} is the value to set the register to. Registers are in -the internal order for GDB, and the bytes in a register are in the same -order the machine uses. All values are in sequence starting with -register 0. All registers values are listed in the same packet. A sample -packet would look like @code{$G000000001111111122222222...#} - -returns @code{ACK} or @code{NAK} - -@item read memory @code{mAAAAAAAA,LLLL} -@code{AAAAAAAA} is address, @code{LLLL} is length. A sample packet would -look like @code{$m00005556,0024#}. This would request 24 bytes starting -at address @emph{00005556} - -returns @code{XXXXXXXX...} -@code{XXXXXXXX} is the memory contents. Fewer bytes than requested will -be returned if only part of the data can be read. This can be determined -by counting the values till the end of packet @code{#} is seen and -comparing that with the total count of bytes that was requested. - -@item write memory @code{MAAAAAAAA,LLLL:XXXXXXXX} -@code{AAAAAAAA} is the starting address, @code{LLLL} is the number of -bytes to be written, and @code{XXXXXXXX} is value to be written. A -sample packet would look like -@code{$M00005556,0024:101010101111111100000000...#} - -returns @code{ACK} or @code{NAK} for an error. @code{NAK} is also -returned when only part of the data is written. - -@item continue @code{cAAAAAAAAA} -@code{AAAAAAAA} is address to resume execution at. If @code{AAAAAAAA} is -omitted, resume at the curent address of the @code{pc} register. - -returns the same replay as @code{last signal}. There is no immediate -replay to @code{cont} until the next breakpoint is reached, and the -program stops executing. - -@item step sAA..AA -@code{AA..AA} is address to resume -If @code{AA..AA} is omitted, resume at same address. - -returns the same replay as @code{last signal}. There is no immediate -replay to @code{step} until the next breakpoint is reached, and the -program stops executing. - -@item last signal @code{?} - -This returns one of the following: - -@itemize @bullet -@item @code{SAA} -Where @code{AA} is the number of the last signal. -Exceptions on the target are converted to the most similar Unix style -signal number, like @code{SIGSEGV}. A sample response of this type would -look like @code{$S05#}. - -@item TAAnn:XXXXXXXX;nn:XXXXXXXX;nn:XXXXXXXX; -@code{AA} is the signal number. -@code{nn} is the register number. -@code{XXXXXXXX} is the register value. - -@item WAA -The process exited, and @code{AA} is the exit status. This is only -applicable for certains sorts of targets. - -@end itemize - -These are used in some GDB backends, but not all. - -@item write reg @code{Pnn=XXXXXXXX} -Write register @code{nn} with value @code{XXXXXXXX}. - -returns @code{ACK} or @code{NAK} - -@item kill request k - -@item toggle debug d -toggle debug flag (see 386 & 68k stubs) - -@item reset r -reset -- see sparc stub. - -@item reserved @code{other} -On other requests, the stub should ignore the request and send an empty -response @code{$#<checksum>}. This way we can extend the protocol and GDB -can tell whether the stub it is talking to uses the old or the new. - -@item search @code{tAA:PP,MM} -Search backwards starting at address @code{AA} for a match with pattern -PP and mask @code{MM}. @code{PP} and @code{MM} are 4 bytes. - -@item general query @code{qXXXX} -Request info about XXXX. - -@item general set @code{QXXXX=yyyy} -Set value of @code{XXXX} to @code{yyyy}. - -@item query sect offs @code{qOffsets} -Get section offsets. Reply is @code{Text=xxx;Data=yyy;Bss=zzz} - -@item console output Otext -Send text to stdout. The text gets display from the target side of the -serial connection. - -@end table - -Responses can be run-length encoded to save space. A @code{*}means that -the next character is an ASCII encoding giving a repeat count which -stands for that many repetitions of the character preceding the @code{*}. -The encoding is n+29, yielding a printable character where n >=3 -(which is where run length encoding starts to win). You can't use a -value of where n >126 because it's only a two byte value. An example -would be a @code{0*03} means the same thing as @code{0000}. - -@node Exception handler, ROM monitors, GNU remote protocol, GDB -@section A linked in exception handler - -A @emph{GDB stub} consists of two parts, support for the exception -handler, and the exception handler itself. The exception handler needs -to communicate to GDB on the host whenever there is a breakpoint -exception. When GDB starts a program running on the target, it's polling -the serial port during execution looking for any debug packets. So when -a breakpoint occurs, the exception handler needs to save state, and send -a GDB remote protocol packet to GDB on the host. GDB takes any output -that isn't a debug command packet and displays it in the command window. - -Support for the exception handler varies between processors, but the -minimum supported functions are those needed by GDB. These are functions -to support the reading and writing of registers, the reading and writing -of memory, start execution at an address, single step, and last signal. -Sometimes other functions for adjusting the baud rate, or resetting the -hardware are implemented. - -Once GDB gets the command packet from the breakpoint, it will read a few -registers and memory locations an then wait for the user. When the user -types @code{run} or @code{continue} a @code{continue} command is issued -to the backend, and control returns from the breakpoint routine to the -application. - -@node ROM monitors, Other remote protocols, Exception handler, GDB -@section Using a ROM monitor as a backend -GDB also can mimic a human user and use a ROM monitors normal debug -commands as a backend. This consists mostly of sending and parsing -@code{ASCII} strings. All the ROM monitor interfaces share a common set -of routines in @code{gdb/monitor.c}. This supports adding new ROM -monitor interfaces by filling in a structure with the common commands -GDB needs. GDb already supports several command ROM monitors, including -Motorola's @code{Bug} monitor for their VME boards, and the Rom68k -monitor by Integrated Systems, Inc. for various m68k based boards. GDB -also supports the custom ROM monitors on the WinBond and Oki PA based -targets. There is builtin support for loading files to ROM monitors -specifically. GDB can convert a binary into an srecord and then load it -as an ascii file, or using @code{xmodem}. - -@c FIXME: do I need trademark somethings here ? Is Integrated the right -@c company? - -@node Other remote protocols, ,ROM monitors, GDB -@section Adding support for new protocols -@c FIXME: write something here - -@node Binutils, Code Listings, GDB, Top - -@node Code Listings, idp.ld, Binutils, Top -@appendix Code Listings - -@menu -* idp.ld:: A m68k linker script. -* crt0.S:: Crt0.S for an m68k. -* glue.c:: C based support for for Stdio functions. -* mvme.S:: Rom monitor based I/O support in assembler. -* io.c:: C based for memory mapped I/O. -* leds.c:: C based LED routines. -@end menu - -@node idp.ld, crt0.S, Code Listings, Code Listings -@section Linker script for the IDP board - -This is the linker script script that is used on the Motorola IDP board. - -@example -STARTUP(crt0.o) -OUTPUT_ARCH(m68k) -INPUT(idp.o) -SEARCH_DIR(.) -__DYNAMIC = 0; -/* - * Setup the memory map of the MC68ec0x0 Board (IDP) - * stack grows up towards high memory. This works for - * both the rom68k and the mon68k monitors. - */ -MEMORY -@{ - ram : ORIGIN = 0x10000, LENGTH = 2M -@} -/* - * stick everything in ram (of course) - */ -SECTIONS -@{ - .text : - @{ - CREATE_OBJECT_SYMBOLS - *(.text) - etext = .; - __CTOR_LIST__ = .; - LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) - *(.ctors) - LONG(0) - __CTOR_END__ = .; - __DTOR_LIST__ = .; - LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) - *(.dtors) - LONG(0) - __DTOR_END__ = .; - *(.lit) - *(.shdata) - @} > ram - .shbss SIZEOF(.text) + ADDR(.text) : @{ - *(.shbss) - @} - .talias : @{ @} > ram - .data : @{ - *(.data) - CONSTRUCTORS - _edata = .; - @} > ram - - .bss SIZEOF(.data) + ADDR(.data) : - @{ - __bss_start = ALIGN(0x8); - *(.bss) - *(COMMON) - end = ALIGN(0x8); - _end = ALIGN(0x8); - __end = ALIGN(0x8); - @} - .mstack : @{ @} > ram - .rstack : @{ @} > ram - .stab . (NOLOAD) : - @{ - [ .stab ] - @} - .stabstr . (NOLOAD) : - @{ - [ .stabstr ] - @} -@} -@end example - -@node crt0.S, glue.c, idp.ld, Code Listings -@section crt0.S - The startup file - -@example -/* - * crt0.S -- startup file for m68k-coff - * - */ - - .title "crt0.S for m68k-coff" - -/* These are predefined by new versions of GNU cpp. */ - -#ifndef __USER_LABEL_PREFIX__ -#define __USER_LABEL_PREFIX__ _ -#endif - -#ifndef __REGISTER_PREFIX__ -#define __REGISTER_PREFIX__ -#endif - -/* ANSI concatenation macros. */ - -#define CONCAT1(a, b) CONCAT2(a, b) -#define CONCAT2(a, b) a ## b - -/* Use the right prefix for global labels. */ - -#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x) - -/* Use the right prefix for registers. */ - -#define REG(x) CONCAT1 (__REGISTER_PREFIX__, x) - -#define d0 REG (d0) -#define d1 REG (d1) -#define d2 REG (d2) -#define d3 REG (d3) -#define d4 REG (d4) -#define d5 REG (d5) -#define d6 REG (d6) -#define d7 REG (d7) -#define a0 REG (a0) -#define a1 REG (a1) -#define a2 REG (a2) -#define a3 REG (a3) -#define a4 REG (a4) -#define a5 REG (a5) -#define a6 REG (a6) -#define fp REG (fp) -#define sp REG (sp) - -/* - * Set up some room for a stack. We just grab a chunk of memory. - */ - .set stack_size, 0x2000 - .comm SYM (stack), stack_size - -/* - * Define an empty environment. - */ - .data - .align 2 -SYM (environ): - .long 0 - - .align 2 - .text - .global SYM (stack) - - .global SYM (main) - .global SYM (exit) -/* - * This really should be __bss_start, not SYM (__bss_start). - */ - .global __bss_start - -/* - * start -- set things up so the application will run. - */ -SYM (start): - link a6, #-8 - moveal #SYM (stack) + stack_size, sp - -/* - * zerobss -- zero out the bss section - */ - moveal #__bss_start, a0 - moveal #SYM (end), a1 -1: - movel #0, (a0) - leal 4(a0), a0 - cmpal a0, a1 - bne 1b - -/* - * Call the main routine from the application to get it going. - * main (argc, argv, environ) - * We pass argv as a pointer to NULL. - */ - pea 0 - pea SYM (environ) - pea sp@@(4) - pea 0 - jsr SYM (main) - movel d0, sp@@- - -/* - * _exit -- Exit from the application. Normally we cause a user trap - * to return to the ROM monitor for another run. - */ -SYM (exit): - trap #0 -@end example - -@node glue.c, mvme.S, crt0.S, Code Listings -@section C based "glue" code. - -@example - -/* - * glue.c -- all the code to make GCC and the libraries run on - * a bare target board. These should work with any - * target if inbyte() and outbyte() exist. - */ - -#include <sys/types.h> -#include <sys/stat.h> -#include <errno.h> -#ifndef NULL -#define NULL 0 -#endif - -/* FIXME: this is a hack till libc builds */ -__main() -@{ - return; -@} - -#undef errno -int errno; - -extern caddr_t _end; /* _end is set in the linker command file */ -extern int outbyte(); -extern unsigned char inbyte(); -extern int havebyte(); - -/* just in case, most boards have at least some memory */ -#ifndef RAMSIZE -# define RAMSIZE (caddr_t)0x100000 -#endif - -/* - * read -- read bytes from the serial port. Ignore fd, since - * we only have stdin. - */ -int -read(fd, buf, nbytes) - int fd; - char *buf; - int nbytes; -@{ - int i = 0; - - for (i = 0; i < nbytes; i++) @{ - *(buf + i) = inbyte(); - if ((*(buf + i) == '\n') || (*(buf + i) == '\r')) @{ - (*(buf + i)) = 0; - break; - @} - @} - return (i); -@} - -/* - * write -- write bytes to the serial port. Ignore fd, since - * stdout and stderr are the same. Since we have no filesystem, - * open will only return an error. - */ -int -write(fd, buf, nbytes) - int fd; - char *buf; - int nbytes; -@{ - int i; - - for (i = 0; i < nbytes; i++) @{ - if (*(buf + i) == '\n') @{ - outbyte ('\r'); - @} - outbyte (*(buf + i)); - @} - return (nbytes); -@} - -/* - * open -- open a file descriptor. We don't have a filesystem, so - * we return an error. - */ -int -open(buf, flags, mode) - char *buf; - int flags; - int mode; -@{ - errno = EIO; - return (-1); -@} - -/* - * close -- close a file descriptor. We don't need - * to do anything, but pretend we did. - */ -int -close(fd) - int fd; -@{ - return (0); -@} - -/* - * sbrk -- changes heap size size. Get nbytes more - * RAM. We just increment a pointer in what's - * left of memory on the board. - */ -caddr_t -sbrk(nbytes) - int nbytes; -@{ - static caddr_t heap_ptr = NULL; - caddr_t base; - - if (heap_ptr == NULL) @{ - heap_ptr = (caddr_t)&_end; - @} - - if ((RAMSIZE - heap_ptr) >= 0) @{ - base = heap_ptr; - heap_ptr += nbytes; - return (base); - @} else @{ - errno = ENOMEM; - return ((caddr_t)-1); - @} -@} - -/* - * isatty -- returns 1 if connected to a terminal device, - * returns 0 if not. Since we're hooked up to a - * serial port, we'll say yes and return a 1. - */ -int -isatty(fd) - int fd; -@{ - return (1); -@} - -/* - * lseek -- move read/write pointer. Since a serial port - * is non-seekable, we return an error. - */ -off_t -lseek(fd, offset, whence) - int fd; - off_t offset; - int whence; -@{ - errno = ESPIPE; - return ((off_t)-1); -@} - -/* - * fstat -- get status of a file. Since we have no file - * system, we just return an error. - */ -int -fstat(fd, buf) - int fd; - struct stat *buf; -@{ - errno = EIO; - return (-1); -@} - -/* - * getpid -- only one process, so just return 1. - */ -#define __MYPID 1 -int -getpid() -@{ - return __MYPID; -@} - -/* - * kill -- go out via exit... - */ -int -kill(pid, sig) - int pid; - int sig; -@{ - if(pid == __MYPID) - _exit(sig); - return 0; -@} - -/* - * print -- do a raw print of a string - */ -int -print(ptr) -char *ptr; -@{ - while (*ptr) @{ - outbyte (*ptr++); - @} -@} - -/* - * putnum -- print a 32 bit number in hex - */ -int -putnum (num) -unsigned int num; -@{ - char buffer[9]; - int count; - char *bufptr = buffer; - int digit; - - for (count = 7 ; count >= 0 ; count--) @{ - digit = (num >> (count * 4)) & 0xf; - - if (digit <= 9) - *bufptr++ = (char) ('0' + digit); - else - *bufptr++ = (char) ('a' - 10 + digit); - @} - - *bufptr = (char) 0; - print (buffer); - return; -@} -@end example - -@node mvme.S, io.c, glue.c, Code Listings -@section I/O assembler code sample - -@example -/* - * mvme.S -- board support for m68k - */ - - .title "mvme.S for m68k-coff" - -/* These are predefined by new versions of GNU cpp. */ - -#ifndef __USER_LABEL_PREFIX__ -#define __USER_LABEL_PREFIX__ _ -#endif - -#ifndef __REGISTER_PREFIX__ -#define __REGISTER_PREFIX__ -#endif - -/* ANSI concatenation macros. */ - -#define CONCAT1(a, b) CONCAT2(a, b) -#define CONCAT2(a, b) a ## b - -/* Use the right prefix for global labels. */ - -#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x) - -/* Use the right prefix for registers. */ - -#define REG(x) CONCAT1 (__REGISTER_PREFIX__, x) - -#define d0 REG (d0) -#define d1 REG (d1) -#define d2 REG (d2) -#define d3 REG (d3) -#define d4 REG (d4) -#define d5 REG (d5) -#define d6 REG (d6) -#define d7 REG (d7) -#define a0 REG (a0) -#define a1 REG (a1) -#define a2 REG (a2) -#define a3 REG (a3) -#define a4 REG (a4) -#define a5 REG (a5) -#define a6 REG (a6) -#define fp REG (fp) -#define sp REG (sp) -#define vbr REG (vbr) - - .align 2 - .text - .global SYM (_exit) - .global SYM (outln) - .global SYM (outbyte) - .global SYM (putDebugChar) - .global SYM (inbyte) - .global SYM (getDebugChar) - .global SYM (havebyte) - .global SYM (exceptionHandler) - - .set vbr_size, 0x400 - .comm SYM (vbr_table), vbr_size - -/* - * inbyte -- get a byte from the serial port - * d0 - contains the byte read in - */ - .align 2 -SYM (getDebugChar): /* symbol name used by m68k-stub */ -SYM (inbyte): - link a6, #-8 - trap #15 - .word inchr - moveb sp@@, d0 - extbl d0 - unlk a6 - rts - -/* - * outbyte -- sends a byte out the serial port - * d0 - contains the byte to be sent - */ - .align 2 -SYM (putDebugChar): /* symbol name used by m68k-stub */ -SYM (outbyte): - link fp, #-4 - moveb fp@@(11), sp@@ - trap #15 - .word outchr - unlk fp - rts - -/* - * outln -- sends a string of bytes out the serial port with a CR/LF - * a0 - contains the address of the string's first byte - * a1 - contains the address of the string's last byte - */ - .align 2 -SYM (outln): - link a6, #-8 - moveml a0/a1, sp@@ - trap #15 - .word outln - unlk a6 - rts - -/* - * outstr -- sends a string of bytes out the serial port without a CR/LF - * a0 - contains the address of the string's first byte - * a1 - contains the address of the string's last byte - */ - .align 2 -SYM (outstr): - link a6, #-8 - moveml a0/a1, sp@@ - trap #15 - .word outstr - unlk a6 - rts - -/* - * havebyte -- checks to see if there is a byte in the serial port, - * returns 1 if there is a byte, 0 otherwise. - */ -SYM (havebyte): - trap #15 - .word instat - beqs empty - movel #1, d0 - rts -empty: - movel #0, d0 - rts - -/* - * These constants are for the MVME-135 board's boot monitor. They - * are used with a TRAP #15 call to access the monitor's I/O routines. - * they must be in the word following the trap call. - */ - .set inchr, 0x0 - .set instat, 0x1 - .set inln, 0x2 - .set readstr, 0x3 - .set readln, 0x4 - .set chkbrk, 0x5 - - .set outchr, 0x20 - .set outstr, 0x21 - .set outln, 0x22 - .set write, 0x23 - .set writeln, 0x24 - .set writdln, 0x25 - .set pcrlf, 0x26 - .set eraseln, 0x27 - .set writd, 0x28 - .set sndbrk, 0x29 - - .set tm_ini, 0x40 - .set dt_ini, 0x42 - .set tm_disp, 0x43 - .set tm_rd, 0x44 - - .set redir, 0x60 - .set redir_i, 0x61 - .set redir_o, 0x62 - .set return, 0x63 - .set bindec, 0x64 - - .set changev, 0x67 - .set strcmp, 0x68 - .set mulu32, 0x69 - .set divu32, 0x6A - .set chk_sum, 0x6B - -@end example - -@node io.c, leds.c, mvme.S, Code Listings -@section I/O code sample - -@example -#include "w89k.h" - -/* - * outbyte -- shove a byte out the serial port. We wait till the byte - */ -int -outbyte(byte) - unsigned char byte; -@{ - while ((inp(RS232REG) & TRANSMIT) == 0x0) @{ @} ; - return (outp(RS232PORT, byte)); -@} - -/* - * inbyte -- get a byte from the serial port - */ -unsigned char -inbyte() -@{ - while ((inp(RS232REG) & RECEIVE) == 0x0) @{ @}; - return (inp(RS232PORT)); -@} -@end example - -@node leds.c, ,io.c, Code Listings -@section Led control sample - -@example -/* - * leds.h -- control the led's on a Motorola mc68ec0x0 board. - */ - -#ifndef __LEDS_H__ -#define __LEDS_H__ - -#define LED_ADDR 0xd00003 -#define LED_0 ~0x1 -#define LED_1 ~0x2 -#define LED_2 ~0x4 -#define LED_3 ~0x8 -#define LED_4 ~0x10 -#define LED_5 ~0x20 -#define LED_6 ~0x40 -#define LED_7 ~0x80 -#define LEDS_OFF 0xff -#define LEDS_ON 0x0 - -#define FUDGE(x) ((x >= 0xa && x <= 0xf) ? (x + 'a') & 0x7f : (x + '0') & 0x7f) - -extern void led_putnum( char ); - -#endif /* __LEDS_H__ */ - -/* - * leds.c -- control the led's on a Motorola mc68ec0x0 (IDP)board. - */ -#include "leds.h" - -void zylons(); -void led_putnum(); - -/* - * led_putnum -- print a hex number on the LED. the value of num must be a char with - * the ascii value. ie... number 0 is '0', a is 'a', ' ' (null) clears - * the led display. - * Setting the bit to 0 turns it on, 1 turns it off. - * the LED's are controlled by setting the right bit mask in the base - * address. - * The bits are: - * [d.p | g | f | e | d | c | b | a ] is the byte. - * - * The locations are: - * - * a - * ----- - * f | | b - * | g | - * ----- - * | | - * e | | c - * ----- - * d . d.p (decimal point) - */ -void -led_putnum ( num ) -char num; -@{ - static unsigned char *leds = (unsigned char *)LED_ADDR; - static unsigned char num_bits [18] = @{ - 0xff, /* clear all */ - 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x98, /* numbers 0-9 */ - 0x98, 0x20, 0x3, 0x27, 0x21, 0x4, 0xe /* letters a-f */ - @}; - - if (num >= '0' && num <= '9') - num = (num - '0') + 1; - - if (num >= 'a' && num <= 'f') - num = (num - 'a') + 12; - - if (num == ' ') - num = 0; - - *leds = num_bits[num]; -@} - -/* - * zylons -- draw a rotating pattern. NOTE: this function never returns. - */ -void -zylons() -@{ - unsigned char *leds = (unsigned char *)LED_ADDR; - unsigned char curled = 0xfe; - - while (1) - @{ - *leds = curled; - curled = (curled >> 1) | (curled << 7); - delay ( 200 ); - @} -@} -@end example - -@page -@contents -@c second page break makes sure right-left page alignment works right -@c with a one-page toc, even though we don't have setchapternewpage odd. -@page -@bye |