diff options
| author | Jonathan McCrohan <jmccrohan@gmail.com> | 2012-11-17 16:57:30 +0000 | 
|---|---|---|
| committer | Jonathan McCrohan <jmccrohan@gmail.com> | 2012-11-17 16:57:30 +0000 | 
| commit | f2499612c5594944d3e0891259859668d35c85b2 (patch) | |
| tree | 0672f579db91cfaca7a2935a86991fa67b5aae59 /aux-build | |
| parent | 429e46051dba814e7d6c74368eb1bba550222cbe (diff) | |
| download | libconfig-d05e5f78e35d7c09b73557d7a75049cff5c97e3f.tar.gz | |
Imported Upstream version 1.4.9upstream/1.4.9
Diffstat (limited to 'aux-build')
| -rwxr-xr-x | aux-build/compile | 25 | ||||
| -rwxr-xr-x | aux-build/config.guess | 867 | ||||
| -rwxr-xr-x | aux-build/config.sub | 405 | ||||
| -rwxr-xr-x | aux-build/depcomp | 220 | ||||
| -rwxr-xr-x | aux-build/install-sh | 554 | ||||
| -rw-r--r--[-rwxr-xr-x] | aux-build/ltmain.sh | 2432 | ||||
| -rwxr-xr-x | aux-build/missing | 176 | ||||
| -rwxr-xr-x | aux-build/mkinstalldirs | 28 | ||||
| -rw-r--r-- | aux-build/texinfo.tex | 3583 | 
9 files changed, 5666 insertions, 2624 deletions
| diff --git a/aux-build/compile b/aux-build/compile index 80b645b..c0096a7 100755 --- a/aux-build/compile +++ b/aux-build/compile @@ -1,9 +1,10 @@  #! /bin/sh  # Wrapper for compilers which do not understand `-c -o'. -scriptversion=2004-09-10.20 +scriptversion=2009-10-06.20; # UTC -# Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc. +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009  Free Software +# Foundation, Inc.  # Written by Tom Tromey <tromey@cygnus.com>.  #  # This program is free software; you can redistribute it and/or modify @@ -17,8 +18,7 @@ scriptversion=2004-09-10.20  # GNU General Public License for more details.  #  # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# along with this program.  If not, see <http://www.gnu.org/licenses/>.  # As a special exception to the GNU General Public License, if you  # distribute this file as part of a program that contains a @@ -47,11 +47,11 @@ right script to run: please start by reading the file `INSTALL'.  Report bugs to <bug-automake@gnu.org>.  EOF -    exit 0 +    exit $?      ;;    -v | --v*)      echo "compile $scriptversion" -    exit 0 +    exit $?      ;;  esac @@ -103,13 +103,13 @@ if test -z "$ofile" || test -z "$cfile"; then  fi  # Name of file we expect compiler to create. -cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'` +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`  # Create the lock directory. -# Note: use `[/.-]' here to ensure that we don't use the same name +# Note: use `[/\\:.-]' here to ensure that we don't use the same name  # that we are using for the .o file.  Also, base the name on the expected  # object file name, since that is what matters with a parallel build. -lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d  while true; do    if mkdir "$lockdir" >/dev/null 2>&1; then      break @@ -124,7 +124,9 @@ trap "rmdir '$lockdir'; exit 1" 1 2 15  ret=$?  if test -f "$cofile"; then -  mv "$cofile" "$ofile" +  test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then +  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"  fi  rmdir "$lockdir" @@ -136,5 +138,6 @@ exit $ret  # eval: (add-hook 'write-file-hooks 'time-stamp)  # time-stamp-start: "scriptversion="  # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC"  # End: diff --git a/aux-build/config.guess b/aux-build/config.guess index f32079a..fb9a2ba 100755 --- a/aux-build/config.guess +++ b/aux-build/config.guess @@ -1,10 +1,9 @@  #! /bin/sh  # Attempt to guess a canonical system name.  #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 -#   Free Software Foundation, Inc. +#   2000, 2001, 2002 Free Software Foundation, Inc. -timestamp='2008-01-23' +timestamp='2002-05-29'  # This file is free software; you can redistribute it and/or modify it  # under the terms of the GNU General Public License as published by @@ -18,15 +17,13 @@ timestamp='2008-01-23'  #  # You should have received a copy of the GNU General Public License  # along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  #  # As a special exception to the GNU General Public License, if you  # distribute this file as part of a program that contains a  # configuration script generated by Autoconf, you may include it under  # the same distribution terms that you use for the rest of that program. -  # Originally written by Per Bothner <per@bothner.com>.  # Please send patches to <config-patches@gnu.org>.  Submit a context  # diff and a properly formatted ChangeLog entry. @@ -56,8 +53,8 @@ version="\  GNU config.guess ($timestamp)  Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc.  This is free software; see the source for copying conditions.  There is NO  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -69,11 +66,11 @@ Try \`$me --help' for more information."  while test $# -gt 0 ; do    case $1 in      --time-stamp | --time* | -t ) -       echo "$timestamp" ; exit ;; +       echo "$timestamp" ; exit 0 ;;      --version | -v ) -       echo "$version" ; exit ;; +       echo "$version" ; exit 0 ;;      --help | --h* | -h ) -       echo "$usage"; exit ;; +       echo "$usage"; exit 0 ;;      -- )     # Stop option processing         shift; break ;;      - )	# Use stdin as input. @@ -91,42 +88,30 @@ if test $# != 0; then    exit 1  fi -trap 'exit 1' 1 2 15 -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. +dummy=dummy-$$ +trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15 +# CC_FOR_BUILD -- compiler used by this script.  # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still  # use `HOST_CC' if defined, but it is deprecated. -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,)    echo "int x;" > $dummy.c ; +set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,)    echo "int dummy(){}" > $dummy.c ;  	for c in cc gcc c89 c99 ; do -	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then +	  ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; +	  if test $? = 0 ; then  	     CC_FOR_BUILD="$c"; break ;  	  fi ;  	done ; +	rm -f $dummy.c $dummy.o $dummy.rel ;  	if test x"$CC_FOR_BUILD" = x ; then  	  CC_FOR_BUILD=no_compiler_found ;  	fi  	;;   ,,*)   CC_FOR_BUILD=$CC ;;   ,*,*)  CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' +esac'  # This is needed to find uname on a Pyramid OSx when run in the BSD universe.  # (ghazi@noc.rutgers.edu 1994-08-24) @@ -161,7 +146,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in  	    arm*) machine=arm-unknown ;;  	    sh3el) machine=shl-unknown ;;  	    sh3eb) machine=sh-unknown ;; -	    sh5el) machine=sh5le-unknown ;;  	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;  	esac  	# The Operating System including object format, if it has switched @@ -184,128 +168,141 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in  		;;  	esac  	# The OS release -	# Debian GNU/NetBSD machines have a different userland, and -	# thus, need a distinct triplet. However, they do not need -	# kernel version information, so it can be replaced with a -	# suitable tag, in the style of linux-gnu. -	case "${UNAME_VERSION}" in -	    Debian*) -		release='-gnu' -		;; -	    *) -		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` -		;; -	esac +	release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`  	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:  	# contains redundant information, the shorter form:  	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.  	echo "${machine}-${os}${release}" -	exit ;; +	exit 0 ;; +    amiga:OpenBSD:*:*) +	echo m68k-unknown-openbsd${UNAME_RELEASE} +	exit 0 ;; +    arc:OpenBSD:*:*) +	echo mipsel-unknown-openbsd${UNAME_RELEASE} +	exit 0 ;; +    hp300:OpenBSD:*:*) +	echo m68k-unknown-openbsd${UNAME_RELEASE} +	exit 0 ;; +    mac68k:OpenBSD:*:*) +	echo m68k-unknown-openbsd${UNAME_RELEASE} +	exit 0 ;; +    macppc:OpenBSD:*:*) +	echo powerpc-unknown-openbsd${UNAME_RELEASE} +	exit 0 ;; +    mvme68k:OpenBSD:*:*) +	echo m68k-unknown-openbsd${UNAME_RELEASE} +	exit 0 ;; +    mvme88k:OpenBSD:*:*) +	echo m88k-unknown-openbsd${UNAME_RELEASE} +	exit 0 ;; +    mvmeppc:OpenBSD:*:*) +	echo powerpc-unknown-openbsd${UNAME_RELEASE} +	exit 0 ;; +    pmax:OpenBSD:*:*) +	echo mipsel-unknown-openbsd${UNAME_RELEASE} +	exit 0 ;; +    sgi:OpenBSD:*:*) +	echo mipseb-unknown-openbsd${UNAME_RELEASE} +	exit 0 ;; +    sun3:OpenBSD:*:*) +	echo m68k-unknown-openbsd${UNAME_RELEASE} +	exit 0 ;; +    wgrisc:OpenBSD:*:*) +	echo mipsel-unknown-openbsd${UNAME_RELEASE} +	exit 0 ;;      *:OpenBSD:*:*) -	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` -	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} -	exit ;; -    *:ekkoBSD:*:*) -	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} -	exit ;; -    *:SolidBSD:*:*) -	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} -	exit ;; -    macppc:MirBSD:*:*) -	echo powerpc-unknown-mirbsd${UNAME_RELEASE} -	exit ;; -    *:MirBSD:*:*) -	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} -	exit ;; +	echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} +	exit 0 ;;      alpha:OSF1:*:*) -	case $UNAME_RELEASE in -	*4.0) +	if test $UNAME_RELEASE = "V4.0"; then  		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` -		;; -	*5.*) -	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` -		;; -	esac -	# According to Compaq, /usr/sbin/psrinfo has been available on -	# OSF/1 and Tru64 systems produced since 1995.  I hope that -	# covers most systems running today.  This code pipes the CPU -	# types through head -n 1, so we only detect the type of CPU 0. -	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1` -	case "$ALPHA_CPU_TYPE" in -	    "EV4 (21064)") -		UNAME_MACHINE="alpha" ;; -	    "EV4.5 (21064)") -		UNAME_MACHINE="alpha" ;; -	    "LCA4 (21066/21068)") -		UNAME_MACHINE="alpha" ;; -	    "EV5 (21164)") -		UNAME_MACHINE="alphaev5" ;; -	    "EV5.6 (21164A)") -		UNAME_MACHINE="alphaev56" ;; -	    "EV5.6 (21164PC)") -		UNAME_MACHINE="alphapca56" ;; -	    "EV5.7 (21164PC)") -		UNAME_MACHINE="alphapca57" ;; -	    "EV6 (21264)") -		UNAME_MACHINE="alphaev6" ;; -	    "EV6.7 (21264A)") -		UNAME_MACHINE="alphaev67" ;; -	    "EV6.8CB (21264C)") -		UNAME_MACHINE="alphaev68" ;; -	    "EV6.8AL (21264B)") -		UNAME_MACHINE="alphaev68" ;; -	    "EV6.8CX (21264D)") -		UNAME_MACHINE="alphaev68" ;; -	    "EV6.9A (21264/EV69A)") -		UNAME_MACHINE="alphaev69" ;; -	    "EV7 (21364)") -		UNAME_MACHINE="alphaev7" ;; -	    "EV7.9 (21364A)") -		UNAME_MACHINE="alphaev79" ;; -	esac -	# A Pn.n version is a patched version. +	fi  	# A Vn.n version is a released version.  	# A Tn.n version is a released field test version.  	# A Xn.n version is an unreleased experimental baselevel.  	# 1.2 uses "1.2" for uname -r. -	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` -	exit ;; +	cat <<EOF >$dummy.s +	.data +\$Lformat: +	.byte 37,100,45,37,120,10,0	# "%d-%x\n" + +	.text +	.globl main +	.align 4 +	.ent main +main: +	.frame \$30,16,\$26,0 +	ldgp \$29,0(\$27) +	.prologue 1 +	.long 0x47e03d80 # implver \$0 +	lda \$2,-1 +	.long 0x47e20c21 # amask \$2,\$1 +	lda \$16,\$Lformat +	mov \$0,\$17 +	not \$1,\$18 +	jsr \$26,printf +	ldgp \$29,0(\$26) +	mov 0,\$16 +	jsr \$26,exit +	.end main +EOF +	eval $set_cc_for_build +	$CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null +	if test "$?" = 0 ; then +		case `./$dummy` in +			0-0) +				UNAME_MACHINE="alpha" +				;; +			1-0) +				UNAME_MACHINE="alphaev5" +				;; +			1-1) +				UNAME_MACHINE="alphaev56" +				;; +			1-101) +				UNAME_MACHINE="alphapca56" +				;; +			2-303) +				UNAME_MACHINE="alphaev6" +				;; +			2-307) +				UNAME_MACHINE="alphaev67" +				;; +			2-1307) +				UNAME_MACHINE="alphaev68" +				;; +		esac +	fi +	rm -f $dummy.s $dummy +	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` +	exit 0 ;;      Alpha\ *:Windows_NT*:*)  	# How do we know it's Interix rather than the generic POSIX subsystem?  	# Should we change UNAME_MACHINE based on the output of uname instead  	# of the specific Alpha model?  	echo alpha-pc-interix -	exit ;; +	exit 0 ;;      21064:Windows_NT:50:3)  	echo alpha-dec-winnt3.5 -	exit ;; +	exit 0 ;;      Amiga*:UNIX_System_V:4.0:*)  	echo m68k-unknown-sysv4 -	exit ;; +	exit 0;;      *:[Aa]miga[Oo][Ss]:*:*)  	echo ${UNAME_MACHINE}-unknown-amigaos -	exit ;; +	exit 0 ;;      *:[Mm]orph[Oo][Ss]:*:*)  	echo ${UNAME_MACHINE}-unknown-morphos -	exit ;; +	exit 0 ;;      *:OS/390:*:*)  	echo i370-ibm-openedition -	exit ;; -    *:z/VM:*:*) -	echo s390-ibm-zvmoe -	exit ;; -    *:OS400:*:*) -        echo powerpc-ibm-os400 -	exit ;; +	exit 0 ;;      arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)  	echo arm-acorn-riscix${UNAME_RELEASE} -	exit ;; -    arm:riscos:*:*|arm:RISCOS:*:*) -	echo arm-unknown-riscos -	exit ;; +	exit 0;;      SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)  	echo hppa1.1-hitachi-hiuxmpp -	exit ;; +	exit 0;;      Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)  	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.  	if test "`(/bin/universe) 2>/dev/null`" = att ; then @@ -313,32 +310,25 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in  	else  		echo pyramid-pyramid-bsd  	fi -	exit ;; +	exit 0 ;;      NILE*:*:*:dcosx)  	echo pyramid-pyramid-svr4 -	exit ;; -    DRS?6000:unix:4.0:6*) -	echo sparc-icl-nx6 -	exit ;; -    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) -	case `/usr/bin/uname -p` in -	    sparc) echo sparc-icl-nx7; exit ;; -	esac ;; +	exit 0 ;;      sun4H:SunOS:5.*:*)  	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -	exit ;; +	exit 0 ;;      sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)  	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -	exit ;; -    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) +	exit 0 ;; +    i86pc:SunOS:5.*:*)  	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -	exit ;; +	exit 0 ;;      sun4*:SunOS:6*:*)  	# According to config.sub, this is the proper way to canonicalize  	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but  	# it's likely to be more like Solaris than SunOS4.  	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -	exit ;; +	exit 0 ;;      sun4*:SunOS:*:*)  	case "`/usr/bin/arch -k`" in  	    Series*|S4*) @@ -347,10 +337,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in  	esac  	# Japanese Language versions have a version number like `4.1.3-JL'.  	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` -	exit ;; +	exit 0 ;;      sun3*:SunOS:*:*)  	echo m68k-sun-sunos${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      sun*:*:4.2BSD:*)  	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`  	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 @@ -362,10 +352,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in  		echo sparc-sun-sunos${UNAME_RELEASE}  		;;  	esac -	exit ;; +	exit 0 ;;      aushp:SunOS:*:*)  	echo sparc-auspex-sunos${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      # The situation for MiNT is a little confusing.  The machine name      # can be virtually everything (everything which is not      # "atarist" or "atariste" at least should have a processor @@ -376,40 +366,37 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in      # be no problem.      atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)          echo m68k-atari-mint${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)  	echo m68k-atari-mint${UNAME_RELEASE} -        exit ;; +        exit 0 ;;      *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)          echo m68k-atari-mint${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)          echo m68k-milan-mint${UNAME_RELEASE} -        exit ;; +        exit 0 ;;      hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)          echo m68k-hades-mint${UNAME_RELEASE} -        exit ;; +        exit 0 ;;      *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)          echo m68k-unknown-mint${UNAME_RELEASE} -        exit ;; -    m68k:machten:*:*) -	echo m68k-apple-machten${UNAME_RELEASE} -	exit ;; +        exit 0 ;;      powerpc:machten:*:*)  	echo powerpc-apple-machten${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      RISC*:Mach:*:*)  	echo mips-dec-mach_bsd4.3 -	exit ;; +	exit 0 ;;      RISC*:ULTRIX:*:*)  	echo mips-dec-ultrix${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      VAX*:ULTRIX*:*:*)  	echo vax-dec-ultrix${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      2020:CLIX:*:* | 2430:CLIX:*:*)  	echo clipper-intergraph-clix${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      mips:*:*:UMIPS | mips:*:*:RISCos)  	eval $set_cc_for_build  	sed 's/^	//' << EOF >$dummy.c @@ -433,33 +420,30 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in  	  exit (-1);  	}  EOF -	$CC_FOR_BUILD -o $dummy $dummy.c && -	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && -	  SYSTEM_NAME=`$dummy $dummyarg` && -	    { echo "$SYSTEM_NAME"; exit; } +	$CC_FOR_BUILD $dummy.c -o $dummy \ +	  && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ +	  && rm -f $dummy.c $dummy && exit 0 +	rm -f $dummy.c $dummy  	echo mips-mips-riscos${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      Motorola:PowerMAX_OS:*:*)  	echo powerpc-motorola-powermax -	exit ;; -    Motorola:*:4.3:PL8-*) +	exit 0 ;; +    Night_Hawk:*:*:PowerMAX_OS)  	echo powerpc-harris-powermax -	exit ;; -    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) -	echo powerpc-harris-powermax -	exit ;; +	exit 0 ;;      Night_Hawk:Power_UNIX:*:*)  	echo powerpc-harris-powerunix -	exit ;; +	exit 0 ;;      m88k:CX/UX:7*:*)  	echo m88k-harris-cxux7 -	exit ;; +	exit 0 ;;      m88k:*:4*:R4*)  	echo m88k-motorola-sysv4 -	exit ;; +	exit 0 ;;      m88k:*:3*:R3*)  	echo m88k-motorola-sysv3 -	exit ;; +	exit 0 ;;      AViiON:dgux:*:*)          # DG/UX returns AViiON for all architectures          UNAME_PROCESSOR=`/usr/bin/uname -p` @@ -475,29 +459,29 @@ EOF  	else  	    echo i586-dg-dgux${UNAME_RELEASE}  	fi - 	exit ;; + 	exit 0 ;;      M88*:DolphinOS:*:*)	# DolphinOS (SVR3)  	echo m88k-dolphin-sysv3 -	exit ;; +	exit 0 ;;      M88*:*:R3*:*)  	# Delta 88k system running SVR3  	echo m88k-motorola-sysv3 -	exit ;; +	exit 0 ;;      XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)  	echo m88k-tektronix-sysv3 -	exit ;; +	exit 0 ;;      Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)  	echo m68k-tektronix-bsd -	exit ;; +	exit 0 ;;      *:IRIX*:*:*)  	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` -	exit ;; +	exit 0 ;;      ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. -	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id -	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX ' +	echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id +	exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '      i*86:AIX:*:*)  	echo i386-ibm-aix -	exit ;; +	exit 0 ;;      ia64:AIX:*:*)  	if [ -x /usr/bin/oslevel ] ; then  		IBM_REV=`/usr/bin/oslevel` @@ -505,7 +489,7 @@ EOF  		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}  	fi  	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} -	exit ;; +	exit 0 ;;      *:AIX:2:3)  	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then  		eval $set_cc_for_build @@ -520,19 +504,16 @@ EOF  			exit(0);  			}  EOF -		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` -		then -			echo "$SYSTEM_NAME" -		else -			echo rs6000-ibm-aix3.2.5 -		fi +		$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 +		rm -f $dummy.c $dummy +		echo rs6000-ibm-aix3.2.5  	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then  		echo rs6000-ibm-aix3.2.4  	else  		echo rs6000-ibm-aix3.2  	fi -	exit ;; -    *:AIX:*:[456]) +	exit 0 ;; +    *:AIX:*:[45])  	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`  	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then  		IBM_ARCH=rs6000 @@ -545,28 +526,28 @@ EOF  		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}  	fi  	echo ${IBM_ARCH}-ibm-aix${IBM_REV} -	exit ;; +	exit 0 ;;      *:AIX:*:*)  	echo rs6000-ibm-aix -	exit ;; +	exit 0 ;;      ibmrt:4.4BSD:*|romp-ibm:BSD:*)  	echo romp-ibm-bsd4.4 -	exit ;; +	exit 0 ;;      ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and  	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to -	exit ;;                             # report: romp-ibm BSD 4.3 +	exit 0 ;;                           # report: romp-ibm BSD 4.3      *:BOSX:*:*)  	echo rs6000-bull-bosx -	exit ;; +	exit 0 ;;      DPX/2?00:B.O.S.:*:*)  	echo m68k-bull-sysv3 -	exit ;; +	exit 0 ;;      9000/[34]??:4.3bsd:1.*:*)  	echo m68k-hp-bsd -	exit ;; +	exit 0 ;;      hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)  	echo m68k-hp-bsd4.4 -	exit ;; +	exit 0 ;;      9000/[34678]??:HP-UX:*:*)  	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`  	case "${UNAME_MACHINE}" in @@ -622,37 +603,17 @@ EOF                    exit (0);                }  EOF -		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` -		    test -z "$HP_ARCH" && HP_ARCH=hppa +		    (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`./$dummy` +		    if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi +		    rm -f $dummy.c $dummy  		fi ;;  	esac -	if [ ${HP_ARCH} = "hppa2.0w" ] -	then -	    eval $set_cc_for_build - -	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating -	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler -	    # generating 64-bit code.  GNU and HP use different nomenclature: -	    # -	    # $ CC_FOR_BUILD=cc ./config.guess -	    # => hppa2.0w-hp-hpux11.23 -	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess -	    # => hppa64-hp-hpux11.23 - -	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | -		grep __LP64__ >/dev/null -	    then -		HP_ARCH="hppa2.0w" -	    else -		HP_ARCH="hppa64" -	    fi -	fi  	echo ${HP_ARCH}-hp-hpux${HPUX_REV} -	exit ;; +	exit 0 ;;      ia64:HP-UX:*:*)  	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`  	echo ia64-hp-hpux${HPUX_REV} -	exit ;; +	exit 0 ;;      3050*:HI-UX:*:*)  	eval $set_cc_for_build  	sed 's/^	//' << EOF >$dummy.c @@ -680,192 +641,134 @@ EOF  	  exit (0);  	}  EOF -	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && -		{ echo "$SYSTEM_NAME"; exit; } +	$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 +	rm -f $dummy.c $dummy  	echo unknown-hitachi-hiuxwe2 -	exit ;; +	exit 0 ;;      9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )  	echo hppa1.1-hp-bsd -	exit ;; +	exit 0 ;;      9000/8??:4.3bsd:*:*)  	echo hppa1.0-hp-bsd -	exit ;; +	exit 0 ;;      *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)  	echo hppa1.0-hp-mpeix -	exit ;; +	exit 0 ;;      hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )  	echo hppa1.1-hp-osf -	exit ;; +	exit 0 ;;      hp8??:OSF1:*:*)  	echo hppa1.0-hp-osf -	exit ;; +	exit 0 ;;      i*86:OSF1:*:*)  	if [ -x /usr/sbin/sysversion ] ; then  	    echo ${UNAME_MACHINE}-unknown-osf1mk  	else  	    echo ${UNAME_MACHINE}-unknown-osf1  	fi -	exit ;; +	exit 0 ;;      parisc*:Lites*:*:*)  	echo hppa1.1-hp-lites -	exit ;; +	exit 0 ;;      C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)  	echo c1-convex-bsd -        exit ;; +        exit 0 ;;      C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)  	if getsysinfo -f scalar_acc  	then echo c32-convex-bsd  	else echo c2-convex-bsd  	fi -        exit ;; +        exit 0 ;;      C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)  	echo c34-convex-bsd -        exit ;; +        exit 0 ;;      C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)  	echo c38-convex-bsd -        exit ;; +        exit 0 ;;      C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)  	echo c4-convex-bsd -        exit ;; +        exit 0 ;;      CRAY*Y-MP:*:*:*)  	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -	exit ;; +	exit 0 ;;      CRAY*[A-Z]90:*:*:*)  	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \  	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \  	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \  	      -e 's/\.[^.]*$/.X/' -	exit ;; +	exit 0 ;;      CRAY*TS:*:*:*)  	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -	exit ;; +	exit 0 ;; +    CRAY*T3D:*:*:*) +	echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +	exit 0 ;;      CRAY*T3E:*:*:*)  	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -	exit ;; +	exit 0 ;;      CRAY*SV1:*:*:*)  	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -	exit ;; -    *:UNICOS/mp:*:*) -	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -	exit ;; +	exit 0 ;;      F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)  	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`          FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`          FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`          echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" -        exit ;; -    5000:UNIX_System_V:4.*:*) -        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` -        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` -        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" -	exit ;; +        exit 0 ;;      i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)  	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      sparc*:BSD/OS:*:*)  	echo sparc-unknown-bsdi${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      *:BSD/OS:*:*)  	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      *:FreeBSD:*:*) -	case ${UNAME_MACHINE} in -	    pc98) -		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; -	    amd64) -		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; -	    *) -		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; -	esac -	exit ;; +	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` +	exit 0 ;;      i*:CYGWIN*:*)  	echo ${UNAME_MACHINE}-pc-cygwin -	exit ;; -    *:MINGW*:*) +	exit 0 ;; +    i*:MINGW*:*)  	echo ${UNAME_MACHINE}-pc-mingw32 -	exit ;; -    i*:windows32*:*) -    	# uname -m includes "-pc" on this system. -    	echo ${UNAME_MACHINE}-mingw32 -	exit ;; +	exit 0 ;;      i*:PW*:*)  	echo ${UNAME_MACHINE}-pc-pw32 -	exit ;; -    *:Interix*:[3456]*) -    	case ${UNAME_MACHINE} in -	    x86) -		echo i586-pc-interix${UNAME_RELEASE} -		exit ;; -	    EM64T | authenticamd) -		echo x86_64-unknown-interix${UNAME_RELEASE} -		exit ;; -	    IA64) -		echo ia64-unknown-interix${UNAME_RELEASE} -		exit ;; -	esac ;; -    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) -	echo i${UNAME_MACHINE}-pc-mks -	exit ;; +	exit 0 ;; +    x86:Interix*:3*) +	echo i386-pc-interix3 +	exit 0 ;;      i*:Windows_NT*:* | Pentium*:Windows_NT*:*)  	# How do we know it's Interix rather than the generic POSIX subsystem?  	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we  	# UNAME_MACHINE based on the output of uname instead of i386? -	echo i586-pc-interix -	exit ;; +	echo i386-pc-interix +	exit 0 ;;      i*:UWIN*:*)  	echo ${UNAME_MACHINE}-pc-uwin -	exit ;; -    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) -	echo x86_64-unknown-cygwin -	exit ;; +	exit 0 ;;      p*:CYGWIN*:*)  	echo powerpcle-unknown-cygwin -	exit ;; +	exit 0 ;;      prep*:SunOS:5.*:*)  	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -	exit ;; +	exit 0 ;;      *:GNU:*:*) -	# the GNU system  	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` -	exit ;; -    *:GNU/*:*:*) -	# other systems with GNU libc and userland -	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu -	exit ;; +	exit 0 ;;      i*86:Minix:*:*)  	echo ${UNAME_MACHINE}-pc-minix -	exit ;; +	exit 0 ;;      arm*:Linux:*:*) -	eval $set_cc_for_build -	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ -	    | grep -q __ARM_EABI__ -	then -	    echo ${UNAME_MACHINE}-unknown-linux-gnu -	else -	    echo ${UNAME_MACHINE}-unknown-linux-gnueabi -	fi -	exit ;; -    avr32*:Linux:*:*)  	echo ${UNAME_MACHINE}-unknown-linux-gnu -	exit ;; -    cris:Linux:*:*) -	echo cris-axis-linux-gnu -	exit ;; -    crisv32:Linux:*:*) -	echo crisv32-axis-linux-gnu -	exit ;; -    frv:Linux:*:*) -    	echo frv-unknown-linux-gnu -	exit ;; +	exit 0 ;;      ia64:Linux:*:*)  	echo ${UNAME_MACHINE}-unknown-linux-gnu -	exit ;; -    m32r*:Linux:*:*) -	echo ${UNAME_MACHINE}-unknown-linux-gnu -	exit ;; +	exit 0 ;;      m68*:Linux:*:*)  	echo ${UNAME_MACHINE}-unknown-linux-gnu -	exit ;; +	exit 0 ;;      mips:Linux:*:*)  	eval $set_cc_for_build  	sed 's/^	//' << EOF >$dummy.c @@ -882,45 +785,16 @@ EOF  	#endif  	#endif  EOF -	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' -	    /^CPU/{ -		s: ::g -		p -	    }'`" -	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } +	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` +	rm -f $dummy.c +	test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0  	;; -    mips64:Linux:*:*) -	eval $set_cc_for_build -	sed 's/^	//' << EOF >$dummy.c -	#undef CPU -	#undef mips64 -	#undef mips64el -	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) -	CPU=mips64el -	#else -	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) -	CPU=mips64 -	#else -	CPU= -	#endif -	#endif -EOF -	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' -	    /^CPU/{ -		s: ::g -		p -	    }'`" -	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } -	;; -    or32:Linux:*:*) -	echo or32-unknown-linux-gnu -	exit ;;      ppc:Linux:*:*)  	echo powerpc-unknown-linux-gnu -	exit ;; +	exit 0 ;;      ppc64:Linux:*:*)  	echo powerpc64-unknown-linux-gnu -	exit ;; +	exit 0 ;;      alpha:Linux:*:*)  	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in  	  EV5)   UNAME_MACHINE=alphaev5 ;; @@ -934,7 +808,7 @@ EOF  	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null  	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi  	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} -	exit ;; +	exit 0 ;;      parisc:Linux:*:* | hppa:Linux:*:*)  	# Look for CPU level  	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in @@ -942,31 +816,22 @@ EOF  	  PA8*) echo hppa2.0-unknown-linux-gnu ;;  	  *)    echo hppa-unknown-linux-gnu ;;  	esac -	exit ;; +	exit 0 ;;      parisc64:Linux:*:* | hppa64:Linux:*:*)  	echo hppa64-unknown-linux-gnu -	exit ;; +	exit 0 ;;      s390:Linux:*:* | s390x:Linux:*:*)  	echo ${UNAME_MACHINE}-ibm-linux -	exit ;; -    sh64*:Linux:*:*) -    	echo ${UNAME_MACHINE}-unknown-linux-gnu -	exit ;; +	exit 0 ;;      sh*:Linux:*:*)  	echo ${UNAME_MACHINE}-unknown-linux-gnu -	exit ;; +	exit 0 ;;      sparc:Linux:*:* | sparc64:Linux:*:*)  	echo ${UNAME_MACHINE}-unknown-linux-gnu -	exit ;; -    vax:Linux:*:*) -	echo ${UNAME_MACHINE}-dec-linux-gnu -	exit ;; +	exit 0 ;;      x86_64:Linux:*:*)  	echo x86_64-unknown-linux-gnu -	exit ;; -    xtensa*:Linux:*:*) -    	echo ${UNAME_MACHINE}-unknown-linux-gnu -	exit ;; +	exit 0 ;;      i*86:Linux:*:*)  	# The BFD linker knows what the default object file format is, so  	# first see if it will tell us. cd to the root directory to prevent @@ -984,15 +849,15 @@ EOF  		;;  	  a.out-i386-linux)  		echo "${UNAME_MACHINE}-pc-linux-gnuaout" -		exit ;; +		exit 0 ;;		  	  coff-i386)  		echo "${UNAME_MACHINE}-pc-linux-gnucoff" -		exit ;; +		exit 0 ;;  	  "")  		# Either a pre-BFD a.out linker (linux-gnuoldld) or  		# one that does not give us useful --help.  		echo "${UNAME_MACHINE}-pc-linux-gnuoldld" -		exit ;; +		exit 0 ;;  	esac  	# Determine whether the default compiler is a.out or elf  	eval $set_cc_for_build @@ -1009,33 +874,24 @@ EOF  	LIBC=gnulibc1  	# endif  	#else -	#if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) +	#ifdef __INTEL_COMPILER  	LIBC=gnu  	#else  	LIBC=gnuaout  	#endif  	#endif -	#ifdef __dietlibc__ -	LIBC=dietlibc -	#endif  EOF -	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' -	    /^LIBC/{ -		s: ::g -		p -	    }'`" -	test x"${LIBC}" != x && { -		echo "${UNAME_MACHINE}-pc-linux-${LIBC}" -		exit -	} -	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } +	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` +	rm -f $dummy.c +	test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 +	test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0  	;;      i*86:DYNIX/ptx:4*:*)  	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.  	# earlier versions are messed up and put the nodename in both  	# sysname and nodename.  	echo i386-sequent-sysv4 -	exit ;; +	exit 0 ;;      i*86:UNIX_SV:4.2MP:2.*)          # Unixware is an offshoot of SVR4, but it has its own version          # number series starting with 2... @@ -1043,27 +899,7 @@ EOF  	# I just have to hope.  -- rms.          # Use sysv4.2uw... so that sysv4* matches it.  	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} -	exit ;; -    i*86:OS/2:*:*) -	# If we were able to find `uname', then EMX Unix compatibility -	# is probably installed. -	echo ${UNAME_MACHINE}-pc-os2-emx -	exit ;; -    i*86:XTS-300:*:STOP) -	echo ${UNAME_MACHINE}-unknown-stop -	exit ;; -    i*86:atheos:*:*) -	echo ${UNAME_MACHINE}-unknown-atheos -	exit ;; -    i*86:syllable:*:*) -	echo ${UNAME_MACHINE}-pc-syllable -	exit ;; -    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) -	echo i386-unknown-lynxos${UNAME_RELEASE} -	exit ;; -    i*86:*DOS:*:*) -	echo ${UNAME_MACHINE}-pc-msdosdjgpp -	exit ;; +	exit 0 ;;      i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)  	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`  	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then @@ -1071,16 +907,15 @@ EOF  	else  		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}  	fi -	exit ;; -    i*86:*:5:[678]*) -    	# UnixWare 7.x, OpenUNIX and OpenServer 6. +	exit 0 ;; +    i*86:*:5:[78]*)  	case `/bin/uname -X | grep "^Machine"` in  	    *486*)	     UNAME_MACHINE=i486 ;;  	    *Pentium)	     UNAME_MACHINE=i586 ;;  	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;  	esac  	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} -	exit ;; +	exit 0 ;;      i*86:*:3.2:*)  	if test -f /usr/options/cb.name; then  		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` @@ -1098,73 +933,73 @@ EOF  	else  		echo ${UNAME_MACHINE}-pc-sysv32  	fi -	exit ;; +	exit 0 ;; +    i*86:*DOS:*:*) +	echo ${UNAME_MACHINE}-pc-msdosdjgpp +	exit 0 ;;      pc:*:*:*)  	# Left here for compatibility:          # uname -m prints for DJGPP always 'pc', but it prints nothing about          # the processor, so we play safe by assuming i386.  	echo i386-pc-msdosdjgpp -        exit ;; +        exit 0 ;;      Intel:Mach:3*:*)  	echo i386-pc-mach3 -	exit ;; +	exit 0 ;;      paragon:*:*:*)  	echo i860-intel-osf1 -	exit ;; +	exit 0 ;;      i860:*:4.*:*) # i860-SVR4  	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then  	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4  	else # Add other i860-SVR4 vendors below as they are discovered.  	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4  	fi -	exit ;; +	exit 0 ;;      mini*:CTIX:SYS*5:*)  	# "miniframe"  	echo m68010-convergent-sysv -	exit ;; -    mc68k:UNIX:SYSTEM5:3.51m) -	echo m68k-convergent-sysv -	exit ;; -    M680?0:D-NIX:5.3:*) -	echo m68k-diab-dnix -	exit ;; -    M68*:*:R3V[5678]*:*) -	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; -    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) +	exit 0 ;; +    M68*:*:R3V[567]*:*) +	test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; +    3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0)  	OS_REL=''  	test -r /etc/.relid \  	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`  	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \ -	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; } +	  && echo i486-ncr-sysv4.3${OS_REL} && exit 0  	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ -	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; +	  && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;      3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)          /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ -          && { echo i486-ncr-sysv4; exit; } ;; +          && echo i486-ncr-sysv4 && exit 0 ;;      m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)  	echo m68k-unknown-lynxos${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      mc68030:UNIX_System_V:4.*:*)  	echo m68k-atari-sysv4 -	exit ;; +	exit 0 ;; +    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) +	echo i386-unknown-lynxos${UNAME_RELEASE} +	exit 0 ;;      TSUNAMI:LynxOS:2.*:*)  	echo sparc-unknown-lynxos${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      rs6000:LynxOS:2.*:*)  	echo rs6000-unknown-lynxos${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)  	echo powerpc-unknown-lynxos${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      SM[BE]S:UNIX_SV:*:*)  	echo mips-dde-sysv${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      RM*:ReliantUNIX-*:*:*)  	echo mips-sni-sysv4 -	exit ;; +	exit 0 ;;      RM*:SINIX-*:*:*)  	echo mips-sni-sysv4 -	exit ;; +	exit 0 ;;      *:SINIX-*:*:*)  	if uname -p 2>/dev/null >/dev/null ; then  		UNAME_MACHINE=`(uname -p) 2>/dev/null` @@ -1172,81 +1007,61 @@ EOF  	else  		echo ns32k-sni-sysv  	fi -	exit ;; +	exit 0 ;;      PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort                        # says <Richard.M.Bartel@ccMail.Census.GOV>          echo i586-unisys-sysv4 -        exit ;; +        exit 0 ;;      *:UNIX_System_V:4*:FTX*)  	# From Gerald Hewes <hewes@openmarket.com>.  	# How about differentiating between stratus architectures? -djm  	echo hppa1.1-stratus-sysv4 -	exit ;; +	exit 0 ;;      *:*:*:FTX*)  	# From seanf@swdc.stratus.com.  	echo i860-stratus-sysv4 -	exit ;; -    i*86:VOS:*:*) -	# From Paul.Green@stratus.com. -	echo ${UNAME_MACHINE}-stratus-vos -	exit ;; +	exit 0 ;;      *:VOS:*:*)  	# From Paul.Green@stratus.com.  	echo hppa1.1-stratus-vos -	exit ;; +	exit 0 ;;      mc68*:A/UX:*:*)  	echo m68k-apple-aux${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      news*:NEWS-OS:6*:*)  	echo mips-sony-newsos6 -	exit ;; +	exit 0 ;;      R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)  	if [ -d /usr/nec ]; then  	        echo mips-nec-sysv${UNAME_RELEASE}  	else  	        echo mips-unknown-sysv${UNAME_RELEASE}  	fi -        exit ;; +        exit 0 ;;      BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.  	echo powerpc-be-beos -	exit ;; +	exit 0 ;;      BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.  	echo powerpc-apple-beos -	exit ;; +	exit 0 ;;      BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.  	echo i586-pc-beos -	exit ;; +	exit 0 ;;      SX-4:SUPER-UX:*:*)  	echo sx4-nec-superux${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      SX-5:SUPER-UX:*:*)  	echo sx5-nec-superux${UNAME_RELEASE} -	exit ;; -    SX-6:SUPER-UX:*:*) -	echo sx6-nec-superux${UNAME_RELEASE} -	exit ;; -    SX-7:SUPER-UX:*:*) -	echo sx7-nec-superux${UNAME_RELEASE} -	exit ;; -    SX-8:SUPER-UX:*:*) -	echo sx8-nec-superux${UNAME_RELEASE} -	exit ;; -    SX-8R:SUPER-UX:*:*) -	echo sx8r-nec-superux${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      Power*:Rhapsody:*:*)  	echo powerpc-apple-rhapsody${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      *:Rhapsody:*:*)  	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      *:Darwin:*:*) -	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown -	case $UNAME_PROCESSOR in -	    unknown) UNAME_PROCESSOR=powerpc ;; -	esac -	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} -	exit ;; +	echo `uname -p`-apple-darwin${UNAME_RELEASE} +	exit 0 ;;      *:procnto*:*:* | *:QNX:[0123456789]*:*)  	UNAME_PROCESSOR=`uname -p`  	if test "$UNAME_PROCESSOR" = "x86"; then @@ -1254,25 +1069,22 @@ EOF  		UNAME_MACHINE=pc  	fi  	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      *:QNX:*:4*)  	echo i386-pc-qnx -	exit ;; -    NSE-?:NONSTOP_KERNEL:*:*) -	echo nse-tandem-nsk${UNAME_RELEASE} -	exit ;; -    NSR-?:NONSTOP_KERNEL:*:*) +	exit 0 ;; +    NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*)  	echo nsr-tandem-nsk${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      *:NonStop-UX:*:*)  	echo mips-compaq-nonstopux -	exit ;; +	exit 0 ;;      BS2000:POSIX*:*:*)  	echo bs2000-siemens-sysv -	exit ;; +	exit 0 ;;      DS/*:UNIX_System_V:*:*)  	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} -	exit ;; +	exit 0 ;;      *:Plan9:*:*)  	# "uname -m" is not consistent, so use $cputype instead. 386  	# is converted to i386 for consistency with other x86 @@ -1283,47 +1095,36 @@ EOF  	    UNAME_MACHINE="$cputype"  	fi  	echo ${UNAME_MACHINE}-unknown-plan9 -	exit ;; +	exit 0 ;; +    i*86:OS/2:*:*) +	# If we were able to find `uname', then EMX Unix compatibility +	# is probably installed. +	echo ${UNAME_MACHINE}-pc-os2-emx +	exit 0 ;;      *:TOPS-10:*:*)  	echo pdp10-unknown-tops10 -	exit ;; +	exit 0 ;;      *:TENEX:*:*)  	echo pdp10-unknown-tenex -	exit ;; +	exit 0 ;;      KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)  	echo pdp10-dec-tops20 -	exit ;; +	exit 0 ;;      XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)  	echo pdp10-xkl-tops20 -	exit ;; +	exit 0 ;;      *:TOPS-20:*:*)  	echo pdp10-unknown-tops20 -	exit ;; +	exit 0 ;;      *:ITS:*:*)  	echo pdp10-unknown-its -	exit ;; -    SEI:*:*:SEIUX) -        echo mips-sei-seiux${UNAME_RELEASE} -	exit ;; -    *:DragonFly:*:*) -	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` -	exit ;; -    *:*VMS:*:*) -    	UNAME_MACHINE=`(uname -p) 2>/dev/null` -	case "${UNAME_MACHINE}" in -	    A*) echo alpha-dec-vms ; exit ;; -	    I*) echo ia64-dec-vms ; exit ;; -	    V*) echo vax-dec-vms ; exit ;; -	esac ;; -    *:XENIX:*:SysV) -	echo i386-pc-xenix -	exit ;; -    i*86:skyos:*:*) -	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' -	exit ;; -    i*86:rdos:*:*) -	echo ${UNAME_MACHINE}-pc-rdos -	exit ;; +	exit 0 ;; +    i*86:XTS-300:*:STOP) +	echo ${UNAME_MACHINE}-unknown-stop +	exit 0 ;; +    i*86:atheos:*:*) +	echo ${UNAME_MACHINE}-unknown-atheos +	exit 0 ;;  esac  #echo '(No uname command or uname output not recognized.)' 1>&2 @@ -1355,7 +1156,7 @@ main ()  #endif  #if defined (__arm) && defined (__acorn) && defined (__unix) -  printf ("arm-acorn-riscix\n"); exit (0); +  printf ("arm-acorn-riscix"); exit (0);  #endif  #if defined (hp300) && !defined (hpux) @@ -1444,12 +1245,12 @@ main ()  }  EOF -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && -	{ echo "$SYSTEM_NAME"; exit; } +$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 +rm -f $dummy.c $dummy  # Apollos put the system type in the environment. -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }  # Convex versions that predate uname can use getsysinfo(1) @@ -1458,22 +1259,22 @@ then      case `getsysinfo -f cpu_type` in      c1*)  	echo c1-convex-bsd -	exit ;; +	exit 0 ;;      c2*)  	if getsysinfo -f scalar_acc  	then echo c32-convex-bsd  	else echo c2-convex-bsd  	fi -	exit ;; +	exit 0 ;;      c34*)  	echo c34-convex-bsd -	exit ;; +	exit 0 ;;      c38*)  	echo c38-convex-bsd -	exit ;; +	exit 0 ;;      c4*)  	echo c4-convex-bsd -	exit ;; +	exit 0 ;;      esac  fi @@ -1484,9 +1285,7 @@ This script, last modified $timestamp, has failed to recognize  the operating system you are using. It is advised that you  download the most up to date version of the config scripts from -  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD -and -  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD +    ftp://ftp.gnu.org/pub/gnu/config/  If the version you run ($0) is already up to date, please  send the following data and any information you think might be diff --git a/aux-build/config.sub b/aux-build/config.sub index 6759825..7f614e1 100755 --- a/aux-build/config.sub +++ b/aux-build/config.sub @@ -1,10 +1,9 @@  #! /bin/sh  # Configuration validation subroutine script.  #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 -#   Free Software Foundation, Inc. +#   2000, 2001, 2002 Free Software Foundation, Inc. -timestamp='2008-01-16' +timestamp='2002-05-28'  # This file is (in principle) common to ALL GNU software.  # The presence of a machine in this file suggests that SOME GNU software @@ -22,15 +21,14 @@ timestamp='2008-01-16'  #  # You should have received a copy of the GNU General Public License  # along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. -# +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. +  # As a special exception to the GNU General Public License, if you  # distribute this file as part of a program that contains a  # configuration script generated by Autoconf, you may include it under  # the same distribution terms that you use for the rest of that program. -  # Please send patches to <config-patches@gnu.org>.  Submit a context  # diff and a properly formatted ChangeLog entry.  # @@ -72,8 +70,8 @@ Report bugs and patches to <config-patches@gnu.org>."  version="\  GNU config.sub ($timestamp) -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc.  This is free software; see the source for copying conditions.  There is NO  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -85,11 +83,11 @@ Try \`$me --help' for more information."  while test $# -gt 0 ; do    case $1 in      --time-stamp | --time* | -t ) -       echo "$timestamp" ; exit ;; +       echo "$timestamp" ; exit 0 ;;      --version | -v ) -       echo "$version" ; exit ;; +       echo "$version" ; exit 0 ;;      --help | --h* | -h ) -       echo "$usage"; exit ;; +       echo "$usage"; exit 0 ;;      -- )     # Stop option processing         shift; break ;;      - )	# Use stdin as input. @@ -101,7 +99,7 @@ while test $# -gt 0 ; do      *local*)         # First pass through any local machine types.         echo $1 -       exit ;; +       exit 0;;      * )         break ;; @@ -120,9 +118,7 @@ esac  # Here we must recognize all the valid KERNEL-OS combinations.  maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`  case $maybe_os in -  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ -  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ -  storm-chaos* | os2-emx* | rtmk-nova*) +  nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*)      os=-$maybe_os      basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`      ;; @@ -148,7 +144,7 @@ case $os in  	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\  	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \  	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -	-apple | -axis | -knuth | -cray) +	-apple | -axis)  		os=  		basic_machine=$1  		;; @@ -173,10 +169,6 @@ case $os in  	-hiux*)  		os=-hiuxwe2  		;; -	-sco6) -		os=-sco5v6 -		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -		;;  	-sco5)  		os=-sco3.2v5  		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` @@ -193,10 +185,6 @@ case $os in  		# Don't forget version if it is 3.2v4 or newer.  		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`  		;; -	-sco5v6*) -		# Don't forget version if it is 3.2v4 or newer. -		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -		;;  	-sco*)  		os=-sco3.2v2  		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` @@ -240,52 +228,31 @@ case $basic_machine in  	| a29k \  	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \  	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ -	| am33_2.0 \ -	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ -	| bfin \ +	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \  	| c4x | clipper \  	| d10v | d30v | dlx | dsp16xx \ -	| fido | fr30 | frv \ +	| fr30 \  	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \  	| i370 | i860 | i960 | ia64 \ -	| ip2k | iq2000 \ -	| m32c | m32r | m32rle | m68000 | m68k | m88k \ -	| maxq | mb | microblaze | mcore | mep \ -	| mips | mipsbe | mipseb | mipsel | mipsle \ -	| mips16 \ -	| mips64 | mips64el \ -	| mips64vr | mips64vrel \ -	| mips64orion | mips64orionel \ -	| mips64vr4100 | mips64vr4100el \ -	| mips64vr4300 | mips64vr4300el \ -	| mips64vr5000 | mips64vr5000el \ -	| mips64vr5900 | mips64vr5900el \ -	| mipsisa32 | mipsisa32el \ -	| mipsisa32r2 | mipsisa32r2el \ -	| mipsisa64 | mipsisa64el \ -	| mipsisa64r2 | mipsisa64r2el \ -	| mipsisa64sb1 | mipsisa64sb1el \ -	| mipsisa64sr71k | mipsisa64sr71kel \ -	| mipstx39 | mipstx39el \ +	| m32r | m68000 | m68k | m88k | mcore \ +	| mips | mips16 | mips64 | mips64el | mips64orion | mips64orionel \ +	| mips64vr4100 | mips64vr4100el | mips64vr4300 \ +	| mips64vr4300el | mips64vr5000 | mips64vr5000el \ +	| mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \ +	| mipsisa32 | mipsisa64 \  	| mn10200 | mn10300 \ -	| mt \ -	| msp430 \ -	| nios | nios2 \  	| ns16k | ns32k \ -	| or32 \ +	| openrisc | or32 \  	| pdp10 | pdp11 | pj | pjl \  	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \  	| pyramid \ -	| score \ -	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ -	| sh64 | sh64le \ -	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ -	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \ -	| spu | strongarm \ -	| tahoe | thumb | tic4x | tic80 | tron \ +	| sh | sh[34] | sh[34]eb | shbe | shle | sh64 \ +	| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ +	| strongarm \ +	| tahoe | thumb | tic80 | tron \  	| v850 | v850e \  	| we32k \ -	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ +	| x86 | xscale | xstormy16 | xtensa \  	| z8k)  		basic_machine=$basic_machine-unknown  		;; @@ -296,9 +263,6 @@ case $basic_machine in  		;;  	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)  		;; -	ms1) -		basic_machine=mt-unknown -		;;  	# We use `pc' rather than `unknown'  	# because (1) that's what they normally are, and @@ -318,65 +282,40 @@ case $basic_machine in  	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \  	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \  	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \ -	| avr-* | avr32-* \ -	| bfin-* | bs2000-* \ -	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ -	| clipper-* | craynv-* | cydra-* \ +	| avr-* \ +	| bs2000-* \ +	| c[123]* | c30-* | [cjt]90-* | c54x-* \ +	| clipper-* | cydra-* \  	| d10v-* | d30v-* | dlx-* \  	| elxsi-* \ -	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ +	| f30[01]-* | f700-* | fr30-* | fx80-* \  	| h8300-* | h8500-* \  	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \  	| i*86-* | i860-* | i960-* | ia64-* \ -	| ip2k-* | iq2000-* \ -	| m32c-* | m32r-* | m32rle-* \ +	| m32r-* \  	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ -	| m88110-* | m88k-* | maxq-* | mcore-* \ -	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ -	| mips16-* \ -	| mips64-* | mips64el-* \ -	| mips64vr-* | mips64vrel-* \ -	| mips64orion-* | mips64orionel-* \ -	| mips64vr4100-* | mips64vr4100el-* \ -	| mips64vr4300-* | mips64vr4300el-* \ -	| mips64vr5000-* | mips64vr5000el-* \ -	| mips64vr5900-* | mips64vr5900el-* \ -	| mipsisa32-* | mipsisa32el-* \ -	| mipsisa32r2-* | mipsisa32r2el-* \ -	| mipsisa64-* | mipsisa64el-* \ -	| mipsisa64r2-* | mipsisa64r2el-* \ -	| mipsisa64sb1-* | mipsisa64sb1el-* \ -	| mipsisa64sr71k-* | mipsisa64sr71kel-* \ -	| mipstx39-* | mipstx39el-* \ -	| mmix-* \ -	| mt-* \ -	| msp430-* \ -	| nios-* | nios2-* \ +	| m88110-* | m88k-* | mcore-* \ +	| mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ +	| mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ +	| mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \ +	| mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \  	| none-* | np1-* | ns16k-* | ns32k-* \  	| orion-* \  	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \  	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \  	| pyramid-* \  	| romp-* | rs6000-* \ -	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ -	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ -	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ -	| sparclite-* \ -	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ -	| tahoe-* | thumb-* \ -	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ -	| tron-* \ +	| sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* | sh64-* \ +	| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ +	| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ +	| tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \  	| v850-* | v850e-* | vax-* \  	| we32k-* \ -	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ -	| xstormy16-* | xtensa*-* \ +	| x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ +	| xtensa-* \  	| ymp-* \  	| z8k-*)  		;; -	# Recognize the basic CPU types without company name, with glob match. -	xtensa*) -		basic_machine=$basic_machine-unknown -		;;  	# Recognize the various machine names and aliases which stand  	# for a CPU type and a company and sometimes even an OS.  	386bsd) @@ -393,9 +332,6 @@ case $basic_machine in  		basic_machine=a29k-amd  		os=-udi  		;; -    	abacus) -		basic_machine=abacus-unknown -		;;  	adobe68k)  		basic_machine=m68010-adobe  		os=-scout @@ -410,12 +346,6 @@ case $basic_machine in  		basic_machine=a29k-none  		os=-bsd  		;; -	amd64) -		basic_machine=x86_64-pc -		;; -	amd64-*) -		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` -		;;  	amdahl)  		basic_machine=580-amdahl  		os=-sysv @@ -447,14 +377,6 @@ case $basic_machine in  		basic_machine=ns32k-sequent  		os=-dynix  		;; -	blackfin) -		basic_machine=bfin-unknown -		os=-linux -		;; -	blackfin-*) -		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` -		os=-linux -		;;  	c90)  		basic_machine=c90-cray  		os=-unicos @@ -483,27 +405,12 @@ case $basic_machine in  		basic_machine=j90-cray  		os=-unicos  		;; -	craynv) -		basic_machine=craynv-cray -		os=-unicosmp -		;; -	cr16) -		basic_machine=cr16-unknown -		os=-elf -		;;  	crds | unos)  		basic_machine=m68k-crds  		;; -	crisv32 | crisv32-* | etraxfs*) -		basic_machine=crisv32-axis -		;;  	cris | cris-* | etrax*)  		basic_machine=cris-axis  		;; -	crx) -		basic_machine=crx-unknown -		os=-elf -		;;  	da30 | da30-*)  		basic_machine=m68k-da30  		;; @@ -526,10 +433,6 @@ case $basic_machine in  		basic_machine=m88k-motorola  		os=-sysv3  		;; -	djgpp) -		basic_machine=i586-pc -		os=-msdosdjgpp -		;;  	dpx20 | dpx20-*)  		basic_machine=rs6000-bull  		os=-bosx @@ -680,14 +583,6 @@ case $basic_machine in  		basic_machine=m68k-isi  		os=-sysv  		;; -	m68knommu) -		basic_machine=m68k-unknown -		os=-linux -		;; -	m68knommu-*) -		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` -		os=-linux -		;;  	m88k-omron*)  		basic_machine=m88k-omron  		;; @@ -703,10 +598,6 @@ case $basic_machine in  		basic_machine=i386-pc  		os=-mingw32  		;; -	mingw32ce) -		basic_machine=arm-unknown -		os=-mingw32ce -		;;  	miniframe)  		basic_machine=m68000-convergent  		;; @@ -720,6 +611,10 @@ case $basic_machine in  	mips3*)  		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown  		;; +	mmix*) +		basic_machine=mmix-knuth +		os=-mmixware +		;;  	monitor)  		basic_machine=m68k-rom68k  		os=-coff @@ -732,9 +627,6 @@ case $basic_machine in  		basic_machine=i386-pc  		os=-msdos  		;; -	ms1-*) -		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` -		;;  	mvs)  		basic_machine=i370-ibm  		os=-mvs @@ -810,12 +702,9 @@ case $basic_machine in  		basic_machine=hppa1.1-oki  		os=-proelf  		;; -	openrisc | openrisc-*) +	or32 | or32-*)  		basic_machine=or32-unknown -		;; -	os400) -		basic_machine=powerpc-ibm -		os=-os400 +		os=-coff  		;;  	OSE68000 | ose68000)  		basic_machine=m68000-ericsson @@ -833,75 +722,55 @@ case $basic_machine in  		basic_machine=i860-intel  		os=-osf  		;; -	parisc) -		basic_machine=hppa-unknown -		os=-linux -		;; -	parisc-*) -		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` -		os=-linux -		;;  	pbd)  		basic_machine=sparc-tti  		;;  	pbb)  		basic_machine=m68k-tti  		;; -	pc532 | pc532-*) +        pc532 | pc532-*)  		basic_machine=ns32k-pc532  		;; -	pc98) -		basic_machine=i386-pc -		;; -	pc98-*) -		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` -		;;  	pentium | p5 | k5 | k6 | nexgen | viac3)  		basic_machine=i586-pc  		;; -	pentiumpro | p6 | 6x86 | athlon | athlon_*) +	pentiumpro | p6 | 6x86 | athlon)  		basic_machine=i686-pc  		;; -	pentiumii | pentium2 | pentiumiii | pentium3) +	pentiumii | pentium2)  		basic_machine=i686-pc  		;; -	pentium4) -		basic_machine=i786-pc -		;;  	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)  		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`  		;;  	pentiumpro-* | p6-* | 6x86-* | athlon-*)  		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`  		;; -	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) +	pentiumii-* | pentium2-*)  		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`  		;; -	pentium4-*) -		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` -		;;  	pn)  		basic_machine=pn-gould  		;;  	power)	basic_machine=power-ibm  		;;  	ppc)	basic_machine=powerpc-unknown -		;; +	        ;;  	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`  		;;  	ppcle | powerpclittle | ppc-le | powerpc-little)  		basic_machine=powerpcle-unknown -		;; +	        ;;  	ppcle-* | powerpclittle-*)  		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`  		;;  	ppc64)	basic_machine=powerpc64-unknown -		;; +	        ;;  	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`  		;;  	ppc64le | powerpc64little | ppc64-le | powerpc64-little)  		basic_machine=powerpc64le-unknown -		;; +	        ;;  	ppc64le-* | powerpc64little-*)  		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`  		;; @@ -912,10 +781,6 @@ case $basic_machine in  		basic_machine=i586-unknown  		os=-pw32  		;; -	rdos) -		basic_machine=i386-pc -		os=-rdos -		;;  	rom68k)  		basic_machine=m68k-rom68k  		os=-coff @@ -936,20 +801,6 @@ case $basic_machine in  		basic_machine=a29k-amd  		os=-udi  		;; -	sb1) -		basic_machine=mipsisa64sb1-unknown -		;; -	sb1el) -		basic_machine=mipsisa64sb1el-unknown -		;; -	sde) -		basic_machine=mipsisa32-sde -		os=-elf -		;; -	sei) -		basic_machine=mips-sei -		os=-seiux -		;;  	sequent)  		basic_machine=i386-sequent  		;; @@ -957,12 +808,6 @@ case $basic_machine in  		basic_machine=sh-hitachi  		os=-hms  		;; -	sh5el) -		basic_machine=sh5le-unknown -		;; -	sh64) -		basic_machine=sh64-unknown -		;;  	sparclite-wrs | simso-wrs)  		basic_machine=sparclite-wrs  		os=-vxworks @@ -1021,7 +866,7 @@ case $basic_machine in  	sun386 | sun386i | roadrunner)  		basic_machine=i386-sun  		;; -	sv1) +        sv1)  		basic_machine=sv1-cray  		os=-unicos  		;; @@ -1029,6 +874,10 @@ case $basic_machine in  		basic_machine=i386-sequent  		os=-dynix  		;; +	t3d) +		basic_machine=alpha-cray +		os=-unicos +		;;  	t3e)  		basic_machine=alphaev5-cray  		os=-unicos @@ -1041,18 +890,6 @@ case $basic_machine in  		basic_machine=tic54x-unknown  		os=-coff  		;; -	tic55x | c55x*) -		basic_machine=tic55x-unknown -		os=-coff -		;; -	tic6x | c6x*) -		basic_machine=tic6x-unknown -		os=-coff -		;; -	tile*) -		basic_machine=tile-unknown -		os=-linux-gnu -		;;  	tx39)  		basic_machine=mipstx39-unknown  		;; @@ -1066,10 +903,6 @@ case $basic_machine in  	tower | tower-32)  		basic_machine=m68k-ncr  		;; -	tpf) -		basic_machine=s390x-ibm -		os=-tpf -		;;  	udi29k)  		basic_machine=a29k-amd  		os=-udi @@ -1091,8 +924,8 @@ case $basic_machine in  		os=-vms  		;;  	vpp*|vx|vx-*) -		basic_machine=f301-fujitsu -		;; +               basic_machine=f301-fujitsu +               ;;  	vxworks960)  		basic_machine=i960-wrs  		os=-vxworks @@ -1113,11 +946,11 @@ case $basic_machine in  		basic_machine=hppa1.1-winbond  		os=-proelf  		;; -	xbox) -		basic_machine=i686-pc -		os=-mingw32 +	windows32) +		basic_machine=i386-pc +		os=-windows32-msvcrt  		;; -	xps | xps100) +        xps | xps100)  		basic_machine=xps100-honeywell  		;;  	ymp) @@ -1147,9 +980,6 @@ case $basic_machine in  	romp)  		basic_machine=romp-ibm  		;; -	mmix) -		basic_machine=mmix-knuth -		;;  	rs6000)  		basic_machine=rs6000-ibm  		;; @@ -1166,13 +996,16 @@ case $basic_machine in  	we32k)  		basic_machine=we32k-att  		;; -	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) +	sh3 | sh4 | sh3eb | sh4eb)  		basic_machine=sh-unknown  		;; -	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) +	sh64) +		basic_machine=sh64-unknown +		;; +	sparc | sparcv9 | sparcv9b)  		basic_machine=sparc-sun  		;; -	cydra) +        cydra)  		basic_machine=cydra-cydrome  		;;  	orion) @@ -1187,6 +1020,10 @@ case $basic_machine in  	pmac | pmac-mpw)  		basic_machine=powerpc-apple  		;; +	c4x*) +		basic_machine=c4x-none +		os=-coff +		;;  	*-unknown)  		# Make sure to match an already-canonicalized machine name.  		;; @@ -1242,23 +1079,18 @@ case $os in  	      | -aos* \  	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \  	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ -	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ -	      | -openbsd* | -solidbsd* \ -	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ -	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ +	      | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ +	      | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \  	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \  	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \  	      | -chorusos* | -chorusrdb* \  	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ -	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ -	      | -uxpv* | -beos* | -mpeix* | -udk* \ -	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ +	      | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ +	      | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \  	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \  	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \  	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ -	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ -	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ -	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) +	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* | -powermax*)  	# Remember, each alternative MUST END IN *, to match a version number.  		;;  	-qnx*) @@ -1270,21 +1102,16 @@ case $os in  			;;  		esac  		;; -	-nto-qnx*) -		;;  	-nto*) -		os=`echo $os | sed -e 's|nto|nto-qnx|'` +		os=-nto-qnx  		;;  	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ -	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ +	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* \  	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)  		;;  	-mac*)  		os=`echo $os | sed -e 's|mac|macos|'`  		;; -	-linux-dietlibc) -		os=-linux-dietlibc -		;;  	-linux*)  		os=`echo $os | sed -e 's|linux|linux-gnu|'`  		;; @@ -1297,9 +1124,6 @@ case $os in  	-opened*)  		os=-openedition  		;; -        -os400*) -		os=-os400 -		;;  	-wince*)  		os=-wince  		;; @@ -1321,9 +1145,6 @@ case $os in  	-atheos*)  		os=-atheos  		;; -	-syllable*) -		os=-syllable -		;;  	-386bsd)  		os=-bsd  		;; @@ -1334,7 +1155,7 @@ case $os in  		os=-rtmk-nova  		;;  	-ns2 ) -		os=-nextstep2 +	        os=-nextstep2  		;;  	-nsk*)  		os=-nsk @@ -1346,9 +1167,6 @@ case $os in  	-sinix*)  		os=-sysv4  		;; -        -tpf*) -		os=-tpf -		;;  	-triton*)  		os=-sysv3  		;; @@ -1376,17 +1194,8 @@ case $os in  	-xenix)  		os=-xenix  		;; -	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) -		os=-mint -		;; -	-aros*) -		os=-aros -		;; -	-kaos*) -		os=-kaos -		;; -	-zvmoe) -		os=-zvmoe +        -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) +	        os=-mint  		;;  	-none)  		;; @@ -1410,12 +1219,6 @@ else  # system, and we'll never get to this point.  case $basic_machine in -        score-*) -		os=-elf -		;; -        spu-*) -		os=-elf -		;;  	*-acorn)  		os=-riscix1.2  		;; @@ -1425,14 +1228,11 @@ case $basic_machine in  	arm*-semi)  		os=-aout  		;; -        c4x-* | tic4x-*) -        	os=-coff -		;;  	# This must come before the *-dec entry.  	pdp10-*)  		os=-tops20  		;; -	pdp11-*) +        pdp11-*)  		os=-none  		;;  	*-dec | vax-*) @@ -1453,9 +1253,6 @@ case $basic_machine in  	m68*-cisco)  		os=-aout  		;; -        mep-*) -		os=-elf -		;;  	mips*-cisco)  		os=-elf  		;; @@ -1474,15 +1271,9 @@ case $basic_machine in  	*-be)  		os=-beos  		;; -	*-haiku) -		os=-haiku -		;;  	*-ibm)  		os=-aix  		;; -    	*-knuth) -		os=-mmixware -		;;  	*-wec)  		os=-proelf  		;; @@ -1534,19 +1325,19 @@ case $basic_machine in  	*-next)  		os=-nextstep3  		;; -	*-gould) +        *-gould)  		os=-sysv  		;; -	*-highlevel) +        *-highlevel)  		os=-bsd  		;;  	*-encore)  		os=-bsd  		;; -	*-sgi) +        *-sgi)  		os=-irix  		;; -	*-siemens) +        *-siemens)  		os=-sysv4  		;;  	*-masscomp) @@ -1615,15 +1406,9 @@ case $basic_machine in  			-mvs* | -opened*)  				vendor=ibm  				;; -			-os400*) -				vendor=ibm -				;;  			-ptx*)  				vendor=sequent  				;; -			-tpf*) -				vendor=ibm -				;;  			-vxsim* | -vxworks* | -windiss*)  				vendor=wrs  				;; @@ -1648,7 +1433,7 @@ case $basic_machine in  esac  echo $basic_machine$os -exit +exit 0  # Local variables:  # eval: (add-hook 'write-file-hooks 'time-stamp) diff --git a/aux-build/depcomp b/aux-build/depcomp index 11e2d3b..df8eea7 100755 --- a/aux-build/depcomp +++ b/aux-build/depcomp @@ -1,9 +1,10 @@  #! /bin/sh  # depcomp - compile a program generating dependencies as side-effects -scriptversion=2004-05-31.23 +scriptversion=2009-04-28.21; # UTC -# Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc. +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free +# Software Foundation, Inc.  # This program is free software; you can redistribute it and/or modify  # it under the terms of the GNU General Public License as published by @@ -16,9 +17,7 @@ scriptversion=2004-05-31.23  # GNU General Public License for more details.  # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. +# along with this program.  If not, see <http://www.gnu.org/licenses/>.  # As a special exception to the GNU General Public License, if you  # distribute this file as part of a program that contains a @@ -50,11 +49,11 @@ Environment variables:  Report bugs to <bug-automake@gnu.org>.  EOF -    exit 0 +    exit $?      ;;    -v | --v*)      echo "depcomp $scriptversion" -    exit 0 +    exit $?      ;;  esac @@ -86,12 +85,34 @@ if test "$depmode" = dashXmstdout; then     depmode=dashmstdout  fi +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then +   # This is just like msvisualcpp but w/o cygpath translation. +   # Just convert the backslash-escaped backslashes to single forward +   # slashes to satisfy depend.m4 +   cygpath_u="sed s,\\\\\\\\,/,g" +   depmode=msvisualcpp +fi +  case "$depmode" in  gcc3)  ## gcc 3 implements dependency tracking that does exactly what  ## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like  ## it if -MD -MP comes after the -MF stuff.  Hmm. -  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am.  Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. +  for arg +  do +    case $arg in +    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; +    *)  set fnord "$@" "$arg" ;; +    esac +    shift # fnord +    shift # $arg +  done +  "$@"    stat=$?    if test $stat -eq 0; then :    else @@ -178,14 +199,14 @@ sgi)  ' < "$tmpdepfile" \      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \      tr ' -' ' ' >> $depfile -    echo >> $depfile +' ' ' >> "$depfile" +    echo >> "$depfile"      # The second pass generates a dummy entry for each header file.      tr ' ' '  ' < "$tmpdepfile" \     | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ -   >> $depfile +   >> "$depfile"    else      # The sourcefile does not contain any dependencies, so just      # store a dummy comment line, to avoid errors with the Makefile @@ -201,34 +222,39 @@ aix)    # current directory.  Also, the AIX compiler puts `$object:' at the    # start of each line; $object doesn't have directory information.    # Version 6 uses the directory in both cases. -  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` -  tmpdepfile="$stripped.u" +  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` +  test "x$dir" = "x$object" && dir= +  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`    if test "$libtool" = yes; then +    tmpdepfile1=$dir$base.u +    tmpdepfile2=$base.u +    tmpdepfile3=$dir.libs/$base.u      "$@" -Wc,-M    else +    tmpdepfile1=$dir$base.u +    tmpdepfile2=$dir$base.u +    tmpdepfile3=$dir$base.u      "$@" -M    fi    stat=$? -  if test -f "$tmpdepfile"; then : -  else -    stripped=`echo "$stripped" | sed 's,^.*/,,'` -    tmpdepfile="$stripped.u" -  fi -    if test $stat -eq 0; then :    else -    rm -f "$tmpdepfile" +    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"      exit $stat    fi +  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" +  do +    test -f "$tmpdepfile" && break +  done    if test -f "$tmpdepfile"; then -    outname="$stripped.o"      # Each line is of the form `foo.o: dependent.h'.      # Do two passes, one to just change these to      # `$object: dependent.h' and one to simply `dependent.h:'. -    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" -    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" +    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" +    # That's a tab and a space in the []. +    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"    else      # The sourcefile does not contain any dependencies, so just      # store a dummy comment line, to avoid errors with the Makefile @@ -276,6 +302,51 @@ icc)    rm -f "$tmpdepfile"    ;; +hp2) +  # The "hp" stanza above does not work with aCC (C++) and HP's ia64 +  # compilers, which have integrated preprocessors.  The correct option +  # to use with these is +Maked; it writes dependencies to a file named +  # 'foo.d', which lands next to the object file, wherever that +  # happens to be. +  # Much of this is similar to the tru64 case; see comments there. +  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` +  test "x$dir" = "x$object" && dir= +  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` +  if test "$libtool" = yes; then +    tmpdepfile1=$dir$base.d +    tmpdepfile2=$dir.libs/$base.d +    "$@" -Wc,+Maked +  else +    tmpdepfile1=$dir$base.d +    tmpdepfile2=$dir$base.d +    "$@" +Maked +  fi +  stat=$? +  if test $stat -eq 0; then : +  else +     rm -f "$tmpdepfile1" "$tmpdepfile2" +     exit $stat +  fi + +  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" +  do +    test -f "$tmpdepfile" && break +  done +  if test -f "$tmpdepfile"; then +    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" +    # Add `dependent.h:' lines. +    sed -ne '2,${ +	       s/^ *// +	       s/ \\*$// +	       s/$/:/ +	       p +	     }' "$tmpdepfile" >> "$depfile" +  else +    echo "#dummy" > "$depfile" +  fi +  rm -f "$tmpdepfile" "$tmpdepfile2" +  ;; +  tru64)     # The Tru64 compiler uses -MD to generate dependencies as a side     # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. @@ -287,36 +358,43 @@ tru64)     base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`     if test "$libtool" = yes; then -      # Dependencies are output in .lo.d with libtool 1.4. -      # With libtool 1.5 they are output both in $dir.libs/$base.o.d -      # and in $dir.libs/$base.o.d and $dir$base.o.d.  We process the -      # latter, because the former will be cleaned when $dir.libs is -      # erased. -      tmpdepfile1="$dir.libs/$base.lo.d" -      tmpdepfile2="$dir$base.o.d" -      tmpdepfile3="$dir.libs/$base.d" +      # With Tru64 cc, shared objects can also be used to make a +      # static library.  This mechanism is used in libtool 1.4 series to +      # handle both shared and static libraries in a single compilation. +      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. +      # +      # With libtool 1.5 this exception was removed, and libtool now +      # generates 2 separate objects for the 2 libraries.  These two +      # compilations output dependencies in $dir.libs/$base.o.d and +      # in $dir$base.o.d.  We have to check for both files, because +      # one of the two compilations can be disabled.  We should prefer +      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is +      # automatically cleaned when .libs/ is deleted, while ignoring +      # the former would cause a distcleancheck panic. +      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4 +      tmpdepfile2=$dir$base.o.d          # libtool 1.5 +      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5 +      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504        "$@" -Wc,-MD     else -      tmpdepfile1="$dir$base.o.d" -      tmpdepfile2="$dir$base.d" -      tmpdepfile3="$dir$base.d" +      tmpdepfile1=$dir$base.o.d +      tmpdepfile2=$dir$base.d +      tmpdepfile3=$dir$base.d +      tmpdepfile4=$dir$base.d        "$@" -MD     fi     stat=$?     if test $stat -eq 0; then :     else -      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" +      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"        exit $stat     fi -   if test -f "$tmpdepfile1"; then -      tmpdepfile="$tmpdepfile1" -   elif test -f "$tmpdepfile2"; then -      tmpdepfile="$tmpdepfile2" -   else -      tmpdepfile="$tmpdepfile3" -   fi +   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" +   do +     test -f "$tmpdepfile" && break +   done     if test -f "$tmpdepfile"; then        sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"        # That's a tab and a space in the []. @@ -338,7 +416,7 @@ dashmstdout)    # Remove the call to Libtool.    if test "$libtool" = yes; then -    while test $1 != '--mode=compile'; do +    while test "X$1" != 'X--mode=compile'; do        shift      done      shift @@ -389,32 +467,39 @@ makedepend)    "$@" || exit $?    # Remove any Libtool call    if test "$libtool" = yes; then -    while test $1 != '--mode=compile'; do +    while test "X$1" != 'X--mode=compile'; do        shift      done      shift    fi    # X makedepend    shift -  cleared=no -  for arg in "$@"; do +  cleared=no eat=no +  for arg +  do      case $cleared in      no)        set ""; shift        cleared=yes ;;      esac +    if test $eat = yes; then +      eat=no +      continue +    fi      case "$arg" in      -D*|-I*)        set fnord "$@" "$arg"; shift ;;      # Strip any option that makedepend may not understand.  Remove      # the object too, otherwise makedepend will parse it as a source file. +    -arch) +      eat=yes ;;      -*|$object)        ;;      *)        set fnord "$@" "$arg"; shift ;;      esac    done -  obj_suffix="`echo $object | sed 's/^.*\././'`" +  obj_suffix=`echo "$object" | sed 's/^.*\././'`    touch "$tmpdepfile"    ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"    rm -f "$depfile" @@ -434,7 +519,7 @@ cpp)    # Remove the call to Libtool.    if test "$libtool" = yes; then -    while test $1 != '--mode=compile'; do +    while test "X$1" != 'X--mode=compile'; do        shift      done      shift @@ -460,7 +545,8 @@ cpp)    done    "$@" -E | -    sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | +    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ +       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |      sed '$ s: \\$::' > "$tmpdepfile"    rm -f "$depfile"    echo "$object : \\" > "$depfile" @@ -471,13 +557,27 @@ cpp)  msvisualcpp)    # Important note: in order to support this mode, a compiler *must* -  # always write the preprocessed file to stdout, regardless of -o, -  # because we must use -o when running libtool. +  # always write the preprocessed file to stdout.    "$@" || exit $? + +  # Remove the call to Libtool. +  if test "$libtool" = yes; then +    while test "X$1" != 'X--mode=compile'; do +      shift +    done +    shift +  fi +    IFS=" "    for arg    do      case "$arg" in +    -o) +      shift +      ;; +    $object) +      shift +      ;;      "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")  	set fnord "$@"  	shift @@ -490,16 +590,23 @@ msvisualcpp)  	;;      esac    done -  "$@" -E | -  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" +  "$@" -E 2>/dev/null | +  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"    rm -f "$depfile"    echo "$object : \\" > "$depfile" -  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile" +  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"    echo "	" >> "$depfile" -  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" +  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"    rm -f "$tmpdepfile"    ;; +msvcmsys) +  # This case exists only to let depend.m4 do its work.  It works by +  # looking at the text of this script.  This case will never be run, +  # since it is checked for above. +  exit 1 +  ;; +  none)    exec "$@"    ;; @@ -518,5 +625,6 @@ exit 0  # eval: (add-hook 'write-file-hooks 'time-stamp)  # time-stamp-start: "scriptversion="  # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC"  # End: diff --git a/aux-build/install-sh b/aux-build/install-sh index 77bc381..6781b98 100755 --- a/aux-build/install-sh +++ b/aux-build/install-sh @@ -1,7 +1,7 @@  #!/bin/sh  # install - install a program, script, or datafile -scriptversion=2004-02-15.20 +scriptversion=2009-04-28.21; # UTC  # This originates from X11R5 (mit/util/scripts/install.sh), which was  # later released in X11R6 (xc/config/util/install.sh) with the @@ -39,120 +39,157 @@ scriptversion=2004-02-15.20  # when there is no Makefile.  #  # This script is compatible with the BSD install script, but was written -# from scratch.  It can only install one file at a time, a restriction -# shared with many OS's install programs. +# from scratch. + +nl=' +' +IFS=" ""	$nl"  # set DOITPROG to echo to test this script  # Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename= -transform_arg= -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd= +doit=${DOITPROG-} +if test -z "$doit"; then +  doit_exec=exec +else +  doit_exec=$doit +fi + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_glob='?' +initialize_posix_glob=' +  test "$posix_glob" != "?" || { +    if (set -f) 2>/dev/null; then +      posix_glob= +    else +      posix_glob=: +    fi +  } +' + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 +  chgrpcmd= -stripcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog  rmcmd="$rmprog -f" -mvcmd="$mvprog" +stripcmd= +  src=  dst=  dir_arg= +dst_arg= + +copy_on_change=false +no_target_directory= -usage="Usage: $0 [OPTION]... SRCFILE DSTFILE +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE     or: $0 [OPTION]... SRCFILES... DIRECTORY -   or: $0 -d DIRECTORIES... +   or: $0 [OPTION]... -t DIRECTORY SRCFILES... +   or: $0 [OPTION]... -d DIRECTORIES... -In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default. -In the second, create the directory path DIR. +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES.  Options: --b=TRANSFORMBASENAME --c         copy source (using $cpprog) instead of moving (using $mvprog). --d         create directories instead of installing files. --g GROUP   $chgrp installed files to GROUP. --m MODE    $chmod installed files to MODE. --o USER    $chown installed files to USER. --s         strip installed files (using $stripprog). --t=TRANSFORM ---help     display this help and exit. ---version  display version info and exit. +     --help     display this help and exit. +     --version  display version info and exit. + +  -c            (ignored) +  -C            install only if different (preserve the last data modification time) +  -d            create directories instead of installing files. +  -g GROUP      $chgrpprog installed files to GROUP. +  -m MODE       $chmodprog installed files to MODE. +  -o USER       $chownprog installed files to USER. +  -s            $stripprog installed files. +  -t DIRECTORY  install into DIRECTORY. +  -T            report an error if DSTFILE is a directory.  Environment variables override the default commands: -  CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG +  RMPROG STRIPPROG  " -while test -n "$1"; do +while test $# -ne 0; do    case $1 in -    -b=*) transformbasename=`echo $1 | sed 's/-b=//'` -        shift -        continue;; +    -c) ;; -    -c) instcmd=$cpprog -        shift -        continue;; +    -C) copy_on_change=true;; -    -d) dir_arg=true -        shift -        continue;; +    -d) dir_arg=true;;      -g) chgrpcmd="$chgrpprog $2" -        shift -        shift -        continue;; +	shift;; -    --help) echo "$usage"; exit 0;; +    --help) echo "$usage"; exit $?;; -    -m) chmodcmd="$chmodprog $2" -        shift -        shift -        continue;; +    -m) mode=$2 +	case $mode in +	  *' '* | *'	'* | *' +'*	  | *'*'* | *'?'* | *'['*) +	    echo "$0: invalid mode: $mode" >&2 +	    exit 1;; +	esac +	shift;;      -o) chowncmd="$chownprog $2" -        shift -        shift -        continue;; - -    -s) stripcmd=$stripprog -        shift -        continue;; - -    -t=*) transformarg=`echo $1 | sed 's/-t=//'` -        shift -        continue;; - -    --version) echo "$0 $scriptversion"; exit 0;; - -    *)  # When -d is used, all remaining arguments are directories to create. -	test -n "$dir_arg" && break -        # Otherwise, the last argument is the destination.  Remove it from $@. -	for arg -	do -          if test -n "$dstarg"; then -	    # $@ is not empty: it contains at least $arg. -	    set fnord "$@" "$dstarg" -	    shift # fnord -	  fi -	  shift # arg -	  dstarg=$arg -	done +	shift;; + +    -s) stripcmd=$stripprog;; + +    -t) dst_arg=$2 +	shift;; + +    -T) no_target_directory=true;; + +    --version) echo "$0 $scriptversion"; exit $?;; + +    --)	shift  	break;; + +    -*)	echo "$0: invalid option: $1" >&2 +	exit 1;; + +    *)  break;;    esac +  shift  done -if test -z "$1"; then +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then +  # When -d is used, all remaining arguments are directories to create. +  # When -t is used, the destination is already specified. +  # Otherwise, the last argument is the destination.  Remove it from $@. +  for arg +  do +    if test -n "$dst_arg"; then +      # $@ is not empty: it contains at least $arg. +      set fnord "$@" "$dst_arg" +      shift # fnord +    fi +    shift # arg +    dst_arg=$arg +  done +fi + +if test $# -eq 0; then    if test -z "$dir_arg"; then      echo "$0: no input file specified." >&2      exit 1 @@ -162,25 +199,48 @@ if test -z "$1"; then    exit 0  fi +if test -z "$dir_arg"; then +  trap '(exit $?); exit' 1 2 13 15 + +  # Set umask so as not to create temps with too-generous modes. +  # However, 'strip' requires both read and write access to temps. +  case $mode in +    # Optimize common cases. +    *644) cp_umask=133;; +    *755) cp_umask=22;; + +    *[0-7]) +      if test -z "$stripcmd"; then +	u_plus_rw= +      else +	u_plus_rw='% 200' +      fi +      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; +    *) +      if test -z "$stripcmd"; then +	u_plus_rw= +      else +	u_plus_rw=,u+rw +      fi +      cp_umask=$mode$u_plus_rw;; +  esac +fi +  for src  do    # Protect names starting with `-'.    case $src in -    -*) src=./$src ;; +    -*) src=./$src;;    esac    if test -n "$dir_arg"; then      dst=$src -    src= - -    if test -d "$dst"; then -      instcmd=: -      chmodcmd= -    else -      instcmd=$mkdirprog -    fi +    dstdir=$dst +    test -d "$dstdir" +    dstdir_status=$?    else -    # Waiting for this to be detected by the "$instcmd $src $dsttmp" command + +    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command      # might cause directories to be created, which would be especially bad      # if $src (and thus $dsttmp) contains '*'.      if test ! -f "$src" && test ! -d "$src"; then @@ -188,129 +248,273 @@ do        exit 1      fi -    if test -z "$dstarg"; then +    if test -z "$dst_arg"; then        echo "$0: no destination specified." >&2        exit 1      fi -    dst=$dstarg +    dst=$dst_arg      # Protect names starting with `-'.      case $dst in -      -*) dst=./$dst ;; +      -*) dst=./$dst;;      esac      # If destination is a directory, append the input filename; won't work      # if double slashes aren't ignored.      if test -d "$dst"; then -      dst=$dst/`basename "$src"` +      if test -n "$no_target_directory"; then +	echo "$0: $dst_arg: Is a directory" >&2 +	exit 1 +      fi +      dstdir=$dst +      dst=$dstdir/`basename "$src"` +      dstdir_status=0 +    else +      # Prefer dirname, but fall back on a substitute if dirname fails. +      dstdir=` +	(dirname "$dst") 2>/dev/null || +	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +	     X"$dst" : 'X\(//\)[^/]' \| \ +	     X"$dst" : 'X\(//\)$' \| \ +	     X"$dst" : 'X\(/\)' \| . 2>/dev/null || +	echo X"$dst" | +	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ +		   s//\1/ +		   q +		 } +		 /^X\(\/\/\)[^/].*/{ +		   s//\1/ +		   q +		 } +		 /^X\(\/\/\)$/{ +		   s//\1/ +		   q +		 } +		 /^X\(\/\).*/{ +		   s//\1/ +		   q +		 } +		 s/.*/./; q' +      ` + +      test -d "$dstdir" +      dstdir_status=$?      fi    fi -  # This sed command emulates the dirname command. -  dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` +  obsolete_mkdir_used=false + +  if test $dstdir_status != 0; then +    case $posix_mkdir in +      '') +	# Create intermediate dirs using mode 755 as modified by the umask. +	# This is like FreeBSD 'install' as of 1997-10-28. +	umask=`umask` +	case $stripcmd.$umask in +	  # Optimize common cases. +	  *[2367][2367]) mkdir_umask=$umask;; +	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + +	  *[0-7]) +	    mkdir_umask=`expr $umask + 22 \ +	      - $umask % 100 % 40 + $umask % 20 \ +	      - $umask % 10 % 4 + $umask % 2 +	    `;; +	  *) mkdir_umask=$umask,go-w;; +	esac + +	# With -d, create the new directory with the user-specified mode. +	# Otherwise, rely on $mkdir_umask. +	if test -n "$dir_arg"; then +	  mkdir_mode=-m$mode +	else +	  mkdir_mode= +	fi + +	posix_mkdir=false +	case $umask in +	  *[123567][0-7][0-7]) +	    # POSIX mkdir -p sets u+wx bits regardless of umask, which +	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0. +	    ;; +	  *) +	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ +	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + +	    if (umask $mkdir_umask && +		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 +	    then +	      if test -z "$dir_arg" || { +		   # Check for POSIX incompatibilities with -m. +		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or +		   # other-writeable bit of parent directory when it shouldn't. +		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. +		   ls_ld_tmpdir=`ls -ld "$tmpdir"` +		   case $ls_ld_tmpdir in +		     d????-?r-*) different_mode=700;; +		     d????-?--*) different_mode=755;; +		     *) false;; +		   esac && +		   $mkdirprog -m$different_mode -p -- "$tmpdir" && { +		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"` +		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" +		   } +		 } +	      then posix_mkdir=: +	      fi +	      rmdir "$tmpdir/d" "$tmpdir" +	    else +	      # Remove any dirs left behind by ancient mkdir implementations. +	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null +	    fi +	    trap '' 0;; +	esac;; +    esac -  # Make sure that the destination directory exists. +    if +      $posix_mkdir && ( +	umask $mkdir_umask && +	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" +      ) +    then : +    else -  # Skip lots of stat calls in the usual case. -  if test ! -d "$dstdir"; then -    defaultIFS=' -	 ' -    IFS="${IFS-$defaultIFS}" +      # The umask is ridiculous, or mkdir does not conform to POSIX, +      # or it failed possibly due to a race condition.  Create the +      # directory the slow way, step by step, checking for races as we go. -    oIFS=$IFS -    # Some sh's can't handle IFS=/ for some reason. -    IFS='%' -    set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` -    IFS=$oIFS +      case $dstdir in +	/*) prefix='/';; +	-*) prefix='./';; +	*)  prefix='';; +      esac -    pathcomp= +      eval "$initialize_posix_glob" -    while test $# -ne 0 ; do -      pathcomp=$pathcomp$1 +      oIFS=$IFS +      IFS=/ +      $posix_glob set -f +      set fnord $dstdir        shift -      if test ! -d "$pathcomp"; then -        $mkdirprog "$pathcomp" || lasterr=$? -	# mkdir can fail with a `File exist' error in case several -	# install-sh are creating the directory concurrently.  This -	# is OK. -	test ! -d "$pathcomp" && { (exit ${lasterr-1}); exit; } +      $posix_glob set +f +      IFS=$oIFS + +      prefixes= + +      for d +      do +	test -z "$d" && continue + +	prefix=$prefix$d +	if test -d "$prefix"; then +	  prefixes= +	else +	  if $posix_mkdir; then +	    (umask=$mkdir_umask && +	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break +	    # Don't fail if two instances are running concurrently. +	    test -d "$prefix" || exit 1 +	  else +	    case $prefix in +	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; +	      *) qprefix=$prefix;; +	    esac +	    prefixes="$prefixes '$qprefix'" +	  fi +	fi +	prefix=$prefix/ +      done + +      if test -n "$prefixes"; then +	# Don't fail if two instances are running concurrently. +	(umask $mkdir_umask && +	 eval "\$doit_exec \$mkdirprog $prefixes") || +	  test -d "$dstdir" || exit 1 +	obsolete_mkdir_used=true        fi -      pathcomp=$pathcomp/ -    done +    fi    fi    if test -n "$dir_arg"; then -    $doit $instcmd "$dst" \ -      && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ -      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ -      && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ -      && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } - +    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && +    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && +    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || +      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1    else -    # If we're going to rename the final executable, determine the name now. -    if test -z "$transformarg"; then -      dstfile=`basename "$dst"` -    else -      dstfile=`basename "$dst" $transformbasename \ -               | sed $transformarg`$transformbasename -    fi - -    # don't allow the sed command to completely eliminate the filename. -    test -z "$dstfile" && dstfile=`basename "$dst"`      # Make a couple of temp file names in the proper directory.      dsttmp=$dstdir/_inst.$$_      rmtmp=$dstdir/_rm.$$_      # Trap to clean up those temp files at exit. -    trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 -    trap '(exit $?); exit' 1 2 13 15 +    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 -    # Move or copy the file name to the temp name -    $doit $instcmd "$src" "$dsttmp" && +    # Copy the file name to the temp name. +    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&      # and set any options; do chmod last to preserve setuid bits.      #      # If any of these fail, we abort the whole thing.  If we want to      # ignore errors from any of these, just make sure not to ignore -    # errors from the above "$doit $instcmd $src $dsttmp" command. +    # errors from the above "$doit $cpprog $src $dsttmp" command.      # -    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ -      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ -      && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ -      && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && - -    # Now remove or move aside any old file at destination location.  We -    # try this two ways since rm can't unlink itself on some systems and -    # the destination file might be busy for other reasons.  In this case, -    # the final cleanup might fail but the new file should still install -    # successfully. -    { -      if test -f "$dstdir/$dstfile"; then -        $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ -        || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ -        || { -	  echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 -	  (exit 1); exit -        } -      else -        : -      fi -    } && - -    # Now rename the file to the real destination. -    $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" -  fi || { (exit 1); exit; } +    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && +    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && +    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && +    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + +    # If -C, don't bother to copy if it wouldn't change the file. +    if $copy_on_change && +       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` && +       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` && + +       eval "$initialize_posix_glob" && +       $posix_glob set -f && +       set X $old && old=:$2:$4:$5:$6 && +       set X $new && new=:$2:$4:$5:$6 && +       $posix_glob set +f && + +       test "$old" = "$new" && +       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 +    then +      rm -f "$dsttmp" +    else +      # Rename the file to the real destination. +      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + +      # The rename failed, perhaps because mv can't rename something else +      # to itself, or perhaps because mv is so ancient that it does not +      # support -f. +      { +	# Now remove or move aside any old file at destination location. +	# We try this two ways since rm can't unlink itself on some +	# systems and the destination file might be busy for other +	# reasons.  In this case, the final cleanup might fail but the new +	# file should still install successfully. +	{ +	  test ! -f "$dst" || +	  $doit $rmcmd -f "$dst" 2>/dev/null || +	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && +	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } +	  } || +	  { echo "$0: cannot unlink or rename $dst" >&2 +	    (exit 1); exit 1 +	  } +	} && + +	# Now rename the file to the real destination. +	$doit $mvcmd "$dsttmp" "$dst" +      } +    fi || exit 1 + +    trap '' 0 +  fi  done -# The final little trick to "correctly" pass the exit status to the exit trap. -{ -  (exit 0); exit -} -  # Local variables:  # eval: (add-hook 'write-file-hooks 'time-stamp)  # time-stamp-start: "scriptversion="  # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC"  # End: diff --git a/aux-build/ltmain.sh b/aux-build/ltmain.sh index 04eaea4..63ae69d 100755..100644 --- a/aux-build/ltmain.sh +++ b/aux-build/ltmain.sh @@ -1,10 +1,9 @@ -# Generated from ltmain.m4sh. -# libtool (GNU libtool) 2.2.10 +# libtool (GNU libtool) 2.4.2  # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996  # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, -# 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.  # This is free software; see the source for copying conditions.  There is NO  # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. @@ -42,6 +41,7 @@  #       --quiet, --silent    don't print informational messages  #       --no-quiet, --no-silent  #                            print informational messages (default) +#       --no-warn            don't display warning messages  #       --tag=TAG            use configuration variables from tag TAG  #   -v, --verbose            print more informational messages than default  #       --no-verbose         don't print the extra informational messages @@ -70,17 +70,19 @@  #         compiler:		$LTCC  #         compiler flags:		$LTCFLAGS  #         linker:		$LD (gnu? $with_gnu_ld) -#         $progname:	(GNU libtool) 2.2.10 +#         $progname:	(GNU libtool) 2.4.2  #         automake:	$automake_version  #         autoconf:	$autoconf_version  #  # Report bugs to <bug-libtool@gnu.org>. +# GNU libtool home page: <http://www.gnu.org/software/libtool/>. +# General help using GNU software: <http://www.gnu.org/gethelp/>.  PROGRAM=libtool  PACKAGE=libtool -VERSION=2.2.10 +VERSION=2.4.2  TIMESTAMP="" -package_revision=1.3175 +package_revision=1.3337  # Be Bourne compatible  if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then @@ -135,15 +137,10 @@ progpath="$0"  : ${CP="cp -f"}  test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} -: ${EGREP="grep -E"} -: ${FGREP="grep -F"} -: ${GREP="grep"} -: ${LN_S="ln -s"}  : ${MAKE="make"}  : ${MKDIR="mkdir"}  : ${MV="mv -f"}  : ${RM="rm -f"} -: ${SED="sed"}  : ${SHELL="${CONFIG_SHELL-/bin/sh}"}  : ${Xsed="$SED -e 1s/^X//"} @@ -163,6 +160,27 @@ IFS=" 	$lt_nl"  dirname="s,/[^/]*$,,"  basename="s,^.*/,," +# func_dirname file append nondir_replacement +# Compute the dirname of FILE.  If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ +    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` +    if test "X$func_dirname_result" = "X${1}"; then +      func_dirname_result="${3}" +    else +      func_dirname_result="$func_dirname_result${2}" +    fi +} # func_dirname may be replaced by extended shell implementation + + +# func_basename file +func_basename () +{ +    func_basename_result=`$ECHO "${1}" | $SED "$basename"` +} # func_basename may be replaced by extended shell implementation + +  # func_dirname_and_basename file append nondir_replacement  # perform func_basename and func_dirname in a single function  # call: @@ -177,17 +195,31 @@ basename="s,^.*/,,"  # those functions but instead duplicate the functionality here.  func_dirname_and_basename ()  { -  # Extract subdirectory from the argument. -  func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` -  if test "X$func_dirname_result" = "X${1}"; then -    func_dirname_result="${3}" -  else -    func_dirname_result="$func_dirname_result${2}" -  fi -  func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` -} +    # Extract subdirectory from the argument. +    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` +    if test "X$func_dirname_result" = "X${1}"; then +      func_dirname_result="${3}" +    else +      func_dirname_result="$func_dirname_result${2}" +    fi +    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` +} # func_dirname_and_basename may be replaced by extended shell implementation + + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ +    case ${2} in +      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; +      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; +    esac +} # func_stripname may be replaced by extended shell implementation -# Generated shell functions inserted here.  # These SED scripts presuppose an absolute path with a trailing slash.  pathcar='s,^/\([^/]*\).*$,\1,' @@ -351,7 +383,7 @@ case $progpath in       ;;    *)       save_IFS="$IFS" -     IFS=: +     IFS=${PATH_SEPARATOR-:}       for progdir in $PATH; do         IFS="$save_IFS"         test -x "$progdir/$progname" && break @@ -370,6 +402,15 @@ sed_quote_subst='s/\([`"$\\]\)/\\\1/g'  # Same as above, but do not quote variable references.  double_quote_subst='s/\(["`\\]\)/\\\1/g' +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' + +# Sed substitution that converts a w32 file name or path +# which contains forward slashes, into one that contains +# (escaped) backslashes.  A very naive implementation. +lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' +  # Re-`\' parameter expansions in output of double_quote_subst that were  # `\'-ed in input to the same.  If an odd number of `\' preceded a '$'  # in input to double_quote_subst, that '$' was protected from expansion. @@ -398,7 +439,7 @@ opt_warning=:  # name if it has been set yet.  func_echo ()  { -    $ECHO "$progname${mode+: }$mode: $*" +    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"  }  # func_verbose arg... @@ -424,14 +465,14 @@ func_echo_all ()  # Echo program name prefixed message to standard error.  func_error ()  { -    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 +    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2  }  # func_warning arg...  # Echo program name prefixed warning message to standard error.  func_warning ()  { -    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 +    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2      # bash bug again:      : @@ -650,11 +691,30 @@ func_show_eval_locale ()      fi  } +# func_tr_sh +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result.  All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ +  case $1 in +  [0-9]* | *[!a-zA-Z0-9_]*) +    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` +    ;; +  * ) +    func_tr_sh_result=$1 +    ;; +  esac +} +  # func_version  # Echo version message to standard output and exit.  func_version ()  { +    $opt_debug +      $SED -n '/(C)/!b go  	:more  	/\./!{ @@ -676,6 +736,8 @@ func_version ()  # Echo short help message to standard output and exit.  func_usage ()  { +    $opt_debug +      $SED -n '/^# Usage:/,/^#  *.*--help/ {          s/^# //  	s/^# *$// @@ -692,7 +754,10 @@ func_usage ()  # unless 'noexit' is passed as argument.  func_help ()  { +    $opt_debug +      $SED -n '/^# Usage:/,/# Report bugs to/ { +	:print          s/^# //  	s/^# *$//  	s*\$progname*'$progname'* @@ -702,10 +767,14 @@ func_help ()  	s*\$LTCFLAGS*'"$LTCFLAGS"'*  	s*\$LD*'"$LD"'*  	s/\$with_gnu_ld/'"$with_gnu_ld"'/ -	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ -	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ +	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ +	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/  	p -     }' < "$progpath" +	d +     } +     /^# .* home page:/b print +     /^# General help using/b print +     ' < "$progpath"      ret=$?      if test -z "$1"; then        exit $ret @@ -717,12 +786,39 @@ func_help ()  # exit_cmd.  func_missing_arg ()  { +    $opt_debug +      func_error "missing argument for $1."      exit_cmd=exit  } -exit_cmd=: +# func_split_short_opt shortopt +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +func_split_short_opt () +{ +    my_sed_short_opt='1s/^\(..\).*$/\1/;q' +    my_sed_short_rest='1s/^..\(.*\)$/\1/;q' + +    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` +    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` +} # func_split_short_opt may be replaced by extended shell implementation + + +# func_split_long_opt longopt +# Set func_split_long_opt_name and func_split_long_opt_arg shell +# variables after splitting LONGOPT at the `=' sign. +func_split_long_opt () +{ +    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' +    my_sed_long_arg='1s/^--[^=]*=//' + +    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` +    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` +} # func_split_long_opt may be replaced by extended shell implementation + +exit_cmd=: @@ -732,25 +828,64 @@ magic="%%%MAGIC variable%%%"  magic_exe="%%%MAGIC EXE variable%%%"  # Global variables. -# $mode is unset  nonopt= -execute_dlfiles=  preserve_args=  lo2o="s/\\.lo\$/.${objext}/"  o2lo="s/\\.${objext}\$/.lo/"  extracted_archives=  extracted_serial=0 -opt_dry_run=false -opt_duplicate_deps=false -opt_silent=false -opt_debug=: -  # If this variable is set in any of the actions, the command in it  # will be execed at the end.  This prevents here-documents from being  # left over by shells.  exec_cmd= +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ +    eval "${1}=\$${1}\${2}" +} # func_append may be replaced by extended shell implementation + +# func_append_quoted var value +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +func_append_quoted () +{ +    func_quote_for_eval "${2}" +    eval "${1}=\$${1}\\ \$func_quote_for_eval_result" +} # func_append_quoted may be replaced by extended shell implementation + + +# func_arith arithmetic-term... +func_arith () +{ +    func_arith_result=`expr "${@}"` +} # func_arith may be replaced by extended shell implementation + + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ +    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` +} # func_len may be replaced by extended shell implementation + + +# func_lo2o object +func_lo2o () +{ +    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` +} # func_lo2o may be replaced by extended shell implementation + + +# func_xform libobj-or-source +func_xform () +{ +    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` +} # func_xform may be replaced by extended shell implementation + +  # func_fatal_configuration arg...  # Echo program name prefixed message to standard error, followed by  # a configuration failure hint, and exit. @@ -840,129 +975,209 @@ func_enable_tag ()    esac  } -# Parse options once, thoroughly.  This comes as soon as possible in -# the script to make things like `libtool --version' happen quickly. +# func_check_version_match +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match ()  { +  if test "$package_revision" != "$macro_revision"; then +    if test "$VERSION" != "$macro_version"; then +      if test -z "$macro_version"; then +        cat >&2 <<_LT_EOF +$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF +      else +        cat >&2 <<_LT_EOF +$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF +      fi +    else +      cat >&2 <<_LT_EOF +$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF +    fi -  # Shorthand for --mode=foo, only valid as the first argument -  case $1 in -  clean|clea|cle|cl) -    shift; set dummy --mode clean ${1+"$@"}; shift -    ;; -  compile|compil|compi|comp|com|co|c) -    shift; set dummy --mode compile ${1+"$@"}; shift -    ;; -  execute|execut|execu|exec|exe|ex|e) -    shift; set dummy --mode execute ${1+"$@"}; shift -    ;; -  finish|finis|fini|fin|fi|f) -    shift; set dummy --mode finish ${1+"$@"}; shift -    ;; -  install|instal|insta|inst|ins|in|i) -    shift; set dummy --mode install ${1+"$@"}; shift -    ;; -  link|lin|li|l) -    shift; set dummy --mode link ${1+"$@"}; shift -    ;; -  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) -    shift; set dummy --mode uninstall ${1+"$@"}; shift -    ;; -  esac +    exit $EXIT_MISMATCH +  fi +} + + +# Shorthand for --mode=foo, only valid as the first argument +case $1 in +clean|clea|cle|cl) +  shift; set dummy --mode clean ${1+"$@"}; shift +  ;; +compile|compil|compi|comp|com|co|c) +  shift; set dummy --mode compile ${1+"$@"}; shift +  ;; +execute|execut|execu|exec|exe|ex|e) +  shift; set dummy --mode execute ${1+"$@"}; shift +  ;; +finish|finis|fini|fin|fi|f) +  shift; set dummy --mode finish ${1+"$@"}; shift +  ;; +install|instal|insta|inst|ins|in|i) +  shift; set dummy --mode install ${1+"$@"}; shift +  ;; +link|lin|li|l) +  shift; set dummy --mode link ${1+"$@"}; shift +  ;; +uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) +  shift; set dummy --mode uninstall ${1+"$@"}; shift +  ;; +esac -  # Parse non-mode specific arguments: -  while test "$#" -gt 0; do + + +# Option defaults: +opt_debug=: +opt_dry_run=false +opt_config=false +opt_preserve_dup_deps=false +opt_features=false +opt_finish=false +opt_help=false +opt_help_all=false +opt_silent=: +opt_warning=: +opt_verbose=: +opt_silent=false +opt_verbose=false + + +# Parse options once, thoroughly.  This comes as soon as possible in the +# script to make things like `--version' happen as quickly as we can. +{ +  # this just eases exit handling +  while test $# -gt 0; do      opt="$1"      shift -      case $opt in -      --config)		func_config					;; - -      --debug)		preserve_args="$preserve_args $opt" +      --debug|-x)	opt_debug='set -x'  			func_echo "enabling shell trace mode" -			opt_debug='set -x'  			$opt_debug  			;; - -      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break -			execute_dlfiles="$execute_dlfiles $1" -			shift +      --dry-run|--dryrun|-n) +			opt_dry_run=:  			;; - -      --dry-run | -n)	opt_dry_run=:					;; -      --features)       func_features					;; -      --finish)		mode="finish"					;; - -      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break -			case $1 in -			  # Valid mode arguments: -			  clean)	;; -			  compile)	;; -			  execute)	;; -			  finish)	;; -			  install)	;; -			  link)		;; -			  relink)	;; -			  uninstall)	;; - -			  # Catch anything else as an error -			  *) func_error "invalid argument for $opt" -			     exit_cmd=exit -			     break -			     ;; -		        esac - -			mode="$1" +      --config) +			opt_config=: +func_config +			;; +      --dlopen|-dlopen) +			optarg="$1" +			opt_dlopen="${opt_dlopen+$opt_dlopen +}$optarg"  			shift  			;; -        --preserve-dup-deps) -			opt_duplicate_deps=:				;; - -      --quiet|--silent)	preserve_args="$preserve_args $opt" -			opt_silent=: -			opt_verbose=false +			opt_preserve_dup_deps=:  			;; - -      --no-quiet|--no-silent) -			preserve_args="$preserve_args $opt" -			opt_silent=false +      --features) +			opt_features=: +func_features  			;; - -      --verbose| -v)	preserve_args="$preserve_args $opt" +      --finish) +			opt_finish=: +set dummy --mode finish ${1+"$@"}; shift +			;; +      --help) +			opt_help=: +			;; +      --help-all) +			opt_help_all=: +opt_help=': help-all' +			;; +      --mode) +			test $# = 0 && func_missing_arg $opt && break +			optarg="$1" +			opt_mode="$optarg" +case $optarg in +  # Valid mode arguments: +  clean|compile|execute|finish|install|link|relink|uninstall) ;; + +  # Catch anything else as an error +  *) func_error "invalid argument for $opt" +     exit_cmd=exit +     break +     ;; +esac +			shift +			;; +      --no-silent|--no-quiet)  			opt_silent=false -			opt_verbose=: +func_append preserve_args " $opt"  			;; - -      --no-verbose)	preserve_args="$preserve_args $opt" +      --no-warning|--no-warn) +			opt_warning=false +func_append preserve_args " $opt" +			;; +      --no-verbose)  			opt_verbose=false +func_append preserve_args " $opt"  			;; - -      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break -			preserve_args="$preserve_args $opt $1" -			func_enable_tag "$1"	# tagname is set here +      --silent|--quiet) +			opt_silent=: +func_append preserve_args " $opt" +        opt_verbose=false +			;; +      --verbose|-v) +			opt_verbose=: +func_append preserve_args " $opt" +opt_silent=false +			;; +      --tag) +			test $# = 0 && func_missing_arg $opt && break +			optarg="$1" +			opt_tag="$optarg" +func_append preserve_args " $opt $optarg" +func_enable_tag "$optarg"  			shift  			;; +      -\?|-h)		func_usage				;; +      --help)		func_help				;; +      --version)	func_version				;; +        # Separate optargs to long options: -      -dlopen=*|--mode=*|--tag=*) -			func_opt_split "$opt" -			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} +      --*=*) +			func_split_long_opt "$opt" +			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}  			shift  			;; -      -\?|-h)		func_usage					;; -      --help)		opt_help=:					;; -      --help-all)	opt_help=': help-all'				;; -      --version)	func_version					;; - -      -*)		func_fatal_help "unrecognized option \`$opt'"	;; - -      *)		nonopt="$opt" -			break +      # Separate non-argument short options: +      -\?*|-h*|-n*|-v*) +			func_split_short_opt "$opt" +			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} +			shift  			;; + +      --)		break					;; +      -*)		func_fatal_help "unrecognized option \`$opt'" ;; +      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;      esac    done +  # Validate options: + +  # save first non-option argument +  if test "$#" -gt 0; then +    nonopt="$opt" +    shift +  fi + +  # preserve --debug +  test "$opt_debug" = : || func_append preserve_args " --debug"    case $host in      *cygwin* | *mingw* | *pw32* | *cegcc*) @@ -970,82 +1185,44 @@ func_enable_tag ()        opt_duplicate_compiler_generated_deps=:        ;;      *) -      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps +      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps        ;;    esac -  # Having warned about all mis-specified options, bail out if -  # anything was wrong. -  $exit_cmd $EXIT_FAILURE -} +  $opt_help || { +    # Sanity checks first: +    func_check_version_match -# func_check_version_match -# Ensure that we are using m4 macros, and libtool script from the same -# release of libtool. -func_check_version_match () -{ -  if test "$package_revision" != "$macro_revision"; then -    if test "$VERSION" != "$macro_version"; then -      if test -z "$macro_version"; then -        cat >&2 <<_LT_EOF -$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from an older release. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF -      else -        cat >&2 <<_LT_EOF -$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF -      fi -    else -      cat >&2 <<_LT_EOF -$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision, -$progname: but the definition of this LT_INIT comes from revision $macro_revision. -$progname: You should recreate aclocal.m4 with macros from revision $package_revision -$progname: of $PACKAGE $VERSION and run autoconf again. -_LT_EOF +    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then +      func_fatal_configuration "not configured to build any kind of library"      fi -    exit $EXIT_MISMATCH -  fi -} - +    # Darwin sucks +    eval std_shrext=\"$shrext_cmds\" -## ----------- ## -##    Main.    ## -## ----------- ## - -$opt_help || { -  # Sanity checks first: -  func_check_version_match - -  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then -    func_fatal_configuration "not configured to build any kind of library" -  fi +    # Only execute mode is allowed to have -dlopen flags. +    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then +      func_error "unrecognized option \`-dlopen'" +      $ECHO "$help" 1>&2 +      exit $EXIT_FAILURE +    fi -  test -z "$mode" && func_fatal_error "error: you must specify a MODE." +    # Change the help message to a mode-specific one. +    generic_help="$help" +    help="Try \`$progname --help --mode=$opt_mode' for more information." +  } -  # Darwin sucks -  eval std_shrext=\"$shrext_cmds\" +  # Bail if the options were screwed +  $exit_cmd $EXIT_FAILURE +} -  # Only execute mode is allowed to have -dlopen flags. -  if test -n "$execute_dlfiles" && test "$mode" != execute; then -    func_error "unrecognized option \`-dlopen'" -    $ECHO "$help" 1>&2 -    exit $EXIT_FAILURE -  fi -  # Change the help message to a mode-specific one. -  generic_help="$help" -  help="Try \`$progname --help --mode=$mode' for more information." -} +## ----------- ## +##    Main.    ## +## ----------- ##  # func_lalib_p file  # True iff FILE is a libtool `.la' library or `.lo' object file. @@ -1110,12 +1287,9 @@ func_ltwrapper_executable_p ()  # temporary ltwrapper_script.  func_ltwrapper_scriptname ()  { -    func_ltwrapper_scriptname_result="" -    if func_ltwrapper_executable_p "$1"; then -	func_dirname_and_basename "$1" "" "." -	func_stripname '' '.exe' "$func_basename_result" -	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" -    fi +    func_dirname_and_basename "$1" "" "." +    func_stripname '' '.exe' "$func_basename_result" +    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"  }  # func_ltwrapper_p file @@ -1161,6 +1335,37 @@ func_source ()  } +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot.  Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ +  func_resolve_sysroot_result=$1 +  case $func_resolve_sysroot_result in +  =*) +    func_stripname '=' '' "$func_resolve_sysroot_result" +    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result +    ;; +  esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ +  case "$lt_sysroot:$1" in +  ?*:"$lt_sysroot"*) +    func_stripname "$lt_sysroot" '' "$1" +    func_replace_sysroot_result="=$func_stripname_result" +    ;; +  *) +    # Including no sysroot. +    func_replace_sysroot_result=$1 +    ;; +  esac +} +  # func_infer_tag arg  # Infer tagged configuration to use if any are available and  # if one wasn't chosen via the "--tag" command line option. @@ -1173,8 +1378,7 @@ func_infer_tag ()      if test -n "$available_tags" && test -z "$tagname"; then        CC_quoted=        for arg in $CC; do -        func_quote_for_eval "$arg" -	CC_quoted="$CC_quoted $func_quote_for_eval_result" +	func_append_quoted CC_quoted "$arg"        done        CC_expanded=`func_echo_all $CC`        CC_quoted_expanded=`func_echo_all $CC_quoted` @@ -1193,8 +1397,7 @@ func_infer_tag ()  	    CC_quoted=  	    for arg in $CC; do  	      # Double-quote args containing other shell metacharacters. -	      func_quote_for_eval "$arg" -	      CC_quoted="$CC_quoted $func_quote_for_eval_result" +	      func_append_quoted CC_quoted "$arg"  	    done  	    CC_expanded=`func_echo_all $CC`  	    CC_quoted_expanded=`func_echo_all $CC_quoted` @@ -1263,6 +1466,486 @@ EOF      }  } + +################################################## +# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # +################################################## + +# func_convert_core_file_wine_to_w32 ARG +# Helper function used by file name conversion functions when $build is *nix, +# and $host is mingw, cygwin, or some other w32 environment. Relies on a +# correctly configured wine environment available, with the winepath program +# in $build's $PATH. +# +# ARG is the $build file name to be converted to w32 format. +# Result is available in $func_convert_core_file_wine_to_w32_result, and will +# be empty on error (or when ARG is empty) +func_convert_core_file_wine_to_w32 () +{ +  $opt_debug +  func_convert_core_file_wine_to_w32_result="$1" +  if test -n "$1"; then +    # Unfortunately, winepath does not exit with a non-zero error code, so we +    # are forced to check the contents of stdout. On the other hand, if the +    # command is not found, the shell will set an exit code of 127 and print +    # *an error message* to stdout. So we must check for both error code of +    # zero AND non-empty stdout, which explains the odd construction: +    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` +    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then +      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | +        $SED -e "$lt_sed_naive_backslashify"` +    else +      func_convert_core_file_wine_to_w32_result= +    fi +  fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ +  $opt_debug +  # unfortunately, winepath doesn't convert paths, only file names +  func_convert_core_path_wine_to_w32_result="" +  if test -n "$1"; then +    oldIFS=$IFS +    IFS=: +    for func_convert_core_path_wine_to_w32_f in $1; do +      IFS=$oldIFS +      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" +      if test -n "$func_convert_core_file_wine_to_w32_result" ; then +        if test -z "$func_convert_core_path_wine_to_w32_result"; then +          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" +        else +          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" +        fi +      fi +    done +    IFS=$oldIFS +  fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ +  $opt_debug +  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then +    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` +    if test "$?" -ne 0; then +      # on failure, ensure result is empty +      func_cygpath_result= +    fi +  else +    func_cygpath_result= +    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" +  fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format.  Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ +  $opt_debug +  # awkward: cmd appends spaces to result +  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | +    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ +  $opt_debug +  if test -z "$2" && test -n "$1" ; then +    func_error "Could not determine host file name corresponding to" +    func_error "  \`$1'" +    func_error "Continuing, but uninstalled executables may not work." +    # Fallback: +    func_to_host_file_result="$1" +  fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ +  $opt_debug +  if test -z "$4" && test -n "$3"; then +    func_error "Could not determine the host path corresponding to" +    func_error "  \`$3'" +    func_error "Continuing, but uninstalled executables may not work." +    # Fallback.  This is a deliberately simplistic "conversion" and +    # should not be "improved".  See libtool.info. +    if test "x$1" != "x$2"; then +      lt_replace_pathsep_chars="s|$1|$2|g" +      func_to_host_path_result=`echo "$3" | +        $SED -e "$lt_replace_pathsep_chars"` +    else +      func_to_host_path_result="$3" +    fi +  fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ +  $opt_debug +  case $4 in +  $1 ) func_to_host_path_result="$3$func_to_host_path_result" +    ;; +  esac +  case $4 in +  $2 ) func_append func_to_host_path_result "$3" +    ;; +  esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via `$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ +  $opt_debug +  $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result.  If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ +  $opt_debug +  case ,$2, in +    *,"$to_tool_file_cmd",*) +      func_to_tool_file_result=$1 +      ;; +    *) +      $to_tool_file_cmd "$1" +      func_to_tool_file_result=$func_to_host_file_result +      ;; +  esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ +  func_to_host_file_result="$1" +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper.  Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ +  $opt_debug +  func_to_host_file_result="$1" +  if test -n "$1"; then +    func_convert_core_msys_to_w32 "$1" +    func_to_host_file_result="$func_convert_core_msys_to_w32_result" +  fi +  func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format.  Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ +  $opt_debug +  func_to_host_file_result="$1" +  if test -n "$1"; then +    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use +    # LT_CYGPATH in this case. +    func_to_host_file_result=`cygpath -m "$1"` +  fi +  func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format.  Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ +  $opt_debug +  func_to_host_file_result="$1" +  if test -n "$1"; then +    func_convert_core_file_wine_to_w32 "$1" +    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" +  fi +  func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ +  $opt_debug +  func_to_host_file_result="$1" +  if test -n "$1"; then +    func_convert_core_msys_to_w32 "$1" +    func_cygpath -u "$func_convert_core_msys_to_w32_result" +    func_to_host_file_result="$func_cygpath_result" +  fi +  func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ +  $opt_debug +  func_to_host_file_result="$1" +  if test -n "$1"; then +    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. +    func_convert_core_file_wine_to_w32 "$1" +    func_cygpath -u "$func_convert_core_file_wine_to_w32_result" +    func_to_host_file_result="$func_cygpath_result" +  fi +  func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via `$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format.  If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +#   file name conversion function    : func_convert_file_X_to_Y () +#   path conversion function         : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same.  If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ +  $opt_debug +  if test -z "$to_host_path_cmd"; then +    func_stripname 'func_convert_file_' '' "$to_host_file_cmd" +    to_host_path_cmd="func_convert_path_${func_stripname_result}" +  fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ +  $opt_debug +  func_init_to_host_path_cmd +  $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ +  func_to_host_path_result="$1" +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper.  Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ +  $opt_debug +  func_to_host_path_result="$1" +  if test -n "$1"; then +    # Remove leading and trailing path separator characters from ARG.  MSYS +    # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; +    # and winepath ignores them completely. +    func_stripname : : "$1" +    func_to_host_path_tmp1=$func_stripname_result +    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" +    func_to_host_path_result="$func_convert_core_msys_to_w32_result" +    func_convert_path_check : ";" \ +      "$func_to_host_path_tmp1" "$func_to_host_path_result" +    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" +  fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format.  Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ +  $opt_debug +  func_to_host_path_result="$1" +  if test -n "$1"; then +    # See func_convert_path_msys_to_w32: +    func_stripname : : "$1" +    func_to_host_path_tmp1=$func_stripname_result +    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` +    func_convert_path_check : ";" \ +      "$func_to_host_path_tmp1" "$func_to_host_path_result" +    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" +  fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format.  Requires a wine environment and +# a working winepath.  Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ +  $opt_debug +  func_to_host_path_result="$1" +  if test -n "$1"; then +    # See func_convert_path_msys_to_w32: +    func_stripname : : "$1" +    func_to_host_path_tmp1=$func_stripname_result +    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" +    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" +    func_convert_path_check : ";" \ +      "$func_to_host_path_tmp1" "$func_to_host_path_result" +    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" +  fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ +  $opt_debug +  func_to_host_path_result="$1" +  if test -n "$1"; then +    # See func_convert_path_msys_to_w32: +    func_stripname : : "$1" +    func_to_host_path_tmp1=$func_stripname_result +    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" +    func_cygpath -u -p "$func_convert_core_msys_to_w32_result" +    func_to_host_path_result="$func_cygpath_result" +    func_convert_path_check : : \ +      "$func_to_host_path_tmp1" "$func_to_host_path_result" +    func_convert_path_front_back_pathsep ":*" "*:" : "$1" +  fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ +  $opt_debug +  func_to_host_path_result="$1" +  if test -n "$1"; then +    # Remove leading and trailing path separator characters from +    # ARG. msys behavior is inconsistent here, cygpath turns them +    # into '.;' and ';.', and winepath ignores them completely. +    func_stripname : : "$1" +    func_to_host_path_tmp1=$func_stripname_result +    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" +    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" +    func_to_host_path_result="$func_cygpath_result" +    func_convert_path_check : : \ +      "$func_to_host_path_tmp1" "$func_to_host_path_result" +    func_convert_path_front_back_pathsep ":*" "*:" : "$1" +  fi +} +# end func_convert_path_nix_to_cygwin + +  # func_mode_compile arg...  func_mode_compile ()  { @@ -1303,12 +1986,12 @@ func_mode_compile ()  	  ;;  	-pie | -fpie | -fPIE) -          pie_flag="$pie_flag $arg" +          func_append pie_flag " $arg"  	  continue  	  ;;  	-shared | -static | -prefer-pic | -prefer-non-pic) -	  later="$later $arg" +	  func_append later " $arg"  	  continue  	  ;; @@ -1329,15 +2012,14 @@ func_mode_compile ()  	  save_ifs="$IFS"; IFS=','  	  for arg in $args; do  	    IFS="$save_ifs" -	    func_quote_for_eval "$arg" -	    lastarg="$lastarg $func_quote_for_eval_result" +	    func_append_quoted lastarg "$arg"  	  done  	  IFS="$save_ifs"  	  func_stripname ' ' '' "$lastarg"  	  lastarg=$func_stripname_result  	  # Add the arguments to base_compile. -	  base_compile="$base_compile $lastarg" +	  func_append base_compile " $lastarg"  	  continue  	  ;; @@ -1353,8 +2035,7 @@ func_mode_compile ()        esac    #  case $arg_mode        # Aesthetically quote the previous argument. -      func_quote_for_eval "$lastarg" -      base_compile="$base_compile $func_quote_for_eval_result" +      func_append_quoted base_compile "$lastarg"      done # for arg      case $arg_mode in @@ -1379,7 +2060,7 @@ func_mode_compile ()      *.[cCFSifmso] | \      *.ada | *.adb | *.ads | *.asm | \      *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ -    *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup) +    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)        func_xform "$libobj"        libobj=$func_xform_result        ;; @@ -1485,17 +2166,16 @@ compiler."  	$opt_dry_run || $RM $removelist  	exit $EXIT_FAILURE        fi -      removelist="$removelist $output_obj" +      func_append removelist " $output_obj"        $ECHO "$srcfile" > "$lockfile"      fi      $opt_dry_run || $RM $removelist -    removelist="$removelist $lockfile" +    func_append removelist " $lockfile"      trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 -    if test -n "$fix_srcfile_path"; then -      eval srcfile=\"$fix_srcfile_path\" -    fi +    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 +    srcfile=$func_to_tool_file_result      func_quote_for_eval "$srcfile"      qsrcfile=$func_quote_for_eval_result @@ -1515,7 +2195,7 @@ compiler."        if test -z "$output_obj"; then  	# Place PIC objects in $objdir -	command="$command -o $lobj" +	func_append command " -o $lobj"        fi        func_show_eval_locale "$command"	\ @@ -1562,11 +2242,11 @@ compiler."  	command="$base_compile $qsrcfile $pic_flag"        fi        if test "$compiler_c_o" = yes; then -	command="$command -o $obj" +	func_append command " -o $obj"        fi        # Suppress compiler output if we already did a PIC compilation. -      command="$command$suppress_output" +      func_append command "$suppress_output"        func_show_eval_locale "$command" \          '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' @@ -1611,13 +2291,13 @@ compiler."  }  $opt_help || { -  test "$mode" = compile && func_mode_compile ${1+"$@"} +  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}  }  func_mode_help ()  {      # We need to display help for each of the modes. -    case $mode in +    case $opt_mode in        "")          # Generic help is extracted from the usage comments          # at the start of this file. @@ -1793,7 +2473,7 @@ Otherwise, only FILE itself is deleted using RM."          ;;        *) -        func_fatal_help "invalid operation mode \`$mode'" +        func_fatal_help "invalid operation mode \`$opt_mode'"          ;;      esac @@ -1808,13 +2488,13 @@ if $opt_help; then    else      {        func_help noexit -      for mode in compile link execute install finish uninstall clean; do +      for opt_mode in compile link execute install finish uninstall clean; do  	func_mode_help        done      } | sed -n '1p; 2,$s/^Usage:/  or: /p'      {        func_help noexit -      for mode in compile link execute install finish uninstall clean; do +      for opt_mode in compile link execute install finish uninstall clean; do  	echo  	func_mode_help        done @@ -1843,13 +2523,16 @@ func_mode_execute ()        func_fatal_help "you must specify a COMMAND"      # Handle -dlopen flags immediately. -    for file in $execute_dlfiles; do +    for file in $opt_dlopen; do        test -f "$file" \  	|| func_fatal_help "\`$file' is not a file"        dir=        case $file in        *.la) +	func_resolve_sysroot "$file" +	file=$func_resolve_sysroot_result +  	# Check to see that this really is a libtool archive.  	func_lalib_unsafe_p "$file" \  	  || func_fatal_help "\`$lib' is not a valid libtool archive" @@ -1871,7 +2554,7 @@ func_mode_execute ()  	dir="$func_dirname_result"  	if test -f "$dir/$objdir/$dlname"; then -	  dir="$dir/$objdir" +	  func_append dir "/$objdir"  	else  	  if test ! -f "$dir/$dlname"; then  	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" @@ -1928,8 +2611,7 @@ func_mode_execute ()  	;;        esac        # Quote arguments (to preserve shell metacharacters). -      func_quote_for_eval "$file" -      args="$args $func_quote_for_eval_result" +      func_append_quoted args "$file"      done      if test "X$opt_dry_run" = Xfalse; then @@ -1961,22 +2643,59 @@ func_mode_execute ()      fi  } -test "$mode" = execute && func_mode_execute ${1+"$@"} +test "$opt_mode" = execute && func_mode_execute ${1+"$@"}  # func_mode_finish arg...  func_mode_finish ()  {      $opt_debug -    libdirs="$nonopt" +    libs= +    libdirs=      admincmds= -    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then -      for dir -      do -	libdirs="$libdirs $dir" -      done +    for opt in "$nonopt" ${1+"$@"} +    do +      if test -d "$opt"; then +	func_append libdirs " $opt" +      elif test -f "$opt"; then +	if func_lalib_unsafe_p "$opt"; then +	  func_append libs " $opt" +	else +	  func_warning "\`$opt' is not a valid libtool archive" +	fi + +      else +	func_fatal_error "invalid argument \`$opt'" +      fi +    done + +    if test -n "$libs"; then +      if test -n "$lt_sysroot"; then +        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` +        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" +      else +        sysroot_cmd= +      fi + +      # Remove sysroot references +      if $opt_dry_run; then +        for lib in $libs; do +          echo "removing references to $lt_sysroot and \`=' prefixes from $lib" +        done +      else +        tmpdir=`func_mktempdir` +        for lib in $libs; do +	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ +	    > $tmpdir/tmp-la +	  mv -f $tmpdir/tmp-la $lib +	done +        ${RM}r "$tmpdir" +      fi +    fi + +    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then        for libdir in $libdirs; do  	if test -n "$finish_cmds"; then  	  # Do each command in the finish commands. @@ -1986,7 +2705,7 @@ func_mode_finish ()  	if test -n "$finish_eval"; then  	  # Do the single finish_eval.  	  eval cmds=\"$finish_eval\" -	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds +	  $opt_dry_run || eval "$cmds" || func_append admincmds "         $cmds"  	fi        done @@ -1995,53 +2714,55 @@ func_mode_finish ()      # Exit here if they wanted silent mode.      $opt_silent && exit $EXIT_SUCCESS -    echo "----------------------------------------------------------------------" -    echo "Libraries have been installed in:" -    for libdir in $libdirs; do -      $ECHO "   $libdir" -    done -    echo -    echo "If you ever happen to want to link against installed libraries" -    echo "in a given directory, LIBDIR, you must either use libtool, and" -    echo "specify the full pathname of the library, or use the \`-LLIBDIR'" -    echo "flag during linking and do at least one of the following:" -    if test -n "$shlibpath_var"; then -      echo "   - add LIBDIR to the \`$shlibpath_var' environment variable" -      echo "     during execution" -    fi -    if test -n "$runpath_var"; then -      echo "   - add LIBDIR to the \`$runpath_var' environment variable" -      echo "     during linking" -    fi -    if test -n "$hardcode_libdir_flag_spec"; then -      libdir=LIBDIR -      eval flag=\"$hardcode_libdir_flag_spec\" +    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then +      echo "----------------------------------------------------------------------" +      echo "Libraries have been installed in:" +      for libdir in $libdirs; do +	$ECHO "   $libdir" +      done +      echo +      echo "If you ever happen to want to link against installed libraries" +      echo "in a given directory, LIBDIR, you must either use libtool, and" +      echo "specify the full pathname of the library, or use the \`-LLIBDIR'" +      echo "flag during linking and do at least one of the following:" +      if test -n "$shlibpath_var"; then +	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable" +	echo "     during execution" +      fi +      if test -n "$runpath_var"; then +	echo "   - add LIBDIR to the \`$runpath_var' environment variable" +	echo "     during linking" +      fi +      if test -n "$hardcode_libdir_flag_spec"; then +	libdir=LIBDIR +	eval flag=\"$hardcode_libdir_flag_spec\" -      $ECHO "   - use the \`$flag' linker flag" -    fi -    if test -n "$admincmds"; then -      $ECHO "   - have your system administrator run these commands:$admincmds" -    fi -    if test -f /etc/ld.so.conf; then -      echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" -    fi -    echo +	$ECHO "   - use the \`$flag' linker flag" +      fi +      if test -n "$admincmds"; then +	$ECHO "   - have your system administrator run these commands:$admincmds" +      fi +      if test -f /etc/ld.so.conf; then +	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" +      fi +      echo -    echo "See any operating system documentation about shared libraries for" -    case $host in -      solaris2.[6789]|solaris2.1[0-9]) -        echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" -	echo "pages." -	;; -      *) -        echo "more information, such as the ld(1) and ld.so(8) manual pages." -        ;; -    esac -    echo "----------------------------------------------------------------------" +      echo "See any operating system documentation about shared libraries for" +      case $host in +	solaris2.[6789]|solaris2.1[0-9]) +	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" +	  echo "pages." +	  ;; +	*) +	  echo "more information, such as the ld(1) and ld.so(8) manual pages." +	  ;; +      esac +      echo "----------------------------------------------------------------------" +    fi      exit $EXIT_SUCCESS  } -test "$mode" = finish && func_mode_finish ${1+"$@"} +test "$opt_mode" = finish && func_mode_finish ${1+"$@"}  # func_mode_install arg... @@ -2066,7 +2787,7 @@ func_mode_install ()      # The real first argument should be the name of the installation program.      # Aesthetically quote it.      func_quote_for_eval "$arg" -    install_prog="$install_prog$func_quote_for_eval_result" +    func_append install_prog "$func_quote_for_eval_result"      install_shared_prog=$install_prog      case " $install_prog " in        *[\\\ /]cp\ *) install_cp=: ;; @@ -2086,7 +2807,7 @@ func_mode_install ()      do        arg2=        if test -n "$dest"; then -	files="$files $dest" +	func_append files " $dest"  	dest=$arg  	continue        fi @@ -2124,11 +2845,11 @@ func_mode_install ()        # Aesthetically quote the argument.        func_quote_for_eval "$arg" -      install_prog="$install_prog $func_quote_for_eval_result" +      func_append install_prog " $func_quote_for_eval_result"        if test -n "$arg2"; then  	func_quote_for_eval "$arg2"        fi -      install_shared_prog="$install_shared_prog $func_quote_for_eval_result" +      func_append install_shared_prog " $func_quote_for_eval_result"      done      test -z "$install_prog" && \ @@ -2140,7 +2861,7 @@ func_mode_install ()      if test -n "$install_override_mode" && $no_mode; then        if $install_cp; then :; else  	func_quote_for_eval "$install_override_mode" -	install_shared_prog="$install_shared_prog -m $func_quote_for_eval_result" +	func_append install_shared_prog " -m $func_quote_for_eval_result"        fi      fi @@ -2198,10 +2919,13 @@ func_mode_install ()        case $file in        *.$libext)  	# Do the static libraries later. -	staticlibs="$staticlibs $file" +	func_append staticlibs " $file"  	;;        *.la) +	func_resolve_sysroot "$file" +	file=$func_resolve_sysroot_result +  	# Check to see that this really is a libtool archive.  	func_lalib_unsafe_p "$file" \  	  || func_fatal_help "\`$file' is not a valid libtool archive" @@ -2215,19 +2939,19 @@ func_mode_install ()  	if test "X$destdir" = "X$libdir"; then  	  case "$current_libdirs " in  	  *" $libdir "*) ;; -	  *) current_libdirs="$current_libdirs $libdir" ;; +	  *) func_append current_libdirs " $libdir" ;;  	  esac  	else  	  # Note the libdir as a future libdir.  	  case "$future_libdirs " in  	  *" $libdir "*) ;; -	  *) future_libdirs="$future_libdirs $libdir" ;; +	  *) func_append future_libdirs " $libdir" ;;  	  esac  	fi  	func_dirname "$file" "/" ""  	dir="$func_dirname_result" -	dir="$dir$objdir" +	func_append dir "$objdir"  	if test -n "$relink_command"; then  	  # Determine the prefix the user has applied to our future dir. @@ -2304,7 +3028,7 @@ func_mode_install ()  	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'  	# Maybe install the static library, too. -	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" +	test -n "$old_library" && func_append staticlibs " $dir/$old_library"  	;;        *.lo) @@ -2478,11 +3202,13 @@ func_mode_install ()        # Set up the ranlib parameters.        oldlib="$destdir/$name" +      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 +      tool_oldlib=$func_to_tool_file_result        func_show_eval "$install_prog \$file \$oldlib" 'exit $?'        if test -n "$stripme" && test -n "$old_striplib"; then -	func_show_eval "$old_striplib $oldlib" 'exit $?' +	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'        fi        # Do each command in the postinstall commands. @@ -2501,7 +3227,7 @@ func_mode_install ()      fi  } -test "$mode" = install && func_mode_install ${1+"$@"} +test "$opt_mode" = install && func_mode_install ${1+"$@"}  # func_generate_dlsyms outputname originator pic_p @@ -2548,6 +3274,18 @@ extern \"C\" {  #pragma GCC diagnostic ignored \"-Wstrict-prototypes\"  #endif +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime +   relocations are performed -- see ld's documentation on pseudo-relocs.  */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data.  */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif +  /* External symbol declarations for the compiler. */\  " @@ -2559,8 +3297,9 @@ extern \"C\" {  	  # Add our own program objects to the symbol list.  	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`  	  for progfile in $progfiles; do -	    func_verbose "extracting global C symbols from \`$progfile'" -	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" +	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32 +	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" +	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"  	  done  	  if test -n "$exclude_expsyms"; then @@ -2609,10 +3348,52 @@ extern \"C\" {  	  func_verbose "extracting global C symbols from \`$dlprefile'"  	  func_basename "$dlprefile"  	  name="$func_basename_result" -	  $opt_dry_run || { -	    eval '$ECHO ": $name " >> "$nlist"' -	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" -	  } +          case $host in +	    *cygwin* | *mingw* | *cegcc* ) +	      # if an import library, we need to obtain dlname +	      if func_win32_import_lib_p "$dlprefile"; then +	        func_tr_sh "$dlprefile" +	        eval "curr_lafile=\$libfile_$func_tr_sh_result" +	        dlprefile_dlbasename="" +	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then +	          # Use subshell, to avoid clobbering current variable values +	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` +	          if test -n "$dlprefile_dlname" ; then +	            func_basename "$dlprefile_dlname" +	            dlprefile_dlbasename="$func_basename_result" +	          else +	            # no lafile. user explicitly requested -dlpreopen <import library>. +	            $sharedlib_from_linklib_cmd "$dlprefile" +	            dlprefile_dlbasename=$sharedlib_from_linklib_result +	          fi +	        fi +	        $opt_dry_run || { +	          if test -n "$dlprefile_dlbasename" ; then +	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' +	          else +	            func_warning "Could not compute DLL name from $name" +	            eval '$ECHO ": $name " >> "$nlist"' +	          fi +	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 +	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | +	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" +	        } +	      else # not an import lib +	        $opt_dry_run || { +	          eval '$ECHO ": $name " >> "$nlist"' +	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 +	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" +	        } +	      fi +	    ;; +	    *) +	      $opt_dry_run || { +	        eval '$ECHO ": $name " >> "$nlist"' +	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 +	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" +	      } +	    ;; +          esac  	done  	$opt_dry_run || { @@ -2650,26 +3431,9 @@ typedef struct {    const char *name;    void *address;  } lt_dlsymlist; -" -	  case $host in -	  *cygwin* | *mingw* | *cegcc* ) -	    echo >> "$output_objdir/$my_dlsyms" "\ -/* DATA imports from DLLs on WIN32 con't be const, because -   runtime relocations are performed -- see ld's documentation -   on pseudo-relocs.  */" -	    lt_dlsym_const= ;; -	  *osf5*) -	    echo >> "$output_objdir/$my_dlsyms" "\ -/* This system does not cope well with relocations in const data */" -	    lt_dlsym_const= ;; -	  *) -	    lt_dlsym_const=const ;; -	  esac - -	  echo >> "$output_objdir/$my_dlsyms" "\ -extern $lt_dlsym_const lt_dlsymlist +extern LT_DLSYM_CONST lt_dlsymlist  lt_${my_prefix}_LTX_preloaded_symbols[]; -$lt_dlsym_const lt_dlsymlist +LT_DLSYM_CONST lt_dlsymlist  lt_${my_prefix}_LTX_preloaded_symbols[] =  {\    { \"$my_originator\", (void *) 0 }," @@ -2709,7 +3473,7 @@ static const void *lt_preloaded_setup() {  	  # linked before any other PIC object.  But we must not use  	  # pic_flag when linking with -static.  The problem exists in  	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. -	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) +	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)  	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;  	  *-*-hpux*)  	    pic_flag_for_symtable=" $pic_flag"  ;; @@ -2725,7 +3489,7 @@ static const void *lt_preloaded_setup() {  	for arg in $LTCFLAGS; do  	  case $arg in  	  -pie | -fpie | -fPIE) ;; -	  *) symtab_cflags="$symtab_cflags $arg" ;; +	  *) func_append symtab_cflags " $arg" ;;  	  esac  	done @@ -2788,7 +3552,8 @@ func_win32_libid ()      # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.      if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |         $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then -      win32_nmres=`eval $NM -f posix -A $1 | +      func_to_tool_file "$1" func_convert_file_msys_to_w32 +      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |  	$SED -n -e '  	    1,100{  		/ I /{ @@ -2817,6 +3582,131 @@ func_win32_libid ()    $ECHO "$win32_libid_type"  } +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +#    $sharedlib_from_linklib_cmd +# Result is available in the variable +#    $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ +  $opt_debug +  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ +  $opt_debug +  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` +  $OBJDUMP -s --section "$1" "$2" 2>/dev/null | +    $SED '/^Contents of section '"$match_literal"':/{ +      # Place marker at beginning of archive member dllname section +      s/.*/====MARK====/ +      p +      d +    } +    # These lines can sometimes be longer than 43 characters, but +    # are always uninteresting +    /:[	 ]*file format pe[i]\{,1\}-/d +    /^In archive [^:]*:/d +    # Ensure marker is printed +    /^====MARK====/p +    # Remove all lines with less than 43 characters +    /^.\{43\}/!d +    # From remaining lines, remove first 43 characters +    s/^.\{43\}//' | +    $SED -n ' +      # Join marker and all lines until next marker into a single line +      /^====MARK====/ b para +      H +      $ b para +      b +      :para +      x +      s/\n//g +      # Remove the marker +      s/^====MARK====// +      # Remove trailing dots and whitespace +      s/[\. \t]*$// +      # Print +      /./p' | +    # we now have a list, one entry per line, of the stringified +    # contents of the appropriate section of all members of the +    # archive which possess that section. Heuristic: eliminate +    # all those which have a first or second character that is +    # a '.' (that is, objdump's representation of an unprintable +    # character.) This should work for all archives with less than +    # 0x302f exports -- but will fail for DLLs whose name actually +    # begins with a literal '.' or a single character followed by +    # a '.'. +    # +    # Of those that remain, print the first one. +    $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ +  $opt_debug +  func_to_tool_file "$1" func_convert_file_msys_to_w32 +  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` +  test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ +  $opt_debug +  func_to_tool_file "$1" func_convert_file_msys_to_w32 +  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` +  test -n "$func_cygming_ms_implib_tmp" +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +#    $sharedlib_from_linklib_cmd +# Result is available in the variable +#    $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ +  $opt_debug +  if func_cygming_gnu_implib_p "$1" ; then +    # binutils import library +    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` +  elif func_cygming_ms_implib_p "$1" ; then +    # ms-generated import library +    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` +  else +    # unknown +    sharedlib_from_linklib_result="" +  fi +}  # func_extract_an_archive dir oldlib @@ -3095,14 +3985,17 @@ func_exec_program_core ()  # launches target application with the remaining arguments.  func_exec_program ()  { -  for lt_wr_arg -  do -    case \$lt_wr_arg in -    --lt-*) ;; -    *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; -    esac -    shift -  done +  case \" \$* \" in +  *\\ --lt-*) +    for lt_wr_arg +    do +      case \$lt_wr_arg in +      --lt-*) ;; +      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; +      esac +      shift +    done ;; +  esac    func_exec_program_core \${1+\"\$@\"}  } @@ -3195,6 +4088,18 @@ func_exec_program ()    if test -f \"\$progdir/\$program\"; then" +	# fixup the dll searchpath if we need to. +	# +	# Fix the DLL searchpath if we need to.  Do this before prepending +	# to shlibpath, because on Windows, both are PATH and uninstalled +	# libraries must come first. +	if test -n "$dllsearchpath"; then +	  $ECHO "\ +    # Add the dll search path components to the executable PATH +    PATH=$dllsearchpath:\$PATH +" +	fi +  	# Export our shlibpath_var if we have one.  	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then  	  $ECHO "\ @@ -3209,14 +4114,6 @@ func_exec_program ()  "  	fi -	# fixup the dll searchpath if we need to. -	if test -n "$dllsearchpath"; then -	  $ECHO "\ -    # Add the dll search path components to the executable PATH -    PATH=$dllsearchpath:\$PATH -" -	fi -  	$ECHO "\      if test \"\$libtool_execute_magic\" != \"$magic\"; then        # Run the actual program with our arguments. @@ -3234,166 +4131,6 @@ fi\  } -# func_to_host_path arg -# -# Convert paths to host format when used with build tools. -# Intended for use with "native" mingw (where libtool itself -# is running under the msys shell), or in the following cross- -# build environments: -#    $build          $host -#    mingw (msys)    mingw  [e.g. native] -#    cygwin          mingw -#    *nix + wine     mingw -# where wine is equipped with the `winepath' executable. -# In the native mingw case, the (msys) shell automatically -# converts paths for any non-msys applications it launches, -# but that facility isn't available from inside the cwrapper. -# Similar accommodations are necessary for $host mingw and -# $build cygwin.  Calling this function does no harm for other -# $host/$build combinations not listed above. -# -# ARG is the path (on $build) that should be converted to -# the proper representation for $host. The result is stored -# in $func_to_host_path_result. -func_to_host_path () -{ -  func_to_host_path_result="$1" -  if test -n "$1"; then -    case $host in -      *mingw* ) -        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' -        case $build in -          *mingw* ) # actually, msys -            # awkward: cmd appends spaces to result -            func_to_host_path_result=`( cmd //c echo "$1" ) 2>/dev/null | -              $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` -            ;; -          *cygwin* ) -            func_to_host_path_result=`cygpath -w "$1" | -	      $SED -e "$lt_sed_naive_backslashify"` -            ;; -          * ) -            # Unfortunately, winepath does not exit with a non-zero -            # error code, so we are forced to check the contents of -            # stdout. On the other hand, if the command is not -            # found, the shell will set an exit code of 127 and print -            # *an error message* to stdout. So we must check for both -            # error code of zero AND non-empty stdout, which explains -            # the odd construction: -            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` -            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then -              func_to_host_path_result=`$ECHO "$func_to_host_path_tmp1" | -                $SED -e "$lt_sed_naive_backslashify"` -            else -              # Allow warning below. -              func_to_host_path_result= -            fi -            ;; -        esac -        if test -z "$func_to_host_path_result" ; then -          func_error "Could not determine host path corresponding to" -          func_error "  \`$1'" -          func_error "Continuing, but uninstalled executables may not work." -          # Fallback: -          func_to_host_path_result="$1" -        fi -        ;; -    esac -  fi -} -# end: func_to_host_path - -# func_to_host_pathlist arg -# -# Convert pathlists to host format when used with build tools. -# See func_to_host_path(), above. This function supports the -# following $build/$host combinations (but does no harm for -# combinations not listed here): -#    $build          $host -#    mingw (msys)    mingw  [e.g. native] -#    cygwin          mingw -#    *nix + wine     mingw -# -# Path separators are also converted from $build format to -# $host format. If ARG begins or ends with a path separator -# character, it is preserved (but converted to $host format) -# on output. -# -# ARG is a pathlist (on $build) that should be converted to -# the proper representation on $host. The result is stored -# in $func_to_host_pathlist_result. -func_to_host_pathlist () -{ -  func_to_host_pathlist_result="$1" -  if test -n "$1"; then -    case $host in -      *mingw* ) -        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' -        # Remove leading and trailing path separator characters from -        # ARG. msys behavior is inconsistent here, cygpath turns them -        # into '.;' and ';.', and winepath ignores them completely. -	func_stripname : : "$1" -        func_to_host_pathlist_tmp1=$func_stripname_result -        case $build in -          *mingw* ) # Actually, msys. -            # Awkward: cmd appends spaces to result. -            func_to_host_pathlist_result=` -	      ( cmd //c echo "$func_to_host_pathlist_tmp1" ) 2>/dev/null | -	      $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` -            ;; -          *cygwin* ) -            func_to_host_pathlist_result=`cygpath -w -p "$func_to_host_pathlist_tmp1" | -              $SED -e "$lt_sed_naive_backslashify"` -            ;; -          * ) -            # unfortunately, winepath doesn't convert pathlists -            func_to_host_pathlist_result="" -            func_to_host_pathlist_oldIFS=$IFS -            IFS=: -            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do -              IFS=$func_to_host_pathlist_oldIFS -              if test -n "$func_to_host_pathlist_f" ; then -                func_to_host_path "$func_to_host_pathlist_f" -                if test -n "$func_to_host_path_result" ; then -                  if test -z "$func_to_host_pathlist_result" ; then -                    func_to_host_pathlist_result="$func_to_host_path_result" -                  else -                    func_append func_to_host_pathlist_result ";$func_to_host_path_result" -                  fi -                fi -              fi -            done -            IFS=$func_to_host_pathlist_oldIFS -            ;; -        esac -        if test -z "$func_to_host_pathlist_result"; then -          func_error "Could not determine the host path(s) corresponding to" -          func_error "  \`$1'" -          func_error "Continuing, but uninstalled executables may not work." -          # Fallback. This may break if $1 contains DOS-style drive -          # specifications. The fix is not to complicate the expression -          # below, but for the user to provide a working wine installation -          # with winepath so that path translation in the cross-to-mingw -          # case works properly. -          lt_replace_pathsep_nix_to_dos="s|:|;|g" -          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ -            $SED -e "$lt_replace_pathsep_nix_to_dos"` -        fi -        # Now, add the leading and trailing path separators back -        case "$1" in -          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" -            ;; -        esac -        case "$1" in -          *: ) func_append func_to_host_pathlist_result ";" -            ;; -        esac -        ;; -    esac -  fi -} -# end: func_to_host_pathlist -  # func_emit_cwrapperexe_src  # emit the source code for a wrapper executable on stdout  # Must ONLY be called from within func_mode_link because @@ -3563,14 +4300,14 @@ void lt_dump_script (FILE *f);  EOF  	    cat <<EOF -const char * MAGIC_EXE = "$magic_exe"; +volatile const char * MAGIC_EXE = "$magic_exe";  const char * LIB_PATH_VARNAME = "$shlibpath_var";  EOF  	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then -              func_to_host_pathlist "$temp_rpath" +              func_to_host_path "$temp_rpath"  	      cat <<EOF -const char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result"; +const char * LIB_PATH_VALUE   = "$func_to_host_path_result";  EOF  	    else  	      cat <<"EOF" @@ -3579,10 +4316,10 @@ EOF  	    fi  	    if test -n "$dllsearchpath"; then -              func_to_host_pathlist "$dllsearchpath:" +              func_to_host_path "$dllsearchpath:"  	      cat <<EOF  const char * EXE_PATH_VARNAME = "PATH"; -const char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result"; +const char * EXE_PATH_VALUE   = "$func_to_host_path_result";  EOF  	    else  	      cat <<"EOF" @@ -3765,8 +4502,12 @@ EOF    lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */    lt_setenv ("DUALCASE", "1");  /* for MSK sh */ -  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); +  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must +     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) +     because on Windows, both *_VARNAMEs are PATH but uninstalled +     libraries must come first. */    lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); +  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);    lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",  		  nonnull (lt_argv_zero)); @@ -4322,9 +5063,15 @@ void lt_dump_script (FILE* f)  {  EOF  	    func_emit_wrapper yes | -              $SED -e 's/\([\\"]\)/\\\1/g' \ -	           -e 's/^/  fputs ("/' -e 's/$/\\n", f);/' - +	      $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/  fputs ("\1", f);/p +g +D'              cat <<"EOF"  }  EOF @@ -4515,9 +5262,9 @@ func_mode_link ()  	    ;;  	  *)  	    if test "$prev" = dlfiles; then -	      dlfiles="$dlfiles $arg" +	      func_append dlfiles " $arg"  	    else -	      dlprefiles="$dlprefiles $arg" +	      func_append dlprefiles " $arg"  	    fi  	    prev=  	    continue @@ -4541,7 +5288,7 @@ func_mode_link ()  	    *-*-darwin*)  	      case "$deplibs " in  		*" $qarg.ltframework "*) ;; -		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later +		*) func_append deplibs " $qarg.ltframework" # this is fixed later  		   ;;  	      esac  	      ;; @@ -4560,7 +5307,7 @@ func_mode_link ()  	    moreargs=  	    for fil in `cat "$save_arg"`  	    do -#	      moreargs="$moreargs $fil" +#	      func_append moreargs " $fil"  	      arg=$fil  	      # A libtool-controlled object. @@ -4589,7 +5336,7 @@ func_mode_link ()  		  if test "$prev" = dlfiles; then  		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then -		      dlfiles="$dlfiles $pic_object" +		      func_append dlfiles " $pic_object"  		      prev=  		      continue  		    else @@ -4601,7 +5348,7 @@ func_mode_link ()  		  # CHECK ME:  I think I busted this.  -Ossama  		  if test "$prev" = dlprefiles; then  		    # Preload the old-style object. -		    dlprefiles="$dlprefiles $pic_object" +		    func_append dlprefiles " $pic_object"  		    prev=  		  fi @@ -4671,12 +5418,12 @@ func_mode_link ()  	  if test "$prev" = rpath; then  	    case "$rpath " in  	    *" $arg "*) ;; -	    *) rpath="$rpath $arg" ;; +	    *) func_append rpath " $arg" ;;  	    esac  	  else  	    case "$xrpath " in  	    *" $arg "*) ;; -	    *) xrpath="$xrpath $arg" ;; +	    *) func_append xrpath " $arg" ;;  	    esac  	  fi  	  prev= @@ -4688,28 +5435,28 @@ func_mode_link ()  	  continue  	  ;;  	weak) -	  weak_libs="$weak_libs $arg" +	  func_append weak_libs " $arg"  	  prev=  	  continue  	  ;;  	xcclinker) -	  linker_flags="$linker_flags $qarg" -	  compiler_flags="$compiler_flags $qarg" +	  func_append linker_flags " $qarg" +	  func_append compiler_flags " $qarg"  	  prev=  	  func_append compile_command " $qarg"  	  func_append finalize_command " $qarg"  	  continue  	  ;;  	xcompiler) -	  compiler_flags="$compiler_flags $qarg" +	  func_append compiler_flags " $qarg"  	  prev=  	  func_append compile_command " $qarg"  	  func_append finalize_command " $qarg"  	  continue  	  ;;  	xlinker) -	  linker_flags="$linker_flags $qarg" -	  compiler_flags="$compiler_flags $wl$qarg" +	  func_append linker_flags " $qarg" +	  func_append compiler_flags " $wl$qarg"  	  prev=  	  func_append compile_command " $wl$qarg"  	  func_append finalize_command " $wl$qarg" @@ -4800,15 +5547,16 @@ func_mode_link ()  	;;        -L*) -	func_stripname '-L' '' "$arg" -	dir=$func_stripname_result -	if test -z "$dir"; then +	func_stripname "-L" '' "$arg" +	if test -z "$func_stripname_result"; then  	  if test "$#" -gt 0; then  	    func_fatal_error "require no space between \`-L' and \`$1'"  	  else  	    func_fatal_error "need path for \`-L' option"  	  fi  	fi +	func_resolve_sysroot "$func_stripname_result" +	dir=$func_resolve_sysroot_result  	# We need an absolute path.  	case $dir in  	[\\/]* | [A-Za-z]:[\\/]*) ;; @@ -4820,10 +5568,16 @@ func_mode_link ()  	  ;;  	esac  	case "$deplibs " in -	*" -L$dir "*) ;; +	*" -L$dir "* | *" $arg "*) +	  # Will only happen for absolute or sysroot arguments +	  ;;  	*) -	  deplibs="$deplibs -L$dir" -	  lib_search_path="$lib_search_path $dir" +	  # Preserve sysroot, but never include relative directories +	  case $dir in +	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; +	    *) func_append deplibs " -L$dir" ;; +	  esac +	  func_append lib_search_path " $dir"  	  ;;  	esac  	case $host in @@ -4832,12 +5586,12 @@ func_mode_link ()  	  case :$dllsearchpath: in  	  *":$dir:"*) ;;  	  ::) dllsearchpath=$dir;; -	  *) dllsearchpath="$dllsearchpath:$dir";; +	  *) func_append dllsearchpath ":$dir";;  	  esac  	  case :$dllsearchpath: in  	  *":$testbindir:"*) ;;  	  ::) dllsearchpath=$testbindir;; -	  *) dllsearchpath="$dllsearchpath:$testbindir";; +	  *) func_append dllsearchpath ":$testbindir";;  	  esac  	  ;;  	esac @@ -4861,7 +5615,7 @@ func_mode_link ()  	    ;;  	  *-*-rhapsody* | *-*-darwin1.[012])  	    # Rhapsody C and math libraries are in the System framework -	    deplibs="$deplibs System.ltframework" +	    func_append deplibs " System.ltframework"  	    continue  	    ;;  	  *-*-sco3.2v5* | *-*-sco5v6*) @@ -4881,7 +5635,7 @@ func_mode_link ()  	   ;;  	 esac  	fi -	deplibs="$deplibs $arg" +	func_append deplibs " $arg"  	continue  	;; @@ -4893,21 +5647,22 @@ func_mode_link ()        # Tru64 UNIX uses -model [arg] to determine the layout of C++        # classes, name mangling, and exception handling.        # Darwin uses the -arch flag to determine output architecture. -      -model|-arch|-isysroot) -	compiler_flags="$compiler_flags $arg" +      -model|-arch|-isysroot|--sysroot) +	func_append compiler_flags " $arg"  	func_append compile_command " $arg"  	func_append finalize_command " $arg"  	prev=xcompiler  	continue  	;; -      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) -	compiler_flags="$compiler_flags $arg" +      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ +      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) +	func_append compiler_flags " $arg"  	func_append compile_command " $arg"  	func_append finalize_command " $arg"  	case "$new_inherited_linker_flags " in  	    *" $arg "*) ;; -	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; +	    * ) func_append new_inherited_linker_flags " $arg" ;;  	esac  	continue  	;; @@ -4974,13 +5729,17 @@ func_mode_link ()  	# We need an absolute path.  	case $dir in  	[\\/]* | [A-Za-z]:[\\/]*) ;; +	=*) +	  func_stripname '=' '' "$dir" +	  dir=$lt_sysroot$func_stripname_result +	  ;;  	*)  	  func_fatal_error "only absolute run-paths are allowed"  	  ;;  	esac  	case "$xrpath " in  	*" $dir "*) ;; -	*) xrpath="$xrpath $dir" ;; +	*) func_append xrpath " $dir" ;;  	esac  	continue  	;; @@ -5033,8 +5792,8 @@ func_mode_link ()  	for flag in $args; do  	  IFS="$save_ifs"            func_quote_for_eval "$flag" -	  arg="$arg $func_quote_for_eval_result" -	  compiler_flags="$compiler_flags $func_quote_for_eval_result" +	  func_append arg " $func_quote_for_eval_result" +	  func_append compiler_flags " $func_quote_for_eval_result"  	done  	IFS="$save_ifs"  	func_stripname ' ' '' "$arg" @@ -5049,9 +5808,9 @@ func_mode_link ()  	for flag in $args; do  	  IFS="$save_ifs"            func_quote_for_eval "$flag" -	  arg="$arg $wl$func_quote_for_eval_result" -	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" -	  linker_flags="$linker_flags $func_quote_for_eval_result" +	  func_append arg " $wl$func_quote_for_eval_result" +	  func_append compiler_flags " $wl$func_quote_for_eval_result" +	  func_append linker_flags " $func_quote_for_eval_result"  	done  	IFS="$save_ifs"  	func_stripname ' ' '' "$arg" @@ -5090,13 +5849,16 @@ func_mode_link ()        # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC        # @file                GCC response files        # -tp=*                Portland pgcc target processor selection +      # --sysroot=*          for sysroot support +      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization        -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*) +      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ +      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)          func_quote_for_eval "$arg"  	arg="$func_quote_for_eval_result"          func_append compile_command " $arg"          func_append finalize_command " $arg" -        compiler_flags="$compiler_flags $arg" +        func_append compiler_flags " $arg"          continue          ;; @@ -5108,7 +5870,7 @@ func_mode_link ()        *.$objext)  	# A standard object. -	objs="$objs $arg" +	func_append objs " $arg"  	;;        *.lo) @@ -5139,7 +5901,7 @@ func_mode_link ()  	    if test "$prev" = dlfiles; then  	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then -		dlfiles="$dlfiles $pic_object" +		func_append dlfiles " $pic_object"  		prev=  		continue  	      else @@ -5151,7 +5913,7 @@ func_mode_link ()  	    # CHECK ME:  I think I busted this.  -Ossama  	    if test "$prev" = dlprefiles; then  	      # Preload the old-style object. -	      dlprefiles="$dlprefiles $pic_object" +	      func_append dlprefiles " $pic_object"  	      prev=  	    fi @@ -5196,24 +5958,25 @@ func_mode_link ()        *.$libext)  	# An archive. -	deplibs="$deplibs $arg" -	old_deplibs="$old_deplibs $arg" +	func_append deplibs " $arg" +	func_append old_deplibs " $arg"  	continue  	;;        *.la)  	# A libtool-controlled library. +	func_resolve_sysroot "$arg"  	if test "$prev" = dlfiles; then  	  # This library was specified with -dlopen. -	  dlfiles="$dlfiles $arg" +	  func_append dlfiles " $func_resolve_sysroot_result"  	  prev=  	elif test "$prev" = dlprefiles; then  	  # The library was specified with -dlpreopen. -	  dlprefiles="$dlprefiles $arg" +	  func_append dlprefiles " $func_resolve_sysroot_result"  	  prev=  	else -	  deplibs="$deplibs $arg" +	  func_append deplibs " $func_resolve_sysroot_result"  	fi  	continue  	;; @@ -5260,6 +6023,8 @@ func_mode_link ()      func_dirname "$output" "/" ""      output_objdir="$func_dirname_result$objdir" +    func_to_tool_file "$output_objdir/" +    tool_output_objdir=$func_to_tool_file_result      # Create the object directory.      func_mkdir_p "$output_objdir" @@ -5280,12 +6045,12 @@ func_mode_link ()      # Find all interdependent deplibs by searching for libraries      # that are linked more than once (e.g. -la -lb -la)      for deplib in $deplibs; do -      if $opt_duplicate_deps ; then +      if $opt_preserve_dup_deps ; then  	case "$libs " in -	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; +	*" $deplib "*) func_append specialdeplibs " $deplib" ;;  	esac        fi -      libs="$libs $deplib" +      func_append libs " $deplib"      done      if test "$linkmode" = lib; then @@ -5298,9 +6063,9 @@ func_mode_link ()        if $opt_duplicate_compiler_generated_deps; then  	for pre_post_dep in $predeps $postdeps; do  	  case "$pre_post_deps " in -	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; +	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;  	  esac -	  pre_post_deps="$pre_post_deps $pre_post_dep" +	  func_append pre_post_deps " $pre_post_dep"  	done        fi        pre_post_deps= @@ -5367,8 +6132,9 @@ func_mode_link ()  	for lib in $dlprefiles; do  	  # Ignore non-libtool-libs  	  dependency_libs= +	  func_resolve_sysroot "$lib"  	  case $lib in -	  *.la)	func_source "$lib" ;; +	  *.la)	func_source "$func_resolve_sysroot_result" ;;  	  esac  	  # Collect preopened libtool deplibs, except any this library @@ -5378,7 +6144,7 @@ func_mode_link ()              deplib_base=$func_basename_result  	    case " $weak_libs " in  	    *" $deplib_base "*) ;; -	    *) deplibs="$deplibs $deplib" ;; +	    *) func_append deplibs " $deplib" ;;  	    esac  	  done  	done @@ -5394,16 +6160,17 @@ func_mode_link ()  	lib=  	found=no  	case $deplib in -	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) +	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ +        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)  	  if test "$linkmode,$pass" = "prog,link"; then  	    compile_deplibs="$deplib $compile_deplibs"  	    finalize_deplibs="$deplib $finalize_deplibs"  	  else -	    compiler_flags="$compiler_flags $deplib" +	    func_append compiler_flags " $deplib"  	    if test "$linkmode" = lib ; then  		case "$new_inherited_linker_flags " in  		    *" $deplib "*) ;; -		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; +		    * ) func_append new_inherited_linker_flags " $deplib" ;;  		esac  	    fi  	  fi @@ -5488,7 +6255,7 @@ func_mode_link ()  	    if test "$linkmode" = lib ; then  		case "$new_inherited_linker_flags " in  		    *" $deplib "*) ;; -		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; +		    * ) func_append new_inherited_linker_flags " $deplib" ;;  		esac  	    fi  	  fi @@ -5501,7 +6268,8 @@ func_mode_link ()  	    test "$pass" = conv && continue  	    newdependency_libs="$deplib $newdependency_libs"  	    func_stripname '-L' '' "$deplib" -	    newlib_search_path="$newlib_search_path $func_stripname_result" +	    func_resolve_sysroot "$func_stripname_result" +	    func_append newlib_search_path " $func_resolve_sysroot_result"  	    ;;  	  prog)  	    if test "$pass" = conv; then @@ -5515,7 +6283,8 @@ func_mode_link ()  	      finalize_deplibs="$deplib $finalize_deplibs"  	    fi  	    func_stripname '-L' '' "$deplib" -	    newlib_search_path="$newlib_search_path $func_stripname_result" +	    func_resolve_sysroot "$func_stripname_result" +	    func_append newlib_search_path " $func_resolve_sysroot_result"  	    ;;  	  *)  	    func_warning "\`-L' is ignored for archives/objects" @@ -5526,17 +6295,21 @@ func_mode_link ()  	-R*)  	  if test "$pass" = link; then  	    func_stripname '-R' '' "$deplib" -	    dir=$func_stripname_result +	    func_resolve_sysroot "$func_stripname_result" +	    dir=$func_resolve_sysroot_result  	    # Make sure the xrpath contains only unique directories.  	    case "$xrpath " in  	    *" $dir "*) ;; -	    *) xrpath="$xrpath $dir" ;; +	    *) func_append xrpath " $dir" ;;  	    esac  	  fi  	  deplibs="$deplib $deplibs"  	  continue  	  ;; -	*.la) lib="$deplib" ;; +	*.la) +	  func_resolve_sysroot "$deplib" +	  lib=$func_resolve_sysroot_result +	  ;;  	*.$libext)  	  if test "$pass" = conv; then  	    deplibs="$deplib $deplibs" @@ -5599,11 +6372,11 @@ func_mode_link ()  	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then  	      # If there is no dlopen support or we're linking statically,  	      # we need to preload. -	      newdlprefiles="$newdlprefiles $deplib" +	      func_append newdlprefiles " $deplib"  	      compile_deplibs="$deplib $compile_deplibs"  	      finalize_deplibs="$deplib $finalize_deplibs"  	    else -	      newdlfiles="$newdlfiles $deplib" +	      func_append newdlfiles " $deplib"  	    fi  	  fi  	  continue @@ -5649,7 +6422,7 @@ func_mode_link ()  	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do  	    case " $new_inherited_linker_flags " in  	      *" $tmp_inherited_linker_flag "*) ;; -	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; +	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;  	    esac  	  done  	fi @@ -5657,8 +6430,8 @@ func_mode_link ()  	if test "$linkmode,$pass" = "lib,link" ||  	   test "$linkmode,$pass" = "prog,scan" ||  	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then -	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen" -	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" +	  test -n "$dlopen" && func_append dlfiles " $dlopen" +	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"  	fi  	if test "$pass" = conv; then @@ -5669,20 +6442,20 @@ func_mode_link ()  	      func_fatal_error "cannot find name of link library for \`$lib'"  	    fi  	    # It is a libtool convenience library, so add in its objects. -	    convenience="$convenience $ladir/$objdir/$old_library" -	    old_convenience="$old_convenience $ladir/$objdir/$old_library" +	    func_append convenience " $ladir/$objdir/$old_library" +	    func_append old_convenience " $ladir/$objdir/$old_library"  	  elif test "$linkmode" != prog && test "$linkmode" != lib; then  	    func_fatal_error "\`$lib' is not a convenience library"  	  fi  	  tmp_libs=  	  for deplib in $dependency_libs; do  	    deplibs="$deplib $deplibs" -	    if $opt_duplicate_deps ; then +	    if $opt_preserve_dup_deps ; then  	      case "$tmp_libs " in -	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; +	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;  	      esac  	    fi -	    tmp_libs="$tmp_libs $deplib" +	    func_append tmp_libs " $deplib"  	  done  	  continue  	fi # $pass = conv @@ -5690,9 +6463,15 @@ func_mode_link ()  	# Get the name of the library we link against.  	linklib= -	for l in $old_library $library_names; do -	  linklib="$l" -	done +	if test -n "$old_library" && +	   { test "$prefer_static_libs" = yes || +	     test "$prefer_static_libs,$installed" = "built,no"; }; then +	  linklib=$old_library +	else +	  for l in $old_library $library_names; do +	    linklib="$l" +	  done +	fi  	if test -z "$linklib"; then  	  func_fatal_error "cannot find name of link library for \`$lib'"  	fi @@ -5709,9 +6488,9 @@ func_mode_link ()  	    # statically, we need to preload.  We also need to preload any  	    # dependent libraries so libltdl's deplib preloader doesn't  	    # bomb out in the load deplibs phase. -	    dlprefiles="$dlprefiles $lib $dependency_libs" +	    func_append dlprefiles " $lib $dependency_libs"  	  else -	    newdlfiles="$newdlfiles $lib" +	    func_append newdlfiles " $lib"  	  fi  	  continue  	fi # $pass = dlopen @@ -5733,14 +6512,14 @@ func_mode_link ()  	# Find the relevant object directory and library name.  	if test "X$installed" = Xyes; then -	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then +	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then  	    func_warning "library \`$lib' was moved."  	    dir="$ladir"  	    absdir="$abs_ladir"  	    libdir="$abs_ladir"  	  else -	    dir="$libdir" -	    absdir="$libdir" +	    dir="$lt_sysroot$libdir" +	    absdir="$lt_sysroot$libdir"  	  fi  	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes  	else @@ -5748,12 +6527,12 @@ func_mode_link ()  	    dir="$ladir"  	    absdir="$abs_ladir"  	    # Remove this search path later -	    notinst_path="$notinst_path $abs_ladir" +	    func_append notinst_path " $abs_ladir"  	  else  	    dir="$ladir/$objdir"  	    absdir="$abs_ladir/$objdir"  	    # Remove this search path later -	    notinst_path="$notinst_path $abs_ladir" +	    func_append notinst_path " $abs_ladir"  	  fi  	fi # $installed = yes  	func_stripname 'lib' '.la' "$laname" @@ -5764,20 +6543,46 @@ func_mode_link ()  	  if test -z "$libdir" && test "$linkmode" = prog; then  	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"  	  fi -	  # Prefer using a static library (so that no silly _DYNAMIC symbols -	  # are required to link). -	  if test -n "$old_library"; then -	    newdlprefiles="$newdlprefiles $dir/$old_library" -	    # Keep a list of preopened convenience libraries to check -	    # that they are being used correctly in the link pass. -	    test -z "$libdir" && \ -		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" -	  # Otherwise, use the dlname, so that lt_dlopen finds it. -	  elif test -n "$dlname"; then -	    newdlprefiles="$newdlprefiles $dir/$dlname" -	  else -	    newdlprefiles="$newdlprefiles $dir/$linklib" -	  fi +	  case "$host" in +	    # special handling for platforms with PE-DLLs. +	    *cygwin* | *mingw* | *cegcc* ) +	      # Linker will automatically link against shared library if both +	      # static and shared are present.  Therefore, ensure we extract +	      # symbols from the import library if a shared library is present +	      # (otherwise, the dlopen module name will be incorrect).  We do +	      # this by putting the import library name into $newdlprefiles. +	      # We recover the dlopen module name by 'saving' the la file +	      # name in a special purpose variable, and (later) extracting the +	      # dlname from the la file. +	      if test -n "$dlname"; then +	        func_tr_sh "$dir/$linklib" +	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" +	        func_append newdlprefiles " $dir/$linklib" +	      else +	        func_append newdlprefiles " $dir/$old_library" +	        # Keep a list of preopened convenience libraries to check +	        # that they are being used correctly in the link pass. +	        test -z "$libdir" && \ +	          func_append dlpreconveniencelibs " $dir/$old_library" +	      fi +	    ;; +	    * ) +	      # Prefer using a static library (so that no silly _DYNAMIC symbols +	      # are required to link). +	      if test -n "$old_library"; then +	        func_append newdlprefiles " $dir/$old_library" +	        # Keep a list of preopened convenience libraries to check +	        # that they are being used correctly in the link pass. +	        test -z "$libdir" && \ +	          func_append dlpreconveniencelibs " $dir/$old_library" +	      # Otherwise, use the dlname, so that lt_dlopen finds it. +	      elif test -n "$dlname"; then +	        func_append newdlprefiles " $dir/$dlname" +	      else +	        func_append newdlprefiles " $dir/$linklib" +	      fi +	    ;; +	  esac  	fi # $pass = dlpreopen  	if test -z "$libdir"; then @@ -5795,7 +6600,7 @@ func_mode_link ()  	if test "$linkmode" = prog && test "$pass" != link; then -	  newlib_search_path="$newlib_search_path $ladir" +	  func_append newlib_search_path " $ladir"  	  deplibs="$lib $deplibs"  	  linkalldeplibs=no @@ -5808,7 +6613,8 @@ func_mode_link ()  	  for deplib in $dependency_libs; do  	    case $deplib in  	    -L*) func_stripname '-L' '' "$deplib" -	         newlib_search_path="$newlib_search_path $func_stripname_result" +	         func_resolve_sysroot "$func_stripname_result" +	         func_append newlib_search_path " $func_resolve_sysroot_result"  		 ;;  	    esac  	    # Need to link against all dependency_libs? @@ -5819,12 +6625,12 @@ func_mode_link ()  	      # or/and link against static libraries  	      newdependency_libs="$deplib $newdependency_libs"  	    fi -	    if $opt_duplicate_deps ; then +	    if $opt_preserve_dup_deps ; then  	      case "$tmp_libs " in -	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; +	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;  	      esac  	    fi -	    tmp_libs="$tmp_libs $deplib" +	    func_append tmp_libs " $deplib"  	  done # for deplib  	  continue  	fi # $linkmode = prog... @@ -5839,7 +6645,7 @@ func_mode_link ()  	      # Make sure the rpath contains only unique directories.  	      case "$temp_rpath:" in  	      *"$absdir:"*) ;; -	      *) temp_rpath="$temp_rpath$absdir:" ;; +	      *) func_append temp_rpath "$absdir:" ;;  	      esac  	    fi @@ -5851,7 +6657,7 @@ func_mode_link ()  	    *)  	      case "$compile_rpath " in  	      *" $absdir "*) ;; -	      *) compile_rpath="$compile_rpath $absdir" +	      *) func_append compile_rpath " $absdir" ;;  	      esac  	      ;;  	    esac @@ -5860,7 +6666,7 @@ func_mode_link ()  	    *)  	      case "$finalize_rpath " in  	      *" $libdir "*) ;; -	      *) finalize_rpath="$finalize_rpath $libdir" +	      *) func_append finalize_rpath " $libdir" ;;  	      esac  	      ;;  	    esac @@ -5885,12 +6691,12 @@ func_mode_link ()  	  case $host in  	  *cygwin* | *mingw* | *cegcc*)  	      # No point in relinking DLLs because paths are not encoded -	      notinst_deplibs="$notinst_deplibs $lib" +	      func_append notinst_deplibs " $lib"  	      need_relink=no  	    ;;  	  *)  	    if test "$installed" = no; then -	      notinst_deplibs="$notinst_deplibs $lib" +	      func_append notinst_deplibs " $lib"  	      need_relink=yes  	    fi  	    ;; @@ -5925,7 +6731,7 @@ func_mode_link ()  	    *)  	      case "$compile_rpath " in  	      *" $absdir "*) ;; -	      *) compile_rpath="$compile_rpath $absdir" +	      *) func_append compile_rpath " $absdir" ;;  	      esac  	      ;;  	    esac @@ -5934,7 +6740,7 @@ func_mode_link ()  	    *)  	      case "$finalize_rpath " in  	      *" $libdir "*) ;; -	      *) finalize_rpath="$finalize_rpath $libdir" +	      *) func_append finalize_rpath " $libdir" ;;  	      esac  	      ;;  	    esac @@ -5988,7 +6794,7 @@ func_mode_link ()  	    linklib=$newlib  	  fi # test -n "$old_archive_from_expsyms_cmds" -	  if test "$linkmode" = prog || test "$mode" != relink; then +	  if test "$linkmode" = prog || test "$opt_mode" != relink; then  	    add_shlibpath=  	    add_dir=  	    add= @@ -6039,12 +6845,12 @@ func_mode_link ()  	         test "$hardcode_direct_absolute" = no; then  		add="$dir/$linklib"  	      elif test "$hardcode_minus_L" = yes; then -		add_dir="-L$dir" +		add_dir="-L$absdir"  		# Try looking first in the location we're being installed to.  		if test -n "$inst_prefix_dir"; then  		  case $libdir in  		    [\\/]*) -		      add_dir="$add_dir -L$inst_prefix_dir$libdir" +		      func_append add_dir " -L$inst_prefix_dir$libdir"  		      ;;  		  esac  		fi @@ -6066,7 +6872,7 @@ func_mode_link ()  	    if test -n "$add_shlibpath"; then  	      case :$compile_shlibpath: in  	      *":$add_shlibpath:"*) ;; -	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; +	      *) func_append compile_shlibpath "$add_shlibpath:" ;;  	      esac  	    fi  	    if test "$linkmode" = prog; then @@ -6080,13 +6886,13 @@ func_mode_link ()  		 test "$hardcode_shlibpath_var" = yes; then  		case :$finalize_shlibpath: in  		*":$libdir:"*) ;; -		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; +		*) func_append finalize_shlibpath "$libdir:" ;;  		esac  	      fi  	    fi  	  fi -	  if test "$linkmode" = prog || test "$mode" = relink; then +	  if test "$linkmode" = prog || test "$opt_mode" = relink; then  	    add_shlibpath=  	    add_dir=  	    add= @@ -6100,7 +6906,7 @@ func_mode_link ()  	    elif test "$hardcode_shlibpath_var" = yes; then  	      case :$finalize_shlibpath: in  	      *":$libdir:"*) ;; -	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; +	      *) func_append finalize_shlibpath "$libdir:" ;;  	      esac  	      add="-l$name"  	    elif test "$hardcode_automatic" = yes; then @@ -6117,7 +6923,7 @@ func_mode_link ()  	      if test -n "$inst_prefix_dir"; then  		case $libdir in  		  [\\/]*) -		    add_dir="$add_dir -L$inst_prefix_dir$libdir" +		    func_append add_dir " -L$inst_prefix_dir$libdir"  		    ;;  		esac  	      fi @@ -6194,27 +7000,33 @@ func_mode_link ()  	           temp_xrpath=$func_stripname_result  		   case " $xrpath " in  		   *" $temp_xrpath "*) ;; -		   *) xrpath="$xrpath $temp_xrpath";; +		   *) func_append xrpath " $temp_xrpath";;  		   esac;; -	      *) temp_deplibs="$temp_deplibs $libdir";; +	      *) func_append temp_deplibs " $libdir";;  	      esac  	    done  	    dependency_libs="$temp_deplibs"  	  fi -	  newlib_search_path="$newlib_search_path $absdir" +	  func_append newlib_search_path " $absdir"  	  # Link against this library  	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"  	  # ... and its dependency_libs  	  tmp_libs=  	  for deplib in $dependency_libs; do  	    newdependency_libs="$deplib $newdependency_libs" -	    if $opt_duplicate_deps ; then +	    case $deplib in +              -L*) func_stripname '-L' '' "$deplib" +                   func_resolve_sysroot "$func_stripname_result";; +              *) func_resolve_sysroot "$deplib" ;; +            esac +	    if $opt_preserve_dup_deps ; then  	      case "$tmp_libs " in -	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; +	      *" $func_resolve_sysroot_result "*) +                func_append specialdeplibs " $func_resolve_sysroot_result" ;;  	      esac  	    fi -	    tmp_libs="$tmp_libs $deplib" +	    func_append tmp_libs " $func_resolve_sysroot_result"  	  done  	  if test "$link_all_deplibs" != no; then @@ -6224,8 +7036,10 @@ func_mode_link ()  	      case $deplib in  	      -L*) path="$deplib" ;;  	      *.la) +	        func_resolve_sysroot "$deplib" +	        deplib=$func_resolve_sysroot_result  	        func_dirname "$deplib" "" "." -		dir="$func_dirname_result" +		dir=$func_dirname_result  		# We need an absolute path.  		case $dir in  		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; @@ -6252,8 +7066,8 @@ func_mode_link ()                        if test -z "$darwin_install_name"; then                            darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`                        fi -		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" -		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" +		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" +		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"  		      path=  		    fi  		  fi @@ -6303,7 +7117,7 @@ func_mode_link ()  	  for dir in $newlib_search_path; do  	    case "$lib_search_path " in  	    *" $dir "*) ;; -	    *) lib_search_path="$lib_search_path $dir" ;; +	    *) func_append lib_search_path " $dir" ;;  	    esac  	  done  	  newlib_search_path= @@ -6361,10 +7175,10 @@ func_mode_link ()  	    -L*)  	      case " $tmp_libs " in  	      *" $deplib "*) ;; -	      *) tmp_libs="$tmp_libs $deplib" ;; +	      *) func_append tmp_libs " $deplib" ;;  	      esac  	      ;; -	    *) tmp_libs="$tmp_libs $deplib" ;; +	    *) func_append tmp_libs " $deplib" ;;  	    esac  	  done  	  eval $var=\"$tmp_libs\" @@ -6380,7 +7194,7 @@ func_mode_link ()  	  ;;  	esac  	if test -n "$i" ; then -	  tmp_libs="$tmp_libs $i" +	  func_append tmp_libs " $i"  	fi        done        dependency_libs=$tmp_libs @@ -6421,7 +7235,7 @@ func_mode_link ()        # Now set the variables for building old libraries.        build_libtool_libs=no        oldlibs="$output" -      objs="$objs$old_deplibs" +      func_append objs "$old_deplibs"        ;;      lib) @@ -6457,7 +7271,7 @@ func_mode_link ()  	  echo  	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"  	  $ECHO "*** objects $objs is not portable!" -	  libobjs="$libobjs $objs" +	  func_append libobjs " $objs"  	fi        fi @@ -6516,6 +7330,7 @@ func_mode_link ()  	  # which has an extra 1 added just for fun  	  #  	  case $version_type in +	  # correct linux to gnu/linux during the next big refactor  	  darwin|linux|osf|windows|none)  	    func_arith $number_major + $number_minor  	    current=$func_arith_result @@ -6632,7 +7447,7 @@ func_mode_link ()  	  versuffix="$major.$revision"  	  ;; -	linux) +	linux) # correct to gnu/linux during the next big refactor  	  func_arith $current - $age  	  major=.$func_arith_result  	  versuffix="$major.$age.$revision" @@ -6655,7 +7470,7 @@ func_mode_link ()  	  done  	  # Make executables depend on our current version. -	  verstring="$verstring:${current}.0" +	  func_append verstring ":${current}.0"  	  ;;  	qnx) @@ -6723,10 +7538,10 @@ func_mode_link ()        fi        func_generate_dlsyms "$libname" "$libname" "yes" -      libobjs="$libobjs $symfileobj" +      func_append libobjs " $symfileobj"        test "X$libobjs" = "X " && libobjs= -      if test "$mode" != relink; then +      if test "$opt_mode" != relink; then  	# Remove our outputs, but don't remove object files since they  	# may have been created when compiling PIC objects.  	removelist= @@ -6742,7 +7557,7 @@ func_mode_link ()  		   continue  		 fi  	       fi -	       removelist="$removelist $p" +	       func_append removelist " $p"  	       ;;  	    *) ;;  	  esac @@ -6753,7 +7568,7 @@ func_mode_link ()        # Now set the variables for building old libraries.        if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then -	oldlibs="$oldlibs $output_objdir/$libname.$libext" +	func_append oldlibs " $output_objdir/$libname.$libext"  	# Transform .lo files to .o files.  	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` @@ -6770,10 +7585,11 @@ func_mode_link ()  	# If the user specified any rpath flags, then add them.  	temp_xrpath=  	for libdir in $xrpath; do -	  temp_xrpath="$temp_xrpath -R$libdir" +	  func_replace_sysroot "$libdir" +	  func_append temp_xrpath " -R$func_replace_sysroot_result"  	  case "$finalize_rpath " in  	  *" $libdir "*) ;; -	  *) finalize_rpath="$finalize_rpath $libdir" ;; +	  *) func_append finalize_rpath " $libdir" ;;  	  esac  	done  	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then @@ -6787,7 +7603,7 @@ func_mode_link ()        for lib in $old_dlfiles; do  	case " $dlprefiles $dlfiles " in  	*" $lib "*) ;; -	*) dlfiles="$dlfiles $lib" ;; +	*) func_append dlfiles " $lib" ;;  	esac        done @@ -6797,7 +7613,7 @@ func_mode_link ()        for lib in $old_dlprefiles; do  	case "$dlprefiles " in  	*" $lib "*) ;; -	*) dlprefiles="$dlprefiles $lib" ;; +	*) func_append dlprefiles " $lib" ;;  	esac        done @@ -6809,7 +7625,7 @@ func_mode_link ()  	    ;;  	  *-*-rhapsody* | *-*-darwin1.[012])  	    # Rhapsody C library is in the System framework -	    deplibs="$deplibs System.ltframework" +	    func_append deplibs " System.ltframework"  	    ;;  	  *-*-netbsd*)  	    # Don't link with libc until the a.out ld.so is fixed. @@ -6826,7 +7642,7 @@ func_mode_link ()  	  *)  	    # Add libc to deplibs on all other systems if necessary.  	    if test "$build_libtool_need_lc" = "yes"; then -	      deplibs="$deplibs -lc" +	      func_append deplibs " -lc"  	    fi  	    ;;  	  esac @@ -6875,7 +7691,7 @@ EOF  		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then  		  case " $predeps $postdeps " in  		  *" $i "*) -		    newdeplibs="$newdeplibs $i" +		    func_append newdeplibs " $i"  		    i=""  		    ;;  		  esac @@ -6886,7 +7702,7 @@ EOF  		  set dummy $deplib_matches; shift  		  deplib_match=$1  		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then -		    newdeplibs="$newdeplibs $i" +		    func_append newdeplibs " $i"  		  else  		    droppeddeps=yes  		    echo @@ -6900,7 +7716,7 @@ EOF  		fi  		;;  	      *) -		newdeplibs="$newdeplibs $i" +		func_append newdeplibs " $i"  		;;  	      esac  	    done @@ -6918,7 +7734,7 @@ EOF  		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then  		    case " $predeps $postdeps " in  		    *" $i "*) -		      newdeplibs="$newdeplibs $i" +		      func_append newdeplibs " $i"  		      i=""  		      ;;  		    esac @@ -6929,7 +7745,7 @@ EOF  		    set dummy $deplib_matches; shift  		    deplib_match=$1  		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then -		      newdeplibs="$newdeplibs $i" +		      func_append newdeplibs " $i"  		    else  		      droppeddeps=yes  		      echo @@ -6951,7 +7767,7 @@ EOF  		fi  		;;  	      *) -		newdeplibs="$newdeplibs $i" +		func_append newdeplibs " $i"  		;;  	      esac  	    done @@ -6968,15 +7784,27 @@ EOF  	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then  		case " $predeps $postdeps " in  		*" $a_deplib "*) -		  newdeplibs="$newdeplibs $a_deplib" +		  func_append newdeplibs " $a_deplib"  		  a_deplib=""  		  ;;  		esac  	      fi  	      if test -n "$a_deplib" ; then  		libname=`eval "\\$ECHO \"$libname_spec\""` +		if test -n "$file_magic_glob"; then +		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` +		else +		  libnameglob=$libname +		fi +		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`  		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do -		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null` +		  if test "$want_nocaseglob" = yes; then +		    shopt -s nocaseglob +		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` +		    $nocaseglob +		  else +		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` +		  fi  		  for potent_lib in $potential_libs; do  		      # Follow soft links.  		      if ls -lLd "$potent_lib" 2>/dev/null | @@ -6999,7 +7827,7 @@ EOF  		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |  			 $SED -e 10q |  			 $EGREP "$file_magic_regex" > /dev/null; then -			newdeplibs="$newdeplibs $a_deplib" +			func_append newdeplibs " $a_deplib"  			a_deplib=""  			break 2  		      fi @@ -7024,7 +7852,7 @@ EOF  	      ;;  	    *)  	      # Add a -L argument. -	      newdeplibs="$newdeplibs $a_deplib" +	      func_append newdeplibs " $a_deplib"  	      ;;  	    esac  	  done # Gone through all deplibs. @@ -7040,7 +7868,7 @@ EOF  	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then  		case " $predeps $postdeps " in  		*" $a_deplib "*) -		  newdeplibs="$newdeplibs $a_deplib" +		  func_append newdeplibs " $a_deplib"  		  a_deplib=""  		  ;;  		esac @@ -7053,7 +7881,7 @@ EOF  		    potlib="$potent_lib" # see symlink-check above in file_magic test  		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \  		       $EGREP "$match_pattern_regex" > /dev/null; then -		      newdeplibs="$newdeplibs $a_deplib" +		      func_append newdeplibs " $a_deplib"  		      a_deplib=""  		      break 2  		    fi @@ -7078,7 +7906,7 @@ EOF  	      ;;  	    *)  	      # Add a -L argument. -	      newdeplibs="$newdeplibs $a_deplib" +	      func_append newdeplibs " $a_deplib"  	      ;;  	    esac  	  done # Gone through all deplibs. @@ -7182,7 +8010,7 @@ EOF  	*)  	  case " $deplibs " in  	  *" -L$path/$objdir "*) -	    new_libs="$new_libs -L$path/$objdir" ;; +	    func_append new_libs " -L$path/$objdir" ;;  	  esac  	  ;;  	esac @@ -7192,10 +8020,10 @@ EOF  	-L*)  	  case " $new_libs " in  	  *" $deplib "*) ;; -	  *) new_libs="$new_libs $deplib" ;; +	  *) func_append new_libs " $deplib" ;;  	  esac  	  ;; -	*) new_libs="$new_libs $deplib" ;; +	*) func_append new_libs " $deplib" ;;  	esac        done        deplibs="$new_libs" @@ -7207,15 +8035,22 @@ EOF        # Test again, we may have decided not to build it any more        if test "$build_libtool_libs" = yes; then +	# Remove ${wl} instances when linking with ld. +	# FIXME: should test the right _cmds variable. +	case $archive_cmds in +	  *\$LD\ *) wl= ;; +        esac  	if test "$hardcode_into_libs" = yes; then  	  # Hardcode the library paths  	  hardcode_libdirs=  	  dep_rpath=  	  rpath="$finalize_rpath" -	  test "$mode" != relink && rpath="$compile_rpath$rpath" +	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"  	  for libdir in $rpath; do  	    if test -n "$hardcode_libdir_flag_spec"; then  	      if test -n "$hardcode_libdir_separator"; then +		func_replace_sysroot "$libdir" +		libdir=$func_replace_sysroot_result  		if test -z "$hardcode_libdirs"; then  		  hardcode_libdirs="$libdir"  		else @@ -7224,18 +8059,18 @@ EOF  		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)  		    ;;  		  *) -		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" +		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"  		    ;;  		  esac  		fi  	      else  		eval flag=\"$hardcode_libdir_flag_spec\" -		dep_rpath="$dep_rpath $flag" +		func_append dep_rpath " $flag"  	      fi  	    elif test -n "$runpath_var"; then  	      case "$perm_rpath " in  	      *" $libdir "*) ;; -	      *) perm_rpath="$perm_rpath $libdir" ;; +	      *) func_append perm_rpath " $libdir" ;;  	      esac  	    fi  	  done @@ -7243,17 +8078,13 @@ EOF  	  if test -n "$hardcode_libdir_separator" &&  	     test -n "$hardcode_libdirs"; then  	    libdir="$hardcode_libdirs" -	    if test -n "$hardcode_libdir_flag_spec_ld"; then -	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" -	    else -	      eval dep_rpath=\"$hardcode_libdir_flag_spec\" -	    fi +	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""  	  fi  	  if test -n "$runpath_var" && test -n "$perm_rpath"; then  	    # We should set the runpath_var.  	    rpath=  	    for dir in $perm_rpath; do -	      rpath="$rpath$dir:" +	      func_append rpath "$dir:"  	    done  	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"  	  fi @@ -7261,7 +8092,7 @@ EOF  	fi  	shlibpath="$finalize_shlibpath" -	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" +	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"  	if test -n "$shlibpath"; then  	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"  	fi @@ -7287,7 +8118,7 @@ EOF  	linknames=  	for link  	do -	  linknames="$linknames $link" +	  func_append linknames " $link"  	done  	# Use standard objects if they are pic @@ -7298,7 +8129,7 @@ EOF  	if test -n "$export_symbols" && test -n "$include_expsyms"; then  	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"  	  export_symbols="$output_objdir/$libname.uexp" -	  delfiles="$delfiles $export_symbols" +	  func_append delfiles " $export_symbols"  	fi  	orig_export_symbols= @@ -7329,14 +8160,46 @@ EOF  	    $opt_dry_run || $RM $export_symbols  	    cmds=$export_symbols_cmds  	    save_ifs="$IFS"; IFS='~' -	    for cmd in $cmds; do +	    for cmd1 in $cmds; do  	      IFS="$save_ifs" -	      eval cmd=\"$cmd\" -	      func_len " $cmd" -	      len=$func_len_result -	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then +	      # Take the normal branch if the nm_file_list_spec branch +	      # doesn't work or if tool conversion is not needed. +	      case $nm_file_list_spec~$to_tool_file_cmd in +		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) +		  try_normal_branch=yes +		  eval cmd=\"$cmd1\" +		  func_len " $cmd" +		  len=$func_len_result +		  ;; +		*) +		  try_normal_branch=no +		  ;; +	      esac +	      if test "$try_normal_branch" = yes \ +		 && { test "$len" -lt "$max_cmd_len" \ +		      || test "$max_cmd_len" -le -1; } +	      then  		func_show_eval "$cmd" 'exit $?'  		skipped_export=false +	      elif test -n "$nm_file_list_spec"; then +		func_basename "$output" +		output_la=$func_basename_result +		save_libobjs=$libobjs +		save_output=$output +		output=${output_objdir}/${output_la}.nm +		func_to_tool_file "$output" +		libobjs=$nm_file_list_spec$func_to_tool_file_result +		func_append delfiles " $output" +		func_verbose "creating $NM input file list: $output" +		for obj in $save_libobjs; do +		  func_to_tool_file "$obj" +		  $ECHO "$func_to_tool_file_result" +		done > "$output" +		eval cmd=\"$cmd1\" +		func_show_eval "$cmd" 'exit $?' +		output=$save_output +		libobjs=$save_libobjs +		skipped_export=false  	      else  		# The command line is too long to execute in one step.  		func_verbose "using reloadable object file for export list..." @@ -7369,7 +8232,7 @@ EOF  	  # global variables. join(1) would be nice here, but unfortunately  	  # isn't a blessed tool.  	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter -	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" +	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"  	  export_symbols=$output_objdir/$libname.def  	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols  	fi @@ -7379,7 +8242,7 @@ EOF  	  case " $convenience " in  	  *" $test_deplib "*) ;;  	  *) -	    tmp_deplibs="$tmp_deplibs $test_deplib" +	    func_append tmp_deplibs " $test_deplib"  	    ;;  	  esac  	done @@ -7399,21 +8262,21 @@ EOF  	    test "X$libobjs" = "X " && libobjs=  	  else  	    gentop="$output_objdir/${outputname}x" -	    generated="$generated $gentop" +	    func_append generated " $gentop"  	    func_extract_archives $gentop $convenience -	    libobjs="$libobjs $func_extract_archives_result" +	    func_append libobjs " $func_extract_archives_result"  	    test "X$libobjs" = "X " && libobjs=  	  fi  	fi  	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then  	  eval flag=\"$thread_safe_flag_spec\" -	  linker_flags="$linker_flags $flag" +	  func_append linker_flags " $flag"  	fi  	# Make a backup of the uninstalled library when relinking -	if test "$mode" = relink; then +	if test "$opt_mode" = relink; then  	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?  	fi @@ -7475,10 +8338,13 @@ EOF  	    echo 'INPUT (' > $output  	    for obj in $save_libobjs  	    do -	      $ECHO "$obj" >> $output +	      func_to_tool_file "$obj" +	      $ECHO "$func_to_tool_file_result" >> $output  	    done  	    echo ')' >> $output -	    delfiles="$delfiles $output" +	    func_append delfiles " $output" +	    func_to_tool_file "$output" +	    output=$func_to_tool_file_result  	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then  	    output=${output_objdir}/${output_la}.lnk  	    func_verbose "creating linker input file list: $output" @@ -7492,10 +8358,12 @@ EOF  	    fi  	    for obj  	    do -	      $ECHO "$obj" >> $output +	      func_to_tool_file "$obj" +	      $ECHO "$func_to_tool_file_result" >> $output  	    done -	    delfiles="$delfiles $output" -	    output=$firstobj\"$file_list_spec$output\" +	    func_append delfiles " $output" +	    func_to_tool_file "$output" +	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"  	  else  	    if test -n "$save_libobjs"; then  	      func_verbose "creating reloadable object files..." @@ -7546,7 +8414,7 @@ EOF  	      if test -n "$last_robj"; then  	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"  	      fi -	      delfiles="$delfiles $output" +	      func_append delfiles " $output"  	    else  	      output= @@ -7580,7 +8448,7 @@ EOF  		lt_exit=$?  		# Restore the uninstalled library and exit -		if test "$mode" = relink; then +		if test "$opt_mode" = relink; then  		  ( cd "$output_objdir" && \  		    $RM "${realname}T" && \  		    $MV "${realname}U" "$realname" ) @@ -7613,7 +8481,7 @@ EOF  	      # global variables. join(1) would be nice here, but unfortunately  	      # isn't a blessed tool.  	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter -	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" +	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"  	      export_symbols=$output_objdir/$libname.def  	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols  	    fi @@ -7654,10 +8522,10 @@ EOF  	# Add any objects from preloaded convenience libraries  	if test -n "$dlprefiles"; then  	  gentop="$output_objdir/${outputname}x" -	  generated="$generated $gentop" +	  func_append generated " $gentop"  	  func_extract_archives $gentop $dlprefiles -	  libobjs="$libobjs $func_extract_archives_result" +	  func_append libobjs " $func_extract_archives_result"  	  test "X$libobjs" = "X " && libobjs=  	fi @@ -7673,7 +8541,7 @@ EOF  	    lt_exit=$?  	    # Restore the uninstalled library and exit -	    if test "$mode" = relink; then +	    if test "$opt_mode" = relink; then  	      ( cd "$output_objdir" && \  	        $RM "${realname}T" && \  		$MV "${realname}U" "$realname" ) @@ -7685,7 +8553,7 @@ EOF  	IFS="$save_ifs"  	# Restore the uninstalled library and exit -	if test "$mode" = relink; then +	if test "$opt_mode" = relink; then  	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?  	  if test -n "$convenience"; then @@ -7769,13 +8637,16 @@ EOF  	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`  	else  	  gentop="$output_objdir/${obj}x" -	  generated="$generated $gentop" +	  func_append generated " $gentop"  	  func_extract_archives $gentop $convenience  	  reload_conv_objs="$reload_objs $func_extract_archives_result"  	fi        fi +      # If we're not building shared, we need to use non_pic_objs +      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" +        # Create the old-style object.        reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test @@ -7849,8 +8720,8 @@ EOF  	if test "$tagname" = CXX ; then  	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in  	    10.[0123]) -	      compile_command="$compile_command ${wl}-bind_at_load" -	      finalize_command="$finalize_command ${wl}-bind_at_load" +	      func_append compile_command " ${wl}-bind_at_load" +	      func_append finalize_command " ${wl}-bind_at_load"  	    ;;  	  esac  	fi @@ -7870,7 +8741,7 @@ EOF  	*)  	  case " $compile_deplibs " in  	  *" -L$path/$objdir "*) -	    new_libs="$new_libs -L$path/$objdir" ;; +	    func_append new_libs " -L$path/$objdir" ;;  	  esac  	  ;;  	esac @@ -7880,17 +8751,17 @@ EOF  	-L*)  	  case " $new_libs " in  	  *" $deplib "*) ;; -	  *) new_libs="$new_libs $deplib" ;; +	  *) func_append new_libs " $deplib" ;;  	  esac  	  ;; -	*) new_libs="$new_libs $deplib" ;; +	*) func_append new_libs " $deplib" ;;  	esac        done        compile_deplibs="$new_libs" -      compile_command="$compile_command $compile_deplibs" -      finalize_command="$finalize_command $finalize_deplibs" +      func_append compile_command " $compile_deplibs" +      func_append finalize_command " $finalize_deplibs"        if test -n "$rpath$xrpath"; then  	# If the user specified any rpath flags, then add them. @@ -7898,7 +8769,7 @@ EOF  	  # This is the magic to use -rpath.  	  case "$finalize_rpath " in  	  *" $libdir "*) ;; -	  *) finalize_rpath="$finalize_rpath $libdir" ;; +	  *) func_append finalize_rpath " $libdir" ;;  	  esac  	done        fi @@ -7917,18 +8788,18 @@ EOF  	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)  		;;  	      *) -		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" +		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"  		;;  	      esac  	    fi  	  else  	    eval flag=\"$hardcode_libdir_flag_spec\" -	    rpath="$rpath $flag" +	    func_append rpath " $flag"  	  fi  	elif test -n "$runpath_var"; then  	  case "$perm_rpath " in  	  *" $libdir "*) ;; -	  *) perm_rpath="$perm_rpath $libdir" ;; +	  *) func_append perm_rpath " $libdir" ;;  	  esac  	fi  	case $host in @@ -7937,12 +8808,12 @@ EOF  	  case :$dllsearchpath: in  	  *":$libdir:"*) ;;  	  ::) dllsearchpath=$libdir;; -	  *) dllsearchpath="$dllsearchpath:$libdir";; +	  *) func_append dllsearchpath ":$libdir";;  	  esac  	  case :$dllsearchpath: in  	  *":$testbindir:"*) ;;  	  ::) dllsearchpath=$testbindir;; -	  *) dllsearchpath="$dllsearchpath:$testbindir";; +	  *) func_append dllsearchpath ":$testbindir";;  	  esac  	  ;;  	esac @@ -7968,18 +8839,18 @@ EOF  	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)  		;;  	      *) -		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" +		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"  		;;  	      esac  	    fi  	  else  	    eval flag=\"$hardcode_libdir_flag_spec\" -	    rpath="$rpath $flag" +	    func_append rpath " $flag"  	  fi  	elif test -n "$runpath_var"; then  	  case "$finalize_perm_rpath " in  	  *" $libdir "*) ;; -	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; +	  *) func_append finalize_perm_rpath " $libdir" ;;  	  esac  	fi        done @@ -8030,6 +8901,12 @@ EOF  	exit_status=0  	func_show_eval "$link_command" 'exit_status=$?' +	if test -n "$postlink_cmds"; then +	  func_to_tool_file "$output" +	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` +	  func_execute_cmds "$postlink_cmds" 'exit $?' +	fi +  	# Delete the generated files.  	if test -f "$output_objdir/${outputname}S.${objext}"; then  	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' @@ -8052,7 +8929,7 @@ EOF  	  # We should set the runpath_var.  	  rpath=  	  for dir in $perm_rpath; do -	    rpath="$rpath$dir:" +	    func_append rpath "$dir:"  	  done  	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "  	fi @@ -8060,7 +8937,7 @@ EOF  	  # We should set the runpath_var.  	  rpath=  	  for dir in $finalize_perm_rpath; do -	    rpath="$rpath$dir:" +	    func_append rpath "$dir:"  	  done  	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "  	fi @@ -8075,6 +8952,13 @@ EOF  	$opt_dry_run || $RM $output  	# Link the executable and exit  	func_show_eval "$link_command" 'exit $?' + +	if test -n "$postlink_cmds"; then +	  func_to_tool_file "$output" +	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` +	  func_execute_cmds "$postlink_cmds" 'exit $?' +	fi +  	exit $EXIT_SUCCESS        fi @@ -8108,6 +8992,12 @@ EOF        func_show_eval "$link_command" 'exit $?' +      if test -n "$postlink_cmds"; then +	func_to_tool_file "$output_objdir/$outputname" +	postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` +	func_execute_cmds "$postlink_cmds" 'exit $?' +      fi +        # Now create the wrapper script.        func_verbose "creating $output" @@ -8205,7 +9095,7 @@ EOF  	else  	  oldobjs="$old_deplibs $non_pic_objects"  	  if test "$preload" = yes && test -f "$symfileobj"; then -	    oldobjs="$oldobjs $symfileobj" +	    func_append oldobjs " $symfileobj"  	  fi  	fi  	addlibs="$old_convenience" @@ -8213,10 +9103,10 @@ EOF        if test -n "$addlibs"; then  	gentop="$output_objdir/${outputname}x" -	generated="$generated $gentop" +	func_append generated " $gentop"  	func_extract_archives $gentop $addlibs -	oldobjs="$oldobjs $func_extract_archives_result" +	func_append oldobjs " $func_extract_archives_result"        fi        # Do each command in the archive commands. @@ -8227,10 +9117,10 @@ EOF  	# Add any objects from preloaded convenience libraries  	if test -n "$dlprefiles"; then  	  gentop="$output_objdir/${outputname}x" -	  generated="$generated $gentop" +	  func_append generated " $gentop"  	  func_extract_archives $gentop $dlprefiles -	  oldobjs="$oldobjs $func_extract_archives_result" +	  func_append oldobjs " $func_extract_archives_result"  	fi  	# POSIX demands no paths to be encoded in archives.  We have @@ -8248,7 +9138,7 @@ EOF  	else  	  echo "copying selected object files to avoid basename conflicts..."  	  gentop="$output_objdir/${outputname}x" -	  generated="$generated $gentop" +	  func_append generated " $gentop"  	  func_mkdir_p "$gentop"  	  save_oldobjs=$oldobjs  	  oldobjs= @@ -8272,18 +9162,30 @@ EOF  		esac  	      done  	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" -	      oldobjs="$oldobjs $gentop/$newobj" +	      func_append oldobjs " $gentop/$newobj"  	      ;; -	    *) oldobjs="$oldobjs $obj" ;; +	    *) func_append oldobjs " $obj" ;;  	    esac  	  done  	fi +	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 +	tool_oldlib=$func_to_tool_file_result  	eval cmds=\"$old_archive_cmds\"  	func_len " $cmds"  	len=$func_len_result  	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then  	  cmds=$old_archive_cmds +	elif test -n "$archiver_list_spec"; then +	  func_verbose "using command file archive linking..." +	  for obj in $oldobjs +	  do +	    func_to_tool_file "$obj" +	    $ECHO "$func_to_tool_file_result" +	  done > $output_objdir/$libname.libcmd +	  func_to_tool_file "$output_objdir/$libname.libcmd" +	  oldobjs=" $archiver_list_spec$func_to_tool_file_result" +	  cmds=$old_archive_cmds  	else  	  # the command line is too long to link in one step, link in parts  	  func_verbose "using piecewise archive linking..." @@ -8377,12 +9279,23 @@ EOF  	      *.la)  		func_basename "$deplib"  		name="$func_basename_result" -		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` +		func_resolve_sysroot "$deplib" +		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`  		test -z "$libdir" && \  		  func_fatal_error "\`$deplib' is not a valid libtool archive" -		newdependency_libs="$newdependency_libs $libdir/$name" +		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" +		;; +	      -L*) +		func_stripname -L '' "$deplib" +		func_replace_sysroot "$func_stripname_result" +		func_append newdependency_libs " -L$func_replace_sysroot_result" +		;; +	      -R*) +		func_stripname -R '' "$deplib" +		func_replace_sysroot "$func_stripname_result" +		func_append newdependency_libs " -R$func_replace_sysroot_result"  		;; -	      *) newdependency_libs="$newdependency_libs $deplib" ;; +	      *) func_append newdependency_libs " $deplib" ;;  	      esac  	    done  	    dependency_libs="$newdependency_libs" @@ -8396,9 +9309,9 @@ EOF  		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`  		test -z "$libdir" && \  		  func_fatal_error "\`$lib' is not a valid libtool archive" -		newdlfiles="$newdlfiles $libdir/$name" +		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"  		;; -	      *) newdlfiles="$newdlfiles $lib" ;; +	      *) func_append newdlfiles " $lib" ;;  	      esac  	    done  	    dlfiles="$newdlfiles" @@ -8415,7 +9328,7 @@ EOF  		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`  		test -z "$libdir" && \  		  func_fatal_error "\`$lib' is not a valid libtool archive" -		newdlprefiles="$newdlprefiles $libdir/$name" +		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"  		;;  	      esac  	    done @@ -8427,7 +9340,7 @@ EOF  		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;  		*) abs=`pwd`"/$lib" ;;  	      esac -	      newdlfiles="$newdlfiles $abs" +	      func_append newdlfiles " $abs"  	    done  	    dlfiles="$newdlfiles"  	    newdlprefiles= @@ -8436,7 +9349,7 @@ EOF  		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;  		*) abs=`pwd`"/$lib" ;;  	      esac -	      newdlprefiles="$newdlprefiles $abs" +	      func_append newdlprefiles " $abs"  	    done  	    dlprefiles="$newdlprefiles"  	  fi @@ -8521,7 +9434,7 @@ relink_command=\"$relink_command\""      exit $EXIT_SUCCESS  } -{ test "$mode" = link || test "$mode" = relink; } && +{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&      func_mode_link ${1+"$@"} @@ -8541,9 +9454,9 @@ func_mode_uninstall ()      for arg      do        case $arg in -      -f) RM="$RM $arg"; rmforce=yes ;; -      -*) RM="$RM $arg" ;; -      *) files="$files $arg" ;; +      -f) func_append RM " $arg"; rmforce=yes ;; +      -*) func_append RM " $arg" ;; +      *) func_append files " $arg" ;;        esac      done @@ -8552,24 +9465,23 @@ func_mode_uninstall ()      rmdirs= -    origobjdir="$objdir"      for file in $files; do        func_dirname "$file" "" "."        dir="$func_dirname_result"        if test "X$dir" = X.; then -	objdir="$origobjdir" +	odir="$objdir"        else -	objdir="$dir/$origobjdir" +	odir="$dir/$objdir"        fi        func_basename "$file"        name="$func_basename_result" -      test "$mode" = uninstall && objdir="$dir" +      test "$opt_mode" = uninstall && odir="$dir" -      # Remember objdir for removal later, being careful to avoid duplicates -      if test "$mode" = clean; then +      # Remember odir for removal later, being careful to avoid duplicates +      if test "$opt_mode" = clean; then  	case " $rmdirs " in -	  *" $objdir "*) ;; -	  *) rmdirs="$rmdirs $objdir" ;; +	  *" $odir "*) ;; +	  *) func_append rmdirs " $odir" ;;  	esac        fi @@ -8595,18 +9507,17 @@ func_mode_uninstall ()  	  # Delete the libtool libraries and symlinks.  	  for n in $library_names; do -	    rmfiles="$rmfiles $objdir/$n" +	    func_append rmfiles " $odir/$n"  	  done -	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" +	  test -n "$old_library" && func_append rmfiles " $odir/$old_library" -	  case "$mode" in +	  case "$opt_mode" in  	  clean) -	    case "  $library_names " in -	    # "  " in the beginning catches empty $dlname +	    case " $library_names " in  	    *" $dlname "*) ;; -	    *) rmfiles="$rmfiles $objdir/$dlname" ;; +	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;  	    esac -	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" +	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"  	    ;;  	  uninstall)  	    if test -n "$library_names"; then @@ -8634,19 +9545,19 @@ func_mode_uninstall ()  	  # Add PIC object to the list of files to remove.  	  if test -n "$pic_object" &&  	     test "$pic_object" != none; then -	    rmfiles="$rmfiles $dir/$pic_object" +	    func_append rmfiles " $dir/$pic_object"  	  fi  	  # Add non-PIC object to the list of files to remove.  	  if test -n "$non_pic_object" &&  	     test "$non_pic_object" != none; then -	    rmfiles="$rmfiles $dir/$non_pic_object" +	    func_append rmfiles " $dir/$non_pic_object"  	  fi  	fi  	;;        *) -	if test "$mode" = clean ; then +	if test "$opt_mode" = clean ; then  	  noexename=$name  	  case $file in  	  *.exe) @@ -8656,7 +9567,7 @@ func_mode_uninstall ()  	    noexename=$func_stripname_result  	    # $file with .exe has already been added to rmfiles,  	    # add $file without .exe -	    rmfiles="$rmfiles $file" +	    func_append rmfiles " $file"  	    ;;  	  esac  	  # Do a test to see if this is a libtool program. @@ -8665,7 +9576,7 @@ func_mode_uninstall ()  	      func_ltwrapper_scriptname "$file"  	      relink_command=  	      func_source $func_ltwrapper_scriptname_result -	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result" +	      func_append rmfiles " $func_ltwrapper_scriptname_result"  	    else  	      relink_command=  	      func_source $dir/$noexename @@ -8673,12 +9584,12 @@ func_mode_uninstall ()  	    # note $name still contains .exe if it was in $file originally  	    # as does the version of $file that was added into $rmfiles -	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" +	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"  	    if test "$fast_install" = yes && test -n "$relink_command"; then -	      rmfiles="$rmfiles $objdir/lt-$name" +	      func_append rmfiles " $odir/lt-$name"  	    fi  	    if test "X$noexename" != "X$name" ; then -	      rmfiles="$rmfiles $objdir/lt-${noexename}.c" +	      func_append rmfiles " $odir/lt-${noexename}.c"  	    fi  	  fi  	fi @@ -8686,7 +9597,6 @@ func_mode_uninstall ()        esac        func_show_eval "$RM $rmfiles" 'exit_status=1'      done -    objdir="$origobjdir"      # Try to remove the ${objdir}s in the directories where we deleted files      for dir in $rmdirs; do @@ -8698,16 +9608,16 @@ func_mode_uninstall ()      exit $exit_status  } -{ test "$mode" = uninstall || test "$mode" = clean; } && +{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&      func_mode_uninstall ${1+"$@"} -test -z "$mode" && { +test -z "$opt_mode" && {    help="$generic_help"    func_fatal_help "you must specify a MODE"  }  test -z "$exec_cmd" && \ -  func_fatal_help "invalid operation mode \`$mode'" +  func_fatal_help "invalid operation mode \`$opt_mode'"  if test -n "$exec_cmd"; then    eval exec "$exec_cmd" diff --git a/aux-build/missing b/aux-build/missing index e7ef83a..28055d2 100755 --- a/aux-build/missing +++ b/aux-build/missing @@ -1,10 +1,10 @@  #! /bin/sh  # Common stub for a few missing GNU programs while installing. -scriptversion=2003-09-02.23 +scriptversion=2009-04-28.21; # UTC -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003  -#   Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, +# 2008, 2009 Free Software Foundation, Inc.  # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.  # This program is free software; you can redistribute it and/or modify @@ -18,9 +18,7 @@ scriptversion=2003-09-02.23  # GNU General Public License for more details.  # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. +# along with this program.  If not, see <http://www.gnu.org/licenses/>.  # As a special exception to the GNU General Public License, if you  # distribute this file as part of a program that contains a @@ -33,6 +31,8 @@ if test $# -eq 0; then  fi  run=: +sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' +sed_minuso='s/.* -o \([^ ]*\).*/\1/p'  # In the cases where this matters, `missing' is being run in the  # srcdir already. @@ -44,7 +44,7 @@ fi  msg="missing on your system" -case "$1" in +case $1 in  --run)    # Try to run requested program, and just exit if it succeeds.    run= @@ -60,11 +60,6 @@ case "$1" in      msg="probably too old"    fi    ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case "$1" in    -h|--h|--he|--hel|--help)      echo "\ @@ -82,6 +77,7 @@ Supported PROGRAM values:    aclocal      touch file \`aclocal.m4'    autoconf     touch file \`configure'    autoheader   touch file \`config.h.in' +  autom4te     touch the output file, or create a stub one    automake     touch all \`Makefile.in' files    bison        create \`y.tab.[ch]', if possible, from existing .[ch]    flex         create \`lex.yy.c', if possible, from existing .c @@ -91,11 +87,16 @@ Supported PROGRAM values:    tar          try tar, gnutar, gtar, then tar without non-portable flags    yacc         create \`y.tab.[ch]', if possible, from existing .[ch] +Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and +\`g' are ignored when checking the name. +  Send bug reports to <bug-automake@gnu.org>." +    exit $?      ;;    -v|--v|--ve|--ver|--vers|--versi|--versio|--version)      echo "missing $scriptversion (GNU Automake)" +    exit $?      ;;    -*) @@ -104,12 +105,49 @@ Send bug reports to <bug-automake@gnu.org>."      exit 1      ;; -  aclocal*) +esac + +# normalize program name to check for. +program=`echo "$1" | sed ' +  s/^gnu-//; t +  s/^gnu//; t +  s/^g//; t'` + +# Now exit if we have it, but it failed.  Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program).  This is about non-GNU programs, so use $1 not +# $program. +case $1 in +  lex*|yacc*) +    # Not GNU programs, they don't have --version. +    ;; + +  tar*) +    if test -n "$run"; then +       echo 1>&2 "ERROR: \`tar' requires --run" +       exit 1 +    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then +       exit 1 +    fi +    ;; + +  *)      if test -z "$run" && ($1 --version) > /dev/null 2>&1; then         # We have it, but it failed.         exit 1 +    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then +       # Could not run --version or --help.  This is probably someone +       # running `$TOOL --version' or `$TOOL --help' to check whether +       # $TOOL exists and not knowing $TOOL uses missing. +       exit 1      fi +    ;; +esac +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case $program in +  aclocal*)      echo 1>&2 "\  WARNING: \`$1' is $msg.  You should only need it if           you modified \`acinclude.m4' or \`${configure_ac}'.  You might want @@ -118,12 +156,7 @@ WARNING: \`$1' is $msg.  You should only need it if      touch aclocal.m4      ;; -  autoconf) -    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then -       # We have it, but it failed. -       exit 1 -    fi - +  autoconf*)      echo 1>&2 "\  WARNING: \`$1' is $msg.  You should only need it if           you modified \`${configure_ac}'.  You might want to install the @@ -132,12 +165,7 @@ WARNING: \`$1' is $msg.  You should only need it if      touch configure      ;; -  autoheader) -    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then -       # We have it, but it failed. -       exit 1 -    fi - +  autoheader*)      echo 1>&2 "\  WARNING: \`$1' is $msg.  You should only need it if           you modified \`acconfig.h' or \`${configure_ac}'.  You might want @@ -147,7 +175,7 @@ WARNING: \`$1' is $msg.  You should only need it if      test -z "$files" && files="config.h"      touch_files=      for f in $files; do -      case "$f" in +      case $f in        *:*) touch_files="$touch_files "`echo "$f" |  				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;        *) touch_files="$touch_files $f.in";; @@ -157,11 +185,6 @@ WARNING: \`$1' is $msg.  You should only need it if      ;;    automake*) -    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then -       # We have it, but it failed. -       exit 1 -    fi -      echo 1>&2 "\  WARNING: \`$1' is $msg.  You should only need it if           you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. @@ -172,12 +195,7 @@ WARNING: \`$1' is $msg.  You should only need it if  	   while read f; do touch "$f"; done      ;; -  autom4te) -    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then -       # We have it, but it failed. -       exit 1 -    fi - +  autom4te*)      echo 1>&2 "\  WARNING: \`$1' is needed, but is $msg.           You might have modified some files without having the @@ -185,8 +203,8 @@ WARNING: \`$1' is needed, but is $msg.           You can get \`$1' as part of \`Autoconf' from any GNU           archive site." -    file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` -    test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` +    file=`echo "$*" | sed -n "$sed_output"` +    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`      if test -f "$file"; then  	touch $file      else @@ -200,90 +218,78 @@ WARNING: \`$1' is needed, but is $msg.      fi      ;; -  bison|yacc) +  bison*|yacc*)      echo 1>&2 "\  WARNING: \`$1' $msg.  You should only need it if           you modified a \`.y' file.  You may need the \`Bison' package           in order for those modifications to take effect.  You can get           \`Bison' from any GNU archive site."      rm -f y.tab.c y.tab.h -    if [ $# -ne 1 ]; then +    if test $# -ne 1; then          eval LASTARG="\${$#}" -	case "$LASTARG" in +	case $LASTARG in  	*.y)  	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` -	    if [ -f "$SRCFILE" ]; then +	    if test -f "$SRCFILE"; then  	         cp "$SRCFILE" y.tab.c  	    fi  	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` -	    if [ -f "$SRCFILE" ]; then +	    if test -f "$SRCFILE"; then  	         cp "$SRCFILE" y.tab.h  	    fi  	  ;;  	esac      fi -    if [ ! -f y.tab.h ]; then +    if test ! -f y.tab.h; then  	echo >y.tab.h      fi -    if [ ! -f y.tab.c ]; then +    if test ! -f y.tab.c; then  	echo 'main() { return 0; }' >y.tab.c      fi      ;; -  lex|flex) +  lex*|flex*)      echo 1>&2 "\  WARNING: \`$1' is $msg.  You should only need it if           you modified a \`.l' file.  You may need the \`Flex' package           in order for those modifications to take effect.  You can get           \`Flex' from any GNU archive site."      rm -f lex.yy.c -    if [ $# -ne 1 ]; then +    if test $# -ne 1; then          eval LASTARG="\${$#}" -	case "$LASTARG" in +	case $LASTARG in  	*.l)  	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` -	    if [ -f "$SRCFILE" ]; then +	    if test -f "$SRCFILE"; then  	         cp "$SRCFILE" lex.yy.c  	    fi  	  ;;  	esac      fi -    if [ ! -f lex.yy.c ]; then +    if test ! -f lex.yy.c; then  	echo 'main() { return 0; }' >lex.yy.c      fi      ;; -  help2man) -    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then -       # We have it, but it failed. -       exit 1 -    fi - +  help2man*)      echo 1>&2 "\  WARNING: \`$1' is $msg.  You should only need it if  	 you modified a dependency of a manual page.  You may need the  	 \`Help2man' package in order for those modifications to take  	 effect.  You can get \`Help2man' from any GNU archive site." -    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` -    if test -z "$file"; then -	file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` -    fi -    if [ -f "$file" ]; then +    file=`echo "$*" | sed -n "$sed_output"` +    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` +    if test -f "$file"; then  	touch $file      else  	test -z "$file" || exec >$file  	echo ".ab help2man is required to generate this page" -	exit 1 +	exit $?      fi      ;; -  makeinfo) -    if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then -       # We have makeinfo, but it failed. -       exit 1 -    fi - +  makeinfo*)      echo 1>&2 "\  WARNING: \`$1' is $msg.  You should only need it if           you modified a \`.texi' or \`.texinfo' file, or any other file @@ -291,20 +297,29 @@ WARNING: \`$1' is $msg.  You should only need it if           call might also be the consequence of using a buggy \`make' (AIX,           DU, IRIX).  You might want to install the \`Texinfo' package or           the \`GNU make' package.  Grab either from any GNU archive site." -    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` +    # The file to touch is that specified with -o ... +    file=`echo "$*" | sed -n "$sed_output"` +    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`      if test -z "$file"; then -      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` -      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` +      # ... or it is the one specified with @setfilename ... +      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` +      file=`sed -n ' +	/^@setfilename/{ +	  s/.* \([^ ]*\) *$/\1/ +	  p +	  q +	}' $infile` +      # ... or it is derived from the source name (dir/f.texi becomes f.info) +      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info      fi +    # If the file does not exist, the user really needs makeinfo; +    # let's fail without touching anything. +    test -f $file || exit 1      touch $file      ;; -  tar) +  tar*)      shift -    if test -n "$run"; then -      echo 1>&2 "ERROR: \`tar' requires --run" -      exit 1 -    fi      # We have already tried tar in the generic part.      # Look for gnutar/gtar before invocation to avoid ugly error @@ -317,13 +332,13 @@ WARNING: \`$1' is $msg.  You should only need it if      fi      firstarg="$1"      if shift; then -	case "$firstarg" in +	case $firstarg in  	*o*)  	    firstarg=`echo "$firstarg" | sed s/o//`  	    tar "$firstarg" "$@" && exit 0  	    ;;  	esac -	case "$firstarg" in +	case $firstarg in  	*h*)  	    firstarg=`echo "$firstarg" | sed s/h//`  	    tar "$firstarg" "$@" && exit 0 @@ -356,5 +371,6 @@ exit 0  # eval: (add-hook 'write-file-hooks 'time-stamp)  # time-stamp-start: "scriptversion="  # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC"  # End: diff --git a/aux-build/mkinstalldirs b/aux-build/mkinstalldirs index 5d26a48..4191a45 100755 --- a/aux-build/mkinstalldirs +++ b/aux-build/mkinstalldirs @@ -1,7 +1,7 @@  #! /bin/sh  # mkinstalldirs --- make directory hierarchy -scriptversion=2005-02-02.21 +scriptversion=2009-04-28.21; # UTC  # Original author: Noah Friedman <friedman@prep.ai.mit.edu>  # Created: 1993-05-16 @@ -11,8 +11,11 @@ scriptversion=2005-02-02.21  # bugs to <bug-automake@gnu.org> or send patches to  # <automake-patches@gnu.org>. +nl=' +' +IFS=" ""	$nl"  errstatus=0 -dirmode="" +dirmode=  usage="\  Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... @@ -103,13 +106,21 @@ esac  for file  do -  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` +  case $file in +    /*) pathcomp=/ ;; +    *)  pathcomp= ;; +  esac +  oIFS=$IFS +  IFS=/ +  set fnord $file    shift +  IFS=$oIFS -  pathcomp=    for d    do -    pathcomp="$pathcomp$d" +    test "x$d" = x && continue + +    pathcomp=$pathcomp$d      case $pathcomp in        -*) pathcomp=./$pathcomp ;;      esac @@ -124,7 +135,7 @@ do        else  	if test ! -z "$dirmode"; then  	  echo "chmod $dirmode $pathcomp" -	  lasterr="" +	  lasterr=  	  chmod "$dirmode" "$pathcomp" || lasterr=$?  	  if test ! -z "$lasterr"; then @@ -134,7 +145,7 @@ do        fi      fi -    pathcomp="$pathcomp/" +    pathcomp=$pathcomp/    done  done @@ -146,5 +157,6 @@ exit $errstatus  # eval: (add-hook 'write-file-hooks 'time-stamp)  # time-stamp-start: "scriptversion="  # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC"  # End: diff --git a/aux-build/texinfo.tex b/aux-build/texinfo.tex index c93912a..9140826 100644 --- a/aux-build/texinfo.tex +++ b/aux-build/texinfo.tex @@ -1,18 +1,18 @@  % texinfo.tex -- TeX macros to handle Texinfo files. -% +%   % Load plain if necessary, i.e., if running under initex.  \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi  % -\def\texinfoversion{2004-11-25.16} +\def\texinfoversion{2009-08-14.15}  % -% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, -% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software -% Foundation, Inc. +% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, +% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, +% 2007, 2008, 2009 Free Software Foundation, Inc.  % -% This texinfo.tex file is free software; you can redistribute it and/or +% This texinfo.tex file is free software: you can redistribute it and/or  % modify it under the terms of the GNU General Public License as -% published by the Free Software Foundation; either version 2, or (at -% your option) any later version. +% published by the Free Software Foundation, either version 3 of the +% License, or (at your option) any later version.  %  % This texinfo.tex file is distributed in the hope that it will be  % useful, but WITHOUT ANY WARRANTY; without even the implied warranty @@ -20,9 +20,7 @@  % General Public License for more details.  %  % You should have received a copy of the GNU General Public License -% along with this texinfo.tex file; see the file COPYING.  If not, write -% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -% Boston, MA 02111-1307, USA. +% along with this program.  If not, see <http://www.gnu.org/licenses/>.  %  % As a special exception, when this file is read by TeX when processing  % a Texinfo source document, you may use the result without @@ -67,7 +65,7 @@  \everyjob{\message{[Texinfo version \texinfoversion]}%    \catcode`+=\active \catcode`\_=\active} -\message{Basics,} +  \chardef\other=12  % We never want plain's \outer definition of \+ in Texinfo. @@ -99,6 +97,10 @@  \let\ptexslash=\/  \let\ptexstar=\*  \let\ptext=\t +\let\ptextop=\top +{\catcode`\'=\active +\global\let\ptexquoteright'}% Math-mode def from plain.tex. +\let\ptexraggedright=\raggedright  % If this character appears in an error message or help string, it  % starts a new line in the output. @@ -153,20 +155,22 @@  \ifx\putwordDefopt\undefined    \gdef\putwordDefopt{User Option}\fi  \ifx\putwordDeffunc\undefined   \gdef\putwordDeffunc{Function}\fi -% In some macros, we cannot use the `\? notation---the left quote is -% in some cases the escape char. +% Since the category of space is not known, we have to be careful. +\chardef\spacecat = 10 +\def\spaceisspace{\catcode`\ =\spacecat} + +% sometimes characters are active, so we need control sequences.  \chardef\colonChar = `\:  \chardef\commaChar = `\, +\chardef\dashChar  = `\-  \chardef\dotChar   = `\.  \chardef\exclamChar= `\! +\chardef\lquoteChar= `\`  \chardef\questChar = `\? +\chardef\rquoteChar= `\'  \chardef\semiChar  = `\;  \chardef\underChar = `\_ -\chardef\spaceChar = `\ % -\chardef\spacecat = 10 -\def\spaceisspace{\catcode\spaceChar=\spacecat} -  % Ignore a token.  %  \def\gobble#1{} @@ -277,6 +281,50 @@  \newdimen\cornerthick \cornerthick=.3pt  \newdimen\topandbottommargin \topandbottommargin=.75in +% Output a mark which sets \thischapter, \thissection and \thiscolor. +% We dump everything together because we only have one kind of mark. +% This works because we only use \botmark / \topmark, not \firstmark. +% +% A mark contains a subexpression of the \ifcase ... \fi construct. +% \get*marks macros below extract the needed part using \ifcase. +% +% Another complication is to let the user choose whether \thischapter +% (\thissection) refers to the chapter (section) in effect at the top +% of a page, or that at the bottom of a page.  The solution is +% described on page 260 of The TeXbook.  It involves outputting two +% marks for the sectioning macros, one before the section break, and +% one after.  I won't pretend I can describe this better than DEK... +\def\domark{% +  \toks0=\expandafter{\lastchapterdefs}% +  \toks2=\expandafter{\lastsectiondefs}% +  \toks4=\expandafter{\prevchapterdefs}% +  \toks6=\expandafter{\prevsectiondefs}% +  \toks8=\expandafter{\lastcolordefs}% +  \mark{% +                   \the\toks0 \the\toks2 +      \noexpand\or \the\toks4 \the\toks6 +    \noexpand\else \the\toks8 +  }% +} +% \topmark doesn't work for the very first chapter (after the title +% page or the contents), so we use \firstmark there -- this gets us +% the mark with the chapter defs, unless the user sneaks in, e.g., +% @setcolor (or @url, or @link, etc.) between @contents and the very +% first @chapter. +\def\gettopheadingmarks{% +  \ifcase0\topmark\fi +  \ifx\thischapter\empty \ifcase0\firstmark\fi \fi +} +\def\getbottomheadingmarks{\ifcase1\botmark\fi} +\def\getcolormarks{\ifcase2\topmark\fi} + +% Avoid "undefined control sequence" errors. +\def\lastchapterdefs{} +\def\lastsectiondefs{} +\def\prevchapterdefs{} +\def\prevsectiondefs{} +\def\lastcolordefs{} +  % Main output routine.  \chardef\PAGE = 255  \output = {\onepageout{\pagecontents\PAGE}} @@ -294,7 +342,9 @@    %    % Do this outside of the \shipout so @code etc. will be expanded in    % the headline as they should be, not taken literally (outputting ''code). +  \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi    \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% +  \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi    \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%    %    {% @@ -302,10 +352,14 @@      % take effect in \write's, yet the group defined by the \vbox ends      % before the \shipout runs.      % -    \escapechar = `\\     % use backslash in output files.      \indexdummies         % don't expand commands in the output.      \normalturnoffactive  % \ in index entries must not stay \, e.g., if -                   % the page break happens to be in the middle of an example. +               % the page break happens to be in the middle of an example. +               % We don't want .vr (or whatever) entries like this: +               % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}} +               % "\acronym" won't work when it's read back in; +               % it needs to be +               % {\code {{\tt \backslashcurfont }acronym}      \shipout\vbox{%        % Do this early so pdf references go to the beginning of the page.        \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi @@ -333,9 +387,9 @@        \pagebody{#1}%        \ifdim\ht\footlinebox > 0pt          % Only leave this space if the footline is nonempty. -        % (We lessened \vsize for it in \oddfootingxxx.) +        % (We lessened \vsize for it in \oddfootingyyy.)          % The \baselineskip=24pt in plain's \makefootline has no effect. -        \vskip 2\baselineskip +        \vskip 24pt          \unvbox\footlinebox        \fi        % @@ -356,7 +410,7 @@        \egroup % \vbox from first cropmarks clause        \fi      }% end of \shipout\vbox -  }% end of group with \normalturnoffactive +  }% end of group with \indexdummies    \advancepageno    \ifnum\outputpenalty>-20000 \else\dosupereject\fi  } @@ -369,7 +423,7 @@  % marginal hacks, juha@viisa.uucp (Juha Takala)  \ifvoid\margin\else % marginal info is present    \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi -\dimen@=\dp#1 \unvbox#1 +\dimen@=\dp#1\relax \unvbox#1\relax  \ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi  \ifr@ggedbottom \kern-\dimen@ \vfil \fi}  } @@ -391,7 +445,7 @@  %  \def\parsearg{\parseargusing{}}  \def\parseargusing#1#2{% -  \def\next{#2}% +  \def\argtorun{#2}%    \begingroup      \obeylines      \spaceisspace @@ -410,7 +464,7 @@  \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}  \def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} -% Each occurence of `\^^M' or `<space>\^^M' is replaced by a single space. +% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.  %  % \argremovec might leave us with trailing space, e.g.,  %    @end itemize  @c foo @@ -422,8 +476,7 @@  \def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%    \def\temp{#3}%    \ifx\temp\empty -    % We cannot use \next here, as it holds the macro to run; -    % thus we reuse \temp. +    % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:      \let\temp\finishparsearg    \else      \let\temp\argcheckspaces @@ -435,14 +488,14 @@  % If a _delimited_ argument is enclosed in braces, they get stripped; so  % to get _exactly_ the rest of the line, we had to prevent such situation.  % We prepended an \empty token at the very beginning and we expand it now, -% just before passing the control to \next. -% (Similarily, we have to think about #3 of \argcheckspacesY above: it is +% just before passing the control to \argtorun. +% (Similarly, we have to think about #3 of \argcheckspacesY above: it is  % either the null string, or it ends with \^^M---thus there is no danger  % that a pair of braces would be stripped.  %  % But first, we have to remove the trailing space token.  % -\def\finishparsearg#1 \ArgTerm{\expandafter\next\expandafter{#1}} +\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}  % \parseargdef\foo{...}  %	is roughly equivalent to @@ -493,12 +546,12 @@  % used to check whether the current environment is the one expected.  %  % Non-false conditionals (@iftex, @ifset) don't fit into this, so they -% are not treated as enviroments; they don't open a group.  (The +% are not treated as environments; they don't open a group.  (The  % implementation of @end takes care not to call \endgroup in this  % special case.) -% At runtime, environments start with this: +% At run-time, environments start with this:  \def\startenvironment#1{\begingroup\def\thisenv{#1}}  % initialize  \let\thisenv\empty @@ -516,7 +569,7 @@    \fi  } -% Evironment mismatch, #1 expected: +% Environment mismatch, #1 expected:  \def\badenverr{%    \errhelp = \EMsimple    \errmessage{This command can appear only \inenvironment\temp, @@ -566,7 +619,7 @@  \let\}=\myrbrace  \begingroup    % Definitions to produce \{ and \} commands for indices, -  % and @{ and @} for the aux file. +  % and @{ and @} for the aux/toc files.    \catcode`\{ = \other \catcode`\} = \other    \catcode`\[ = 1 \catcode`\] = 2    \catcode`\! = 0 \catcode`\\ = \other @@ -600,8 +653,8 @@  \def\jmacro{j}  \def\dotless#1{%    \def\temp{#1}% -  \ifx\temp\imacro \ptexi -  \else\ifx\temp\jmacro \j +  \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi +  \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi    \else \errmessage{@dotless can be used only with i or j}%    \fi\fi  } @@ -647,13 +700,28 @@  \let\/=\allowbreak  % @. is an end-of-sentence period. -\def\.{.\spacefactor=3000 } +\def\.{.\spacefactor=\endofsentencespacefactor\space}  % @! is an end-of-sentence bang. -\def\!{!\spacefactor=3000 } +\def\!{!\spacefactor=\endofsentencespacefactor\space}  % @? is an end-of-sentence query. -\def\?{?\spacefactor=3000 } +\def\?{?\spacefactor=\endofsentencespacefactor\space} + +% @frenchspacing on|off  says whether to put extra space after punctuation. +% +\def\onword{on} +\def\offword{off} +% +\parseargdef\frenchspacing{% +  \def\temp{#1}% +  \ifx\temp\onword \plainfrenchspacing +  \else\ifx\temp\offword \plainnonfrenchspacing +  \else +    \errhelp = \EMsimple +    \errmessage{Unknown @frenchspacing option `\temp', must be on/off}% +  \fi\fi +}  % @w prevents a word break.  Without the \leavevmode, @w at the  % beginning of a paragraph, when TeX is still in vertical mode, would @@ -852,15 +920,20 @@ where each line of input produces a line of output.}    \temp  } -% @include file    insert text of that file as input. +% @include FILE -- \input text of FILE.  %  \def\include{\parseargusing\filenamecatcodes\includezzz}  \def\includezzz#1{%    \pushthisfilestack    \def\thisfile{#1}%    {% -    \makevalueexpandable -    \def\temp{\input #1 }% +    \makevalueexpandable  % we want to expand any @value in FILE. +    \turnoffactive        % and allow special characters in the expansion +    \indexnofonts         % Allow `@@' and other weird things in file names. +    \edef\temp{\noexpand\input #1 }% +    % +    % This trickery is to read FILE outside of a group, in case it makes +    % definitions, etc.      \expandafter    }\temp    \popthisfilestack @@ -875,6 +948,8 @@ where each line of input produces a line of output.}    \catcode`>=\other    \catcode`+=\other    \catcode`-=\other +  \catcode`\`=\other +  \catcode`\'=\other  }  \def\pushthisfilestack{% @@ -1031,9 +1106,9 @@ where each line of input produces a line of output.}  % _ active, and distinguish by seeing if the current family is \slfam,  % which is what @var uses.  { -  \catcode\underChar = \active +  \catcode`\_ = \active    \gdef\mathunderscore{% -    \catcode\underChar=\active +    \catcode`\_=\active      \def_{\ifnum\fam=\slfam \_\else\sb\fi}%    }  } @@ -1050,6 +1125,16 @@ where each line of input produces a line of output.}    \mathunderscore    \let\\ = \mathbackslash    \mathactive +  % make the texinfo accent commands work in math mode +  \let\"=\ddot +  \let\'=\acute +  \let\==\bar +  \let\^=\hat +  \let\`=\grave +  \let\u=\breve +  \let\v=\check +  \let\~=\tilde +  \let\dotaccent=\dot    $\finishmath  }  \def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex. @@ -1063,28 +1148,41 @@ where each line of input produces a line of output.}    \catcode`< = \active    \catcode`> = \active    \catcode`+ = \active +  \catcode`' = \active    \gdef\mathactive{%      \let^ = \ptexhat      \let< = \ptexless      \let> = \ptexgtr      \let+ = \ptexplus +    \let' = \ptexquoteright    }  } -% @bullet and @minus need the same treatment as @math, just above. +% Some math mode symbols.  \def\bullet{$\ptexbullet$} -\def\minus{$-$} +\def\geq{\ifmmode \ge\else $\ge$\fi} +\def\leq{\ifmmode \le\else $\le$\fi} +\def\minus{\ifmmode -\else $-$\fi}  % @dots{} outputs an ellipsis using the current font. -% We do .5em per period so that it has the same spacing in a typewriter -% font as three actual period characters. +% We do .5em per period so that it has the same spacing in the cm +% typewriter fonts as three actual period characters; on the other hand, +% in other typewriter fonts three periods are wider than 1.5em.  So do +% whichever is larger.  %  \def\dots{%    \leavevmode -  \hbox to 1.5em{% -    \hskip 0pt plus 0.25fil -    .\hfil.\hfil.% -    \hskip 0pt plus 0.5fil +  \setbox0=\hbox{...}% get width of three periods +  \ifdim\wd0 > 1.5em +    \dimen0 = \wd0 +  \else +    \dimen0 = 1.5em +  \fi +  \hbox to \dimen0{% +    \hskip 0pt plus.25fil +    .\hskip 0pt plus1fil +    .\hskip 0pt plus1fil +    .\hskip 0pt plus.5fil    }%  } @@ -1092,7 +1190,7 @@ where each line of input produces a line of output.}  %  \def\enddots{%    \dots -  \spacefactor=3000 +  \spacefactor=\endofsentencespacefactor  }  % @comma{} is so commas can be inserted into text without messing up @@ -1176,40 +1274,182 @@ where each line of input produces a line of output.}      \fi    \fi  \fi -% + +% PDF uses PostScript string constants for the names of xref targets, +% for display in the outlines, and in other places.  Thus, we have to +% double any backslashes.  Otherwise, a name like "\node" will be +% interpreted as a newline (\n), followed by o, d, e.  Not good. +% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html +% (and related messages, the final outcome is that it is up to the TeX +% user to double the backslashes and otherwise make the string valid, so +% that's what we do). + +% double active backslashes. +% +{\catcode`\@=0 \catcode`\\=\active + @gdef@activebackslashdouble{% +   @catcode`@\=@active +   @let\=@doublebackslash} +} + +% To handle parens, we must adopt a different approach, since parens are +% not active characters.  hyperref.dtx (which has the same problem as +% us) handles it with this amazing macro to replace tokens, with minor +% changes for Texinfo.  It is included here under the GPL by permission +% from the author, Heiko Oberdiek. +% +% #1 is the tokens to replace. +% #2 is the replacement. +% #3 is the control sequence with the string. +% +\def\HyPsdSubst#1#2#3{% +  \def\HyPsdReplace##1#1##2\END{% +    ##1% +    \ifx\\##2\\% +    \else +      #2% +      \HyReturnAfterFi{% +        \HyPsdReplace##2\END +      }% +    \fi +  }% +  \xdef#3{\expandafter\HyPsdReplace#3#1\END}% +} +\long\def\HyReturnAfterFi#1\fi{\fi#1} + +% #1 is a control sequence in which to do the replacements. +\def\backslashparens#1{% +  \xdef#1{#1}% redefine it as its expansion; the definition is simply +             % \lastnode when called from \setref -> \pdfmkdest. +  \HyPsdSubst{(}{\realbackslash(}{#1}% +  \HyPsdSubst{)}{\realbackslash)}{#1}% +} + +\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images +with PDF output, and none of those formats could be found.  (.eps cannot +be supported due to the design of the PDF format; use regular TeX (DVI +output) for that.)} +  \ifpdf -  \input pdfcolor -  \pdfcatalog{/PageMode /UseOutlines}% +  % +  % Color manipulation macros based on pdfcolor.tex, +  % except using rgb instead of cmyk; the latter is said to render as a +  % very dark gray on-screen and a very dark halftone in print, instead +  % of actual black. +  \def\rgbDarkRed{0.50 0.09 0.12} +  \def\rgbBlack{0 0 0} +  % +  % k sets the color for filling (usual text, etc.); +  % K sets the color for stroking (thin rules, e.g., normal _'s). +  \def\pdfsetcolor#1{\pdfliteral{#1 rg  #1 RG}} +  % +  % Set color, and create a mark which defines \thiscolor accordingly, +  % so that \makeheadline knows which color to restore. +  \def\setcolor#1{% +    \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}% +    \domark +    \pdfsetcolor{#1}% +  } +  % +  \def\maincolor{\rgbBlack} +  \pdfsetcolor{\maincolor} +  \edef\thiscolor{\maincolor} +  \def\lastcolordefs{} +  % +  \def\makefootline{% +    \baselineskip24pt +    \line{\pdfsetcolor{\maincolor}\the\footline}% +  } +  % +  \def\makeheadline{% +    \vbox to 0pt{% +      \vskip-22.5pt +      \line{% +        \vbox to8.5pt{}% +        % Extract \thiscolor definition from the marks. +        \getcolormarks +        % Typeset the headline with \maincolor, then restore the color. +        \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% +      }% +      \vss +    }% +    \nointerlineskip +  } +  % +  % +  \pdfcatalog{/PageMode /UseOutlines} +  % +  % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).    \def\dopdfimage#1#2#3{% -    \def\imagewidth{#2}% -    \def\imageheight{#3}% -    % without \immediate, pdftex seg faults when the same image is +    \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% +    \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% +    % +    % pdftex (and the PDF format) support .png, .jpg, .pdf (among +    % others).  Let's try in that order. +    \let\pdfimgext=\empty +    \begingroup +      \openin 1 #1.png \ifeof 1 +        \openin 1 #1.jpg \ifeof 1 +          \openin 1 #1.jpeg \ifeof 1 +            \openin 1 #1.JPG \ifeof 1 +              \openin 1 #1.pdf \ifeof 1 +                \openin 1 #1.PDF \ifeof 1 +                  \errhelp = \nopdfimagehelp +                  \errmessage{Could not find image file #1 for pdf}% +                \else \gdef\pdfimgext{PDF}% +                \fi +              \else \gdef\pdfimgext{pdf}% +              \fi +            \else \gdef\pdfimgext{JPG}% +            \fi +          \else \gdef\pdfimgext{jpeg}% +          \fi +        \else \gdef\pdfimgext{jpg}% +        \fi +      \else \gdef\pdfimgext{png}% +      \fi +      \closein 1 +    \endgroup +    % +    % without \immediate, ancient pdftex seg faults when the same image is      % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)      \ifnum\pdftexversion < 14        \immediate\pdfimage      \else        \immediate\pdfximage      \fi -      \ifx\empty\imagewidth\else width \imagewidth \fi -      \ifx\empty\imageheight\else height \imageheight \fi +      \ifdim \wd0 >0pt width \imagewidth \fi +      \ifdim \wd2 >0pt height \imageheight \fi        \ifnum\pdftexversion<13 -         #1.pdf% +         #1.\pdfimgext         \else -         {#1.pdf}% +         {#1.\pdfimgext}%         \fi      \ifnum\pdftexversion < 14 \else        \pdfrefximage \pdflastximage      \fi} +  %    \def\pdfmkdest#1{{% -    % We have to set dummies so commands such as @code in a section title -    % aren't expanded. -    \atdummies -    \normalturnoffactive -    \pdfdest name{#1} xyz% +    % We have to set dummies so commands such as @code, and characters +    % such as \, aren't expanded when present in a section title. +    \indexnofonts +    \turnoffactive +    \activebackslashdouble +    \makevalueexpandable +    \def\pdfdestname{#1}% +    \backslashparens\pdfdestname +    \safewhatsit{\pdfdest name{\pdfdestname} xyz}%    }} +  % +  % used to mark target names; must be expandable.    \def\pdfmkpgn#1{#1} -  \let\linkcolor = \Blue  % was Cyan, but that seems light? -  \def\endlink{\Black\pdfendlink} +  % +  % by default, use a color that is dark enough to print on paper as +  % nearly black, but still distinguishable for online viewing. +  \def\urlcolor{\rgbDarkRed} +  \def\linkcolor{\rgbDarkRed} +  \def\endlink{\setcolor{\maincolor}\pdfendlink} +  %    % Adding outlines to PDF; macros for calculating structure of outlines    % come from Petr Olsak    \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% @@ -1218,20 +1458,31 @@ where each line of input produces a line of output.}      \advance\tempnum by 1      \expandafter\xdef\csname#1\endcsname{\the\tempnum}}    % -  % #1 is the section text.  #2 is the pdf expression for the number -  % of subentries (or empty, for subsubsections).  #3 is the node -  % text, which might be empty if this toc entry had no -  % corresponding node.  #4 is the page number. +  % #1 is the section text, which is what will be displayed in the +  % outline by the pdf viewer.  #2 is the pdf expression for the number +  % of subentries (or empty, for subsubsections).  #3 is the node text, +  % which might be empty if this toc entry had no corresponding node. +  % #4 is the page number    %    \def\dopdfoutline#1#2#3#4{%      % Generate a link to the node text if that exists; else, use the      % page number.  We could generate a destination for the section      % text in the case where a section has no node, but it doesn't -    % seem worthwhile, since most documents are normally structured. +    % seem worth the trouble, since most documents are normally structured.      \def\pdfoutlinedest{#3}% -    \ifx\pdfoutlinedest\empty \def\pdfoutlinedest{#4}\fi +    \ifx\pdfoutlinedest\empty +      \def\pdfoutlinedest{#4}% +    \else +      % Doubled backslashes in the name. +      {\activebackslashdouble \xdef\pdfoutlinedest{#3}% +       \backslashparens\pdfoutlinedest}% +    \fi      % -    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{#1}% +    % Also double the backslashes in the display string. +    {\activebackslashdouble \xdef\pdfoutlinetext{#1}% +     \backslashparens\pdfoutlinetext}% +    % +    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%    }    %    \def\pdfmakeoutlines{% @@ -1272,7 +1523,7 @@ where each line of input produces a line of output.}        \def\unnsecentry{\numsecentry}%        \def\unnsubsecentry{\numsubsecentry}%        \def\unnsubsubsecentry{\numsubsubsecentry}% -      \input \jobname.toc +      \readdatafile{toc}%        %        % Read toc second time, this time actually producing the outlines.        % The `-' means take the \expnumber as the absolute number of @@ -1298,41 +1549,12 @@ where each line of input produces a line of output.}        % their "best" equivalent, based on the @documentencoding.  Right        % now, I guess we'll just let the pdf reader have its way.        \indexnofonts -      \turnoffactive -      \input \jobname.toc +      \setupdatafile +      \catcode`\\=\active \otherbackslash +      \input \tocreadfilename      \endgroup    }    % -  \def\makelinks #1,{% -    \def\params{#1}\def\E{END}% -    \ifx\params\E -      \let\nextmakelinks=\relax -    \else -      \let\nextmakelinks=\makelinks -      \ifnum\lnkcount>0,\fi -      \picknum{#1}% -      \startlink attr{/Border [0 0 0]} -        goto name{\pdfmkpgn{\the\pgn}}% -      \linkcolor #1% -      \advance\lnkcount by 1% -      \endlink -    \fi -    \nextmakelinks -  } -  \def\picknum#1{\expandafter\pn#1} -  \def\pn#1{% -    \def\p{#1}% -    \ifx\p\lbrace -      \let\nextpn=\ppn -    \else -      \let\nextpn=\ppnn -      \def\first{#1} -    \fi -    \nextpn -  } -  \def\ppn#1{\pgn=#1\gobble} -  \def\ppnn{\pgn=\first} -  \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,}    \def\skipspaces#1{\def\PP{#1}\def\D{|}%      \ifx\PP\D\let\nextsp\relax      \else\let\nextsp\skipspaces @@ -1347,11 +1569,23 @@ where each line of input produces a line of output.}    \else      \let \startlink \pdfstartlink    \fi +  % make a live url in pdf output.    \def\pdfurl#1{%      \begingroup -      \normalturnoffactive\def\@{@}% +      % it seems we really need yet another set of dummies; have not +      % tried to figure out what each command should do in the context +      % of @url.  for now, just make @/ a no-op, that's the only one +      % people have actually reported a problem with. +      % +      \normalturnoffactive +      \def\@{@}% +      \let\/=\empty        \makevalueexpandable -      \leavevmode\Red +      % do we want to go so far as to use \indexnofonts instead of just +      % special-casing \var here? +      \def\var##1{##1}% +      % +      \leavevmode\setcolor{\urlcolor}%        \startlink attr{/Border [0 0 0]}%          user{/Subtype /Link /A << /S /URI /URI (#1) >>}%      \endgroup} @@ -1378,13 +1612,15 @@ where each line of input produces a line of output.}      {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}    \def\pdflink#1{%      \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} -    \linkcolor #1\endlink} +    \setcolor{\linkcolor}#1\endlink}    \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}  \else +  % non-pdf mode    \let\pdfmkdest = \gobble    \let\pdfurl = \gobble    \let\endlink = \relax -  \let\linkcolor = \relax +  \let\setcolor = \gobble +  \let\pdfsetcolor = \gobble    \let\pdfmakeoutlines = \relax  \fi  % \ifx\pdfoutput @@ -1410,6 +1646,10 @@ where each line of input produces a line of output.}  \def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}  \def\tt{\fam=\ttfam \setfontstyle{tt}} +% Unfortunately, we have to override this for titles and the like, since +% in those cases "rm" is bold.  Sigh. +\def\rmisbold{\rm\def\curfontstyle{bf}} +  % Texinfo sort of supports the sans serif font style, which plain TeX does not.  % So we set up a \sf.  \newfam\sffam @@ -1419,6 +1659,7 @@ where each line of input produces a line of output.}  % We don't need math for this font style.  \def\ttsl{\setfontstyle{ttsl}} +  % Default leading.  \newdimen\textleading  \textleading = 13.2pt @@ -1430,8 +1671,12 @@ where each line of input produces a line of output.}  \def\strutheightpercent{.70833}  \def\strutdepthpercent {.29167}  % +% can get a sort of poor man's double spacing by redefining this. +\def\baselinefactor{1} +%  \def\setleading#1{% -  \normalbaselineskip = #1\relax +  \dimen0 = #1\relax +  \normalbaselineskip = \baselinefactor\dimen0    \normallineskip = \lineskipfactor\normalbaselineskip    \normalbaselines    \setbox\strutbox =\hbox{% @@ -1440,10 +1685,279 @@ where each line of input produces a line of output.}    }%  } +% PDF CMaps.  See also LaTeX's t1.cmap. +% +% do nothing with this by default. +\expandafter\let\csname cmapOT1\endcsname\gobble +\expandafter\let\csname cmapOT1IT\endcsname\gobble +\expandafter\let\csname cmapOT1TT\endcsname\gobble + +% if we are producing pdf, and we have \pdffontattr, then define cmaps. +% (\pdffontattr was introduced many years ago, but people still run +% older pdftex's; it's easy to conditionalize, so we do.) +\ifpdf \ifx\pdffontattr\undefined \else +  \begingroup +    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. +    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1-0) +%%Title: (TeX-OT1-0 TeX OT1 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1) +/Supplement 0 +>> def +/CMapName /TeX-OT1-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +8 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<23> <26> <0023> +<28> <3B> <0028> +<3F> <5B> <003F> +<5D> <5E> <005D> +<61> <7A> <0061> +<7B> <7C> <2013> +endbfrange +40 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <00660066> +<0C> <00660069> +<0D> <0066006C> +<0E> <006600660069> +<0F> <00660066006C> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<21> <0021> +<22> <201D> +<27> <2019> +<3C> <00A1> +<3D> <003D> +<3E> <00BF> +<5C> <201C> +<5F> <02D9> +<60> <2018> +<7D> <02DD> +<7E> <007E> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF +    }\endgroup +  \expandafter\edef\csname cmapOT1\endcsname#1{% +    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% +  }% +% +% \cmapOT1IT +  \begingroup +    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. +    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1IT-0) +%%Title: (TeX-OT1IT-0 TeX OT1IT 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1IT) +/Supplement 0 +>> def +/CMapName /TeX-OT1IT-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +8 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<25> <26> <0025> +<28> <3B> <0028> +<3F> <5B> <003F> +<5D> <5E> <005D> +<61> <7A> <0061> +<7B> <7C> <2013> +endbfrange +42 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <00660066> +<0C> <00660069> +<0D> <0066006C> +<0E> <006600660069> +<0F> <00660066006C> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<21> <0021> +<22> <201D> +<23> <0023> +<24> <00A3> +<27> <2019> +<3C> <00A1> +<3D> <003D> +<3E> <00BF> +<5C> <201C> +<5F> <02D9> +<60> <2018> +<7D> <02DD> +<7E> <007E> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF +    }\endgroup +  \expandafter\edef\csname cmapOT1IT\endcsname#1{% +    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% +  }% +% +% \cmapOT1TT +  \begingroup +    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. +    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1TT-0) +%%Title: (TeX-OT1TT-0 TeX OT1TT 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1TT) +/Supplement 0 +>> def +/CMapName /TeX-OT1TT-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +5 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<21> <26> <0021> +<28> <5F> <0028> +<61> <7E> <0061> +endbfrange +32 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <2191> +<0C> <2193> +<0D> <0027> +<0E> <00A1> +<0F> <00BF> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<20> <2423> +<27> <2019> +<60> <2018> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF +    }\endgroup +  \expandafter\edef\csname cmapOT1TT\endcsname#1{% +    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% +  }% +\fi\fi + +  % Set the font macro #1 to the font named #2, adding on the  % specified font prefix (normally `cm'). -% #3 is the font's design size, #4 is a scale factor -\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4} +% #3 is the font's design size, #4 is a scale factor, #5 is the CMap +% encoding (currently only OT1, OT1IT and OT1TT are allowed, pass +% empty to omit). +\def\setfont#1#2#3#4#5{% +  \font#1=\fontprefix#2#3 scaled #4 +  \csname cmap#5\endcsname#1% +} +% This is what gets called when #5 of \setfont is empty. +\let\cmap\gobble +% emacs-page end of cmaps  % Use cm as the default font prefix.  % To specify the font prefix, you must define \fontprefix @@ -1468,118 +1982,293 @@ where each line of input produces a line of output.}  \def\scshape{csc}  \def\scbshape{csc} +% Definitions for a main text size of 11pt.  This is the default in +% Texinfo. +% +\def\definetextfontsizexi{%  % Text fonts (11.2pt, magstep1).  \def\textnominalsize{11pt}  \edef\mainmagstep{\magstephalf} -\setfont\textrm\rmshape{10}{\mainmagstep} -\setfont\texttt\ttshape{10}{\mainmagstep} -\setfont\textbf\bfshape{10}{\mainmagstep} -\setfont\textit\itshape{10}{\mainmagstep} -\setfont\textsl\slshape{10}{\mainmagstep} -\setfont\textsf\sfshape{10}{\mainmagstep} -\setfont\textsc\scshape{10}{\mainmagstep} -\setfont\textttsl\ttslshape{10}{\mainmagstep} +\setfont\textrm\rmshape{10}{\mainmagstep}{OT1} +\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} +\setfont\textbf\bfshape{10}{\mainmagstep}{OT1} +\setfont\textit\itshape{10}{\mainmagstep}{OT1IT} +\setfont\textsl\slshape{10}{\mainmagstep}{OT1} +\setfont\textsf\sfshape{10}{\mainmagstep}{OT1} +\setfont\textsc\scshape{10}{\mainmagstep}{OT1} +\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}  \font\texti=cmmi10 scaled \mainmagstep  \font\textsy=cmsy10 scaled \mainmagstep +\def\textecsize{1095}  % A few fonts for @defun names and args. -\setfont\defbf\bfshape{10}{\magstep1} -\setfont\deftt\ttshape{10}{\magstep1} -\setfont\defttsl\ttslshape{10}{\magstep1} +\setfont\defbf\bfshape{10}{\magstep1}{OT1} +\setfont\deftt\ttshape{10}{\magstep1}{OT1TT} +\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}  \def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}  % Fonts for indices, footnotes, small examples (9pt).  \def\smallnominalsize{9pt} -\setfont\smallrm\rmshape{9}{1000} -\setfont\smalltt\ttshape{9}{1000} -\setfont\smallbf\bfshape{10}{900} -\setfont\smallit\itshape{9}{1000} -\setfont\smallsl\slshape{9}{1000} -\setfont\smallsf\sfshape{9}{1000} -\setfont\smallsc\scshape{10}{900} -\setfont\smallttsl\ttslshape{10}{900} +\setfont\smallrm\rmshape{9}{1000}{OT1} +\setfont\smalltt\ttshape{9}{1000}{OT1TT} +\setfont\smallbf\bfshape{10}{900}{OT1} +\setfont\smallit\itshape{9}{1000}{OT1IT} +\setfont\smallsl\slshape{9}{1000}{OT1} +\setfont\smallsf\sfshape{9}{1000}{OT1} +\setfont\smallsc\scshape{10}{900}{OT1} +\setfont\smallttsl\ttslshape{10}{900}{OT1TT}  \font\smalli=cmmi9  \font\smallsy=cmsy9 +\def\smallecsize{0900}  % Fonts for small examples (8pt).  \def\smallernominalsize{8pt} -\setfont\smallerrm\rmshape{8}{1000} -\setfont\smallertt\ttshape{8}{1000} -\setfont\smallerbf\bfshape{10}{800} -\setfont\smallerit\itshape{8}{1000} -\setfont\smallersl\slshape{8}{1000} -\setfont\smallersf\sfshape{8}{1000} -\setfont\smallersc\scshape{10}{800} -\setfont\smallerttsl\ttslshape{10}{800} +\setfont\smallerrm\rmshape{8}{1000}{OT1} +\setfont\smallertt\ttshape{8}{1000}{OT1TT} +\setfont\smallerbf\bfshape{10}{800}{OT1} +\setfont\smallerit\itshape{8}{1000}{OT1IT} +\setfont\smallersl\slshape{8}{1000}{OT1} +\setfont\smallersf\sfshape{8}{1000}{OT1} +\setfont\smallersc\scshape{10}{800}{OT1} +\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}  \font\smalleri=cmmi8  \font\smallersy=cmsy8 +\def\smallerecsize{0800}  % Fonts for title page (20.4pt):  \def\titlenominalsize{20pt} -\setfont\titlerm\rmbshape{12}{\magstep3} -\setfont\titleit\itbshape{10}{\magstep4} -\setfont\titlesl\slbshape{10}{\magstep4} -\setfont\titlett\ttbshape{12}{\magstep3} -\setfont\titlettsl\ttslshape{10}{\magstep4} -\setfont\titlesf\sfbshape{17}{\magstep1} +\setfont\titlerm\rmbshape{12}{\magstep3}{OT1} +\setfont\titleit\itbshape{10}{\magstep4}{OT1IT} +\setfont\titlesl\slbshape{10}{\magstep4}{OT1} +\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} +\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} +\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}  \let\titlebf=\titlerm -\setfont\titlesc\scbshape{10}{\magstep4} +\setfont\titlesc\scbshape{10}{\magstep4}{OT1}  \font\titlei=cmmi12 scaled \magstep3  \font\titlesy=cmsy10 scaled \magstep4 -\def\authorrm{\secrm} -\def\authortt{\sectt} +\def\titleecsize{2074}  % Chapter (and unnumbered) fonts (17.28pt).  \def\chapnominalsize{17pt} -\setfont\chaprm\rmbshape{12}{\magstep2} -\setfont\chapit\itbshape{10}{\magstep3} -\setfont\chapsl\slbshape{10}{\magstep3} -\setfont\chaptt\ttbshape{12}{\magstep2} -\setfont\chapttsl\ttslshape{10}{\magstep3} -\setfont\chapsf\sfbshape{17}{1000} +\setfont\chaprm\rmbshape{12}{\magstep2}{OT1} +\setfont\chapit\itbshape{10}{\magstep3}{OT1IT} +\setfont\chapsl\slbshape{10}{\magstep3}{OT1} +\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT} +\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT} +\setfont\chapsf\sfbshape{17}{1000}{OT1}  \let\chapbf=\chaprm -\setfont\chapsc\scbshape{10}{\magstep3} +\setfont\chapsc\scbshape{10}{\magstep3}{OT1}  \font\chapi=cmmi12 scaled \magstep2  \font\chapsy=cmsy10 scaled \magstep3 +\def\chapecsize{1728}  % Section fonts (14.4pt).  \def\secnominalsize{14pt} -\setfont\secrm\rmbshape{12}{\magstep1} -\setfont\secit\itbshape{10}{\magstep2} -\setfont\secsl\slbshape{10}{\magstep2} -\setfont\sectt\ttbshape{12}{\magstep1} -\setfont\secttsl\ttslshape{10}{\magstep2} -\setfont\secsf\sfbshape{12}{\magstep1} +\setfont\secrm\rmbshape{12}{\magstep1}{OT1} +\setfont\secit\itbshape{10}{\magstep2}{OT1IT} +\setfont\secsl\slbshape{10}{\magstep2}{OT1} +\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT} +\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT} +\setfont\secsf\sfbshape{12}{\magstep1}{OT1}  \let\secbf\secrm -\setfont\secsc\scbshape{10}{\magstep2} +\setfont\secsc\scbshape{10}{\magstep2}{OT1}  \font\seci=cmmi12 scaled \magstep1  \font\secsy=cmsy10 scaled \magstep2 +\def\sececsize{1440}  % Subsection fonts (13.15pt).  \def\ssecnominalsize{13pt} -\setfont\ssecrm\rmbshape{12}{\magstephalf} -\setfont\ssecit\itbshape{10}{1315} -\setfont\ssecsl\slbshape{10}{1315} -\setfont\ssectt\ttbshape{12}{\magstephalf} -\setfont\ssecttsl\ttslshape{10}{1315} -\setfont\ssecsf\sfbshape{12}{\magstephalf} +\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1} +\setfont\ssecit\itbshape{10}{1315}{OT1IT} +\setfont\ssecsl\slbshape{10}{1315}{OT1} +\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT} +\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT} +\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1}  \let\ssecbf\ssecrm -\setfont\ssecsc\scbshape{10}{1315} +\setfont\ssecsc\scbshape{10}{1315}{OT1}  \font\sseci=cmmi12 scaled \magstephalf  \font\ssecsy=cmsy10 scaled 1315 +\def\ssececsize{1200}  % Reduced fonts for @acro in text (10pt).  \def\reducednominalsize{10pt} -\setfont\reducedrm\rmshape{10}{1000} -\setfont\reducedtt\ttshape{10}{1000} -\setfont\reducedbf\bfshape{10}{1000} -\setfont\reducedit\itshape{10}{1000} -\setfont\reducedsl\slshape{10}{1000} -\setfont\reducedsf\sfshape{10}{1000} -\setfont\reducedsc\scshape{10}{1000} -\setfont\reducedttsl\ttslshape{10}{1000} +\setfont\reducedrm\rmshape{10}{1000}{OT1} +\setfont\reducedtt\ttshape{10}{1000}{OT1TT} +\setfont\reducedbf\bfshape{10}{1000}{OT1} +\setfont\reducedit\itshape{10}{1000}{OT1IT} +\setfont\reducedsl\slshape{10}{1000}{OT1} +\setfont\reducedsf\sfshape{10}{1000}{OT1} +\setfont\reducedsc\scshape{10}{1000}{OT1} +\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT}  \font\reducedi=cmmi10  \font\reducedsy=cmsy10 +\def\reducedecsize{1000} + +% reset the current fonts +\textfonts +\rm +} % end of 11pt text font size definitions + + +% Definitions to make the main text be 10pt Computer Modern, with +% section, chapter, etc., sizes following suit.  This is for the GNU +% Press printing of the Emacs 22 manual.  Maybe other manuals in the +% future.  Used with @smallbook, which sets the leading to 12pt. +% +\def\definetextfontsizex{% +% Text fonts (10pt). +\def\textnominalsize{10pt} +\edef\mainmagstep{1000} +\setfont\textrm\rmshape{10}{\mainmagstep}{OT1} +\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} +\setfont\textbf\bfshape{10}{\mainmagstep}{OT1} +\setfont\textit\itshape{10}{\mainmagstep}{OT1IT} +\setfont\textsl\slshape{10}{\mainmagstep}{OT1} +\setfont\textsf\sfshape{10}{\mainmagstep}{OT1} +\setfont\textsc\scshape{10}{\mainmagstep}{OT1} +\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} +\font\texti=cmmi10 scaled \mainmagstep +\font\textsy=cmsy10 scaled \mainmagstep +\def\textecsize{1000} + +% A few fonts for @defun names and args. +\setfont\defbf\bfshape{10}{\magstephalf}{OT1} +\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} +\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} +\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} + +% Fonts for indices, footnotes, small examples (9pt). +\def\smallnominalsize{9pt} +\setfont\smallrm\rmshape{9}{1000}{OT1} +\setfont\smalltt\ttshape{9}{1000}{OT1TT} +\setfont\smallbf\bfshape{10}{900}{OT1} +\setfont\smallit\itshape{9}{1000}{OT1IT} +\setfont\smallsl\slshape{9}{1000}{OT1} +\setfont\smallsf\sfshape{9}{1000}{OT1} +\setfont\smallsc\scshape{10}{900}{OT1} +\setfont\smallttsl\ttslshape{10}{900}{OT1TT} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 +\def\smallecsize{0900} + +% Fonts for small examples (8pt). +\def\smallernominalsize{8pt} +\setfont\smallerrm\rmshape{8}{1000}{OT1} +\setfont\smallertt\ttshape{8}{1000}{OT1TT} +\setfont\smallerbf\bfshape{10}{800}{OT1} +\setfont\smallerit\itshape{8}{1000}{OT1IT} +\setfont\smallersl\slshape{8}{1000}{OT1} +\setfont\smallersf\sfshape{8}{1000}{OT1} +\setfont\smallersc\scshape{10}{800}{OT1} +\setfont\smallerttsl\ttslshape{10}{800}{OT1TT} +\font\smalleri=cmmi8 +\font\smallersy=cmsy8 +\def\smallerecsize{0800} + +% Fonts for title page (20.4pt): +\def\titlenominalsize{20pt} +\setfont\titlerm\rmbshape{12}{\magstep3}{OT1} +\setfont\titleit\itbshape{10}{\magstep4}{OT1IT} +\setfont\titlesl\slbshape{10}{\magstep4}{OT1} +\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} +\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} +\setfont\titlesf\sfbshape{17}{\magstep1}{OT1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4}{OT1} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\titleecsize{2074} + +% Chapter fonts (14.4pt). +\def\chapnominalsize{14pt} +\setfont\chaprm\rmbshape{12}{\magstep1}{OT1} +\setfont\chapit\itbshape{10}{\magstep2}{OT1IT} +\setfont\chapsl\slbshape{10}{\magstep2}{OT1} +\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT} +\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT} +\setfont\chapsf\sfbshape{12}{\magstep1}{OT1} +\let\chapbf\chaprm +\setfont\chapsc\scbshape{10}{\magstep2}{OT1} +\font\chapi=cmmi12 scaled \magstep1 +\font\chapsy=cmsy10 scaled \magstep2 +\def\chapecsize{1440} + +% Section fonts (12pt). +\def\secnominalsize{12pt} +\setfont\secrm\rmbshape{12}{1000}{OT1} +\setfont\secit\itbshape{10}{\magstep1}{OT1IT} +\setfont\secsl\slbshape{10}{\magstep1}{OT1} +\setfont\sectt\ttbshape{12}{1000}{OT1TT} +\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT} +\setfont\secsf\sfbshape{12}{1000}{OT1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep1}{OT1} +\font\seci=cmmi12 +\font\secsy=cmsy10 scaled \magstep1 +\def\sececsize{1200} + +% Subsection fonts (10pt). +\def\ssecnominalsize{10pt} +\setfont\ssecrm\rmbshape{10}{1000}{OT1} +\setfont\ssecit\itbshape{10}{1000}{OT1IT} +\setfont\ssecsl\slbshape{10}{1000}{OT1} +\setfont\ssectt\ttbshape{10}{1000}{OT1TT} +\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT} +\setfont\ssecsf\sfbshape{10}{1000}{OT1} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{1000}{OT1} +\font\sseci=cmmi10 +\font\ssecsy=cmsy10 +\def\ssececsize{1000} + +% Reduced fonts for @acro in text (9pt). +\def\reducednominalsize{9pt} +\setfont\reducedrm\rmshape{9}{1000}{OT1} +\setfont\reducedtt\ttshape{9}{1000}{OT1TT} +\setfont\reducedbf\bfshape{10}{900}{OT1} +\setfont\reducedit\itshape{9}{1000}{OT1IT} +\setfont\reducedsl\slshape{9}{1000}{OT1} +\setfont\reducedsf\sfshape{9}{1000}{OT1} +\setfont\reducedsc\scshape{10}{900}{OT1} +\setfont\reducedttsl\ttslshape{10}{900}{OT1TT} +\font\reducedi=cmmi9 +\font\reducedsy=cmsy9 +\def\reducedecsize{0900} + +% reduce space between paragraphs +\divide\parskip by 2 + +% reset the current fonts +\textfonts +\rm +} % end of 10pt text font size definitions + + +% We provide the user-level command +%   @fonttextsize 10 +% (or 11) to redefine the text font size.  pt is assumed. +% +\def\xword{10} +\def\xiword{11} +% +\parseargdef\fonttextsize{% +  \def\textsizearg{#1}% +  \wlog{doing @fonttextsize \textsizearg}% +  % +  % Set \globaldefs so that documents can use this inside @tex, since +  % makeinfo 4.8 does not support it, but we need it nonetheless. +  % + \begingroup \globaldefs=1 +  \ifx\textsizearg\xword \definetextfontsizex +  \else \ifx\textsizearg\xiword \definetextfontsizexi +  \else +    \errhelp=\EMsimple +    \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'} +  \fi\fi + \endgroup +} +  % In order for the font changes to affect most math symbols and letters,  % we have to define the \textfont of the standard families.  Since @@ -1620,7 +2309,7 @@ where each line of input produces a line of output.}    \def\curfontsize{title}%    \def\lsize{chap}\def\lllsize{subsec}%    \resetmathfonts \setleading{25pt}} -\def\titlefont#1{{\titlefonts\rm #1}} +\def\titlefont#1{{\titlefonts\rmisbold #1}}  \def\chapfonts{%    \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl    \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc @@ -1671,6 +2360,16 @@ where each line of input produces a line of output.}    \def\lsize{smaller}\def\lllsize{smaller}%    \resetmathfonts \setleading{9.5pt}} +% Fonts for short table of contents. +\setfont\shortcontrm\rmshape{12}{1000}{OT1} +\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1}  % no cmb12 +\setfont\shortcontsl\slshape{12}{1000}{OT1} +\setfont\shortconttt\ttshape{12}{1000}{OT1TT} + +% Define these just so they can be easily changed for other fonts. +\def\angleleft{$\langle$} +\def\angleright{$\rangle$} +  % Set the fonts to use with the @small... environments.  \let\smallexamplefonts = \smallfonts @@ -1684,28 +2383,128 @@ where each line of input produces a line of output.}  %  % By the way, for comparison, here's what fits with @example (10pt):  %   8.5x11=71  smallbook=60  a4=75  a5=58 -% -% I wish the USA used A4 paper.  % --karl, 24jan03. -  % Set up the default fonts, so we can use them for creating boxes.  % -\textfonts \rm +\definetextfontsizexi -% Define these so they can be easily changed for other fonts. -\def\angleleft{$\langle$} -\def\angleright{$\rangle$} + +\message{markup,} + +% Check if we are currently using a typewriter font.  Since all the +% Computer Modern typewriter fonts have zero interword stretch (and +% shrink), and it is reasonable to expect all typewriter fonts to have +% this property, we can check that font parameter. +% +\def\ifmonospace{\ifdim\fontdimen3\font=0pt } + +% Markup style infrastructure.  \defmarkupstylesetup\INITMACRO will +% define and register \INITMACRO to be called on markup style changes. +% \INITMACRO can check \currentmarkupstyle for the innermost +% style and the set of \ifmarkupSTYLE switches for all styles +% currently in effect. +\newif\ifmarkupvar +\newif\ifmarkupsamp +\newif\ifmarkupkey +%\newif\ifmarkupfile % @file == @samp. +%\newif\ifmarkupoption % @option == @samp. +\newif\ifmarkupcode +\newif\ifmarkupkbd +%\newif\ifmarkupenv % @env == @code. +%\newif\ifmarkupcommand % @command == @code. +\newif\ifmarkuptex % @tex (and part of @math, for now). +\newif\ifmarkupexample +\newif\ifmarkupverb +\newif\ifmarkupverbatim + +\let\currentmarkupstyle\empty + +\def\setupmarkupstyle#1{% +  \csname markup#1true\endcsname +  \def\currentmarkupstyle{#1}% +  \markupstylesetup +} + +\let\markupstylesetup\empty + +\def\defmarkupstylesetup#1{% +  \expandafter\def\expandafter\markupstylesetup +    \expandafter{\markupstylesetup #1}% +  \def#1% +} + +% Markup style setup for left and right quotes. +\defmarkupstylesetup\markupsetuplq{% +  \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname +  \ifx\temp\relax \markupsetuplqdefault \else \temp \fi +} + +\defmarkupstylesetup\markupsetuprq{% +  \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname +  \ifx\temp\relax \markupsetuprqdefault \else \temp \fi +} + +{ +\catcode`\'=\active +\catcode`\`=\active + +\gdef\markupsetuplqdefault{\let`\lq} +\gdef\markupsetuprqdefault{\let'\rq} + +\gdef\markupsetcodequoteleft{\let`\codequoteleft} +\gdef\markupsetcodequoteright{\let'\codequoteright} + +\gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft} +} + +\let\markupsetuplqcode \markupsetcodequoteleft +\let\markupsetuprqcode \markupsetcodequoteright +\let\markupsetuplqexample \markupsetcodequoteleft +\let\markupsetuprqexample \markupsetcodequoteright +\let\markupsetuplqverb \markupsetcodequoteleft +\let\markupsetuprqverb \markupsetcodequoteright +\let\markupsetuplqverbatim \markupsetcodequoteleft +\let\markupsetuprqverbatim \markupsetcodequoteright + +\let\markupsetuplqsamp \markupsetnoligaturesquoteleft +\let\markupsetuplqkbd \markupsetnoligaturesquoteleft + +% Allow an option to not replace quotes with a regular directed right +% quote/apostrophe (char 0x27), but instead use the undirected quote +% from cmtt (char 0x0d).  The undirected quote is ugly, so don't make it +% the default, but it works for pasting with more pdf viewers (at least +% evince), the lilypond developers report.  xpdf does work with the +% regular 0x27. +% +\def\codequoteright{% +  \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax +    \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax +      '% +    \else \char'15 \fi +  \else \char'15 \fi +} +% +% and a similar option for the left quote char vs. a grave accent. +% Modern fonts display ASCII 0x60 as a grave accent, so some people like +% the code environments to do likewise. +% +\def\codequoteleft{% +  \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax +    \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax +      % [Knuth] pp. 380,381,391 +      % \relax disables Spanish ligatures ?` and !` of \tt font. +      \relax`% +    \else \char'22 \fi +  \else \char'22 \fi +} + +% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. +\def\noligaturesquoteleft{\relax\lq}  % Count depth in font-changes, for error checks  \newcount\fontdepth \fontdepth=0 -% Fonts for short table of contents. -\setfont\shortcontrm\rmshape{12}{1000} -\setfont\shortcontbf\bfshape{10}{\magstep1}  % no cmb12 -\setfont\shortcontsl\slshape{12}{1000} -\setfont\shortconttt\ttshape{12}{1000} -  %% Add scribe-like font environments, plus @l for inline lisp (usually sans  %% serif) and @ii for TeX italic @@ -1720,17 +2519,22 @@ where each line of input produces a line of output.}  % @var is set to this for defun arguments.  \def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx} -% like \smartslanted except unconditionally use \sl.  We never want +% @cite is like \smartslanted except unconditionally use \sl.  We never want  % ttsl for book titles, do we?  \def\cite#1{{\sl #1}\futurelet\next\smartitalicx}  \let\i=\smartitalic  \let\slanted=\smartslanted -\let\var=\smartslanted +\def\var#1{{\setupmarkupstyle{var}\smartslanted{#1}}}  \let\dfn=\smartslanted  \let\emph=\smartitalic -% @b, explicit bold. +% Explicit font changes: @r, @sc, undocumented @ii. +\def\r#1{{\rm #1}}              % roman font +\def\sc#1{{\smallcaps#1}}       % smallcaps font +\def\ii#1{{\it #1}}             % italic font + +% @b, explicit bold.  Also @strong.  \def\b#1{{\bf #1}}  \let\strong=\b @@ -1749,27 +2553,48 @@ where each line of input produces a line of output.}  % sometimes \x has an active definition that messes things up.  %  \catcode`@=11 -  \def\frenchspacing{% +  \def\plainfrenchspacing{%      \sfcode\dotChar  =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m      \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m +    \def\endofsentencespacefactor{1000}% for @. and friends +  } +  \def\plainnonfrenchspacing{% +    \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 +    \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 +    \def\endofsentencespacefactor{3000}% for @. and friends    }  \catcode`@=\other +\def\endofsentencespacefactor{3000}% default +% @t, explicit typewriter.  \def\t#1{% -  {\tt \rawbackslash \frenchspacing #1}% +  {\tt \rawbackslash \plainfrenchspacing #1}%    \null  } -\def\samp#1{`\tclose{#1}'\null} -\setfont\keyrm\rmshape{8}{1000} -\font\keysy=cmsy9 -\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% -  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% -    \vbox{\hrule\kern-0.4pt -     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% -    \kern-0.4pt\hrule}% -  \kern-.06em\raise0.4pt\hbox{\angleright}}}} -% The old definition, with no lozenge: -%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null} + +% @samp. +\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} + +% definition of @key that produces a lozenge.  Doesn't adjust to text size. +%\setfont\keyrm\rmshape{8}{1000}{OT1} +%\font\keysy=cmsy9 +%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% +%  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% +%    \vbox{\hrule\kern-0.4pt +%     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% +%    \kern-0.4pt\hrule}% +%  \kern-.06em\raise0.4pt\hbox{\angleright}}}} + +% definition of @key with no lozenge.  If the current font is already +% monospace, don't change it; that way, we respect @kbdinputstyle.  But +% if it isn't monospace, then use \tt. +% +\def\key#1{{\setupmarkupstyle{key}% +  \nohyphenation +  \ifmonospace\else\tt\fi +  #1}\null} + +% ctrl is no longer a Texinfo command.  \def\ctrl #1{{\tt \rawbackslash \hat}#1}  % @file, @option are the same as @samp. @@ -1793,7 +2618,7 @@ where each line of input produces a line of output.}      \nohyphenation      %      \rawbackslash -    \frenchspacing +    \plainfrenchspacing      #1%    }%    \null @@ -1809,12 +2634,21 @@ where each line of input produces a line of output.}  % and arrange explicitly to hyphenate at a dash.  %  -- rms.  { -  \catcode`\-=\active -  \catcode`\_=\active +  \catcode`\-=\active \catcode`\_=\active +  \catcode`\'=\active \catcode`\`=\active +  \global\let'=\rq \global\let`=\lq  % default definitions    %    \global\def\code{\begingroup -    \catcode`\-=\active \let-\codedash -    \catcode`\_=\active \let_\codeunder +    \setupmarkupstyle{code}% +    % The following should really be moved into \setupmarkupstyle handlers. +    \catcode\dashChar=\active  \catcode\underChar=\active +    \ifallowcodebreaks +     \let-\codedash +     \let_\codeunder +    \else +     \let-\realdash +     \let_\realunder +    \fi      \codex    }  } @@ -1834,43 +2668,73 @@ where each line of input produces a line of output.}  }  \def\codex #1{\tclose{#1}\endgroup} +% An additional complication: the above will allow breaks after, e.g., +% each of the four underscores in __typeof__.  This is undesirable in +% some manuals, especially if they don't have long identifiers in +% general.  @allowcodebreaks provides a way to control this. +% +\newif\ifallowcodebreaks  \allowcodebreakstrue + +\def\keywordtrue{true} +\def\keywordfalse{false} + +\parseargdef\allowcodebreaks{% +  \def\txiarg{#1}% +  \ifx\txiarg\keywordtrue +    \allowcodebreakstrue +  \else\ifx\txiarg\keywordfalse +    \allowcodebreaksfalse +  \else +    \errhelp = \EMsimple +    \errmessage{Unknown @allowcodebreaks option `\txiarg'}% +  \fi\fi +} +  % @kbd is like @code, except that if the argument is just one @key command,  % then @kbd has no effect. +\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}}  % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),  %   `example' (@kbd uses ttsl only inside of @example and friends),  %   or `code' (@kbd uses normal tty font always).  \parseargdef\kbdinputstyle{% -  \def\arg{#1}% -  \ifx\arg\worddistinct +  \def\txiarg{#1}% +  \ifx\txiarg\worddistinct      \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% -  \else\ifx\arg\wordexample +  \else\ifx\txiarg\wordexample      \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% -  \else\ifx\arg\wordcode +  \else\ifx\txiarg\wordcode      \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%    \else      \errhelp = \EMsimple -    \errmessage{Unknown @kbdinputstyle option `\arg'}% +    \errmessage{Unknown @kbdinputstyle option `\txiarg'}%    \fi\fi\fi  }  \def\worddistinct{distinct}  \def\wordexample{example}  \def\wordcode{code} -% Default is `distinct.' +% Default is `distinct'.  \kbdinputstyle distinct  \def\xkey{\key}  \def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%  \ifx\one\xkey\ifx\threex\three \key{#2}% -\else{\tclose{\kbdfont\look}}\fi -\else{\tclose{\kbdfont\look}}\fi} +\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi +\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi}  % For @indicateurl, @env, @command quotes seem unnecessary, so use \code.  \let\indicateurl=\code  \let\env=\code  \let\command=\code +% @clicksequence{File @click{} Open ...} +\def\clicksequence#1{\begingroup #1\endgroup} + +% @clickstyle @arrow   (by default) +\parseargdef\clickstyle{\def\click{#1}} +\def\click{\arrow} +  % @uref (abbreviation for `urlref') takes an optional (comma-separated)  % second argument specifying the text to display and an optional third  % arg as text to display instead of (rather than in addition to) the url @@ -1920,34 +2784,20 @@ where each line of input produces a line of output.}    \let\email=\uref  \fi -% Check if we are currently using a typewriter font.  Since all the -% Computer Modern typewriter fonts have zero interword stretch (and -% shrink), and it is reasonable to expect all typewriter fonts to have -% this property, we can check that font parameter. -% -\def\ifmonospace{\ifdim\fontdimen3\font=0pt } -  % Typeset a dimension, e.g., `in' or `pt'.  The only reason for the  % argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.  %  \def\dmn#1{\thinspace #1} -\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par} -  % @l was never documented to mean ``switch to the Lisp font'',  % and it is not used as such in any manual I can find.  We need it for  % Polish suppressed-l.  --karl, 22sep96.  %\def\l#1{{\li #1}\null} -% Explicit font changes: @r, @sc, undocumented @ii. -\def\r#1{{\rm #1}}              % roman font -\def\sc#1{{\smallcaps#1}}       % smallcaps font -\def\ii#1{{\it #1}}             % italic font -  % @acronym for "FBI", "NATO", and the like.  % We print this one point size smaller, since it's intended for  % all-uppercase. -%  +%  \def\acronym#1{\doacronym #1,,\finish}  \def\doacronym#1,#2,#3\finish{%    {\selectfonts\lsize #1}% @@ -1959,16 +2809,54 @@ where each line of input produces a line of output.}  % @abbr for "Comput. J." and the like.  % No font change, but don't do end-of-sentence spacing. -%  +%  \def\abbr#1{\doabbr #1,,\finish}  \def\doabbr#1,#2,#3\finish{% -  {\frenchspacing #1}% +  {\plainfrenchspacing #1}%    \def\temp{#2}%    \ifx\temp\empty \else      \space ({\unsepspaces \ignorespaces \temp \unskip})%    \fi  } + +\message{glyphs,} + +% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. +% +% Since these characters are used in examples, they should be an even number of +% \tt widths. Each \tt character is 1en, so two makes it 1em. +% +\def\point{$\star$} +\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}} +\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} +\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}} +\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} +\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}} + +% The @error{} command. +% Adapted from the TeXbook's \boxit. +% +\newbox\errorbox +% +{\tentt \global\dimen0 = 3em}% Width of the box. +\dimen2 = .55pt % Thickness of rules +% The text. (`r' is open on the right, `e' somewhat less so on the left.) +\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt} +% +\setbox\errorbox=\hbox to \dimen0{\hfil +   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. +   \advance\hsize by -2\dimen2 % Rules. +   \vbox{% +      \hrule height\dimen2 +      \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text. +         \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. +         \kern3pt\vrule width\dimen2}% Space to right. +      \hrule height\dimen2} +    \hfil} +% +\def\error{\leavevmode\lower.7ex\copy\errorbox} +  % @pounds{} is a sterling sign, which Knuth put in the CM italic font.  %  \def\pounds{{\it\$}} @@ -1978,49 +2866,113 @@ where each line of input produces a line of output.}  % Theiling, which support regular, slanted, bold and bold slanted (and  % "outlined" (blackboard board, sort of) versions, which we don't need).  % It is available from http://www.ctan.org/tex-archive/fonts/eurosym. -%  +%  % Although only regular is the truly official Euro symbol, we ignore  % that.  The Euro is designed to be slightly taller than the regular  % font height. -%  +%  % feymr - regular  % feymo - slanted  % feybr - bold  % feybo - bold slanted -%  +%  % There is no good (free) typewriter version, to my knowledge.  % A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.  % Hmm. -%  +%  % Also doesn't work in math.  Do we need to do math with euro symbols?  % Hope not. -%  -%  +% +%  \def\euro{{\eurofont e}}  \def\eurofont{%    % We set the font at each command, rather than predefining it in    % \textfonts and the other font-switching commands, so that -  % installations which never need the symbold don't have to have the +  % installations which never need the symbol don't have to have the    % font installed. -  %  +  %    % There is only one designed size (nominal 10pt), so we always scale    % that to the current nominal size. -  %  +  %    % By the way, simply using "at 1em" works for cmr10 and the like, but    % does not work for cmbx10 and other extended/shrunken fonts. -  %  +  %    \def\eurosize{\csname\curfontsize nominalsize\endcsname}%    % -  \ifx\curfontstyle\bfstylename  +  \ifx\curfontstyle\bfstylename      % bold:      \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize -  \else  +  \else      % regular:      \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize    \fi    \thiseurofont  } +% Glyphs from the EC fonts.  We don't use \let for the aliases, because +% sometimes we redefine the original macro, and the alias should reflect +% the redefinition. +% +% Use LaTeX names for the Icelandic letters. +\def\DH{{\ecfont \char"D0}} % Eth +\def\dh{{\ecfont \char"F0}} % eth +\def\TH{{\ecfont \char"DE}} % Thorn +\def\th{{\ecfont \char"FE}} % thorn +% +\def\guillemetleft{{\ecfont \char"13}} +\def\guillemotleft{\guillemetleft} +\def\guillemetright{{\ecfont \char"14}} +\def\guillemotright{\guillemetright} +\def\guilsinglleft{{\ecfont \char"0E}} +\def\guilsinglright{{\ecfont \char"0F}} +\def\quotedblbase{{\ecfont \char"12}} +\def\quotesinglbase{{\ecfont \char"0D}} +% +% This positioning is not perfect (see the ogonek LaTeX package), but +% we have the precomposed glyphs for the most common cases.  We put the +% tests to use those glyphs in the single \ogonek macro so we have fewer +% dummy definitions to worry about for index entries, etc. +% +% ogonek is also used with other letters in Lithuanian (IOU), but using +% the precomposed glyphs for those is not so easy since they aren't in +% the same EC font. +\def\ogonek#1{{% +  \def\temp{#1}% +  \ifx\temp\macrocharA\Aogonek +  \else\ifx\temp\macrochara\aogonek +  \else\ifx\temp\macrocharE\Eogonek +  \else\ifx\temp\macrochare\eogonek +  \else +    \ecfont \setbox0=\hbox{#1}% +    \ifdim\ht0=1ex\accent"0C #1% +    \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}% +    \fi +  \fi\fi\fi\fi +  }% +} +\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A} +\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a} +\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} +\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} +% +% Use the ec* fonts (cm-super in outline format) for non-CM glyphs. +\def\ecfont{% +  % We can't distinguish serif/sans and italic/slanted, but this +  % is used for crude hacks anyway (like adding French and German +  % quotes to documents typeset with CM, where we lose kerning), so +  % hopefully nobody will notice/care. +  \edef\ecsize{\csname\curfontsize ecsize\endcsname}% +  \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% +  \ifx\curfontstyle\bfstylename +    % bold: +    \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize +  \else +    % regular: +    \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize +  \fi +  \thisecfont +} +  % @registeredsymbol - R in a circle.  The font for the R should really  % be smaller yet, but lllsize is the best we can do for now.  % Adapted from the plain.tex definition of \copyright. @@ -2031,14 +2983,24 @@ where each line of input produces a line of output.}      }$%  } +% @textdegree - the normal degrees sign. +% +\def\textdegree{$^\circ$} +  % Laurent Siebenmann reports \Orb undefined with:  %  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38  % so we'll define it if necessary. -%  +%  \ifx\Orb\undefined  \def\Orb{\mathhexbox20D}  \fi +% Quotes. +\chardef\quotedblleft="5C +\chardef\quotedblright=`\" +\chardef\quoteleft=`\` +\chardef\quoteright=`\' +  \message{page headings,} @@ -2123,12 +3085,9 @@ where each line of input produces a line of output.}  \let\subtitlerm=\tenrm  \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} -\def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines -		\let\tt=\authortt} -  \parseargdef\title{%    \checkenv\titlepage -  \leftline{\titlefonts\rm #1} +  \leftline{\titlefonts\rmisbold #1}    % print a rule at the page bottom also.    \finishedtitlepagefalse    \vskip4pt \hrule height 4pt width \hsize \vskip4pt @@ -2149,7 +3108,7 @@ where each line of input produces a line of output.}    \else      \checkenv\titlepage      \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi -    {\authorfont \leftline{#1}}% +    {\secfonts\rmisbold \leftline{#1}}%    \fi  } @@ -2202,12 +3161,39 @@ where each line of input produces a line of output.}    %    % Leave some space for the footline.  Hopefully ok to assume    % @evenfooting will not be used by itself. -  \global\advance\pageheight by -\baselineskip -  \global\advance\vsize by -\baselineskip +  \global\advance\pageheight by -12pt +  \global\advance\vsize by -12pt  }  \parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} +% @evenheadingmarks top     \thischapter <- chapter at the top of a page +% @evenheadingmarks bottom  \thischapter <- chapter at the bottom of a page +% +% The same set of arguments for: +% +% @oddheadingmarks +% @evenfootingmarks +% @oddfootingmarks +% @everyheadingmarks +% @everyfootingmarks + +\def\evenheadingmarks{\headingmarks{even}{heading}} +\def\oddheadingmarks{\headingmarks{odd}{heading}} +\def\evenfootingmarks{\headingmarks{even}{footing}} +\def\oddfootingmarks{\headingmarks{odd}{footing}} +\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1} +                          \headingmarks{odd}{heading}{#1} } +\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1} +                          \headingmarks{odd}{footing}{#1} } +% #1 = even/odd, #2 = heading/footing, #3 = top/bottom. +\def\headingmarks#1#2#3 {% +  \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname +  \global\expandafter\let\csname get#1#2marks\endcsname \temp +} + +\everyheadingmarks bottom +\everyfootingmarks bottom  % @headings double      turns headings on for double-sided printing.  % @headings single      turns headings on for single-sided printing. @@ -2350,7 +3336,7 @@ where each line of input produces a line of output.}      % cause the example and the item to crash together.  So we use this      % bizarre value of 10001 as a signal to \aboveenvbreak to insert      % \parskip glue after all.  Section titles are handled this way also. -    %  +    %      \penalty 10001      \endgroup      \itemxneedsnegativevskipfalse @@ -2444,9 +3430,18 @@ where each line of input produces a line of output.}    \parindent=0pt    \parskip=\smallskipamount    \ifdim\parskip=0pt \parskip=2pt \fi +  % +  % Try typesetting the item mark that if the document erroneously says +  % something like @itemize @samp (intending @table), there's an error +  % right away at the @itemize.  It's not the best error message in the +  % world, but it's better than leaving it to the @item.  This means if +  % the user wants an empty mark, they have to say @w{} not just @w.    \def\itemcontents{#1}% +  \setbox0 = \hbox{\itemcontents}% +  %    % @itemize with no arg is equivalent to @itemize @bullet.    \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi +  %    \let\item=\itemizeitem  } @@ -2467,6 +3462,7 @@ where each line of input produces a line of output.}     \ifnum\lastpenalty<10000 \parskip=0in \fi     \noindent     \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% +   %     \vadjust{\penalty 1200}}% not good to break after first line of item.    \flushcr  } @@ -2688,12 +3684,19 @@ where each line of input produces a line of output.}  %  % @headitem starts a heading row, which we typeset in bold.  % Assignments have to be global since we are inside the implicit group -% of an alignment entry.  Note that \everycr resets \everytab. -\def\headitem{\checkenv\multitable \crcr \global\everytab={\bf}\the\everytab}% +% of an alignment entry.  \everycr resets \everytab so we don't have to +% undo it ourselves. +\def\headitemfont{\b}% for people to use in the template row; not changeable +\def\headitem{% +  \checkenv\multitable +  \crcr +  \global\everytab={\bf}% can't use \headitemfont since the parsing differs +  \the\everytab % for the first item +}%  %  % A \tab used to include \hskip1sp.  But then the space in a template  % line is not enough.  That is bad.  So let's go back to just `&' until -% we encounter the problem it was intended to solve again. +% we again encounter the problem the 1sp was intended to solve.  %					--karl, nathan@acm.org, 20apr99.  \def\tab{\checkenv\multitable &\the\everytab}% @@ -2862,6 +3865,7 @@ where each line of input produces a line of output.}  \def\doignore#1{\begingroup    % Scan in ``verbatim'' mode: +  \obeylines    \catcode`\@ = \other    \catcode`\{ = \other    \catcode`\} = \other @@ -2882,16 +3886,16 @@ where each line of input produces a line of output.}    \gdef\dodoignore#1{%      % #1 contains the command name as a string, e.g., `ifinfo'.      % -    % Define a command to find the next `@end #1', which must be on a line -    % by itself. -    \long\def\doignoretext##1^^M@end #1{\doignoretextyyy##1^^M@#1\_STOP_}% +    % Define a command to find the next `@end #1'. +    \long\def\doignoretext##1^^M@end #1{% +      \doignoretextyyy##1^^M@#1\_STOP_}% +    %      % And this command to find another #1 command, at the beginning of a      % line.  (Otherwise, we would consider a line `@c @ifset', for      % example, to count as an @ifset for nesting.)      \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%      %      % And now expand that command. -    \obeylines %      \doignoretext ^^M%    }%  } @@ -2921,7 +3925,12 @@ where each line of input produces a line of output.}  }  % Finish off ignored text. -\def\enddoignore{\endgroup\ignorespaces} +{ \obeylines% +  % Ignore anything after the last `@end #1'; this matters in verbatim +  % environments, where otherwise the newline after an ignored conditional +  % would result in a blank line in the output. +  \gdef\enddoignore#1^^M{\endgroup\ignorespaces}% +}  % @set VAR sets the variable VAR to an empty value. @@ -3086,11 +4095,11 @@ where each line of input produces a line of output.}  \def\dosynindex#1#2#3{%    % Only do \closeout if we haven't already done it, else we'll end up    % closing the target index. -  \expandafter \ifx\csname donesynindex#2\endcsname \undefined +  \expandafter \ifx\csname donesynindex#2\endcsname \relax      % The \closeout helps reduce unnecessary open files; the limit on the      % Acorn RISC OS is a mere 16 files.      \expandafter\closeout\csname#2indfile\endcsname -    \expandafter\let\csname\donesynindex#2\endcsname = 1 +    \expandafter\let\csname donesynindex#2\endcsname = 1    \fi    % redefine \fooindfile:    \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname @@ -3121,42 +4130,50 @@ where each line of input produces a line of output.}  % we have to laboriously prevent expansion for those that we don't.  %  \def\indexdummies{% +  \escapechar = `\\     % use backslash in output files.    \def\@{@}% change to @@ when we switch to @ as escape char in index files.    \def\ {\realbackslash\space }% +  %    % Need these in case \tex is in effect and \{ is a \delimiter again.    % But can't use \lbracecmd and \rbracecmd because texindex assumes    % braces and backslashes are used only as delimiters.    \let\{ = \mylbrace    \let\} = \myrbrace    % -  % \definedummyword defines \#1 as \realbackslash #1\space, thus -  % effectively preventing its expansion.  This is used only for control -  % words, not control letters, because the \space would be incorrect -  % for control characters, but is needed to separate the control word -  % from whatever follows. +  % I don't entirely understand this, but when an index entry is +  % generated from a macro call, the \endinput which \scanmacro inserts +  % causes processing to be prematurely terminated.  This is, +  % apparently, because \indexsorttmp is fully expanded, and \endinput +  % is an expandable command.  The redefinition below makes \endinput +  % disappear altogether for that purpose -- although logging shows that +  % processing continues to some further point.  On the other hand, it +  % seems \endinput does not hurt in the printed index arg, since that +  % is still getting written without apparent harm.    % -  % For control letters, we have \definedummyletter, which omits the -  % space. +  % Sample source (mac-idx3.tex, reported by Graham Percival to +  % help-texinfo, 22may06): +  % @macro funindex {WORD} +  % @findex xyz +  % @end macro +  % ... +  % @funindex commtest    % -  % These can be used both for control words that take an argument and -  % those that do not.  If it is followed by {arg} in the input, then -  % that will dutifully get written to the index (or wherever). +  % The above is not enough to reproduce the bug, but it gives the flavor.    % -  \def\definedummyword##1{% -    \expandafter\def\csname ##1\endcsname{\realbackslash ##1\space}% -  }% -  \def\definedummyletter##1{% -    \expandafter\def\csname ##1\endcsname{\realbackslash ##1}% -  }% -  \let\definedummyaccent\definedummyletter +  % Sample whatsit resulting: +  % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}} +  % +  % So: +  \let\endinput = \empty    %    % Do the redefinitions.    \commondummies  } -% For the aux file, @ is the escape character.  So we want to redefine -% everything using @ instead of \realbackslash.  When everything uses -% @, this will be simpler. +% For the aux and toc files, @ is the escape character.  So we want to +% redefine everything using @ as the escape character (instead of +% \realbackslash, still used for index files).  When everything uses @, +% this will be simpler.  %  \def\atdummies{%    \def\@{@@}% @@ -3164,147 +4181,169 @@ where each line of input produces a line of output.}    \let\{ = \lbraceatcmd    \let\} = \rbraceatcmd    % -  % (See comments in \indexdummies.) -  \def\definedummyword##1{% -    \expandafter\def\csname ##1\endcsname{@##1\space}% -  }% -  \def\definedummyletter##1{% -    \expandafter\def\csname ##1\endcsname{@##1}% -  }% -  \let\definedummyaccent\definedummyletter -  %    % Do the redefinitions.    \commondummies +  \otherbackslash  } -% Called from \indexdummies and \atdummies.  \definedummyword and -% \definedummyletter must be defined first. +% Called from \indexdummies and \atdummies.  %  \def\commondummies{%    % -  \normalturnoffactive +  % \definedummyword defines \#1 as \string\#1\space, thus effectively +  % preventing its expansion.  This is used only for control% words, +  % not control letters, because the \space would be incorrect for +  % control characters, but is needed to separate the control word +  % from whatever follows. +  % +  % For control letters, we have \definedummyletter, which omits the +  % space. +  % +  % These can be used both for control words that take an argument and +  % those that do not.  If it is followed by {arg} in the input, then +  % that will dutifully get written to the index (or wherever). +  % +  \def\definedummyword  ##1{\def##1{\string##1\space}}% +  \def\definedummyletter##1{\def##1{\string##1}}% +  \let\definedummyaccent\definedummyletter    %    \commondummiesnofonts    % -  \definedummyletter{_}% +  \definedummyletter\_%    %    % Non-English letters. -  \definedummyword{AA}% -  \definedummyword{AE}% -  \definedummyword{L}% -  \definedummyword{OE}% -  \definedummyword{O}% -  \definedummyword{aa}% -  \definedummyword{ae}% -  \definedummyword{l}% -  \definedummyword{oe}% -  \definedummyword{o}% -  \definedummyword{ss}% -  \definedummyword{exclamdown}% -  \definedummyword{questiondown}% -  \definedummyword{ordf}% -  \definedummyword{ordm}% +  \definedummyword\AA +  \definedummyword\AE +  \definedummyword\DH +  \definedummyword\L +  \definedummyword\O +  \definedummyword\OE +  \definedummyword\TH +  \definedummyword\aa +  \definedummyword\ae +  \definedummyword\dh +  \definedummyword\exclamdown +  \definedummyword\l +  \definedummyword\o +  \definedummyword\oe +  \definedummyword\ordf +  \definedummyword\ordm +  \definedummyword\questiondown +  \definedummyword\ss +  \definedummyword\th    %    % Although these internal commands shouldn't show up, sometimes they do. -  \definedummyword{bf}% -  \definedummyword{gtr}% -  \definedummyword{hat}% -  \definedummyword{less}% -  \definedummyword{sf}% -  \definedummyword{sl}% -  \definedummyword{tclose}% -  \definedummyword{tt}% -  % -  \definedummyword{LaTeX}% -  \definedummyword{TeX}% +  \definedummyword\bf +  \definedummyword\gtr +  \definedummyword\hat +  \definedummyword\less +  \definedummyword\sf +  \definedummyword\sl +  \definedummyword\tclose +  \definedummyword\tt +  % +  \definedummyword\LaTeX +  \definedummyword\TeX    %    % Assorted special characters. -  \definedummyword{bullet}% -  \definedummyword{comma}% -  \definedummyword{copyright}% -  \definedummyword{registeredsymbol}% -  \definedummyword{dots}% -  \definedummyword{enddots}% -  \definedummyword{equiv}% -  \definedummyword{error}% -  \definedummyword{euro}% -  \definedummyword{expansion}% -  \definedummyword{minus}% -  \definedummyword{pounds}% -  \definedummyword{point}% -  \definedummyword{print}% -  \definedummyword{result}% +  \definedummyword\bullet +  \definedummyword\comma +  \definedummyword\copyright +  \definedummyword\registeredsymbol +  \definedummyword\dots +  \definedummyword\enddots +  \definedummyword\equiv +  \definedummyword\error +  \definedummyword\euro +  \definedummyword\guillemetleft +  \definedummyword\guillemetright +  \definedummyword\guilsinglleft +  \definedummyword\guilsinglright +  \definedummyword\expansion +  \definedummyword\minus +  \definedummyword\ogonek +  \definedummyword\pounds +  \definedummyword\point +  \definedummyword\print +  \definedummyword\quotedblbase +  \definedummyword\quotedblleft +  \definedummyword\quotedblright +  \definedummyword\quoteleft +  \definedummyword\quoteright +  \definedummyword\quotesinglbase +  \definedummyword\result +  \definedummyword\textdegree +  % +  % We want to disable all macros so that they are not expanded by \write. +  \macrolist +  % +  \normalturnoffactive    %    % Handle some cases of @value -- where it does not contain any    % (non-fully-expandable) commands.    \makevalueexpandable -  % -  % Normal spaces, not active ones. -  \unsepspaces -  % -  % No macro expansion. -  \turnoffmacros  }  % \commondummiesnofonts: common to \commondummies and \indexnofonts.  % -% Better have this without active chars. -{ -  \catcode`\~=\other -  \gdef\commondummiesnofonts{% -    % Control letters and accents. -    \definedummyletter{!}% -    \definedummyaccent{"}% -    \definedummyaccent{'}% -    \definedummyletter{*}% -    \definedummyaccent{,}% -    \definedummyletter{.}% -    \definedummyletter{/}% -    \definedummyletter{:}% -    \definedummyaccent{=}% -    \definedummyletter{?}% -    \definedummyaccent{^}% -    \definedummyaccent{`}% -    \definedummyaccent{~}% -    \definedummyword{u}% -    \definedummyword{v}% -    \definedummyword{H}% -    \definedummyword{dotaccent}% -    \definedummyword{ringaccent}% -    \definedummyword{tieaccent}% -    \definedummyword{ubaraccent}% -    \definedummyword{udotaccent}% -    \definedummyword{dotless}% -    % -    % Texinfo font commands. -    \definedummyword{b}% -    \definedummyword{i}% -    \definedummyword{r}% -    \definedummyword{sc}% -    \definedummyword{t}% -    % -    % Commands that take arguments. -    \definedummyword{acronym}% -    \definedummyword{cite}% -    \definedummyword{code}% -    \definedummyword{command}% -    \definedummyword{dfn}% -    \definedummyword{emph}% -    \definedummyword{env}% -    \definedummyword{file}% -    \definedummyword{kbd}% -    \definedummyword{key}% -    \definedummyword{math}% -    \definedummyword{option}% -    \definedummyword{samp}% -    \definedummyword{strong}% -    \definedummyword{tie}% -    \definedummyword{uref}% -    \definedummyword{url}% -    \definedummyword{var}% -    \definedummyword{verb}% -    \definedummyword{w}% -  } +\def\commondummiesnofonts{% +  % Control letters and accents. +  \definedummyletter\!% +  \definedummyaccent\"% +  \definedummyaccent\'% +  \definedummyletter\*% +  \definedummyaccent\,% +  \definedummyletter\.% +  \definedummyletter\/% +  \definedummyletter\:% +  \definedummyaccent\=% +  \definedummyletter\?% +  \definedummyaccent\^% +  \definedummyaccent\`% +  \definedummyaccent\~% +  \definedummyword\u +  \definedummyword\v +  \definedummyword\H +  \definedummyword\dotaccent +  \definedummyword\ogonek +  \definedummyword\ringaccent +  \definedummyword\tieaccent +  \definedummyword\ubaraccent +  \definedummyword\udotaccent +  \definedummyword\dotless +  % +  % Texinfo font commands. +  \definedummyword\b +  \definedummyword\i +  \definedummyword\r +  \definedummyword\sc +  \definedummyword\t +  % +  % Commands that take arguments. +  \definedummyword\acronym +  \definedummyword\cite +  \definedummyword\code +  \definedummyword\command +  \definedummyword\dfn +  \definedummyword\email +  \definedummyword\emph +  \definedummyword\env +  \definedummyword\file +  \definedummyword\kbd +  \definedummyword\key +  \definedummyword\math +  \definedummyword\option +  \definedummyword\pxref +  \definedummyword\ref +  \definedummyword\samp +  \definedummyword\strong +  \definedummyword\tie +  \definedummyword\uref +  \definedummyword\url +  \definedummyword\var +  \definedummyword\verb +  \definedummyword\w +  \definedummyword\xref  }  % \indexnofonts is used when outputting the strings to sort the index @@ -3314,13 +4353,9 @@ where each line of input produces a line of output.}  %  \def\indexnofonts{%    % Accent commands should become @asis. -  \def\definedummyaccent##1{% -    \expandafter\let\csname ##1\endcsname\asis -  }% +  \def\definedummyaccent##1{\let##1\asis}%    % We can just ignore other control letters. -  \def\definedummyletter##1{% -    \expandafter\def\csname ##1\endcsname{}% -  }% +  \def\definedummyletter##1{\let##1\empty}%    % Hopefully, all control words can become @asis.    \let\definedummyword\definedummyaccent    % @@ -3339,19 +4374,23 @@ where each line of input produces a line of output.}    % Non-English letters.    \def\AA{AA}%    \def\AE{AE}% +  \def\DH{DZZ}%    \def\L{L}%    \def\OE{OE}%    \def\O{O}% +  \def\TH{ZZZ}%    \def\aa{aa}%    \def\ae{ae}% +  \def\dh{dzz}% +  \def\exclamdown{!}%    \def\l{l}%    \def\oe{oe}% -  \def\o{o}% -  \def\ss{ss}% -  \def\exclamdown{!}% -  \def\questiondown{?}%    \def\ordf{a}%    \def\ordm{o}% +  \def\o{o}% +  \def\questiondown{?}% +  \def\ss{ss}% +  \def\th{zzz}%    %    \def\LaTeX{LaTeX}%    \def\TeX{TeX}% @@ -3361,21 +4400,41 @@ where each line of input produces a line of output.}    \def\bullet{bullet}%    \def\comma{,}%    \def\copyright{copyright}% -  \def\registeredsymbol{R}%    \def\dots{...}%    \def\enddots{...}%    \def\equiv{==}%    \def\error{error}%    \def\euro{euro}%    \def\expansion{==>}% +  \def\guillemetleft{<<}% +  \def\guillemetright{>>}% +  \def\guilsinglleft{<}% +  \def\guilsinglright{>}%    \def\minus{-}% -  \def\pounds{pounds}%    \def\point{.}% +  \def\pounds{pounds}%    \def\print{-|}% +  \def\quotedblbase{"}% +  \def\quotedblleft{"}% +  \def\quotedblright{"}% +  \def\quoteleft{`}% +  \def\quoteright{'}% +  \def\quotesinglbase{,}% +  \def\registeredsymbol{R}%    \def\result{=>}% +  \def\textdegree{o}%    % -  % Don't write macro names. -  \emptyusermacros +  % We need to get rid of all macros, leaving only the arguments (if present). +  % Of course this is not nearly correct, but it is the best we can do for now. +  % makeinfo does not expand macros in the argument to @deffn, which ends up +  % writing an index entry, and texindex isn't prepared for an index sort entry +  % that starts with \. +  % +  % Since macro invocations are followed by braces, we can just redefine them +  % to take a single TeX argument.  The case of a macro invocation that +  % goes to end-of-line is not handled. +  % +  \macrolist  }  \let\indexbackslash=0  %overridden during \printindex. @@ -3403,11 +4462,7 @@ where each line of input produces a line of output.}      %      \edef\writeto{\csname#1indfile\endcsname}%      % -    \ifvmode -      \dosubindsanitize -    \else -      \dosubindwrite -    \fi +    \safewhatsit\dosubindwrite    }%    \fi  } @@ -3422,7 +4477,6 @@ where each line of input produces a line of output.}    %    % Remember, we are within a group.    \indexdummies % Must do this here, since \bf, etc expand at this stage -  \escapechar=`\\    \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now        % so it will be output as is; and it will print as backslash.    % @@ -3445,13 +4499,13 @@ where each line of input produces a line of output.}    \temp  } -% Take care of unwanted page breaks: +% Take care of unwanted page breaks/skips around a whatsit:  %  % If a skip is the last thing on the list now, preserve it  % by backing up by \lastskip, doing the \write, then inserting  % the skip again.  Otherwise, the whatsit generated by the -% \write will make \lastskip zero.  The result is that sequences -% like this: +% \write or \pdfdest will make \lastskip zero.  The result is that +% sequences like this:  % @end defun  % @tindex whatever  % @defun ... @@ -3475,25 +4529,31 @@ where each line of input produces a line of output.}  %  \edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}  % +\newskip\whatsitskip +\newcount\whatsitpenalty +%  % ..., ready, GO:  % -\def\dosubindsanitize{% +\def\safewhatsit#1{% +\ifhmode +  #1% +\else    % \lastskip and \lastpenalty cannot both be nonzero simultaneously. -  \skip0 = \lastskip +  \whatsitskip = \lastskip    \edef\lastskipmacro{\the\lastskip}% -  \count255 = \lastpenalty +  \whatsitpenalty = \lastpenalty    %    % If \lastskip is nonzero, that means the last item was a    % skip.  And since a skip is discardable, that means this -  % -\skip0 glue we're inserting is preceded by a +  % -\whatsitskip glue we're inserting is preceded by a    % non-discardable item, therefore it is not a potential    % breakpoint, therefore no \nobreak needed.    \ifx\lastskipmacro\zeroskipmacro    \else -    \vskip-\skip0 +    \vskip-\whatsitskip    \fi    % -  \dosubindwrite +  #1%    %    \ifx\lastskipmacro\zeroskipmacro      % If \lastskip was zero, perhaps the last item was a penalty, and @@ -3501,19 +4561,20 @@ where each line of input produces a line of output.}      % to re-insert the same penalty (values >10000 are used for various      % signals); since we just inserted a non-discardable item, any      % following glue (such as a \parskip) would be a breakpoint.  For example: -    %  +    %      %   @deffn deffn-whatever      %   @vindex index-whatever      %   Description.      % would allow a break between the index-whatever whatsit      % and the "Description." paragraph. -    \ifnum\count255>9999 \penalty\count255 \fi +    \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi    \else      % On the other hand, if we had a nonzero \lastskip,      % this make-up glue would be preceded by a non-discardable item      % (the whatsit from the \write), so we must insert a \nobreak. -    \nobreak\vskip\skip0 +    \nobreak\vskip\whatsitskip    \fi +\fi  }  % The index entry written in the file actually looks like @@ -3556,6 +4617,7 @@ where each line of input produces a line of output.}    %    \smallfonts \rm    \tolerance = 9500 +  \plainfrenchspacing    \everypar = {}% don't want the \kern\-parindent from indentation suppression.    %    % See if the index file exists and is nonempty. @@ -3629,7 +4691,7 @@ where each line of input produces a line of output.}  %  % A straightforward implementation would start like this:  %	\def\entry#1#2{... -% But this frozes the catcodes in the argument, and can cause problems to +% But this freezes the catcodes in the argument, and can cause problems to  % @code, which sets - active.  This problem was fixed by a kludge---  % ``-'' was active throughout whole index, but this isn't really right.  % @@ -3685,11 +4747,8 @@ where each line of input produces a line of output.}      % The following is kludged to not output a line of dots in the index if      % there are no page numbers.  The next person who breaks this will be      % cursed by a Unix daemon. -    \def\tempa{{\rm }}% -    \def\tempb{#1}% -    \edef\tempc{\tempa}% -    \edef\tempd{\tempb}% -    \ifx\tempc\tempd +    \setbox\boxA = \hbox{#1}% +    \ifdim\wd\boxA = 0pt        \ %      \else        % @@ -3713,9 +4772,9 @@ where each line of input produces a line of output.}    \endgroup  } -% Like \dotfill except takes at least 1 em. +% Like plain.tex's \dotfill, except uses up at least 1 em.  \def\indexdotfill{\cleaders -  \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill} +  \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}  \def\primary #1{\line{#1\hfil}} @@ -3825,6 +4884,34 @@ where each line of input produces a line of output.}  %  % All done with double columns.  \def\enddoublecolumns{% +  % The following penalty ensures that the page builder is exercised +  % _before_ we change the output routine.  This is necessary in the +  % following situation: +  % +  % The last section of the index consists only of a single entry. +  % Before this section, \pagetotal is less than \pagegoal, so no +  % break occurs before the last section starts.  However, the last +  % section, consisting of \initial and the single \entry, does not +  % fit on the page and has to be broken off.  Without the following +  % penalty the page builder will not be exercised until \eject +  % below, and by that time we'll already have changed the output +  % routine to the \balancecolumns version, so the next-to-last +  % double-column page will be processed with \balancecolumns, which +  % is wrong:  The two columns will go to the main vertical list, with +  % the broken-off section in the recent contributions.  As soon as +  % the output routine finishes, TeX starts reconsidering the page +  % break.  The two columns and the broken-off section both fit on the +  % page, because the two columns now take up only half of the page +  % goal.  When TeX sees \eject from below which follows the final +  % section, it invokes the new output routine that we've set after +  % \balancecolumns below; \onepageout will try to fit the two columns +  % and the final section into the vbox of \pageheight (see +  % \pagebody), causing an overfull box. +  % +  % Note that glue won't work here, because glue does not exercise the +  % page builder, unlike penalties (see The TeXbook, pp. 280-281). +  \penalty0 +  %    \output = {%      % Split the last of the double-column material.  Leave it on the      % current page, no automatic page break. @@ -3934,11 +5021,15 @@ where each line of input produces a line of output.}    \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi    \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} -% Each @chapter defines this as the name of the chapter. -% page headings and footings can use it.  @section does likewise. -% However, they are not reliable, because we don't use marks. +% Each @chapter defines these (using marks) as the number+name, number +% and name of the chapter.  Page headings and footings can use +% these.  @section does likewise.  \def\thischapter{} +\def\thischapternum{} +\def\thischaptername{}  \def\thissection{} +\def\thissectionnum{} +\def\thissectionname{}  \newcount\absseclevel % used to calculate proper heading level  \newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count @@ -4051,7 +5142,9 @@ where each line of input produces a line of output.}    \gdef\chaplevelprefix{\the\chapno.}%    \resetallfloatnos    % -  \message{\putwordChapter\space \the\chapno}% +  % \putwordChapter can contain complex things in translations. +  \toks0=\expandafter{\putwordChapter}% +  \message{\the\toks0 \space \the\chapno}%    %    % Write the actual heading.    \chapmacro{#1}{Ynumbered}{\the\chapno}% @@ -4062,15 +5155,17 @@ where each line of input produces a line of output.}    \global\let\subsubsection = \numberedsubsubsec  } -\outer\parseargdef\appendix{\apphead0{#1}} % normally apphead0 calls appendixzzz +\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz +%  \def\appendixzzz#1{%    \global\secno=0 \global\subsecno=0 \global\subsubsecno=0      \global\advance\appendixno by 1    \gdef\chaplevelprefix{\appendixletter.}%    \resetallfloatnos    % -  \def\appendixnum{\putwordAppendix\space \appendixletter}% -  \message{\appendixnum}% +  % \putwordAppendix can contain complex things in translations. +  \toks0=\expandafter{\putwordAppendix}% +  \message{\the\toks0 \space \appendixletter}%    %    \chapmacro{#1}{Yappendix}{\appendixletter}%    % @@ -4202,7 +5297,6 @@ where each line of input produces a line of output.}  %       3) Likewise, headings look best if no \parindent is used, and  %          if justification is not attempted.  Hence \raggedright. -  \def\majorheading{%    {\advance\chapheadingskip by 10pt \chapbreak }%    \parsearg\chapheadingzzz @@ -4211,8 +5305,8 @@ where each line of input produces a line of output.}  \def\chapheading{\chapbreak \parsearg\chapheadingzzz}  \def\chapheadingzzz#1{%    {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 -                    \parindent=0pt\raggedright -                    \rm #1\hfill}}% +                    \parindent=0pt\ptexraggedright +                    \rmisbold #1\hfill}}%    \bigskip \par\penalty 200\relax    \suppressfirstparagraphindent  } @@ -4239,7 +5333,20 @@ where each line of input produces a line of output.}  \def\chapbreak{\dobreak \chapheadingskip {-4000}}  \def\chappager{\par\vfill\supereject} -\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi} +% Because \domark is called before \chapoddpage, the filler page will +% get the headings for the next chapter, which is wrong.  But we don't +% care -- we just disable all headings on the filler page. +\def\chapoddpage{% +  \chappager +  \ifodd\pageno \else +    \begingroup +      \evenheadline={\hfil}\evenfootline={\hfil}% +      \oddheadline={\hfil}\oddfootline={\hfil}% +      \hbox to 0pt{}% +      \chappager +    \endgroup +  \fi +}  \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} @@ -4273,41 +5380,78 @@ where each line of input produces a line of output.}  \def\Yappendixkeyword{Yappendix}  %  \def\chapmacro#1#2#3{% +  % Insert the first mark before the heading break (see notes for \domark). +  \let\prevchapterdefs=\lastchapterdefs +  \let\prevsectiondefs=\lastsectiondefs +  \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}% +                        \gdef\thissection{}}% +  % +  \def\temptype{#2}% +  \ifx\temptype\Ynothingkeyword +    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% +                          \gdef\thischapter{\thischaptername}}% +  \else\ifx\temptype\Yomitfromtockeyword +    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% +                          \gdef\thischapter{}}% +  \else\ifx\temptype\Yappendixkeyword +    \toks0={#1}% +    \xdef\lastchapterdefs{% +      \gdef\noexpand\thischaptername{\the\toks0}% +      \gdef\noexpand\thischapternum{\appendixletter}% +      % \noexpand\putwordAppendix avoids expanding indigestible +      % commands in some of the translations. +      \gdef\noexpand\thischapter{\noexpand\putwordAppendix{} +                                 \noexpand\thischapternum: +                                 \noexpand\thischaptername}% +    }% +  \else +    \toks0={#1}% +    \xdef\lastchapterdefs{% +      \gdef\noexpand\thischaptername{\the\toks0}% +      \gdef\noexpand\thischapternum{\the\chapno}% +      % \noexpand\putwordChapter avoids expanding indigestible +      % commands in some of the translations. +      \gdef\noexpand\thischapter{\noexpand\putwordChapter{} +                                 \noexpand\thischapternum: +                                 \noexpand\thischaptername}% +    }% +  \fi\fi\fi +  % +  % Output the mark.  Pass it through \safewhatsit, to take care of +  % the preceding space. +  \safewhatsit\domark +  % +  % Insert the chapter heading break.    \pchapsepmacro +  % +  % Now the second mark, after the heading break.  No break points +  % between here and the heading. +  \let\prevchapterdefs=\lastchapterdefs +  \let\prevsectiondefs=\lastsectiondefs +  \domark +  %    {% -    \chapfonts \rm +    \chapfonts \rmisbold      % -    % Have to define \thissection before calling \donoderef, because the +    % Have to define \lastsection before calling \donoderef, because the      % xref code eventually uses it.  On the other hand, it has to be called      % after \pchapsepmacro, or the headline will change too soon. -    \gdef\thissection{#1}% -    \gdef\thischaptername{#1}% +    \gdef\lastsection{#1}%      %      % Only insert the separating space if we have a chapter/appendix      % number, and don't print the unnumbered ``number''. -    \def\temptype{#2}%      \ifx\temptype\Ynothingkeyword        \setbox0 = \hbox{}%        \def\toctype{unnchap}% -      \def\thischapter{#1}%      \else\ifx\temptype\Yomitfromtockeyword        \setbox0 = \hbox{}% contents like unnumbered, but no toc entry        \def\toctype{omit}% -      \xdef\thischapter{}%      \else\ifx\temptype\Yappendixkeyword        \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%        \def\toctype{app}% -      % We don't substitute the actual chapter name into \thischapter -      % because we don't want its macros evaluated now.  And we don't -      % use \thissection because that changes with each section. -      % -      \xdef\thischapter{\putwordAppendix{} \appendixletter: -                        \noexpand\thischaptername}%      \else        \setbox0 = \hbox{#3\enspace}%        \def\toctype{numchap}% -      \xdef\thischapter{\putwordChapter{} \the\chapno: -                        \noexpand\thischaptername}%      \fi\fi\fi      %      % Write the toc entry for this chapter.  Must come before the @@ -4323,7 +5467,8 @@ where each line of input produces a line of output.}      \donoderef{#2}%      %      % Typeset the actual heading. -    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright +    \nobreak % Avoid page breaks at the interline glue. +    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright            \hangindent=\wd0 \centerparametersmaybe            \unhbox0 #1\par}%    }% @@ -4347,8 +5492,8 @@ where each line of input produces a line of output.}  %  \def\unnchfopen #1{%  \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 -                       \parindent=0pt\raggedright -                       \rm #1\hfill}}\bigskip \par\nobreak +                       \parindent=0pt\ptexraggedright +                       \rmisbold #1\hfill}}\bigskip \par\nobreak  }  \def\chfopen #1#2{\chapoddpage {\chapfonts  \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% @@ -4357,7 +5502,7 @@ where each line of input produces a line of output.}  \def\centerchfopen #1{%  \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000                         \parindent=0pt -                       \hfill {\rm #1}\hfill}}\bigskip \par\nobreak +                       \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak  }  \def\CHAPFopen{%    \global\let\chapmacro=\chfopen @@ -4385,47 +5530,108 @@ where each line of input produces a line of output.}  % the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the  % section number.  % +\def\seckeyword{sec} +%  \def\sectionheading#1#2#3#4{%    {%      % Switch to the right set of fonts. -    \csname #2fonts\endcsname \rm +    \csname #2fonts\endcsname \rmisbold +    % +    \def\sectionlevel{#2}% +    \def\temptype{#3}% +    % +    % Insert first mark before the heading break (see notes for \domark). +    \let\prevsectiondefs=\lastsectiondefs +    \ifx\temptype\Ynothingkeyword +      \ifx\sectionlevel\seckeyword +        \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}% +                              \gdef\thissection{\thissectionname}}% +      \fi +    \else\ifx\temptype\Yomitfromtockeyword +      % Don't redefine \thissection. +    \else\ifx\temptype\Yappendixkeyword +      \ifx\sectionlevel\seckeyword +        \toks0={#1}% +        \xdef\lastsectiondefs{% +          \gdef\noexpand\thissectionname{\the\toks0}% +          \gdef\noexpand\thissectionnum{#4}% +          % \noexpand\putwordSection avoids expanding indigestible +          % commands in some of the translations. +          \gdef\noexpand\thissection{\noexpand\putwordSection{} +                                     \noexpand\thissectionnum: +                                     \noexpand\thissectionname}% +        }% +      \fi +    \else +      \ifx\sectionlevel\seckeyword +        \toks0={#1}% +        \xdef\lastsectiondefs{% +          \gdef\noexpand\thissectionname{\the\toks0}% +          \gdef\noexpand\thissectionnum{#4}% +          % \noexpand\putwordSection avoids expanding indigestible +          % commands in some of the translations. +          \gdef\noexpand\thissection{\noexpand\putwordSection{} +                                     \noexpand\thissectionnum: +                                     \noexpand\thissectionname}% +        }% +      \fi +    \fi\fi\fi +    % +    % Go into vertical mode.  Usually we'll already be there, but we +    % don't want the following whatsit to end up in a preceding paragraph +    % if the document didn't happen to have a blank line. +    \par +    % +    % Output the mark.  Pass it through \safewhatsit, to take care of +    % the preceding space. +    \safewhatsit\domark      %      % Insert space above the heading.      \csname #2headingbreak\endcsname      % -    % Only insert the space after the number if we have a section number. -    \def\sectionlevel{#2}% -    \def\temptype{#3}% +    % Now the second mark, after the heading break.  No break points +    % between here and the heading. +    \let\prevsectiondefs=\lastsectiondefs +    \domark      % +    % Only insert the space after the number if we have a section number.      \ifx\temptype\Ynothingkeyword        \setbox0 = \hbox{}%        \def\toctype{unn}% -      \gdef\thissection{#1}% +      \gdef\lastsection{#1}%      \else\ifx\temptype\Yomitfromtockeyword        % for @headings -- no section number, don't include in toc, -      % and don't redefine \thissection. +      % and don't redefine \lastsection.        \setbox0 = \hbox{}%        \def\toctype{omit}%        \let\sectionlevel=\empty      \else\ifx\temptype\Yappendixkeyword        \setbox0 = \hbox{#4\enspace}%        \def\toctype{app}% -      \gdef\thissection{#1}% +      \gdef\lastsection{#1}%      \else        \setbox0 = \hbox{#4\enspace}%        \def\toctype{num}% -      \gdef\thissection{#1}% +      \gdef\lastsection{#1}%      \fi\fi\fi      % -    % Write the toc entry (before \donoderef).  See comments in \chfplain. +    % Write the toc entry (before \donoderef).  See comments in \chapmacro.      \writetocentry{\toctype\sectionlevel}{#1}{#4}%      %      % Write the node reference (= pdf destination for pdftex). -    % Again, see comments in \chfplain. +    % Again, see comments in \chapmacro.      \donoderef{#3}%      % +    % Interline glue will be inserted when the vbox is completed. +    % That glue will be a valid breakpoint for the page, since it'll be +    % preceded by a whatsit (usually from the \donoderef, or from the +    % \writetocentry if there was no node).  We don't want to allow that +    % break, since then the whatsits could end up on page n while the +    % section is on page n+1, thus toc/etc. are wrong.  Debian bug 276000. +    \nobreak +    %      % Output the actual section heading. -    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright +    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright            \hangindent=\wd0  % zero if no section number            \unhbox0 #1}%    }% @@ -4441,11 +5647,11 @@ where each line of input produces a line of output.}    % glue accumulate.  (Not a breakpoint because it's preceded by a    % discardable item.)    \vskip-\parskip -  %  +  %    % This is purely so the last item on the list is a known \penalty >    % 10000.  This is so \startdefun can avoid allowing breakpoints after    % section headings.  Otherwise, it would insert a valid breakpoint between: -  %  +  %    %   @section sec-whatever    %   @deffn def-whatever    \penalty 10001 @@ -4482,11 +5688,11 @@ where each line of input produces a line of output.}      \fi      %      \iflinks -      \toks0 = {#2}% -      \toks2 = \expandafter{\lastnode}% -      \edef\temp{\write\tocfile{\realbackslash #1entry{\the\toks0}{#3}% -                               {\the\toks2}{\noexpand\folio}}}% -      \temp +      {\atdummies +       \edef\temp{% +         \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% +       \temp +      }%      \fi    \fi    % @@ -4499,6 +5705,31 @@ where each line of input produces a line of output.}    \ifpdf \global\pdfmakepagedesttrue \fi  } + +% These characters do not print properly in the Computer Modern roman +% fonts, so we must take special care.  This is more or less redundant +% with the Texinfo input format setup at the end of this file. +% +\def\activecatcodes{% +  \catcode`\"=\active +  \catcode`\$=\active +  \catcode`\<=\active +  \catcode`\>=\active +  \catcode`\\=\active +  \catcode`\^=\active +  \catcode`\_=\active +  \catcode`\|=\active +  \catcode`\~=\active +} + + +% Read the toc file, which is essentially Texinfo input. +\def\readtocfile{% +  \setupdatafile +  \activecatcodes +  \input \tocreadfilename +} +  \newskip\contentsrightmargin \contentsrightmargin=1in  \newcount\savepageno  \newcount\lastnegativepageno \lastnegativepageno = -1 @@ -4515,29 +5746,29 @@ where each line of input produces a line of output.}    %    % Don't need to put `Contents' or `Short Contents' in the headline.    % It is abundantly clear what they are. -  \def\thischapter{}%    \chapmacro{#1}{Yomitfromtoc}{}%    %    \savepageno = \pageno    \begingroup                  % Set up to handle contents files properly. -    \catcode`\\=0  \catcode`\{=1  \catcode`\}=2  \catcode`\@=11 -    % We can't do this, because then an actual ^ in a section -    % title fails, e.g., @chapter ^ -- exponentiation.  --karl, 9jul97. -    %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi -    \raggedbottom             % Worry more about breakpoints than the bottom. +    \raggedbottom              % Worry more about breakpoints than the bottom.      \advance\hsize by -\contentsrightmargin % Don't use the full line length.      %      % Roman numerals for page numbers.      \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi  } +% redefined for the two-volume lispref.  We always output on +% \jobname.toc even if this is redefined. +% +\def\tocreadfilename{\jobname.toc}  % Normal (long) toc. +%  \def\contents{%    \startcontents{\putwordTOC}% -    \openin 1 \jobname.toc +    \openin 1 \tocreadfilename\space      \ifeof 1 \else -      \input \jobname.toc +      \readtocfile      \fi      \vfill \eject      \contentsalignmacro % in case @setchapternewpage odd is in effect @@ -4573,9 +5804,9 @@ where each line of input produces a line of output.}      \let\numsubsubsecentry = \numsecentry      \let\appsubsubsecentry = \numsecentry      \let\unnsubsubsecentry = \numsecentry -    \openin 1 \jobname.toc +    \openin 1 \tocreadfilename\space      \ifeof 1 \else -      \input \jobname.toc +      \readtocfile      \fi      \closein 1      \vfill \eject @@ -4698,45 +5929,12 @@ where each line of input produces a line of output.}  \message{environments,}  % @foo ... @end foo. -% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. -% -% Since these characters are used in examples, it should be an even number of -% \tt widths. Each \tt character is 1en, so two makes it 1em. -% -\def\point{$\star$} -\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} -\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} -\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} -\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} - -% The @error{} command. -% Adapted from the TeXbook's \boxit. -% -\newbox\errorbox -% -{\tentt \global\dimen0 = 3em}% Width of the box. -\dimen2 = .55pt % Thickness of rules -% The text. (`r' is open on the right, `e' somewhat less so on the left.) -\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt} -% -\setbox\errorbox=\hbox to \dimen0{\hfil -   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. -   \advance\hsize by -2\dimen2 % Rules. -   \vbox{% -      \hrule height\dimen2 -      \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text. -         \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. -         \kern3pt\vrule width\dimen2}% Space to right. -      \hrule height\dimen2} -    \hfil} -% -\def\error{\leavevmode\lower.7ex\copy\errorbox} -  % @tex ... @end tex    escapes into raw Tex temporarily.  % One exception: @ is still an escape character, so that @end tex works.  % But \@ or @@ will get a plain tex @ character.  \envdef\tex{% +  \setupmarkupstyle{tex}%    \catcode `\\=0 \catcode `\{=1 \catcode `\}=2    \catcode `\$=3 \catcode `\&=4 \catcode `\#=6    \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie @@ -4746,6 +5944,8 @@ where each line of input produces a line of output.}    \catcode `\|=\other    \catcode `\<=\other    \catcode `\>=\other +  \catcode`\`=\other +  \catcode`\'=\other    \escapechar=`\\    %    \let\b=\ptexb @@ -4765,6 +5965,8 @@ where each line of input produces a line of output.}    \let\/=\ptexslash    \let\*=\ptexstar    \let\t=\ptext +  \expandafter \let\csname top\endcsname=\ptextop  % outer +  \let\frenchspacing=\plainfrenchspacing    %    \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%    \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% @@ -4810,7 +6012,8 @@ where each line of input produces a line of output.}  \let\afterenvbreak = \aboveenvbreak -% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins. +% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins; it will +% also clear it, so that its embedded environments do the narrowing again.  \let\nonarrowing=\relax  % @cartouche ... @end cartouche: draw rectangle w/rounded corners around @@ -4847,7 +6050,7 @@ where each line of input produces a line of output.}  				% each corner char, and rule thickness    \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip    % Flag to tell @lisp, etc., not to narrow margin. -  \let\nonarrowing=\comment +  \let\nonarrowing = t%    \vbox\bgroup        \baselineskip=0pt\parskip=0pt\lineskip=0pt        \carttop @@ -4878,6 +6081,7 @@ where each line of input produces a line of output.}  % This macro is called at the beginning of all the @example variants,  % inside a group. +\newdimen\nonfillparindent  \def\nonfillstart{%    \aboveenvbreak    \hfuzz = 12pt % Don't be fussy @@ -4885,17 +6089,40 @@ where each line of input produces a line of output.}    \let\par = \lisppar % don't ignore blank lines    \obeylines % each line of input is a line of output    \parskip = 0pt +  % Turn off paragraph indentation but redefine \indent to emulate +  % the normal \indent. +  \nonfillparindent=\parindent    \parindent = 0pt +  \let\indent\nonfillindent +  %    \emergencystretch = 0pt % don't try to avoid overfull boxes -  % @cartouche defines \nonarrowing to inhibit narrowing -  % at next level down.    \ifx\nonarrowing\relax      \advance \leftskip by \lispnarrowing      \exdentamount=\lispnarrowing +  \else +    \let\nonarrowing = \relax    \fi    \let\exdent=\nofillexdent  } +\begingroup +\obeyspaces +% We want to swallow spaces (but not other tokens) after the fake +% @indent in our nonfill-environments, where spaces are normally +% active and set to @tie, resulting in them not being ignored after +% @indent. +\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}% +\gdef\nonfillindentcheck{% +\ifx\temp % +\expandafter\nonfillindentgobble% +\else% +\leavevmode\nonfillindentbox% +\fi% +}% +\endgroup +\def\nonfillindentgobble#1{\nonfillindent} +\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}} +  % If you want all examples etc. small: @set dispenvsize small.  % If you want even small examples the full size: @set dispenvsize nosmall.  % This affects the following displayed environments: @@ -4906,12 +6133,18 @@ where each line of input produces a line of output.}  \let\SETdispenvsize\relax  \def\setnormaldispenv{%    \ifx\SETdispenvsize\smallword +    % end paragraph for sake of leading, in case document has no blank +    % line.  This is redundant with what happens in \aboveenvbreak, but +    % we need to do it before changing the fonts, and it's inconvenient +    % to change the fonts afterward. +    \ifnum \lastpenalty=10000 \else \endgraf \fi      \smallexamplefonts \rm    \fi  }  \def\setsmalldispenv{%    \ifx\SETdispenvsize\nosmallword    \else +    \ifnum \lastpenalty=10000 \else \endgraf \fi      \smallexamplefonts \rm    \fi  } @@ -4938,11 +6171,10 @@ where each line of input produces a line of output.}  %  \maketwodispenvs {lisp}{example}{%    \nonfillstart -  \tt +  \tt\setupmarkupstyle{example}%    \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.    \gobble       % eat return  } -  % @display/@smalldisplay: same as @lisp except keep current font.  %  \makedispenv {display}{% @@ -4977,12 +6209,36 @@ where each line of input produces a line of output.}  \let\Eflushright = \afterenvbreak +% @raggedright does more-or-less normal line breaking but no right +% justification.  From plain.tex. +\envdef\raggedright{% +  \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax +} +\let\Eraggedright\par + +\envdef\raggedleft{% +  \parindent=0pt \leftskip0pt plus2em +  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt +  \hbadness=10000 % Last line will usually be underfull, so turn off +                  % badness reporting. +} +\let\Eraggedleft\par + +\envdef\raggedcenter{% +  \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em +  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt +  \hbadness=10000 % Last line will usually be underfull, so turn off +                  % badness reporting. +} +\let\Eraggedcenter\par + +  % @quotation does normal linebreaking (hence we can't use \nonfillstart)  % and narrows the margins.  We keep \parskip nonzero in general, since  % we're doing normal filling.  So, when using \aboveenvbreak and  % \afterenvbreak, temporarily make \parskip 0.  % -\envdef\quotation{% +\def\quotationstart{%    {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip    \parindent=0pt    % @@ -4991,11 +6247,23 @@ where each line of input produces a line of output.}      \advance\leftskip by \lispnarrowing      \advance\rightskip by \lispnarrowing      \exdentamount = \lispnarrowing +  \else      \let\nonarrowing = \relax    \fi    \parsearg\quotationlabel  } +\envdef\quotation{% +  \setnormaldispenv +  \quotationstart +} + +\envdef\smallquotation{% +  \setsmalldispenv +  \quotationstart +} +\let\Esmallquotation = \Equotation +  % We have retained a nonzero parskip for the environment, since we're  % doing normal filling.  % @@ -5031,18 +6299,16 @@ where each line of input produces a line of output.}    \do\ \do\\\do\{\do\}\do\$\do\&%    \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%    \do\<\do\>\do\|\do\@\do+\do\"% +  % Don't do the quotes -- if we do, @set txicodequoteundirected and +  % @set txicodequotebacktick will not have effect on @verb and +  % @verbatim, and ?` and !` ligatures won't get disabled. +  %\do\`\do\'%  }  %  % [Knuth] p. 380  \def\uncatcodespecials{%    \def\do##1{\catcode`##1=\other}\dospecials}  % -% [Knuth] pp. 380,381,391 -% Disable Spanish ligatures ?` and !` of \tt font -\begingroup -  \catcode`\`=\active\gdef`{\relax\lq} -\endgroup -%  % Setup for the @verb command.  %  % Eight spaces for a tab @@ -5054,7 +6320,7 @@ where each line of input produces a line of output.}  \def\setupverb{%    \tt  % easiest (and conventionally used) font for verbatim    \def\par{\leavevmode\endgraf}% -  \catcode`\`=\active +  \setupmarkupstyle{verb}%    \tabeightspaces    % Respect line breaks,    % print special symbols as themselves, and @@ -5069,6 +6335,7 @@ where each line of input produces a line of output.}  \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount  %  \def\starttabbox{\setbox0=\hbox\bgroup} +%  \begingroup    \catcode`\^^I=\active    \gdef\tabexpand{% @@ -5082,14 +6349,16 @@ where each line of input produces a line of output.}      }%    }  \endgroup + +% start the verbatim environment.  \def\setupverbatim{% +  \let\nonarrowing = t%    \nonfillstart -  \advance\leftskip by -\defbodyindent    % Easiest (and conventionally used) font for verbatim    \tt    \def\par{\leavevmode\egroup\box0\endgraf}% -  \catcode`\`=\active    \tabexpand +  \setupmarkupstyle{verbatim}%    % Respect line breaks,    % print special symbols as themselves, and    % make each space count @@ -5149,6 +6418,7 @@ where each line of input produces a line of output.}    {%      \makevalueexpandable      \setupverbatim +    \indexnofonts       % Allow `@@' and other weird things in file names.      \input #1      \afterenvbreak    }% @@ -5174,27 +6444,35 @@ where each line of input produces a line of output.}    \endgroup  } +  \message{defuns,}  % @defun etc.  \newskip\defbodyindent \defbodyindent=.4in  \newskip\defargsindent \defargsindent=50pt  \newskip\deflastargmargin \deflastargmargin=18pt +\newcount\defunpenalty  % Start the processing of @deffn:  \def\startdefun{%    \ifnum\lastpenalty<10000      \medbreak +    \defunpenalty=10003 % Will keep this @deffn together with the +                        % following @def command, see below.    \else      % If there are two @def commands in a row, we'll have a \nobreak,      % which is there to keep the function description together with its      % header.  But if there's nothing but headers, we need to allow a      % break somewhere.  Check specifically for penalty 10002, inserted -    % by \defargscommonending, instead of 10000, since the sectioning +    % by \printdefunline, instead of 10000, since the sectioning      % commands also insert a nobreak penalty, and we don't want to allow      % a break between a section heading and a defun. -    %  -    \ifnum\lastpenalty=10002 \penalty2000 \fi +    % +    % As a minor refinement, we avoid "club" headers by signalling +    % with penalty of 10003 after the very first @deffn in the +    % sequence (see above), and penalty of 10002 after any following +    % @def command. +    \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi      %      % Similarly, after a section heading, do not allow a break.      % But do insert the glue. @@ -5212,7 +6490,7 @@ where each line of input produces a line of output.}    %    % As above, allow line break if we have multiple x headers in a row.    % It's not a great place, though. -  \ifnum\lastpenalty=10002 \penalty3000 \fi +  \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi    %    % And now, it's time to reuse the body of the original defun:    \expandafter\gobbledefun#1% @@ -5230,7 +6508,7 @@ where each line of input produces a line of output.}      \advance\rightskip by 0pt plus 1fil      \endgraf      \nobreak\vskip -\parskip -    \penalty 10002  % signal to \startdefun and \dodefunx +    \penalty\defunpenalty  % signal to \startdefun and \dodefunx      % Some of the @defun-type tags do not enable magic parentheses,      % rendering the following check redundant.  But we don't optimize.      \checkparencounts @@ -5240,7 +6518,7 @@ where each line of input produces a line of output.}  \def\Edefun{\endgraf\medbreak}  % \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; -% the only thing remainnig is to define \deffnheader. +% the only thing remaining is to define \deffnheader.  %  \def\makedefun#1{%    \expandafter\let\csname E#1\endcsname = \Edefun @@ -5419,7 +6697,7 @@ where each line of input produces a line of output.}    %    % On the other hand, if an argument has two dashes (for instance), we    % want a way to get ttsl.  Let's try @var for that. -  \let\var=\ttslanted +  \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%    #1%    \sl\hyphenchar\font=45  } @@ -5499,12 +6777,14 @@ where each line of input produces a line of output.}    \ifnum\parencount=0 \else \badparencount \fi    \ifnum\brackcount=0 \else \badbrackcount \fi  } +% these should not use \errmessage; the glibc manual, at least, actually +% has such constructs (when documenting function pointers).  \def\badparencount{% -  \errmessage{Unbalanced parentheses in @def}% +  \message{Warning: unbalanced parentheses in @def...}%    \global\parencount=0  }  \def\badbrackcount{% -  \errmessage{Unbalanced square braces in @def}% +  \message{Warning: unbalanced square brackets in @def...}%    \global\brackcount=0  } @@ -5539,7 +6819,6 @@ where each line of input produces a line of output.}      \spaceisspace      %      % Append \endinput to make sure that TeX does not see the ending newline. -    %      % I've verified that it is necessary both for e-TeX and for ordinary TeX      %							--kasal, 29nov03      \scantokens{#1\endinput}% @@ -5554,14 +6833,25 @@ where each line of input produces a line of output.}  \newcount\paramno   % Count of parameters  \newtoks\macname    % Macro name  \newif\ifrecursive  % Is it recursive? -\def\macrolist{}    % List of all defined macros in the form -                    % \do\macro1\do\macro2... + +% List of all defined macros in the form +%    \definedummyword\macro1\definedummyword\macro2... +% Currently is also contains all @aliases; the list can be split +% if there is a need. +\def\macrolist{} + +% Add the macro to \macrolist +\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} +\def\addtomacrolistxxx#1{% +     \toks0 = \expandafter{\macrolist\definedummyword#1}% +     \xdef\macrolist{\the\toks0}% +}  % Utility routines.  % This does \let #1 = #2, with \csnames; that is,  %   \let \csname#1\endcsname = \csname#2\endcsname  % (except of course we have to play expansion games). -%  +%  \def\cslet#1#2{%    \expandafter\let    \csname#1\expandafter\endcsname @@ -5589,6 +6879,10 @@ where each line of input produces a line of output.}  % all characters are catcode 10, 11 or 12, except \ which is active  % (as in normal texinfo). It is necessary to change the definition of \. +% Non-ASCII encodings make 8-bit characters active, so un-activate +% them to avoid their expansion.  Must do this non-globally, to +% confine the change to the current group. +  % It's necessary to have hard CRs when the macro is executed. This is  % done by  making ^^M (\endlinechar) catcode 12 when reading the macro  % body, and then making it the \newlinechar in \scanmacro. @@ -5603,6 +6897,7 @@ where each line of input produces a line of output.}    \catcode`\_=\other    \catcode`\|=\other    \catcode`\~=\other +  \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi  }  \def\scanargctxt{% @@ -5653,10 +6948,7 @@ where each line of input produces a line of output.}       \else \errmessage{Macro name \the\macname\space already defined}\fi       \global\cslet{macsave.\the\macname}{\the\macname}%       \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% -     % Add the macroname to \macrolist -     \toks0 = \expandafter{\macrolist\do}% -     \xdef\macrolist{\the\toks0 -       \expandafter\noexpand\csname\the\macname\endcsname}% +     \addtomacrolist{\the\macname}%    \fi    \begingroup \macrobodyctxt    \ifrecursive \expandafter\parsermacbody @@ -5670,7 +6962,7 @@ where each line of input produces a line of output.}      % Remove the macro name from \macrolist:      \begingroup        \expandafter\let\csname#1\endcsname \relax -      \let\do\unmacrodo +      \let\definedummyword\unmacrodo        \xdef\macrolist{\macrolist}%      \endgroup    \else @@ -5682,10 +6974,10 @@ where each line of input produces a line of output.}  % macro definitions that have been changed to \relax.  %  \def\unmacrodo#1{% -  \ifx#1\relax +  \ifx #1\relax      % remove this    \else -    \noexpand\do \noexpand #1% +    \noexpand\definedummyword \noexpand#1%    \fi  } @@ -5798,30 +7090,11 @@ where each line of input produces a line of output.}  % {.  If so it reads up to the closing }, if not, it reads the whole  % line.  Whatever was read is then fed to the next control sequence  % as an argument (by \parsebrace or \parsearg) -\def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx} +\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}  \def\braceorlinexxx{%    \ifx\nchar\bgroup\else      \expandafter\parsearg -  \fi \next} - -% We want to disable all macros during \shipout so that they are not -% expanded by \write. -\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}% -  \edef\next{\macrolist}\expandafter\endgroup\next} - -% For \indexnofonts, we need to get rid of all macros, leaving only the -% arguments (if present).  Of course this is not nearly correct, but it -% is the best we can do for now.  makeinfo does not expand macros in the -% argument to @deffn, which ends up writing an index entry, and texindex -% isn't prepared for an index sort entry that starts with \. -%  -% Since macro invocations are followed by braces, we can just redefine them -% to take a single TeX argument.  The case of a macro invocation that -% goes to end-of-line is not handled. -%  -\def\emptyusermacros{\begingroup -  \def\do##1{\let\noexpand##1=\noexpand\asis}% -  \edef\next{\macrolist}\expandafter\endgroup\next} +  \fi \macnamexxx}  % @alias. @@ -5832,6 +7105,7 @@ where each line of input produces a line of output.}  \def\aliasyyy #1=#2\relax{%    {%      \expandafter\let\obeyedspace=\empty +    \addtomacrolist{#1}%      \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%    }%    \next @@ -5841,7 +7115,6 @@ where each line of input produces a line of output.}  \message{cross references,}  \newwrite\auxfile -  \newif\ifhavexrefs    % True if xref values are known.  \newif\ifwarnedxrefs  % True if we warned once that they aren't known. @@ -5886,7 +7159,7 @@ where each line of input produces a line of output.}  % \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an  % anchor), which consists of three parts: -% 1) NAME-title - the current sectioning name taken from \thissection, +% 1) NAME-title - the current sectioning name taken from \lastsection,  %                 or the anchor name.  % 2) NAME-snt   - section number and type, passed as the SNT arg, or  %                 empty for anchors. @@ -5901,16 +7174,14 @@ where each line of input produces a line of output.}    \iflinks      {%        \atdummies  % preserve commands, but don't expand them -      \turnoffactive -      \otherbackslash        \edef\writexrdef##1##2{%  	\write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef  	  ##1}{##2}}% these are parameters of \writexrdef        }% -      \toks0 = \expandafter{\thissection}% +      \toks0 = \expandafter{\lastsection}%        \immediate \writexrdef{title}{\the\toks0 }%        \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. -      \writexrdef{pg}{\folio}% will be written later, during \shipout +      \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout      }%    \fi  } @@ -5954,18 +7225,25 @@ where each line of input produces a line of output.}    %    % Make link in pdf output.    \ifpdf -    \leavevmode -    \getfilename{#4}% -    {\turnoffactive \otherbackslash +    {\indexnofonts +     \turnoffactive +     % This expands tokens, so do it after making catcode changes, so _ +     % etc. don't get their TeX definitions. +     \getfilename{#4}% +     % +     % See comments at \activebackslashdouble. +     {\activebackslashdouble \xdef\pdfxrefdest{#1}% +      \backslashparens\pdfxrefdest}% +     % +     \leavevmode +     \startlink attr{/Border [0 0 0]}%       \ifnum\filenamelength>0 -       \startlink attr{/Border [0 0 0]}% -         goto file{\the\filename.pdf} name{#1}% +       goto file{\the\filename.pdf} name{\pdfxrefdest}%       \else -       \startlink attr{/Border [0 0 0]}% -         goto name{\pdfmkpgn{#1}}% +       goto name{\pdfmkpgn{\pdfxrefdest}}%       \fi      }% -    \linkcolor +    \setcolor{\linkcolor}%    \fi    %    % Float references are printed completely differently: "Figure 1.2" @@ -5976,7 +7254,6 @@ where each line of input produces a line of output.}      % include an _ in the xref name, etc.      \indexnofonts      \turnoffactive -    \otherbackslash      \expandafter\global\expandafter\let\expandafter\Xthisreftitle        \csname XR#1-title\endcsname    }% @@ -5984,7 +7261,7 @@ where each line of input produces a line of output.}      % If the user specified the print name (third arg) to the ref,      % print it instead of our usual "Figure 1.2".      \ifdim\wd0 = 0pt -      \refx{#1-snt}% +      \refx{#1-snt}{}%      \else        \printedrefname      \fi @@ -6004,14 +7281,14 @@ where each line of input produces a line of output.}      % is a loss.  Therefore, we give the text of the node name again, so it      % is as if TeX is seeing it for the first time.      \ifdim \wd1 > 0pt -      \putwordsection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}% +      \putwordSection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%      \else        % _ (for example) has to be the character _ for the purposes of the        % control sequence corresponding to the node, but it has to expand        % into the usual \leavevmode...\vrule stuff for purposes of        % printing. So we \turnoffactive for the \refx-snt, back on for the        % printing, back off for the \refx-pg. -      {\turnoffactive \otherbackslash +      {\turnoffactive         % Only output a following space if the -snt ref is nonempty; for         % @unnumbered and @anchor, it won't be.         \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% @@ -6024,7 +7301,7 @@ where each line of input produces a line of output.}        ,\space        %        % output the `page 3'. -      \turnoffactive \otherbackslash \putwordpage\tie\refx{#1-pg}{}% +      \turnoffactive \putwordpage\tie\refx{#1-pg}{}%      \fi    \fi    \endlink @@ -6100,10 +7377,18 @@ where each line of input produces a line of output.}  % collisions).  But if this is a float type, we have more work to do.  %  \def\xrdef#1#2{% -  \expandafter\gdef\csname XR#1\endcsname{#2}% remember this xref value. +  {% The node name might contain 8-bit characters, which in our current +   % implementation are changed to commands like @'e.  Don't let these +   % mess up the control sequence name. +    \indexnofonts +    \turnoffactive +    \xdef\safexrefname{#1}% +  }% +  % +  \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref    %    % Was that xref control sequence that we just defined for a float? -  \expandafter\iffloat\csname XR#1\endcsname +  \expandafter\iffloat\csname XR\safexrefname\endcsname      % it was a float, and we have the (safe) float type in \iffloattype.      \expandafter\let\expandafter\floatlist        \csname floatlist\iffloattype\endcsname @@ -6118,7 +7403,8 @@ where each line of input produces a line of output.}      %      % Remember this xref in the control sequence \floatlistFLOATTYPE,      % for later use in \listoffloats. -    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0{#1}}% +    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0 +      {\safexrefname}}%    \fi  } @@ -6127,13 +7413,13 @@ where each line of input produces a line of output.}  \def\tryauxfile{%    \openin 1 \jobname.aux    \ifeof 1 \else -    \readauxfile +    \readdatafile{aux}%      \global\havexrefstrue    \fi    \closein 1  } -\def\readauxfile{\begingroup +\def\setupdatafile{%    \catcode`\^^@=\other    \catcode`\^^A=\other    \catcode`\^^B=\other @@ -6202,11 +7488,11 @@ where each line of input produces a line of output.}    %    % Make the characters 128-255 be printing characters.    {% -    \count 1=128 +    \count1=128      \def\loop{% -      \catcode\count 1=\other -      \advance\count 1 by 1 -      \ifnum \count 1<256 \loop \fi +      \catcode\count1=\other +      \advance\count1 by 1 +      \ifnum \count1<256 \loop \fi      }%    }%    % @@ -6214,8 +7500,12 @@ where each line of input produces a line of output.}    \catcode`\{=1    \catcode`\}=2    \catcode`\@=0 -  % -  \input \jobname.aux +} + +\def\readdatafile#1{% +\begingroup +  \setupdatafile +  \input\jobname.#1  \endgroup} @@ -6301,7 +7591,7 @@ where each line of input produces a line of output.}  % In case a @footnote appears in a vbox, save the footnote text and create  % the real \insert just after the vbox finished.  Otherwise, the insertion  % would be lost. -% Similarily, if a @footnote appears inside an alignment, save the footnote +% Similarly, if a @footnote appears inside an alignment, save the footnote  % text to a box and make the \insert when a row of the table is finished.  % And the same can be done for other insert classes.  --kasal, 16nov03. @@ -6405,15 +7695,19 @@ where each line of input produces a line of output.}    % If the image is by itself, center it.    \ifvmode      \imagevmodetrue -    \nobreak\bigskip +    \nobreak\medskip      % Usually we'll have text after the image which will insert      % \parskip glue, so insert it here too to equalize the space      % above and below.      \nobreak\vskip\parskip      \nobreak -    \line\bgroup\hss    \fi    % +  % Leave vertical mode so that indentation from an enclosing +  % environment such as @quotation is respected.  On the other hand, if +  % it's at the top level, we don't want the normal paragraph indentation. +  \noindent +  %    % Output the image.    \ifpdf      \dopdfimage{#1}{#2}{#3}% @@ -6424,7 +7718,7 @@ where each line of input produces a line of output.}      \epsfbox{#1.eps}%    \fi    % -  \ifimagevmode \hss \egroup \bigbreak \fi  % space after the image +  \ifimagevmode \medskip \fi  % space after the standalone image  \endgroup} @@ -6491,13 +7785,13 @@ where each line of input produces a line of output.}        \global\advance\floatno by 1        %        {% -        % This magic value for \thissection is output by \setref as the +        % This magic value for \lastsection is output by \setref as the          % XREFLABEL-title value.  \xrefX uses it to distinguish float          % labels (which have a completely different output format) from          % node and anchor labels.  And \xrdef uses it to construct the          % lists of floats.          % -        \edef\thissection{\floatmagic=\safefloattype}% +        \edef\lastsection{\floatmagic=\safefloattype}%          \setref{\floatlabel}{Yfloat}%        }%      \fi @@ -6564,7 +7858,8 @@ where each line of input produces a line of output.}        % \floatlabel-lof.  Besides \floatident, we include the short        % caption if specified, else the full caption if specified, else nothing.        {% -        \atdummies \turnoffactive \otherbackslash +        \atdummies +        %          % since we read the caption text in the macro world, where ^^M          % is turned into a normal character, we have to scan it back, so          % we don't write the literal three characters "^^M" into the aux file. @@ -6585,8 +7880,9 @@ where each line of input produces a line of output.}    %    % place the captured inserts    % -  % BEWARE: when the floats start float, we have to issue warning whenever an -  % insert appears inside a float which could possibly float. --kasal, 26may04 +  % BEWARE: when the floats start floating, we have to issue warning +  % whenever an insert appears inside a float which could possibly +  % float. --kasal, 26may04    %    \checkinserts  } @@ -6630,7 +7926,7 @@ where each line of input produces a line of output.}  % #1 is the control sequence we are passed; we expand into a conditional  % which is true if #1 represents a float ref.  That is, the magic -% \thissection value which we \setref above. +% \lastsection value which we \setref above.  %  \def\iffloat#1{\expandafter\doiffloat#1==\finish}  % @@ -6691,39 +7987,909 @@ where each line of input produces a line of output.}    \writeentry  }} +  \message{localization,} -% and i18n. -% @documentlanguage is usually given very early, just after -% @setfilename.  If done too late, it may not override everything -% properly.  Single argument is the language abbreviation. -% It would be nice if we could set up a hyphenation file here. +% For single-language documents, @documentlanguage is usually given very +% early, just after @documentencoding.  Single argument is the language +% (de) or locale (de_DE) abbreviation.  % -\parseargdef\documentlanguage{% +{ +  \catcode`\_ = \active +  \globaldefs=1 +\parseargdef\documentlanguage{\begingroup +  \let_=\normalunderscore  % normal _ character for filenames    \tex % read txi-??.tex file in plain TeX. -    % Read the file if it exists. +    % Read the file by the name they passed if it exists.      \openin 1 txi-#1.tex      \ifeof 1 -      \errhelp = \nolanghelp -      \errmessage{Cannot read language file txi-#1.tex}% +      \documentlanguagetrywithoutunderscore{#1_\finish}%      \else +      \globaldefs = 1  % everything in the txi-LL files needs to persist        \input txi-#1.tex      \fi      \closein 1 -  \endgroup +  \endgroup % end raw TeX +\endgroup} +% +% If they passed de_DE, and txi-de_DE.tex doesn't exist, +% try txi-de.tex. +% +\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% +  \openin 1 txi-#1.tex +  \ifeof 1 +    \errhelp = \nolanghelp +    \errmessage{Cannot read language file txi-#1.tex}% +  \else +    \globaldefs = 1  % everything in the txi-LL files needs to persist +    \input txi-#1.tex +  \fi +  \closein 1  } +}% end of special _ catcode +%  \newhelp\nolanghelp{The given language definition file cannot be found or -is empty.  Maybe you need to install it?  In the current directory -should work if nowhere else does.} +is empty.  Maybe you need to install it?  Putting it in the current +directory should work if nowhere else does.} +% This macro is called from txi-??.tex files; the first argument is the +% \language name to set (without the "\lang@" prefix), the second and +% third args are \{left,right}hyphenmin. +% +% The language names to pass are determined when the format is built. +% See the etex.log file created at that time, e.g., +% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. +% +% With TeX Live 2008, etex now includes hyphenation patterns for all +% available languages.  This means we can support hyphenation in +% Texinfo, at least to some extent.  (This still doesn't solve the +% accented characters problem.) +% +\catcode`@=11 +\def\txisetlanguage#1#2#3{% +  % do not set the language if the name is undefined in the current TeX. +  \expandafter\ifx\csname lang@#1\endcsname \relax +    \message{no patterns for #1}% +  \else +    \global\language = \csname lang@#1\endcsname +  \fi +  % but there is no harm in adjusting the hyphenmin values regardless. +  \global\lefthyphenmin = #2\relax +  \global\righthyphenmin = #3\relax +} -% @documentencoding should change something in TeX eventually, most -% likely, but for now just recognize it. -\let\documentencoding = \comment +% Helpers for encodings. +% Set the catcode of characters 128 through 255 to the specified number. +% +\def\setnonasciicharscatcode#1{% +   \count255=128 +   \loop\ifnum\count255<256 +      \global\catcode\count255=#1\relax +      \advance\count255 by 1 +   \repeat +} +\def\setnonasciicharscatcodenonglobal#1{% +   \count255=128 +   \loop\ifnum\count255<256 +      \catcode\count255=#1\relax +      \advance\count255 by 1 +   \repeat +} -% Page size parameters. +% @documentencoding sets the definition of non-ASCII characters +% according to the specified encoding.  % +\parseargdef\documentencoding{% +  % Encoding being declared for the document. +  \def\declaredencoding{\csname #1.enc\endcsname}% +  % +  % Supported encodings: names converted to tokens in order to be able +  % to compare them with \ifx. +  \def\ascii{\csname US-ASCII.enc\endcsname}% +  \def\latnine{\csname ISO-8859-15.enc\endcsname}% +  \def\latone{\csname ISO-8859-1.enc\endcsname}% +  \def\lattwo{\csname ISO-8859-2.enc\endcsname}% +  \def\utfeight{\csname UTF-8.enc\endcsname}% +  % +  \ifx \declaredencoding \ascii +     \asciichardefs +  % +  \else \ifx \declaredencoding \lattwo +     \setnonasciicharscatcode\active +     \lattwochardefs +  % +  \else \ifx \declaredencoding \latone +     \setnonasciicharscatcode\active +     \latonechardefs +  % +  \else \ifx \declaredencoding \latnine +     \setnonasciicharscatcode\active +     \latninechardefs +  % +  \else \ifx \declaredencoding \utfeight +     \setnonasciicharscatcode\active +     \utfeightchardefs +  % +  \else +    \message{Unknown document encoding #1, ignoring.}% +  % +  \fi % utfeight +  \fi % latnine +  \fi % latone +  \fi % lattwo +  \fi % ascii +} + +% A message to be logged when using a character that isn't available +% the default font encoding (OT1). +% +\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}} + +% Take account of \c (plain) vs. \, (Texinfo) difference. +\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} + +% First, make active non-ASCII characters in order for them to be +% correctly categorized when TeX reads the replacement text of +% macros containing the character definitions. +\setnonasciicharscatcode\active +% +% Latin1 (ISO-8859-1) character definitions. +\def\latonechardefs{% +  \gdef^^a0{~} +  \gdef^^a1{\exclamdown} +  \gdef^^a2{\missingcharmsg{CENT SIGN}} +  \gdef^^a3{{\pounds}} +  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} +  \gdef^^a5{\missingcharmsg{YEN SIGN}} +  \gdef^^a6{\missingcharmsg{BROKEN BAR}} +  \gdef^^a7{\S} +  \gdef^^a8{\"{}} +  \gdef^^a9{\copyright} +  \gdef^^aa{\ordf} +  \gdef^^ab{\guillemetleft} +  \gdef^^ac{$\lnot$} +  \gdef^^ad{\-} +  \gdef^^ae{\registeredsymbol} +  \gdef^^af{\={}} +  % +  \gdef^^b0{\textdegree} +  \gdef^^b1{$\pm$} +  \gdef^^b2{$^2$} +  \gdef^^b3{$^3$} +  \gdef^^b4{\'{}} +  \gdef^^b5{$\mu$} +  \gdef^^b6{\P} +  % +  \gdef^^b7{$^.$} +  \gdef^^b8{\cedilla\ } +  \gdef^^b9{$^1$} +  \gdef^^ba{\ordm} +  % +  \gdef^^bb{\guilletright} +  \gdef^^bc{$1\over4$} +  \gdef^^bd{$1\over2$} +  \gdef^^be{$3\over4$} +  \gdef^^bf{\questiondown} +  % +  \gdef^^c0{\`A} +  \gdef^^c1{\'A} +  \gdef^^c2{\^A} +  \gdef^^c3{\~A} +  \gdef^^c4{\"A} +  \gdef^^c5{\ringaccent A} +  \gdef^^c6{\AE} +  \gdef^^c7{\cedilla C} +  \gdef^^c8{\`E} +  \gdef^^c9{\'E} +  \gdef^^ca{\^E} +  \gdef^^cb{\"E} +  \gdef^^cc{\`I} +  \gdef^^cd{\'I} +  \gdef^^ce{\^I} +  \gdef^^cf{\"I} +  % +  \gdef^^d0{\DH} +  \gdef^^d1{\~N} +  \gdef^^d2{\`O} +  \gdef^^d3{\'O} +  \gdef^^d4{\^O} +  \gdef^^d5{\~O} +  \gdef^^d6{\"O} +  \gdef^^d7{$\times$} +  \gdef^^d8{\O} +  \gdef^^d9{\`U} +  \gdef^^da{\'U} +  \gdef^^db{\^U} +  \gdef^^dc{\"U} +  \gdef^^dd{\'Y} +  \gdef^^de{\TH} +  \gdef^^df{\ss} +  % +  \gdef^^e0{\`a} +  \gdef^^e1{\'a} +  \gdef^^e2{\^a} +  \gdef^^e3{\~a} +  \gdef^^e4{\"a} +  \gdef^^e5{\ringaccent a} +  \gdef^^e6{\ae} +  \gdef^^e7{\cedilla c} +  \gdef^^e8{\`e} +  \gdef^^e9{\'e} +  \gdef^^ea{\^e} +  \gdef^^eb{\"e} +  \gdef^^ec{\`{\dotless i}} +  \gdef^^ed{\'{\dotless i}} +  \gdef^^ee{\^{\dotless i}} +  \gdef^^ef{\"{\dotless i}} +  % +  \gdef^^f0{\dh} +  \gdef^^f1{\~n} +  \gdef^^f2{\`o} +  \gdef^^f3{\'o} +  \gdef^^f4{\^o} +  \gdef^^f5{\~o} +  \gdef^^f6{\"o} +  \gdef^^f7{$\div$} +  \gdef^^f8{\o} +  \gdef^^f9{\`u} +  \gdef^^fa{\'u} +  \gdef^^fb{\^u} +  \gdef^^fc{\"u} +  \gdef^^fd{\'y} +  \gdef^^fe{\th} +  \gdef^^ff{\"y} +} + +% Latin9 (ISO-8859-15) encoding character definitions. +\def\latninechardefs{% +  % Encoding is almost identical to Latin1. +  \latonechardefs +  % +  \gdef^^a4{\euro} +  \gdef^^a6{\v S} +  \gdef^^a8{\v s} +  \gdef^^b4{\v Z} +  \gdef^^b8{\v z} +  \gdef^^bc{\OE} +  \gdef^^bd{\oe} +  \gdef^^be{\"Y} +} + +% Latin2 (ISO-8859-2) character definitions. +\def\lattwochardefs{% +  \gdef^^a0{~} +  \gdef^^a1{\ogonek{A}} +  \gdef^^a2{\u{}} +  \gdef^^a3{\L} +  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} +  \gdef^^a5{\v L} +  \gdef^^a6{\'S} +  \gdef^^a7{\S} +  \gdef^^a8{\"{}} +  \gdef^^a9{\v S} +  \gdef^^aa{\cedilla S} +  \gdef^^ab{\v T} +  \gdef^^ac{\'Z} +  \gdef^^ad{\-} +  \gdef^^ae{\v Z} +  \gdef^^af{\dotaccent Z} +  % +  \gdef^^b0{\textdegree} +  \gdef^^b1{\ogonek{a}} +  \gdef^^b2{\ogonek{ }} +  \gdef^^b3{\l} +  \gdef^^b4{\'{}} +  \gdef^^b5{\v l} +  \gdef^^b6{\'s} +  \gdef^^b7{\v{}} +  \gdef^^b8{\cedilla\ } +  \gdef^^b9{\v s} +  \gdef^^ba{\cedilla s} +  \gdef^^bb{\v t} +  \gdef^^bc{\'z} +  \gdef^^bd{\H{}} +  \gdef^^be{\v z} +  \gdef^^bf{\dotaccent z} +  % +  \gdef^^c0{\'R} +  \gdef^^c1{\'A} +  \gdef^^c2{\^A} +  \gdef^^c3{\u A} +  \gdef^^c4{\"A} +  \gdef^^c5{\'L} +  \gdef^^c6{\'C} +  \gdef^^c7{\cedilla C} +  \gdef^^c8{\v C} +  \gdef^^c9{\'E} +  \gdef^^ca{\ogonek{E}} +  \gdef^^cb{\"E} +  \gdef^^cc{\v E} +  \gdef^^cd{\'I} +  \gdef^^ce{\^I} +  \gdef^^cf{\v D} +  % +  \gdef^^d0{\DH} +  \gdef^^d1{\'N} +  \gdef^^d2{\v N} +  \gdef^^d3{\'O} +  \gdef^^d4{\^O} +  \gdef^^d5{\H O} +  \gdef^^d6{\"O} +  \gdef^^d7{$\times$} +  \gdef^^d8{\v R} +  \gdef^^d9{\ringaccent U} +  \gdef^^da{\'U} +  \gdef^^db{\H U} +  \gdef^^dc{\"U} +  \gdef^^dd{\'Y} +  \gdef^^de{\cedilla T} +  \gdef^^df{\ss} +  % +  \gdef^^e0{\'r} +  \gdef^^e1{\'a} +  \gdef^^e2{\^a} +  \gdef^^e3{\u a} +  \gdef^^e4{\"a} +  \gdef^^e5{\'l} +  \gdef^^e6{\'c} +  \gdef^^e7{\cedilla c} +  \gdef^^e8{\v c} +  \gdef^^e9{\'e} +  \gdef^^ea{\ogonek{e}} +  \gdef^^eb{\"e} +  \gdef^^ec{\v e} +  \gdef^^ed{\'\i} +  \gdef^^ee{\^\i} +  \gdef^^ef{\v d} +  % +  \gdef^^f0{\dh} +  \gdef^^f1{\'n} +  \gdef^^f2{\v n} +  \gdef^^f3{\'o} +  \gdef^^f4{\^o} +  \gdef^^f5{\H o} +  \gdef^^f6{\"o} +  \gdef^^f7{$\div$} +  \gdef^^f8{\v r} +  \gdef^^f9{\ringaccent u} +  \gdef^^fa{\'u} +  \gdef^^fb{\H u} +  \gdef^^fc{\"u} +  \gdef^^fd{\'y} +  \gdef^^fe{\cedilla t} +  \gdef^^ff{\dotaccent{}} +} + +% UTF-8 character definitions. +% +% This code to support UTF-8 is based on LaTeX's utf8.def, with some +% changes for Texinfo conventions.  It is included here under the GPL by +% permission from Frank Mittelbach and the LaTeX team. +% +\newcount\countUTFx +\newcount\countUTFy +\newcount\countUTFz + +\gdef\UTFviiiTwoOctets#1#2{\expandafter +   \UTFviiiDefined\csname u8:#1\string #2\endcsname} +% +\gdef\UTFviiiThreeOctets#1#2#3{\expandafter +   \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname} +% +\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter +   \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname} + +\gdef\UTFviiiDefined#1{% +  \ifx #1\relax +    \message{\linenumber Unicode char \string #1 not defined for Texinfo}% +  \else +    \expandafter #1% +  \fi +} + +\begingroup +  \catcode`\~13 +  \catcode`\"12 + +  \def\UTFviiiLoop{% +    \global\catcode\countUTFx\active +    \uccode`\~\countUTFx +    \uppercase\expandafter{\UTFviiiTmp}% +    \advance\countUTFx by 1 +    \ifnum\countUTFx < \countUTFy +      \expandafter\UTFviiiLoop +    \fi} + +  \countUTFx = "C2 +  \countUTFy = "E0 +  \def\UTFviiiTmp{% +    \xdef~{\noexpand\UTFviiiTwoOctets\string~}} +  \UTFviiiLoop + +  \countUTFx = "E0 +  \countUTFy = "F0 +  \def\UTFviiiTmp{% +    \xdef~{\noexpand\UTFviiiThreeOctets\string~}} +  \UTFviiiLoop + +  \countUTFx = "F0 +  \countUTFy = "F4 +  \def\UTFviiiTmp{% +    \xdef~{\noexpand\UTFviiiFourOctets\string~}} +  \UTFviiiLoop +\endgroup + +\begingroup +  \catcode`\"=12 +  \catcode`\<=12 +  \catcode`\.=12 +  \catcode`\,=12 +  \catcode`\;=12 +  \catcode`\!=12 +  \catcode`\~=13 + +  \gdef\DeclareUnicodeCharacter#1#2{% +    \countUTFz = "#1\relax +    \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}% +    \begingroup +      \parseXMLCharref +      \def\UTFviiiTwoOctets##1##2{% +        \csname u8:##1\string ##2\endcsname}% +      \def\UTFviiiThreeOctets##1##2##3{% +        \csname u8:##1\string ##2\string ##3\endcsname}% +      \def\UTFviiiFourOctets##1##2##3##4{% +        \csname u8:##1\string ##2\string ##3\string ##4\endcsname}% +      \expandafter\expandafter\expandafter\expandafter +       \expandafter\expandafter\expandafter +       \gdef\UTFviiiTmp{#2}% +    \endgroup} + +  \gdef\parseXMLCharref{% +    \ifnum\countUTFz < "A0\relax +      \errhelp = \EMsimple +      \errmessage{Cannot define Unicode char value < 00A0}% +    \else\ifnum\countUTFz < "800\relax +      \parseUTFviiiA,% +      \parseUTFviiiB C\UTFviiiTwoOctets.,% +    \else\ifnum\countUTFz < "10000\relax +      \parseUTFviiiA;% +      \parseUTFviiiA,% +      \parseUTFviiiB E\UTFviiiThreeOctets.{,;}% +    \else +      \parseUTFviiiA;% +      \parseUTFviiiA,% +      \parseUTFviiiA!% +      \parseUTFviiiB F\UTFviiiFourOctets.{!,;}% +    \fi\fi\fi +  } + +  \gdef\parseUTFviiiA#1{% +    \countUTFx = \countUTFz +    \divide\countUTFz by 64 +    \countUTFy = \countUTFz +    \multiply\countUTFz by 64 +    \advance\countUTFx by -\countUTFz +    \advance\countUTFx by 128 +    \uccode `#1\countUTFx +    \countUTFz = \countUTFy} + +  \gdef\parseUTFviiiB#1#2#3#4{% +    \advance\countUTFz by "#10\relax +    \uccode `#3\countUTFz +    \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} +\endgroup + +\def\utfeightchardefs{% +  \DeclareUnicodeCharacter{00A0}{\tie} +  \DeclareUnicodeCharacter{00A1}{\exclamdown} +  \DeclareUnicodeCharacter{00A3}{\pounds} +  \DeclareUnicodeCharacter{00A8}{\"{ }} +  \DeclareUnicodeCharacter{00A9}{\copyright} +  \DeclareUnicodeCharacter{00AA}{\ordf} +  \DeclareUnicodeCharacter{00AB}{\guillemetleft} +  \DeclareUnicodeCharacter{00AD}{\-} +  \DeclareUnicodeCharacter{00AE}{\registeredsymbol} +  \DeclareUnicodeCharacter{00AF}{\={ }} + +  \DeclareUnicodeCharacter{00B0}{\ringaccent{ }} +  \DeclareUnicodeCharacter{00B4}{\'{ }} +  \DeclareUnicodeCharacter{00B8}{\cedilla{ }} +  \DeclareUnicodeCharacter{00BA}{\ordm} +  \DeclareUnicodeCharacter{00BB}{\guillemetright} +  \DeclareUnicodeCharacter{00BF}{\questiondown} + +  \DeclareUnicodeCharacter{00C0}{\`A} +  \DeclareUnicodeCharacter{00C1}{\'A} +  \DeclareUnicodeCharacter{00C2}{\^A} +  \DeclareUnicodeCharacter{00C3}{\~A} +  \DeclareUnicodeCharacter{00C4}{\"A} +  \DeclareUnicodeCharacter{00C5}{\AA} +  \DeclareUnicodeCharacter{00C6}{\AE} +  \DeclareUnicodeCharacter{00C7}{\cedilla{C}} +  \DeclareUnicodeCharacter{00C8}{\`E} +  \DeclareUnicodeCharacter{00C9}{\'E} +  \DeclareUnicodeCharacter{00CA}{\^E} +  \DeclareUnicodeCharacter{00CB}{\"E} +  \DeclareUnicodeCharacter{00CC}{\`I} +  \DeclareUnicodeCharacter{00CD}{\'I} +  \DeclareUnicodeCharacter{00CE}{\^I} +  \DeclareUnicodeCharacter{00CF}{\"I} + +  \DeclareUnicodeCharacter{00D0}{\DH} +  \DeclareUnicodeCharacter{00D1}{\~N} +  \DeclareUnicodeCharacter{00D2}{\`O} +  \DeclareUnicodeCharacter{00D3}{\'O} +  \DeclareUnicodeCharacter{00D4}{\^O} +  \DeclareUnicodeCharacter{00D5}{\~O} +  \DeclareUnicodeCharacter{00D6}{\"O} +  \DeclareUnicodeCharacter{00D8}{\O} +  \DeclareUnicodeCharacter{00D9}{\`U} +  \DeclareUnicodeCharacter{00DA}{\'U} +  \DeclareUnicodeCharacter{00DB}{\^U} +  \DeclareUnicodeCharacter{00DC}{\"U} +  \DeclareUnicodeCharacter{00DD}{\'Y} +  \DeclareUnicodeCharacter{00DE}{\TH} +  \DeclareUnicodeCharacter{00DF}{\ss} + +  \DeclareUnicodeCharacter{00E0}{\`a} +  \DeclareUnicodeCharacter{00E1}{\'a} +  \DeclareUnicodeCharacter{00E2}{\^a} +  \DeclareUnicodeCharacter{00E3}{\~a} +  \DeclareUnicodeCharacter{00E4}{\"a} +  \DeclareUnicodeCharacter{00E5}{\aa} +  \DeclareUnicodeCharacter{00E6}{\ae} +  \DeclareUnicodeCharacter{00E7}{\cedilla{c}} +  \DeclareUnicodeCharacter{00E8}{\`e} +  \DeclareUnicodeCharacter{00E9}{\'e} +  \DeclareUnicodeCharacter{00EA}{\^e} +  \DeclareUnicodeCharacter{00EB}{\"e} +  \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}} +  \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}} +  \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}} +  \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}} + +  \DeclareUnicodeCharacter{00F0}{\dh} +  \DeclareUnicodeCharacter{00F1}{\~n} +  \DeclareUnicodeCharacter{00F2}{\`o} +  \DeclareUnicodeCharacter{00F3}{\'o} +  \DeclareUnicodeCharacter{00F4}{\^o} +  \DeclareUnicodeCharacter{00F5}{\~o} +  \DeclareUnicodeCharacter{00F6}{\"o} +  \DeclareUnicodeCharacter{00F8}{\o} +  \DeclareUnicodeCharacter{00F9}{\`u} +  \DeclareUnicodeCharacter{00FA}{\'u} +  \DeclareUnicodeCharacter{00FB}{\^u} +  \DeclareUnicodeCharacter{00FC}{\"u} +  \DeclareUnicodeCharacter{00FD}{\'y} +  \DeclareUnicodeCharacter{00FE}{\th} +  \DeclareUnicodeCharacter{00FF}{\"y} + +  \DeclareUnicodeCharacter{0100}{\=A} +  \DeclareUnicodeCharacter{0101}{\=a} +  \DeclareUnicodeCharacter{0102}{\u{A}} +  \DeclareUnicodeCharacter{0103}{\u{a}} +  \DeclareUnicodeCharacter{0104}{\ogonek{A}} +  \DeclareUnicodeCharacter{0105}{\ogonek{a}} +  \DeclareUnicodeCharacter{0106}{\'C} +  \DeclareUnicodeCharacter{0107}{\'c} +  \DeclareUnicodeCharacter{0108}{\^C} +  \DeclareUnicodeCharacter{0109}{\^c} +  \DeclareUnicodeCharacter{0118}{\ogonek{E}} +  \DeclareUnicodeCharacter{0119}{\ogonek{e}} +  \DeclareUnicodeCharacter{010A}{\dotaccent{C}} +  \DeclareUnicodeCharacter{010B}{\dotaccent{c}} +  \DeclareUnicodeCharacter{010C}{\v{C}} +  \DeclareUnicodeCharacter{010D}{\v{c}} +  \DeclareUnicodeCharacter{010E}{\v{D}} + +  \DeclareUnicodeCharacter{0112}{\=E} +  \DeclareUnicodeCharacter{0113}{\=e} +  \DeclareUnicodeCharacter{0114}{\u{E}} +  \DeclareUnicodeCharacter{0115}{\u{e}} +  \DeclareUnicodeCharacter{0116}{\dotaccent{E}} +  \DeclareUnicodeCharacter{0117}{\dotaccent{e}} +  \DeclareUnicodeCharacter{011A}{\v{E}} +  \DeclareUnicodeCharacter{011B}{\v{e}} +  \DeclareUnicodeCharacter{011C}{\^G} +  \DeclareUnicodeCharacter{011D}{\^g} +  \DeclareUnicodeCharacter{011E}{\u{G}} +  \DeclareUnicodeCharacter{011F}{\u{g}} + +  \DeclareUnicodeCharacter{0120}{\dotaccent{G}} +  \DeclareUnicodeCharacter{0121}{\dotaccent{g}} +  \DeclareUnicodeCharacter{0124}{\^H} +  \DeclareUnicodeCharacter{0125}{\^h} +  \DeclareUnicodeCharacter{0128}{\~I} +  \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}} +  \DeclareUnicodeCharacter{012A}{\=I} +  \DeclareUnicodeCharacter{012B}{\={\dotless{i}}} +  \DeclareUnicodeCharacter{012C}{\u{I}} +  \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}} + +  \DeclareUnicodeCharacter{0130}{\dotaccent{I}} +  \DeclareUnicodeCharacter{0131}{\dotless{i}} +  \DeclareUnicodeCharacter{0132}{IJ} +  \DeclareUnicodeCharacter{0133}{ij} +  \DeclareUnicodeCharacter{0134}{\^J} +  \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}} +  \DeclareUnicodeCharacter{0139}{\'L} +  \DeclareUnicodeCharacter{013A}{\'l} + +  \DeclareUnicodeCharacter{0141}{\L} +  \DeclareUnicodeCharacter{0142}{\l} +  \DeclareUnicodeCharacter{0143}{\'N} +  \DeclareUnicodeCharacter{0144}{\'n} +  \DeclareUnicodeCharacter{0147}{\v{N}} +  \DeclareUnicodeCharacter{0148}{\v{n}} +  \DeclareUnicodeCharacter{014C}{\=O} +  \DeclareUnicodeCharacter{014D}{\=o} +  \DeclareUnicodeCharacter{014E}{\u{O}} +  \DeclareUnicodeCharacter{014F}{\u{o}} + +  \DeclareUnicodeCharacter{0150}{\H{O}} +  \DeclareUnicodeCharacter{0151}{\H{o}} +  \DeclareUnicodeCharacter{0152}{\OE} +  \DeclareUnicodeCharacter{0153}{\oe} +  \DeclareUnicodeCharacter{0154}{\'R} +  \DeclareUnicodeCharacter{0155}{\'r} +  \DeclareUnicodeCharacter{0158}{\v{R}} +  \DeclareUnicodeCharacter{0159}{\v{r}} +  \DeclareUnicodeCharacter{015A}{\'S} +  \DeclareUnicodeCharacter{015B}{\'s} +  \DeclareUnicodeCharacter{015C}{\^S} +  \DeclareUnicodeCharacter{015D}{\^s} +  \DeclareUnicodeCharacter{015E}{\cedilla{S}} +  \DeclareUnicodeCharacter{015F}{\cedilla{s}} + +  \DeclareUnicodeCharacter{0160}{\v{S}} +  \DeclareUnicodeCharacter{0161}{\v{s}} +  \DeclareUnicodeCharacter{0162}{\cedilla{t}} +  \DeclareUnicodeCharacter{0163}{\cedilla{T}} +  \DeclareUnicodeCharacter{0164}{\v{T}} + +  \DeclareUnicodeCharacter{0168}{\~U} +  \DeclareUnicodeCharacter{0169}{\~u} +  \DeclareUnicodeCharacter{016A}{\=U} +  \DeclareUnicodeCharacter{016B}{\=u} +  \DeclareUnicodeCharacter{016C}{\u{U}} +  \DeclareUnicodeCharacter{016D}{\u{u}} +  \DeclareUnicodeCharacter{016E}{\ringaccent{U}} +  \DeclareUnicodeCharacter{016F}{\ringaccent{u}} + +  \DeclareUnicodeCharacter{0170}{\H{U}} +  \DeclareUnicodeCharacter{0171}{\H{u}} +  \DeclareUnicodeCharacter{0174}{\^W} +  \DeclareUnicodeCharacter{0175}{\^w} +  \DeclareUnicodeCharacter{0176}{\^Y} +  \DeclareUnicodeCharacter{0177}{\^y} +  \DeclareUnicodeCharacter{0178}{\"Y} +  \DeclareUnicodeCharacter{0179}{\'Z} +  \DeclareUnicodeCharacter{017A}{\'z} +  \DeclareUnicodeCharacter{017B}{\dotaccent{Z}} +  \DeclareUnicodeCharacter{017C}{\dotaccent{z}} +  \DeclareUnicodeCharacter{017D}{\v{Z}} +  \DeclareUnicodeCharacter{017E}{\v{z}} + +  \DeclareUnicodeCharacter{01C4}{D\v{Z}} +  \DeclareUnicodeCharacter{01C5}{D\v{z}} +  \DeclareUnicodeCharacter{01C6}{d\v{z}} +  \DeclareUnicodeCharacter{01C7}{LJ} +  \DeclareUnicodeCharacter{01C8}{Lj} +  \DeclareUnicodeCharacter{01C9}{lj} +  \DeclareUnicodeCharacter{01CA}{NJ} +  \DeclareUnicodeCharacter{01CB}{Nj} +  \DeclareUnicodeCharacter{01CC}{nj} +  \DeclareUnicodeCharacter{01CD}{\v{A}} +  \DeclareUnicodeCharacter{01CE}{\v{a}} +  \DeclareUnicodeCharacter{01CF}{\v{I}} + +  \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}} +  \DeclareUnicodeCharacter{01D1}{\v{O}} +  \DeclareUnicodeCharacter{01D2}{\v{o}} +  \DeclareUnicodeCharacter{01D3}{\v{U}} +  \DeclareUnicodeCharacter{01D4}{\v{u}} + +  \DeclareUnicodeCharacter{01E2}{\={\AE}} +  \DeclareUnicodeCharacter{01E3}{\={\ae}} +  \DeclareUnicodeCharacter{01E6}{\v{G}} +  \DeclareUnicodeCharacter{01E7}{\v{g}} +  \DeclareUnicodeCharacter{01E8}{\v{K}} +  \DeclareUnicodeCharacter{01E9}{\v{k}} + +  \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}} +  \DeclareUnicodeCharacter{01F1}{DZ} +  \DeclareUnicodeCharacter{01F2}{Dz} +  \DeclareUnicodeCharacter{01F3}{dz} +  \DeclareUnicodeCharacter{01F4}{\'G} +  \DeclareUnicodeCharacter{01F5}{\'g} +  \DeclareUnicodeCharacter{01F8}{\`N} +  \DeclareUnicodeCharacter{01F9}{\`n} +  \DeclareUnicodeCharacter{01FC}{\'{\AE}} +  \DeclareUnicodeCharacter{01FD}{\'{\ae}} +  \DeclareUnicodeCharacter{01FE}{\'{\O}} +  \DeclareUnicodeCharacter{01FF}{\'{\o}} + +  \DeclareUnicodeCharacter{021E}{\v{H}} +  \DeclareUnicodeCharacter{021F}{\v{h}} + +  \DeclareUnicodeCharacter{0226}{\dotaccent{A}} +  \DeclareUnicodeCharacter{0227}{\dotaccent{a}} +  \DeclareUnicodeCharacter{0228}{\cedilla{E}} +  \DeclareUnicodeCharacter{0229}{\cedilla{e}} +  \DeclareUnicodeCharacter{022E}{\dotaccent{O}} +  \DeclareUnicodeCharacter{022F}{\dotaccent{o}} + +  \DeclareUnicodeCharacter{0232}{\=Y} +  \DeclareUnicodeCharacter{0233}{\=y} +  \DeclareUnicodeCharacter{0237}{\dotless{j}} + +  \DeclareUnicodeCharacter{02DB}{\ogonek{ }} + +  \DeclareUnicodeCharacter{1E02}{\dotaccent{B}} +  \DeclareUnicodeCharacter{1E03}{\dotaccent{b}} +  \DeclareUnicodeCharacter{1E04}{\udotaccent{B}} +  \DeclareUnicodeCharacter{1E05}{\udotaccent{b}} +  \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}} +  \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}} +  \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}} +  \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}} +  \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}} +  \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}} +  \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}} +  \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}} + +  \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}} +  \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}} + +  \DeclareUnicodeCharacter{1E20}{\=G} +  \DeclareUnicodeCharacter{1E21}{\=g} +  \DeclareUnicodeCharacter{1E22}{\dotaccent{H}} +  \DeclareUnicodeCharacter{1E23}{\dotaccent{h}} +  \DeclareUnicodeCharacter{1E24}{\udotaccent{H}} +  \DeclareUnicodeCharacter{1E25}{\udotaccent{h}} +  \DeclareUnicodeCharacter{1E26}{\"H} +  \DeclareUnicodeCharacter{1E27}{\"h} + +  \DeclareUnicodeCharacter{1E30}{\'K} +  \DeclareUnicodeCharacter{1E31}{\'k} +  \DeclareUnicodeCharacter{1E32}{\udotaccent{K}} +  \DeclareUnicodeCharacter{1E33}{\udotaccent{k}} +  \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}} +  \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}} +  \DeclareUnicodeCharacter{1E36}{\udotaccent{L}} +  \DeclareUnicodeCharacter{1E37}{\udotaccent{l}} +  \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}} +  \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}} +  \DeclareUnicodeCharacter{1E3E}{\'M} +  \DeclareUnicodeCharacter{1E3F}{\'m} + +  \DeclareUnicodeCharacter{1E40}{\dotaccent{M}} +  \DeclareUnicodeCharacter{1E41}{\dotaccent{m}} +  \DeclareUnicodeCharacter{1E42}{\udotaccent{M}} +  \DeclareUnicodeCharacter{1E43}{\udotaccent{m}} +  \DeclareUnicodeCharacter{1E44}{\dotaccent{N}} +  \DeclareUnicodeCharacter{1E45}{\dotaccent{n}} +  \DeclareUnicodeCharacter{1E46}{\udotaccent{N}} +  \DeclareUnicodeCharacter{1E47}{\udotaccent{n}} +  \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}} +  \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}} + +  \DeclareUnicodeCharacter{1E54}{\'P} +  \DeclareUnicodeCharacter{1E55}{\'p} +  \DeclareUnicodeCharacter{1E56}{\dotaccent{P}} +  \DeclareUnicodeCharacter{1E57}{\dotaccent{p}} +  \DeclareUnicodeCharacter{1E58}{\dotaccent{R}} +  \DeclareUnicodeCharacter{1E59}{\dotaccent{r}} +  \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}} +  \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}} +  \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}} +  \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}} + +  \DeclareUnicodeCharacter{1E60}{\dotaccent{S}} +  \DeclareUnicodeCharacter{1E61}{\dotaccent{s}} +  \DeclareUnicodeCharacter{1E62}{\udotaccent{S}} +  \DeclareUnicodeCharacter{1E63}{\udotaccent{s}} +  \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}} +  \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}} +  \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}} +  \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}} +  \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}} +  \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}} + +  \DeclareUnicodeCharacter{1E7C}{\~V} +  \DeclareUnicodeCharacter{1E7D}{\~v} +  \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}} +  \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}} + +  \DeclareUnicodeCharacter{1E80}{\`W} +  \DeclareUnicodeCharacter{1E81}{\`w} +  \DeclareUnicodeCharacter{1E82}{\'W} +  \DeclareUnicodeCharacter{1E83}{\'w} +  \DeclareUnicodeCharacter{1E84}{\"W} +  \DeclareUnicodeCharacter{1E85}{\"w} +  \DeclareUnicodeCharacter{1E86}{\dotaccent{W}} +  \DeclareUnicodeCharacter{1E87}{\dotaccent{w}} +  \DeclareUnicodeCharacter{1E88}{\udotaccent{W}} +  \DeclareUnicodeCharacter{1E89}{\udotaccent{w}} +  \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}} +  \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}} +  \DeclareUnicodeCharacter{1E8C}{\"X} +  \DeclareUnicodeCharacter{1E8D}{\"x} +  \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}} +  \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}} + +  \DeclareUnicodeCharacter{1E90}{\^Z} +  \DeclareUnicodeCharacter{1E91}{\^z} +  \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}} +  \DeclareUnicodeCharacter{1E93}{\udotaccent{z}} +  \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}} +  \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}} +  \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}} +  \DeclareUnicodeCharacter{1E97}{\"t} +  \DeclareUnicodeCharacter{1E98}{\ringaccent{w}} +  \DeclareUnicodeCharacter{1E99}{\ringaccent{y}} + +  \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}} +  \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}} + +  \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}} +  \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}} +  \DeclareUnicodeCharacter{1EBC}{\~E} +  \DeclareUnicodeCharacter{1EBD}{\~e} + +  \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}} +  \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}} +  \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}} +  \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}} + +  \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}} +  \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}} + +  \DeclareUnicodeCharacter{1EF2}{\`Y} +  \DeclareUnicodeCharacter{1EF3}{\`y} +  \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}} + +  \DeclareUnicodeCharacter{1EF8}{\~Y} +  \DeclareUnicodeCharacter{1EF9}{\~y} + +  \DeclareUnicodeCharacter{2013}{--} +  \DeclareUnicodeCharacter{2014}{---} +  \DeclareUnicodeCharacter{2018}{\quoteleft} +  \DeclareUnicodeCharacter{2019}{\quoteright} +  \DeclareUnicodeCharacter{201A}{\quotesinglbase} +  \DeclareUnicodeCharacter{201C}{\quotedblleft} +  \DeclareUnicodeCharacter{201D}{\quotedblright} +  \DeclareUnicodeCharacter{201E}{\quotedblbase} +  \DeclareUnicodeCharacter{2022}{\bullet} +  \DeclareUnicodeCharacter{2026}{\dots} +  \DeclareUnicodeCharacter{2039}{\guilsinglleft} +  \DeclareUnicodeCharacter{203A}{\guilsinglright} +  \DeclareUnicodeCharacter{20AC}{\euro} + +  \DeclareUnicodeCharacter{2192}{\expansion} +  \DeclareUnicodeCharacter{21D2}{\result} + +  \DeclareUnicodeCharacter{2212}{\minus} +  \DeclareUnicodeCharacter{2217}{\point} +  \DeclareUnicodeCharacter{2261}{\equiv} +}% end of \utfeightchardefs + + +% US-ASCII character definitions. +\def\asciichardefs{% nothing need be done +   \relax +} + +% Make non-ASCII characters printable again for compatibility with +% existing Texinfo documents that may use them, even without declaring a +% document encoding. +% +\setnonasciicharscatcode \other + + +\message{formatting,} +  \newdimen\defaultparindent \defaultparindent = 15pt  \chapheadingskip = 15pt plus 4pt minus 2pt @@ -6736,7 +8902,7 @@ should work if nowhere else does.}  % Don't be so finicky about underfull hboxes, either.  \hbadness = 2000 -% Following George Bush, just get rid of widows and orphans. +% Following George Bush, get rid of widows and orphans.  \widowpenalty=10000  \clubpenalty=10000 @@ -6754,9 +8920,9 @@ should work if nowhere else does.}    \fi  } -% Parameters in order: 1) textheight; 2) textwidth; 3) voffset; -% 4) hoffset; 5) binding offset; 6) topskip; 7) physical page height; 8) -% physical page width. +% Parameters in order: 1) textheight; 2) textwidth; +% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip; +% 7) physical page height; 8) physical page width.  %  % We also call \setleading{\textleading}, so the caller should define  % \textleading.  The caller should also set \parskip. @@ -6783,6 +8949,10 @@ should work if nowhere else does.}    \ifpdf      \pdfpageheight #7\relax      \pdfpagewidth #8\relax +    % if we don't reset these, they will remain at "1 true in" of +    % whatever layout pdftex was dumped with. +    \pdfhorigin = 1 true in +    \pdfvorigin = 1 true in    \fi    %    \setleading{\textleading} @@ -6797,19 +8967,19 @@ should work if nowhere else does.}    \textleading = 13.2pt    %    % If page is nothing but text, make it come out even. -  \internalpagesizes{46\baselineskip}{6in}% +  \internalpagesizes{607.2pt}{6in}% that's 46 lines                      {\voffset}{.25in}%                      {\bindingoffset}{36pt}%                      {11in}{8.5in}%  }} -% Use @smallbook to reset parameters for 7x9.5 (or so) format. +% Use @smallbook to reset parameters for 7x9.25 trim size.  \def\smallbook{{\globaldefs = 1    \parskip = 2pt plus 1pt    \textleading = 12pt    %    \internalpagesizes{7.5in}{5in}% -                    {\voffset}{.25in}% +                    {-.2in}{0in}%                      {\bindingoffset}{16pt}%                      {9.25in}{7in}%    % @@ -6820,6 +8990,24 @@ should work if nowhere else does.}    \defbodyindent = .5cm  }} +% Use @smallerbook to reset parameters for 6x9 trim size. +% (Just testing, parameters still in flux.) +\def\smallerbook{{\globaldefs = 1 +  \parskip = 1.5pt plus 1pt +  \textleading = 12pt +  % +  \internalpagesizes{7.4in}{4.8in}% +                    {-.2in}{-.4in}% +                    {0pt}{14pt}% +                    {9in}{6in}% +  % +  \lispnarrowing = 0.25in +  \tolerance = 700 +  \hfuzz = 1pt +  \contentsrightmargin = 0pt +  \defbodyindent = .4cm +}} +  % Use @afourpaper to print on European A4 paper.  \def\afourpaper{{\globaldefs = 1    \parskip = 3pt plus 2pt minus 1pt @@ -6835,7 +9023,7 @@ should work if nowhere else does.}    % \global\normaloffset = -6mm    % \global\bindingoffset = 10mm    % @end tex -  \internalpagesizes{51\baselineskip}{160mm} +  \internalpagesizes{673.2pt}{160mm}% that's 51 lines                      {\voffset}{\hoffset}%                      {\bindingoffset}{44pt}%                      {297mm}{210mm}% @@ -6900,7 +9088,7 @@ should work if nowhere else does.}    \parskip = 3pt plus 2pt minus 1pt    \setleading{\textleading}%    % -  \dimen0 = #1 +  \dimen0 = #1\relax    \advance\dimen0 by \voffset    %    \dimen2 = \hsize @@ -6919,6 +9107,9 @@ should work if nowhere else does.}  \message{and turning on texinfo input format.} +% DEL is a comment character, in case @c does not suffice. +\catcode`\^^? = 14 +  % Define macros to output various characters with catcode for normal text.  \catcode`\"=\other  \catcode`\~=\other @@ -6972,6 +9163,7 @@ should work if nowhere else does.}  \catcode`\_=\active  \def_{\ifusingtt\normalunderscore\_} +\let\realunder=_  % Subroutine for the previous macro.  \def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } @@ -6994,6 +9186,13 @@ should work if nowhere else does.}  % \otherifyactive is called near the end of this file.  \def\otherifyactive{\catcode`+=\other \catcode`\_=\other} +% Used sometimes to turn off (effectively) the active characters even after +% parsing them. +\def\turnoffactive{% +  \normalturnoffactive +  \otherbackslash +} +  \catcode`\@=0  % \backslashcurfont outputs one backslash character in current font, @@ -7001,27 +9200,29 @@ should work if nowhere else does.}  \global\chardef\backslashcurfont=`\\  \global\let\rawbackslashxx=\backslashcurfont  % let existing .??s files work +% \realbackslash is an actual character `\' with catcode other, and +% \doublebackslash is two of them (for the pdf outlines). +{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} + +% In texinfo, backslash is an active character; it prints the backslash +% in fixed width font. +\catcode`\\=\active +@def@normalbackslash{{@tt@backslashcurfont}} +% On startup, @fixbackslash assigns: +%  @let \ = @normalbackslash +  % \rawbackslash defines an active \ to do \backslashcurfont.  % \otherbackslash defines an active \ to be a literal `\' character with  % catcode other. -{\catcode`\\=\active - @gdef@rawbackslash{@let\=@backslashcurfont} - @gdef@otherbackslash{@let\=@realbackslash} -} - -% \realbackslash is an actual character `\' with catcode other. -{\catcode`\\=\other @gdef@realbackslash{\}} +@gdef@rawbackslash{@let\=@backslashcurfont} +@gdef@otherbackslash{@let\=@realbackslash} -% \normalbackslash outputs one backslash in fixed width font. -\def\normalbackslash{{\tt\backslashcurfont}} - -\catcode`\\=\active - -% Used sometimes to turn off (effectively) the active characters -% even after parsing them. -@def@turnoffactive{% +% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of +% the literal character `\'. +% +@def@normalturnoffactive{% +  @let\=@normalbackslash    @let"=@normaldoublequote -  @let\=@realbackslash    @let~=@normaltilde    @let^=@normalcaret    @let_=@normalunderscore @@ -7030,15 +9231,11 @@ should work if nowhere else does.}    @let>=@normalgreater    @let+=@normalplus    @let$=@normaldollar %$ font-lock fix +  @markupsetuplqdefault +  @markupsetuprqdefault    @unsepspaces  } -% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of -% the literal character `\'.  (Thus, \ is not expandable when this is in -% effect.) -% -@def@normalturnoffactive{@turnoffactive @let\=@normalbackslash} -  % Make _ and + \other characters, temporarily.  % This is canceled by @fixbackslash.  @otherifyactive @@ -7051,9 +9248,9 @@ should work if nowhere else does.}  @global@let\ = @eatinput  % On the other hand, perhaps the file did not have a `\input texinfo'. Then -% the first `\{ in the file would cause an error. This macro tries to fix +% the first `\' in the file would cause an error. This macro tries to fix  % that, assuming it is called before the first `\' could plausibly occur. -% Also back turn on active characters that might appear in the input +% Also turn back on active characters that might appear in the input  % file name, in case not using a pre-dumped format.  %  @gdef@fixbackslash{% @@ -7070,6 +9267,14 @@ should work if nowhere else does.}  @catcode`@# = @other  @catcode`@% = @other +@c Finally, make ` and ' active, so that txicodequoteundirected and +@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}.  If we +@c don't make ` and ' active, @code will not get them as active chars. +@c Do this last of all since we use ` in the previous @catcode assignments. +@catcode`@'=@active +@catcode`@`=@active +@markupsetuplqdefault +@markupsetuprqdefault  @c Local variables:  @c eval: (add-hook 'write-file-hooks 'time-stamp) | 
