This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: [boehms-gc, libjava?] Update Boehm's GC to 6.8


The approximately equivalent code in the atomic_ops package, and hence
in 7.0, reads:

AO_INLINE AO_TS_VAL_t
AO_test_and_set_full(volatile AO_TS_t *addr) {
  int oldval;
  /* SWP on ARM is very similar to XCHG on x86.                 */
  /* The first operand is the result, the second the value      */
  /* to be stored.  Both registers must be different from addr. */
  /* Make the address operand an early clobber output so it     */
  /* doesn't overlap with the other operands.  The early clobber*/
  /* on oldval is neccessary to prevent the compiler allocating */
  /* them to the same register if they are both unused.         */
  __asm__ __volatile__("swp %0, %2, [%3]"
                        : "=&r"(oldval), "=&r"(addr)
                        : "r"(1), "1"(addr)
                        : "memory");
  return oldval;
} 

This looks far more convincing to me.  I think the __asm__ line could be
taken verbatim, though it would be great if someone could test.

The underlying problem is that this instruction has weird register
constraints, as documented here.  I'm not sure that this particular
encoding into gcc asm notation is in any sense optimal.

Hans

> -----Original Message-----
> From: java-patches-owner@gcc.gnu.org 
> [mailto:java-patches-owner@gcc.gnu.org] On Behalf Of Laurynas Biveinis
> Sent: Friday, August 04, 2006 12:56 AM
> To: Daniel Berlin; Gcc Patch List; java-patches@gcc.gnu.org
> Subject: [boehms-gc, libjava?] Update Boehm's GC to 6.8
> 
> Hi,
> 
> I've updated Boehm's GC in boehms-gc branch to 6.8 version. I've
> (textually) merged all the local changes beetween stock 6.6 version
> and GCC local version, with exception of one change below, where
> source in 6.8 version is unlike any of these versions. Anybody who
> knows what happens there is welcome to commit patch to boehms-gc
> branch or send me a patch.
> 
> Libjava folks, maybe this change is interesting to you too, feel free
> to test this new version, if you want. Do not worry about my
> experimental code: just use --with-gc=page and you will be testing
> mainline GCC as of 2006-06-15.
> 
> diff -r -N -c3 -p -x .svn gc6.6/include/private/gc_locks.h
> gcc-boehm/boehm-gc/include/private/gc_locks.h
> *** gc6.6/include/private/gc_locks.h	2005-05-17 
> 00:57:54.000000000 +0300
> --- gcc-boehm/boehm-gc/include/private/gc_locks.h	2006-07-26
> 21:44:09.000000000 +0300
> ***************
> *** 245,251 ****
>             /* See linuxthreads/sysdeps/arm/pt-machine.h in 
> glibc-2.1 */
>             __asm__ __volatile__("swp %0, %1, [%2]"
>         		  	     : "=r"(oldval)
> !       			     : "r"(1), "r"(addr)
>   			     : "memory");
>             return oldval;
>           }
> --- 229,235 ----
>             /* See linuxthreads/sysdeps/arm/pt-machine.h in 
> glibc-2.1 */
>             __asm__ __volatile__("swp %0, %1, [%2]"
>         		  	     : "=r"(oldval)
> !       			     : "0"(1), "r"(addr)
>   			     : "memory");
>             return oldval;
>           }
> 
> And the patch itself:
> 
> Index: darwin_stop_world.c
> ===================================================================
> --- darwin_stop_world.c	(revision 115762)
> +++ darwin_stop_world.c	(working copy)
> @@ -63,7 +63,7 @@
> 
>  unsigned long FindTopOfStack(unsigned int stack_start) {
>    StackFrame	*frame;
> -
> +
>    if (stack_start == 0) {
>  # ifdef POWERPC
>  #   if CPP_WORDSZ == 32
> @@ -106,7 +106,13 @@
>    GC_thread p;
>    pthread_t me;
>    ptr_t lo, hi;
> +#if defined(POWERPC)
>    THREAD_STATE state;
> +#elif defined(I386)
> +  i386_thread_state_t state;
> +#else
> +# error FIXME for non-x86 || ppc architectures
> +#endif
>    mach_msg_type_number_t thread_state_count = 
> MACHINE_THREAD_STATE_COUNT;
> 
>    me = pthread_self();
> @@ -126,39 +132,53 @@
>  			     &thread_state_count);
>  	if(r != KERN_SUCCESS) ABORT("thread_get_state failed");
>  	
> +#if defined(I386)
> +	lo = state.esp;
> +
> +	GC_push_one(state.eax);
> +	GC_push_one(state.ebx);
> +	GC_push_one(state.ecx);
> +	GC_push_one(state.edx);
> +	GC_push_one(state.edi);
> +	GC_push_one(state.esi);
> +	GC_push_one(state.ebp);
> +#elif defined(POWERPC)
>  	lo = (void*)(state . THREAD_FLD (r1) - PPC_RED_ZONE_SIZE);
> -
> -	GC_push_one(state . THREAD_FLD (r0));
> -	GC_push_one(state . THREAD_FLD (r2));
> -	GC_push_one(state . THREAD_FLD (r3));
> -	GC_push_one(state . THREAD_FLD (r4));
> -	GC_push_one(state . THREAD_FLD (r5));
> -	GC_push_one(state . THREAD_FLD (r6));
> -	GC_push_one(state . THREAD_FLD (r7));
> -	GC_push_one(state . THREAD_FLD (r8));
> -	GC_push_one(state . THREAD_FLD (r9));
> -	GC_push_one(state . THREAD_FLD (r10));
> -	GC_push_one(state . THREAD_FLD (r11));
> -	GC_push_one(state . THREAD_FLD (r12));
> -	GC_push_one(state . THREAD_FLD (r13));
> -	GC_push_one(state . THREAD_FLD (r14));
> -	GC_push_one(state . THREAD_FLD (r15));
> -	GC_push_one(state . THREAD_FLD (r16));
> -	GC_push_one(state . THREAD_FLD (r17));
> -	GC_push_one(state . THREAD_FLD (r18));
> -	GC_push_one(state . THREAD_FLD (r19));
> -	GC_push_one(state . THREAD_FLD (r20));
> -	GC_push_one(state . THREAD_FLD (r21));
> -	GC_push_one(state . THREAD_FLD (r22));
> -	GC_push_one(state . THREAD_FLD (r23));
> -	GC_push_one(state . THREAD_FLD (r24));
> -	GC_push_one(state . THREAD_FLD (r25));
> -	GC_push_one(state . THREAD_FLD (r26));
> -	GC_push_one(state . THREAD_FLD (r27));
> -	GC_push_one(state . THREAD_FLD (r28));
> -	GC_push_one(state . THREAD_FLD (r29));
> -	GC_push_one(state . THREAD_FLD (r30));
> -	GC_push_one(state . THREAD_FLD (r31));
> +
> +	GC_push_one(state.r0);
> +	GC_push_one(state.r2);
> +	GC_push_one(state.r3);
> +	GC_push_one(state.r4);
> +	GC_push_one(state.r5);
> +	GC_push_one(state.r6);
> +	GC_push_one(state.r7);
> +	GC_push_one(state.r8);
> +	GC_push_one(state.r9);
> +	GC_push_one(state.r10);
> +	GC_push_one(state.r11);
> +	GC_push_one(state.r12);
> +	GC_push_one(state.r13);
> +	GC_push_one(state.r14);
> +	GC_push_one(state.r15);
> +	GC_push_one(state.r16);
> +	GC_push_one(state.r17);
> +	GC_push_one(state.r18);
> +	GC_push_one(state.r19);
> +	GC_push_one(state.r20);
> +	GC_push_one(state.r21);
> +	GC_push_one(state.r22);
> +	GC_push_one(state.r23);
> +	GC_push_one(state.r24);
> +	GC_push_one(state.r25);
> +	GC_push_one(state.r26);
> +	GC_push_one(state.r27);
> +	GC_push_one(state.r28);
> +	GC_push_one(state.r29);
> +	GC_push_one(state.r30);
> +	GC_push_one(state.r31);
> +#else
> +# error FIXME for non-x86 || ppc architectures
> +#endif
>        } /* p != me */
>        if(p->flags & MAIN_THREAD)
>  	hi = GC_stackbottom;
> @@ -180,6 +200,7 @@
> 
>  void GC_push_all_stacks() {
>      int i;
> +	task_t my_task;
>      kern_return_t r;
>      mach_port_t me;
>      ptr_t lo, hi;
> @@ -189,7 +210,8 @@
>      me = mach_thread_self();
>      if (!GC_thr_initialized) GC_thr_init();
> 
> -    r = task_threads(current_task(), &act_list, &listcount);
> +	my_task = current_task();
> +    r = task_threads(my_task, &act_list, &listcount);
>      if(r != KERN_SUCCESS) ABORT("task_threads failed");
>      for(i = 0; i < listcount; i++) {
>        thread_act_t thread = act_list[i];
> @@ -207,38 +229,40 @@
>  	lo = (void*)(info . THREAD_FLD (r1) - PPC_RED_ZONE_SIZE);
>  	hi = (ptr_t)FindTopOfStack(info . THREAD_FLD (r1));
> 
> -	GC_push_one(info . THREAD_FLD (r0));
> -	GC_push_one(info . THREAD_FLD (r2));
> -	GC_push_one(info . THREAD_FLD (r3));
> -	GC_push_one(info . THREAD_FLD (r4));
> -	GC_push_one(info . THREAD_FLD (r5));
> -	GC_push_one(info . THREAD_FLD (r6));
> -	GC_push_one(info . THREAD_FLD (r7));
> -	GC_push_one(info . THREAD_FLD (r8));
> -	GC_push_one(info . THREAD_FLD (r9));
> -	GC_push_one(info . THREAD_FLD (r10));
> -	GC_push_one(info . THREAD_FLD (r11));
> -	GC_push_one(info . THREAD_FLD (r12));
> -	GC_push_one(info . THREAD_FLD (r13));
> -	GC_push_one(info . THREAD_FLD (r14));
> -	GC_push_one(info . THREAD_FLD (r15));
> -	GC_push_one(info . THREAD_FLD (r16));
> -	GC_push_one(info . THREAD_FLD (r17));
> -	GC_push_one(info . THREAD_FLD (r18));
> -	GC_push_one(info . THREAD_FLD (r19));
> -	GC_push_one(info . THREAD_FLD (r20));
> -	GC_push_one(info . THREAD_FLD (r21));
> -	GC_push_one(info . THREAD_FLD (r22));
> -	GC_push_one(info . THREAD_FLD (r23));
> -	GC_push_one(info . THREAD_FLD (r24));
> -	GC_push_one(info . THREAD_FLD (r25));
> -	GC_push_one(info . THREAD_FLD (r26));
> -	GC_push_one(info . THREAD_FLD (r27));
> -	GC_push_one(info . THREAD_FLD (r28));
> -	GC_push_one(info . THREAD_FLD (r29));
> -	GC_push_one(info . THREAD_FLD (r30));
> +	GC_push_one(info . THREAD_FLD (r0));
> +	GC_push_one(info . THREAD_FLD (r2));
> +	GC_push_one(info . THREAD_FLD (r3));
> +	GC_push_one(info . THREAD_FLD (r4));
> +	GC_push_one(info . THREAD_FLD (r5));
> +	GC_push_one(info . THREAD_FLD (r6));
> +	GC_push_one(info . THREAD_FLD (r7));
> +	GC_push_one(info . THREAD_FLD (r8));
> +	GC_push_one(info . THREAD_FLD (r9));
> +	GC_push_one(info . THREAD_FLD (r10));
> +	GC_push_one(info . THREAD_FLD (r11));
> +	GC_push_one(info . THREAD_FLD (r12));
> +	GC_push_one(info . THREAD_FLD (r13));
> +	GC_push_one(info . THREAD_FLD (r14));
> +	GC_push_one(info . THREAD_FLD (r15));
> +	GC_push_one(info . THREAD_FLD (r16));
> +	GC_push_one(info . THREAD_FLD (r17));
> +	GC_push_one(info . THREAD_FLD (r18));
> +	GC_push_one(info . THREAD_FLD (r19));
> +	GC_push_one(info . THREAD_FLD (r20));
> +	GC_push_one(info . THREAD_FLD (r21));
> +	GC_push_one(info . THREAD_FLD (r22));
> +	GC_push_one(info . THREAD_FLD (r23));
> +	GC_push_one(info . THREAD_FLD (r24));
> +	GC_push_one(info . THREAD_FLD (r25));
> +	GC_push_one(info . THREAD_FLD (r26));
> +	GC_push_one(info . THREAD_FLD (r27));
> +	GC_push_one(info . THREAD_FLD (r28));
> +	GC_push_one(info . THREAD_FLD (r29));
> +	GC_push_one(info . THREAD_FLD (r30));
>  	GC_push_one(info . THREAD_FLD (r31));
> -#      else
> +
> +# else
> +
>  	/* FIXME: Remove after testing:	*/
>  	WARN("This is completely untested and likely will not 
> work\n", 0);
>  	THREAD_STATE info;
> @@ -250,21 +274,21 @@
>  	lo = (void*)info . THREAD_FLD (esp);
>  	hi = (ptr_t)FindTopOfStack(info . THREAD_FLD (esp));
> 
> -	GC_push_one(info . THREAD_FLD (eax));
> -	GC_push_one(info . THREAD_FLD (ebx));
> -	GC_push_one(info . THREAD_FLD (ecx));
> -	GC_push_one(info . THREAD_FLD (edx));
> -	GC_push_one(info . THREAD_FLD (edi));
> -	GC_push_one(info . THREAD_FLD (esi));
> -	/* GC_push_one(info . THREAD_FLD (ebp));  */
> -	/* GC_push_one(info . THREAD_FLD (esp));  */
> -	GC_push_one(info . THREAD_FLD (ss));
> -	GC_push_one(info . THREAD_FLD (eip));
> -	GC_push_one(info . THREAD_FLD (cs));
> -	GC_push_one(info . THREAD_FLD (ds));
> -	GC_push_one(info . THREAD_FLD (es));
> -	GC_push_one(info . THREAD_FLD (fs));
> -	GC_push_one(info . THREAD_FLD (gs));
> +	GC_push_one(info . THREAD_FLD(eax));
> +	GC_push_one(info . THREAD_FLD(ebx));
> +	GC_push_one(info . THREAD_FLD(ecx));
> +	GC_push_one(info . THREAD_FLD(edx));
> +	GC_push_one(info . THREAD_FLD(edi));
> +	GC_push_one(info . THREAD_FLD(esi));
> +	/* GC_push_one(info . THREAD_FLD(ebp));  */
> +	/* GC_push_one(info . THREAD_FLD(esp));  */
> +	GC_push_one(info . THREAD_FLD(ss));
> +	GC_push_one(info . THREAD_FLD(eip));
> +	GC_push_one(info . THREAD_FLD(cs));
> +	GC_push_one(info . THREAD_FLD(ds));
> +	GC_push_one(info . THREAD_FLD(es));
> +	GC_push_one(info . THREAD_FLD(fs));
> +	GC_push_one(info . THREAD_FLD(gs));
>  #      endif /* !POWERPC */
>        }
>  #     if DEBUG_THREADS
> @@ -275,8 +299,10 @@
>  		 );
>  #     endif
>        GC_push_all_stack(lo, hi);
> +	  mach_port_deallocate(my_task, thread);
>      } /* for(p=GC_threads[i]...) */
> -    vm_deallocate(current_task(), (vm_address_t)act_list,
> sizeof(thread_t) * listcount);
> +    vm_deallocate(my_task, (vm_address_t)act_list, sizeof(thread_t) *
> listcount);
> +	mach_port_deallocate(my_task, me);
>  }
>  #endif /* !DARWIN_DONT_PARSE_STACK */
> 
> @@ -370,6 +396,7 @@
>      }
>      if (!found) GC_mach_threads_count++;
>    }
> +  mach_port_deallocate(current_task(), my_thread);
>    return changed;
>  }
> 
> @@ -379,6 +406,7 @@
>  {
>    int i, changes;
>      GC_thread p;
> +	task_t my_task = current_task();
>      mach_port_t my_thread = mach_thread_self();
>      kern_return_t kern_result;
>      thread_act_array_t act_list, prev_list;
> @@ -414,13 +442,21 @@
>        prevcount = 0;
>        do {
>  	int result;
> -	kern_result = task_threads(current_task(), &act_list, 
> &listcount);
> +	kern_result = task_threads(my_task, &act_list, &listcount);
>  	result = GC_suspend_thread_list(act_list, listcount,
>  					prev_list, prevcount);
>  	changes = result;
>  	prev_list = act_list;
>  	prevcount = listcount;
> -        vm_deallocate(current_task(), (vm_address_t)act_list,
> sizeof(thread_t) * listcount);
> +	
> +	if(kern_result == KERN_SUCCESS) {
> +		int i;
> +		
> +		for(i = 0; i < listcount; i++)
> +			mach_port_deallocate(my_task, act_list[i]);
> +		
> +        vm_deallocate(my_task, (vm_address_t)act_list,
> sizeof(thread_t) * listcount);
> +	}
>        } while (changes);
> 
> 
> @@ -437,12 +473,15 @@
>      #if DEBUG_THREADS
>        GC_printf1("World stopped from 0x%lx\n", my_thread);
>      #endif
> +	
> +	  mach_port_deallocate(my_task, my_thread);
>  }
> 
>  /* Caller holds allocation lock, and has held it 
> continuously since	*/
>  /* the world stopped.					
> 		*/
>  void GC_start_world()
>  {
> +  task_t my_task = current_task();
>    mach_port_t my_thread = mach_thread_self();
>    int i, j;
>    GC_thread p;
> @@ -463,7 +502,7 @@
>        }
>  #   endif
> 
> -    kern_result = task_threads(current_task(), &act_list, 
> &listcount);
> +    kern_result = task_threads(my_task, &act_list, &listcount);
>      for(i = 0; i < listcount; i++) {
>        thread_act_t thread = act_list[i];
>        if (thread != my_thread &&
> @@ -491,8 +530,12 @@
>  	  }
>  	}
>        }
> +	
> +	  mach_port_deallocate(my_task, thread);
>      }
> -    vm_deallocate(current_task(), (vm_address_t)act_list,
> sizeof(thread_t) * listcount);
> +    vm_deallocate(my_task, (vm_address_t)act_list, sizeof(thread_t) *
> listcount);
> +	
> +	mach_port_deallocate(my_task, my_thread);
>  #   if DEBUG_THREADS
>       GC_printf0("World started\n");
>  #   endif
> Index: Makefile.in
> ===================================================================
> --- Makefile.in	(revision 115762)
> +++ Makefile.in	(working copy)
> @@ -39,7 +39,7 @@
>  target_triplet = @target@
>  check_PROGRAMS = gctest$(EXEEXT)
>  DIST_COMMON = $(srcdir)/../config.guess $(srcdir)/../config.sub \
> -	ChangeLog $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
> +	$(srcdir)/Makefile.in $(srcdir)/Makefile.am \
>  	$(top_srcdir)/configure $(am__configure_deps) \
>  	$(srcdir)/../mkinstalldirs $(srcdir)/../compile \
>  	$(srcdir)/../compile $(srcdir)/../compile $(srcdir)/../compile \
> @@ -67,11 +67,12 @@
>  	$(srcdir)/../config.guess $(srcdir)/../config.sub
>  subdir = .
>  ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
> -am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
> +am__aclocal_m4_deps = $(top_srcdir)/../libtool.m4 \
> +	$(top_srcdir)/../config/acx.m4 \
>  	$(top_srcdir)/../config/depstand.m4 \
>  	$(top_srcdir)/../config/lead-dot.m4 \
>  	$(top_srcdir)/../config/no-executables.m4 \
> -	$(top_srcdir)/../libtool.m4 $(top_srcdir)/configure.ac
> +	$(top_srcdir)/configure.ac
>  am__configure_deps = $(am__aclocal_m4_deps) 
> $(CONFIGURE_DEPENDENCIES) \
>  	$(ACLOCAL_M4)
>  am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
> Index: ltmain.sh
> ===================================================================
> --- ltmain.sh	(revision 0)
> +++ ltmain.sh	(revision 0)
> @@ -0,0 +1,4984 @@
> +# ltmain.sh - Provide generalized library-building support services.
> +# NOTE: Changing this file will not affect anything until 
> you rerun configure.
> +#
> +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
> +# Free Software Foundation, Inc.
> +# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
> +#
> +# This program is free software; you can redistribute it 
> and/or modify
> +# it under the terms of the GNU General Public License as 
> published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful, but
> +# WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +# General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program; if not, write to the Free Software
> +# 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.
> +
> +# Check that we have a working $echo.
> +if test "X$1" = X--no-reexec; then
> +  # Discard the --no-reexec flag, and continue.
> +  shift
> +elif test "X$1" = X--fallback-echo; then
> +  # Avoid inline document here, it may be left over
> +  :
> +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
> +  # Yippee, $echo works!
> +  :
> +else
> +  # Restart under the correct shell, and then maybe $echo will work.
> +  exec $SHELL "$0" --no-reexec ${1+"$@"}
> +fi
> +
> +if test "X$1" = X--fallback-echo; then
> +  # used as fallback echo
> +  shift
> +  cat <<EOF
> +$*
> +EOF
> +  exit 0
> +fi
> +
> +# The name of this program.
> +progname=`$echo "$0" | sed 's%^.*/%%'`
> +modename="$progname"
> +
> +# Constants.
> +PROGRAM=ltmain.sh
> +PACKAGE=libtool
> +VERSION=1.4.2
> +TIMESTAMP=" (1.922.2.53 2001/09/11 03:18:52)"
> +
> +default_mode=
> +help="Try \`$progname --help' for more information."
> +magic="%%%MAGIC variable%%%"
> +mkdir="mkdir"
> +mv="mv -f"
> +rm="rm -f"
> +
> +# Sed substitution that helps us do robust quoting.  It 
> backslashifies
> +# metacharacters that are still active within double-quoted strings.
> +Xsed='sed -e 1s/^X//'
> +sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
> +SP2NL='tr \040 \012'
> +NL2SP='tr \015\012 \040\040'
> +
> +# NLS nuisances.
> +# Only set LANG and LC_ALL to C if already set.
> +# These must not be set unconditionally because not all 
> systems understand
> +# e.g. LANG=C (notably SCO).
> +# We save the old values to restore during execute mode.
> +if test "${LC_ALL+set}" = set; then
> +  save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
> +fi
> +if test "${LANG+set}" = set; then
> +  save_LANG="$LANG"; LANG=C; export LANG
> +fi
> +
> +# Make sure IFS has a sensible default
> +: ${IFS=" 	"}
> +
> +if test "$build_libtool_libs" != yes && test 
> "$build_old_libs" != yes; then
> +  echo "$modename: not configured to build any kind of library" 1>&2
> +  echo "Fatal configuration error.  See the $PACKAGE docs for more
> information." 1>&2
> +  exit 1
> +fi
> +
> +# Global variables.
> +mode=$default_mode
> +nonopt=
> +prev=
> +prevopt=
> +run=
> +show="$echo"
> +show_help=
> +execute_dlfiles=
> +lo2o="s/\\.lo\$/.${objext}/"
> +o2lo="s/\\.${objext}\$/.lo/"
> +
> +# Parse our command line options once, thoroughly.
> +while test $# -gt 0
> +do
> +  arg="$1"
> +  shift
> +
> +  case $arg in
> +  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
> +  *) optarg= ;;
> +  esac
> +
> +  # If the previous option needs an argument, assign it.
> +  if test -n "$prev"; then
> +    case $prev in
> +    execute_dlfiles)
> +      execute_dlfiles="$execute_dlfiles $arg"
> +      ;;
> +    *)
> +      eval "$prev=\$arg"
> +      ;;
> +    esac
> +
> +    prev=
> +    prevopt=
> +    continue
> +  fi
> +
> +  # Have we seen a non-optional argument yet?
> +  case $arg in
> +  --help)
> +    show_help=yes
> +    ;;
> +
> +  --version)
> +    echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
> +    exit 0
> +    ;;
> +
> +  --config)
> +    sed -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL
> CONFIG/,$d' $0
> +    exit 0
> +    ;;
> +
> +  --debug)
> +    echo "$progname: enabling shell trace mode"
> +    set -x
> +    ;;
> +
> +  --dry-run | -n)
> +    run=:
> +    ;;
> +
> +  --features)
> +    echo "host: $host"
> +    if test "$build_libtool_libs" = yes; then
> +      echo "enable shared libraries"
> +    else
> +      echo "disable shared libraries"
> +    fi
> +    if test "$build_old_libs" = yes; then
> +      echo "enable static libraries"
> +    else
> +      echo "disable static libraries"
> +    fi
> +    exit 0
> +    ;;
> +
> +  --finish) mode="finish" ;;
> +
> +  --mode) prevopt="--mode" prev=mode ;;
> +  --mode=*) mode="$optarg" ;;
> +
> +  --quiet | --silent)
> +    show=:
> +    ;;
> +
> +  -dlopen)
> +    prevopt="-dlopen"
> +    prev=execute_dlfiles
> +    ;;
> +
> +  -*)
> +    $echo "$modename: unrecognized option \`$arg'" 1>&2
> +    $echo "$help" 1>&2
> +    exit 1
> +    ;;
> +
> +  *)
> +    nonopt="$arg"
> +    break
> +    ;;
> +  esac
> +done
> +
> +if test -n "$prevopt"; then
> +  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
> +  $echo "$help" 1>&2
> +  exit 1
> +fi
> +
> +# 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=
> +
> +if test -z "$show_help"; then
> +
> +  # Infer the operation mode.
> +  if test -z "$mode"; then
> +    case $nonopt in
> +    *cc | *++ | gcc* | *-gcc*)
> +      mode=link
> +      for arg
> +      do
> +	case $arg in
> +	-c)
> +	   mode=compile
> +	   break
> +	   ;;
> +	esac
> +      done
> +      ;;
> +    *db | *dbx | *strace | *truss)
> +      mode=execute
> +      ;;
> +    *install*|cp|mv)
> +      mode=install
> +      ;;
> +    *rm)
> +      mode=uninstall
> +      ;;
> +    *)
> +      # If we have no mode, but dlfiles were specified, then 
> do execute mode.
> +      test -n "$execute_dlfiles" && mode=execute
> +
> +      # Just use the default operation mode.
> +      if test -z "$mode"; then
> +	if test -n "$nonopt"; then
> +	  $echo "$modename: warning: cannot infer operation 
> mode from \`$nonopt'" 1>&2
> +	else
> +	  $echo "$modename: warning: cannot infer operation mode without
> MODE-ARGS" 1>&2
> +	fi
> +      fi
> +      ;;
> +    esac
> +  fi
> +
> +  # Only execute mode is allowed to have -dlopen flags.
> +  if test -n "$execute_dlfiles" && test "$mode" != execute; then
> +    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
> +    $echo "$help" 1>&2
> +    exit 1
> +  fi
> +
> +  # Change the help message to a mode-specific one.
> +  generic_help="$help"
> +  help="Try \`$modename --help --mode=$mode' for more information."
> +
> +  # These modes are in order of execution frequency so that 
> they run quickly.
> +  case $mode in
> +  # libtool compile mode
> +  compile)
> +    modename="$modename: compile"
> +    # Get the compilation command and the source file.
> +    base_compile=
> +    prev=
> +    lastarg=
> +    srcfile="$nonopt"
> +    suppress_output=
> +
> +    user_target=no
> +    for arg
> +    do
> +      case $prev in
> +      "") ;;
> +      xcompiler)
> +	# Aesthetically quote the previous argument.
> +	prev=
> +	lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
> +
> +	case $arg in
> +	# Double-quote args containing other shell metacharacters.
> +	# Many Bourne shells cannot handle close brackets correctly
> +	# in scan sets, so we specify it separately.
> +	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
> +	  arg="\"$arg\""
> +	  ;;
> +	esac
> +
> +	# Add the previous argument to base_compile.
> +	if test -z "$base_compile"; then
> +	  base_compile="$lastarg"
> +	else
> +	  base_compile="$base_compile $lastarg"
> +	fi
> +	continue
> +	;;
> +      esac
> +
> +      # Accept any command-line options.
> +      case $arg in
> +      -o)
> +	if test "$user_target" != "no"; then
> +	  $echo "$modename: you cannot specify \`-o' more than 
> once" 1>&2
> +	  exit 1
> +	fi
> +	user_target=next
> +	;;
> +
> +      -static)
> +	build_old_libs=yes
> +	continue
> +	;;
> +
> +      -prefer-pic)
> +	pic_mode=yes
> +	continue
> +	;;
> +
> +      -prefer-non-pic)
> +	pic_mode=no
> +	continue
> +	;;
> +
> +      -Xcompiler)
> +	prev=xcompiler
> +	continue
> +	;;
> +
> +      -Wc,*)
> +	args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
> +	lastarg=
> +	save_ifs="$IFS"; IFS=','
> +	for arg in $args; do
> +	  IFS="$save_ifs"
> +
> +	  # Double-quote args containing other shell metacharacters.
> +	  # Many Bourne shells cannot handle close brackets correctly
> +	  # in scan sets, so we specify it separately.
> +	  case $arg in
> +	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
> +	    arg="\"$arg\""
> +	    ;;
> +	  esac
> +	  lastarg="$lastarg $arg"
> +	done
> +	IFS="$save_ifs"
> +	lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
> +
> +	# Add the arguments to base_compile.
> +	if test -z "$base_compile"; then
> +	  base_compile="$lastarg"
> +	else
> +	  base_compile="$base_compile $lastarg"
> +	fi
> +	continue
> +	;;
> +      esac
> +
> +      case $user_target in
> +      next)
> +	# The next one is the -o target name
> +	user_target=yes
> +	continue
> +	;;
> +      yes)
> +	# We got the output file
> +	user_target=set
> +	libobj="$arg"
> +	continue
> +	;;
> +      esac
> +
> +      # Accept the current argument as the source file.
> +      lastarg="$srcfile"
> +      srcfile="$arg"
> +
> +      # Aesthetically quote the previous argument.
> +
> +      # Backslashify any backslashes, double quotes, and 
> dollar signs.
> +      # These are the only characters that are still specially
> +      # interpreted inside of double-quoted scrings.
> +      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
> +
> +      # Double-quote args containing other shell metacharacters.
> +      # Many Bourne shells cannot handle close brackets correctly
> +      # in scan sets, so we specify it separately.
> +      case $lastarg in
> +      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
> +	lastarg="\"$lastarg\""
> +	;;
> +      esac
> +
> +      # Add the previous argument to base_compile.
> +      if test -z "$base_compile"; then
> +	base_compile="$lastarg"
> +      else
> +	base_compile="$base_compile $lastarg"
> +      fi
> +    done
> +
> +    case $user_target in
> +    set)
> +      ;;
> +    no)
> +      # Get the name of the library object.
> +      libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
> +      ;;
> +    *)
> +      $echo "$modename: you must specify a target with \`-o'" 1>&2
> +      exit 1
> +      ;;
> +    esac
> +
> +    # Recognize several different file suffixes.
> +    # If the user specifies -o file.o, it is replaced with file.lo
> +    xform='[cCFSfmso]'
> +    case $libobj in
> +    *.ada) xform=ada ;;
> +    *.adb) xform=adb ;;
> +    *.ads) xform=ads ;;
> +    *.asm) xform=asm ;;
> +    *.c++) xform=c++ ;;
> +    *.cc) xform=cc ;;
> +    *.cpp) xform=cpp ;;
> +    *.cxx) xform=cxx ;;
> +    *.f90) xform=f90 ;;
> +    *.for) xform=for ;;
> +    esac
> +
> +    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
> +
> +    case $libobj in
> +    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
> +    *)
> +      $echo "$modename: cannot determine name of library object from
> \`$libobj'" 1>&2
> +      exit 1
> +      ;;
> +    esac
> +
> +    if test -z "$base_compile"; then
> +      $echo "$modename: you must specify a compilation command" 1>&2
> +      $echo "$help" 1>&2
> +      exit 1
> +    fi
> +
> +    # Delete any leftover library objects.
> +    if test "$build_old_libs" = yes; then
> +      removelist="$obj $libobj"
> +    else
> +      removelist="$libobj"
> +    fi
> +
> +    $run $rm $removelist
> +    trap "$run $rm $removelist; exit 1" 1 2 15
> +
> +    # On Cygwin there's no "real" PIC flag so we must build 
> both object types
> +    case $host_os in
> +    cygwin* | mingw* | pw32* | os2*)
> +      pic_mode=default
> +      ;;
> +    esac
> +    if test $pic_mode = no && test "$deplibs_check_method" 
> != pass_all; then
> +      # non-PIC code in shared libraries is not supported
> +      pic_mode=default
> +    fi
> +
> +    # Calculate the filename of the output object if compiler does
> +    # not support -o with -c
> +    if test "$compiler_c_o" = no; then
> +      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e
> 's%\.[^.]*$%%'`.${objext}
> +      lockfile="$output_obj.lock"
> +      removelist="$removelist $output_obj $lockfile"
> +      trap "$run $rm $removelist; exit 1" 1 2 15
> +    else
> +      need_locks=no
> +      lockfile=
> +    fi
> +
> +    # Lock this critical section if it is needed
> +    # We use this script file to make the link, it avoids 
> creating a new file
> +    if test "$need_locks" = yes; then
> +      until $run ln "$0" "$lockfile" 2>/dev/null; do
> +	$show "Waiting for $lockfile to be removed"
> +	sleep 2
> +      done
> +    elif test "$need_locks" = warn; then
> +      if test -f "$lockfile"; then
> +	echo "\
> +*** ERROR, $lockfile exists and contains:
> +`cat $lockfile 2>/dev/null`
> +
> +This indicates that another process is trying to use the same
> +temporary object file, and libtool could not work around it because
> +your compiler does not support \`-c' and \`-o' together.  If you
> +repeat this compilation, it may succeed, by chance, but you 
> had better
> +avoid parallel builds (make -j) in this platform, or get a better
> +compiler."
> +
> +	$run $rm $removelist
> +	exit 1
> +      fi
> +      echo $srcfile > "$lockfile"
> +    fi
> +
> +    if test -n "$fix_srcfile_path"; then
> +      eval srcfile=\"$fix_srcfile_path\"
> +    fi
> +
> +    # Only build a PIC object if we are building libtool libraries.
> +    if test "$build_libtool_libs" = yes; then
> +      # Without this assignment, base_compile gets emptied.
> +      fbsd_hideous_sh_bug=$base_compile
> +
> +      if test "$pic_mode" != no; then
> +	# All platforms use -DPIC, to notify preprocessed 
> assembler code.
> +	command="$base_compile $srcfile $pic_flag -DPIC"
> +      else
> +	# Don't build PIC code
> +	command="$base_compile $srcfile"
> +      fi
> +      if test "$build_old_libs" = yes; then
> +	lo_libobj="$libobj"
> +	dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
> +	if test "X$dir" = "X$libobj"; then
> +	  dir="$objdir"
> +	else
> +	  dir="$dir/$objdir"
> +	fi
> +	libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
> +
> +	if test -d "$dir"; then
> +	  $show "$rm $libobj"
> +	  $run $rm $libobj
> +	else
> +	  $show "$mkdir $dir"
> +	  $run $mkdir $dir
> +	  status=$?
> +	  if test $status -ne 0 && test ! -d $dir; then
> +	    exit $status
> +	  fi
> +	fi
> +      fi
> +      if test "$compiler_o_lo" = yes; then
> +	output_obj="$libobj"
> +	command="$command -o $output_obj"
> +      elif test "$compiler_c_o" = yes; then
> +	output_obj="$obj"
> +	command="$command -o $output_obj"
> +      fi
> +
> +      $run $rm "$output_obj"
> +      $show "$command"
> +      if $run eval "$command"; then :
> +      else
> +	test -n "$output_obj" && $run $rm $removelist
> +	exit 1
> +      fi
> +
> +      if test "$need_locks" = warn &&
> +	 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
> +	echo "\
> +*** ERROR, $lockfile contains:
> +`cat $lockfile 2>/dev/null`
> +
> +but it should contain:
> +$srcfile
> +
> +This indicates that another process is trying to use the same
> +temporary object file, and libtool could not work around it because
> +your compiler does not support \`-c' and \`-o' together.  If you
> +repeat this compilation, it may succeed, by chance, but you 
> had better
> +avoid parallel builds (make -j) in this platform, or get a better
> +compiler."
> +
> +	$run $rm $removelist
> +	exit 1
> +      fi
> +
> +      # Just move the object if needed, then go on to 
> compile the next one
> +      if test x"$output_obj" != x"$libobj"; then
> +	$show "$mv $output_obj $libobj"
> +	if $run $mv $output_obj $libobj; then :
> +	else
> +	  error=$?
> +	  $run $rm $removelist
> +	  exit $error
> +	fi
> +      fi
> +
> +      # If we have no pic_flag, then copy the object into 
> place and finish.
> +      if (test -z "$pic_flag" || test "$pic_mode" != default) &&
> +	 test "$build_old_libs" = yes; then
> +	# Rename the .lo from within objdir to obj
> +	if test -f $obj; then
> +	  $show $rm $obj
> +	  $run $rm $obj
> +	fi
> +
> +	$show "$mv $libobj $obj"
> +	if $run $mv $libobj $obj; then :
> +	else
> +	  error=$?
> +	  $run $rm $removelist
> +	  exit $error
> +	fi
> +
> +	xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
> +	if test "X$xdir" = "X$obj"; then
> +	  xdir="."
> +	else
> +	  xdir="$xdir"
> +	fi
> +	baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"`
> +	libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
> +	# Now arrange that obj and lo_libobj become the same file
> +	$show "(cd $xdir && $LN_S $baseobj $libobj)"
> +	if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then
> +	  # Unlock the critical section if it was locked
> +	  if test "$need_locks" != no; then
> +	    $run $rm "$lockfile"
> +	  fi
> +	  exit 0
> +	else
> +	  error=$?
> +	  $run $rm $removelist
> +	  exit $error
> +	fi
> +      fi
> +
> +      # Allow error messages only from the first compilation.
> +      suppress_output=' >/dev/null 2>&1'
> +    fi
> +
> +    # Only build a position-dependent object if we build old 
> libraries.
> +    if test "$build_old_libs" = yes; then
> +      if test "$pic_mode" != yes; then
> +	# Don't build PIC code
> +	command="$base_compile $srcfile"
> +      else
> +	# All platforms use -DPIC, to notify preprocessed 
> assembler code.
> +	command="$base_compile $srcfile $pic_flag -DPIC"
> +      fi
> +      if test "$compiler_c_o" = yes; then
> +	command="$command -o $obj"
> +	output_obj="$obj"
> +      fi
> +
> +      # Suppress compiler output if we already did a PIC compilation.
> +      command="$command$suppress_output"
> +      $run $rm "$output_obj"
> +      $show "$command"
> +      if $run eval "$command"; then :
> +      else
> +	$run $rm $removelist
> +	exit 1
> +      fi
> +
> +      if test "$need_locks" = warn &&
> +	 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
> +	echo "\
> +*** ERROR, $lockfile contains:
> +`cat $lockfile 2>/dev/null`
> +
> +but it should contain:
> +$srcfile
> +
> +This indicates that another process is trying to use the same
> +temporary object file, and libtool could not work around it because
> +your compiler does not support \`-c' and \`-o' together.  If you
> +repeat this compilation, it may succeed, by chance, but you 
> had better
> +avoid parallel builds (make -j) in this platform, or get a better
> +compiler."
> +
> +	$run $rm $removelist
> +	exit 1
> +      fi
> +
> +      # Just move the object if needed
> +      if test x"$output_obj" != x"$obj"; then
> +	$show "$mv $output_obj $obj"
> +	if $run $mv $output_obj $obj; then :
> +	else
> +	  error=$?
> +	  $run $rm $removelist
> +	  exit $error
> +	fi
> +      fi
> +
> +      # Create an invalid libtool object if no PIC, so that we do not
> +      # accidentally link it into a program.
> +      if test "$build_libtool_libs" != yes; then
> +	$show "echo timestamp > $libobj"
> +	$run eval "echo timestamp > \$libobj" || exit $?
> +      else
> +	# Move the .lo from within objdir
> +	$show "$mv $libobj $lo_libobj"
> +	if $run $mv $libobj $lo_libobj; then :
> +	else
> +	  error=$?
> +	  $run $rm $removelist
> +	  exit $error
> +	fi
> +      fi
> +    fi
> +
> +    # Unlock the critical section if it was locked
> +    if test "$need_locks" != no; then
> +      $run $rm "$lockfile"
> +    fi
> +
> +    exit 0
> +    ;;
> +
> +  # libtool link mode
> +  link | relink)
> +    modename="$modename: link"
> +    case $host in
> +    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
> +      # It is impossible to link a dll without this setting, and
> +      # we shouldn't force the makefile maintainer to figure out
> +      # which system we are compiling for in order to pass an extra
> +      # flag for every libtool invokation.
> +      # allow_undefined=no
> +
> +      # FIXME: Unfortunately, there are problems with the 
> above when trying
> +      # to make a dll which has undefined symbols, in which case not
> +      # even a static library is built.  For now, we need to specify
> +      # -no-undefined on the libtool link line when we can be certain
> +      # that all symbols are satisfied, otherwise we get a 
> static library.
> +      allow_undefined=yes
> +      ;;
> +    *)
> +      allow_undefined=yes
> +      ;;
> +    esac
> +    libtool_args="$nonopt"
> +    compile_command="$nonopt"
> +    finalize_command="$nonopt"
> +
> +    compile_rpath=
> +    finalize_rpath=
> +    compile_shlibpath=
> +    finalize_shlibpath=
> +    convenience=
> +    old_convenience=
> +    deplibs=
> +    old_deplibs=
> +    compiler_flags=
> +    linker_flags=
> +    dllsearchpath=
> +    lib_search_path=`pwd`
> +
> +    avoid_version=no
> +    dlfiles=
> +    dlprefiles=
> +    dlself=no
> +    export_dynamic=no
> +    export_symbols=
> +    export_symbols_regex=
> +    generated=
> +    libobjs=
> +    ltlibs=
> +    module=no
> +    no_install=no
> +    objs=
> +    prefer_static_libs=no
> +    preload=no
> +    prev=
> +    prevarg=
> +    release=
> +    rpath=
> +    xrpath=
> +    perm_rpath=
> +    temp_rpath=
> +    thread_safe=no
> +    vinfo=
> +
> +    # We need to know -static, to get the right output filenames.
> +    for arg
> +    do
> +      case $arg in
> +      -all-static | -static)
> +	if test "X$arg" = "X-all-static"; then
> +	  if test "$build_libtool_libs" = yes && test -z 
> "$link_static_flag"; then
> +	    $echo "$modename: warning: complete static linking 
> is impossible
> in this configuration" 1>&2
> +	  fi
> +	  if test -n "$link_static_flag"; then
> +	    dlopen_self=$dlopen_self_static
> +	  fi
> +	else
> +	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
> +	    dlopen_self=$dlopen_self_static
> +	  fi
> +	fi
> +	build_libtool_libs=no
> +	build_old_libs=yes
> +	prefer_static_libs=yes
> +	break
> +	;;
> +      esac
> +    done
> +
> +    # See if our shared archives depend on static archives.
> +    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
> +
> +    # Go through the arguments, transforming them on the way.
> +    while test $# -gt 0; do
> +      arg="$1"
> +      shift
> +      case $arg in
> +      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
> +	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ###
> testsuite: skip nested quoting test
> +	;;
> +      *) qarg=$arg ;;
> +      esac
> +      libtool_args="$libtool_args $qarg"
> +
> +      # If the previous option needs an argument, assign it.
> +      if test -n "$prev"; then
> +	case $prev in
> +	output)
> +	  compile_command="$compile_command @OUTPUT@"
> +	  finalize_command="$finalize_command @OUTPUT@"
> +	  ;;
> +	esac
> +
> +	case $prev in
> +	dlfiles|dlprefiles)
> +	  if test "$preload" = no; then
> +	    # Add the symbol object into the linking commands.
> +	    compile_command="$compile_command @SYMFILE@"
> +	    finalize_command="$finalize_command @SYMFILE@"
> +	    preload=yes
> +	  fi
> +	  case $arg in
> +	  *.la | *.lo) ;;  # We handle these cases below.
> +	  force)
> +	    if test "$dlself" = no; then
> +	      dlself=needless
> +	      export_dynamic=yes
> +	    fi
> +	    prev=
> +	    continue
> +	    ;;
> +	  self)
> +	    if test "$prev" = dlprefiles; then
> +	      dlself=yes
> +	    elif test "$prev" = dlfiles && test "$dlopen_self" 
> != yes; then
> +	      dlself=yes
> +	    else
> +	      dlself=needless
> +	      export_dynamic=yes
> +	    fi
> +	    prev=
> +	    continue
> +	    ;;
> +	  *)
> +	    if test "$prev" = dlfiles; then
> +	      dlfiles="$dlfiles $arg"
> +	    else
> +	      dlprefiles="$dlprefiles $arg"
> +	    fi
> +	    prev=
> +	    continue
> +	    ;;
> +	  esac
> +	  ;;
> +	expsyms)
> +	  export_symbols="$arg"
> +	  if test ! -f "$arg"; then
> +	    $echo "$modename: symbol file \`$arg' does not exist"
> +	    exit 1
> +	  fi
> +	  prev=
> +	  continue
> +	  ;;
> +	expsyms_regex)
> +	  export_symbols_regex="$arg"
> +	  prev=
> +	  continue
> +	  ;;
> +	release)
> +	  release="-$arg"
> +	  prev=
> +	  continue
> +	  ;;
> +	rpath | xrpath)
> +	  # We need an absolute path.
> +	  case $arg in
> +	  [\\/]* | [A-Za-z]:[\\/]*) ;;
> +	  *)
> +	    $echo "$modename: only absolute run-paths are allowed" 1>&2
> +	    exit 1
> +	    ;;
> +	  esac
> +	  if test "$prev" = rpath; then
> +	    case "$rpath " in
> +	    *" $arg "*) ;;
> +	    *) rpath="$rpath $arg" ;;
> +	    esac
> +	  else
> +	    case "$xrpath " in
> +	    *" $arg "*) ;;
> +	    *) xrpath="$xrpath $arg" ;;
> +	    esac
> +	  fi
> +	  prev=
> +	  continue
> +	  ;;
> +	xcompiler)
> +	  compiler_flags="$compiler_flags $qarg"
> +	  prev=
> +	  compile_command="$compile_command $qarg"
> +	  finalize_command="$finalize_command $qarg"
> +	  continue
> +	  ;;
> +	xlinker)
> +	  linker_flags="$linker_flags $qarg"
> +	  compiler_flags="$compiler_flags $wl$qarg"
> +	  prev=
> +	  compile_command="$compile_command $wl$qarg"
> +	  finalize_command="$finalize_command $wl$qarg"
> +	  continue
> +	  ;;
> +	*)
> +	  eval "$prev=\"\$arg\""
> +	  prev=
> +	  continue
> +	  ;;
> +	esac
> +      fi # test -n $prev
> +
> +      prevarg="$arg"
> +
> +      case $arg in
> +      -all-static)
> +	if test -n "$link_static_flag"; then
> +	  compile_command="$compile_command $link_static_flag"
> +	  finalize_command="$finalize_command $link_static_flag"
> +	fi
> +	continue
> +	;;
> +
> +      -allow-undefined)
> +	# FIXME: remove this flag sometime in the future.
> +	$echo "$modename: \`-allow-undefined' is deprecated 
> because it is
> the default" 1>&2
> +	continue
> +	;;
> +
> +      -avoid-version)
> +	avoid_version=yes
> +	continue
> +	;;
> +
> +      -dlopen)
> +	prev=dlfiles
> +	continue
> +	;;
> +
> +      -dlpreopen)
> +	prev=dlprefiles
> +	continue
> +	;;
> +
> +      -export-dynamic)
> +	export_dynamic=yes
> +	continue
> +	;;
> +
> +      -export-symbols | -export-symbols-regex)
> +	if test -n "$export_symbols" || test -n 
> "$export_symbols_regex"; then
> +	  $echo "$modename: more than one -exported-symbols 
> argument is not allowed"
> +	  exit 1
> +	fi
> +	if test "X$arg" = "X-export-symbols"; then
> +	  prev=expsyms
> +	else
> +	  prev=expsyms_regex
> +	fi
> +	continue
> +	;;
> +
> +      # The native IRIX linker understands -LANG:*, -LIST:* 
> and -LNO:*
> +      # so, if we see these flags be careful not to treat 
> them like -L
> +      -L[A-Z][A-Z]*:*)
> +	case $with_gcc/$host in
> +	no/*-*-irix*)
> +	  compile_command="$compile_command $arg"
> +	  finalize_command="$finalize_command $arg"
> +	  ;;
> +	esac
> +	continue
> +	;;
> +
> +      -L*)
> +	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
> +	# We need an absolute path.
> +	case $dir in
> +	[\\/]* | [A-Za-z]:[\\/]*) ;;
> +	*)
> +	  absdir=`cd "$dir" && pwd`
> +	  if test -z "$absdir"; then
> +	    $echo "$modename: cannot determine absolute 
> directory name of
> \`$dir'" 1>&2
> +	    exit 1
> +	  fi
> +	  dir="$absdir"
> +	  ;;
> +	esac
> +	case "$deplibs " in
> +	*" -L$dir "*) ;;
> +	*)
> +	  deplibs="$deplibs -L$dir"
> +	  lib_search_path="$lib_search_path $dir"
> +	  ;;
> +	esac
> +	case $host in
> +	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
> +	  case :$dllsearchpath: in
> +	  *":$dir:"*) ;;
> +	  *) dllsearchpath="$dllsearchpath:$dir";;
> +	  esac
> +	  ;;
> +	esac
> +	continue
> +	;;
> +
> +      -l*)
> +	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
> +	  case $host in
> +	  *-*-cygwin* | *-*-pw32* | *-*-beos*)
> +	    # These systems don't actually have a C or math 
> library (as such)
> +	    continue
> +	    ;;
> +	  *-*-mingw* | *-*-os2*)
> +	    # These systems don't actually have a C library (as such)
> +	    test "X$arg" = "X-lc" && continue
> +	    ;;
> +	  *-*-openbsd*)
> +	    # Do not include libc due to us having libc/libc_r.
> +	    test "X$arg" = "X-lc" && continue
> +	    ;;
> +	  esac
> +	 elif test "X$arg" = "X-lc_r"; then
> +	  case $host in
> +	  *-*-openbsd*)
> +	    # Do not include libc_r directly, use -pthread flag.
> +	    continue
> +	    ;;
> +	  esac
> +	fi
> +	deplibs="$deplibs $arg"
> +	continue
> +	;;
> +
> +      -module)
> +	module=yes
> +	continue
> +	;;
> +
> +      -no-fast-install)
> +	fast_install=no
> +	continue
> +	;;
> +
> +      -no-install)
> +	case $host in
> +	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
> +	  # The PATH hackery in wrapper scripts is required on Windows
> +	  # in order for the loader to find any dlls it needs.
> +	  $echo "$modename: warning: \`-no-install' is ignored 
> for $host" 1>&2
> +	  $echo "$modename: warning: assuming 
> \`-no-fast-install' instead" 1>&2
> +	  fast_install=no
> +	  ;;
> +	*) no_install=yes ;;
> +	esac
> +	continue
> +	;;
> +
> +      -no-undefined)
> +	allow_undefined=no
> +	continue
> +	;;
> +
> +      -o) prev=output ;;
> +
> +      -release)
> +	prev=release
> +	continue
> +	;;
> +
> +      -rpath)
> +	prev=rpath
> +	continue
> +	;;
> +
> +      -R)
> +	prev=xrpath
> +	continue
> +	;;
> +
> +      -R*)
> +	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
> +	# We need an absolute path.
> +	case $dir in
> +	[\\/]* | [A-Za-z]:[\\/]*) ;;
> +	*)
> +	  $echo "$modename: only absolute run-paths are allowed" 1>&2
> +	  exit 1
> +	  ;;
> +	esac
> +	case "$xrpath " in
> +	*" $dir "*) ;;
> +	*) xrpath="$xrpath $dir" ;;
> +	esac
> +	continue
> +	;;
> +
> +      -static)
> +	# The effects of -static are defined in a previous loop.
> +	# We used to do the same as -all-static on platforms that
> +	# didn't have a PIC flag, but the assumption that the effects
> +	# would be equivalent was wrong.  It would break on at least
> +	# Digital Unix and AIX.
> +	continue
> +	;;
> +
> +      -thread-safe)
> +	thread_safe=yes
> +	continue
> +	;;
> +
> +      -version-info)
> +	prev=vinfo
> +	continue
> +	;;
> +
> +      -Wc,*)
> +	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 
> 's/^-Wc,//'`
> +	arg=
> +	save_ifs="$IFS"; IFS=','
> +	for flag in $args; do
> +	  IFS="$save_ifs"
> +	  case $flag in
> +	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
> +	    flag="\"$flag\""
> +	    ;;
> +	  esac
> +	  arg="$arg $wl$flag"
> +	  compiler_flags="$compiler_flags $flag"
> +	done
> +	IFS="$save_ifs"
> +	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
> +	;;
> +
> +      -Wl,*)
> +	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 
> 's/^-Wl,//'`
> +	arg=
> +	save_ifs="$IFS"; IFS=','
> +	for flag in $args; do
> +	  IFS="$save_ifs"
> +	  case $flag in
> +	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
> +	    flag="\"$flag\""
> +	    ;;
> +	  esac
> +	  arg="$arg $wl$flag"
> +	  compiler_flags="$compiler_flags $wl$flag"
> +	  linker_flags="$linker_flags $flag"
> +	done
> +	IFS="$save_ifs"
> +	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
> +	;;
> +
> +      -Xcompiler)
> +	prev=xcompiler
> +	continue
> +	;;
> +
> +      -Xlinker)
> +	prev=xlinker
> +	continue
> +	;;
> +
> +      # Some other compiler flag.
> +      -* | +*)
> +	# Unknown arguments in both finalize_command and 
> compile_command need
> +	# to be aesthetically quoted because they are evaled later.
> +	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
> +	case $arg in
> +	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
> +	  arg="\"$arg\""
> +	  ;;
> +	esac
> +	;;
> +
> +      *.lo | *.$objext)
> +	# A library or standard object.
> +	if test "$prev" = dlfiles; then
> +	  # This file was specified with -dlopen.
> +	  if test "$build_libtool_libs" = yes && test 
> "$dlopen_support" = yes; then
> +	    dlfiles="$dlfiles $arg"
> +	    prev=
> +	    continue
> +	  else
> +	    # If libtool objects are unsupported, then we need 
> to preload.
> +	    prev=dlprefiles
> +	  fi
> +	fi
> +
> +	if test "$prev" = dlprefiles; then
> +	  # Preload the old-style object.
> +	  dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"`
> +	  prev=
> +	else
> +	  case $arg in
> +	  *.lo) libobjs="$libobjs $arg" ;;
> +	  *) objs="$objs $arg" ;;
> +	  esac
> +	fi
> +	;;
> +
> +      *.$libext)
> +	# An archive.
> +	deplibs="$deplibs $arg"
> +	old_deplibs="$old_deplibs $arg"
> +	continue
> +	;;
> +
> +      *.la)
> +	# A libtool-controlled library.
> +
> +	if test "$prev" = dlfiles; then
> +	  # This library was specified with -dlopen.
> +	  dlfiles="$dlfiles $arg"
> +	  prev=
> +	elif test "$prev" = dlprefiles; then
> +	  # The library was specified with -dlpreopen.
> +	  dlprefiles="$dlprefiles $arg"
> +	  prev=
> +	else
> +	  deplibs="$deplibs $arg"
> +	fi
> +	continue
> +	;;
> +
> +      # Some other compiler argument.
> +      *)
> +	# Unknown arguments in both finalize_command and 
> compile_command need
> +	# to be aesthetically quoted because they are evaled later.
> +	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
> +	case $arg in
> +	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
> +	  arg="\"$arg\""
> +	  ;;
> +	esac
> +	;;
> +      esac # arg
> +
> +      # Now actually substitute the argument into the commands.
> +      if test -n "$arg"; then
> +	compile_command="$compile_command $arg"
> +	finalize_command="$finalize_command $arg"
> +      fi
> +    done # argument parsing loop
> +
> +    if test -n "$prev"; then
> +      $echo "$modename: the \`$prevarg' option requires an 
> argument" 1>&2
> +      $echo "$help" 1>&2
> +      exit 1
> +    fi
> +
> +    if test "$export_dynamic" = yes && test -n
> "$export_dynamic_flag_spec"; then
> +      eval arg=\"$export_dynamic_flag_spec\"
> +      compile_command="$compile_command $arg"
> +      finalize_command="$finalize_command $arg"
> +    fi
> +
> +    # calculate the name of the file, without its directory
> +    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
> +    libobjs_save="$libobjs"
> +
> +    if test -n "$shlibpath_var"; then
> +      # get the directories listed in $shlibpath_var
> +      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \|
> \$Xsed -e \'s/:/ /g\'\`
> +    else
> +      shlib_search_path=
> +    fi
> +    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
> +    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
> +
> +    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
> +    if test "X$output_objdir" = "X$output"; then
> +      output_objdir="$objdir"
> +    else
> +      output_objdir="$output_objdir/$objdir"
> +    fi
> +    # Create the object directory.
> +    if test ! -d $output_objdir; then
> +      $show "$mkdir $output_objdir"
> +      $run $mkdir $output_objdir
> +      status=$?
> +      if test $status -ne 0 && test ! -d $output_objdir; then
> +	exit $status
> +      fi
> +    fi
> +
> +    # Determine the type of output
> +    case $output in
> +    "")
> +      $echo "$modename: you must specify an output file" 1>&2
> +      $echo "$help" 1>&2
> +      exit 1
> +      ;;
> +    *.$libext) linkmode=oldlib ;;
> +    *.lo | *.$objext) linkmode=obj ;;
> +    *.la) linkmode=lib ;;
> +    *) linkmode=prog ;; # Anything else should be a program.
> +    esac
> +
> +    specialdeplibs=
> +    libs=
> +    # Find all interdependent deplibs by searching for libraries
> +    # that are linked more than once (e.g. -la -lb -la)
> +    for deplib in $deplibs; do
> +      case "$libs " in
> +      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
> +      esac
> +      libs="$libs $deplib"
> +    done
> +    deplibs=
> +    newdependency_libs=
> +    newlib_search_path=
> +    need_relink=no # whether we're linking any uninstalled 
> libtool libraries
> +    notinst_deplibs= # not-installed libtool libraries
> +    notinst_path= # paths that contain not-installed libtool 
> libraries
> +    case $linkmode in
> +    lib)
> +	passes="conv link"
> +	for file in $dlfiles $dlprefiles; do
> +	  case $file in
> +	  *.la) ;;
> +	  *)
> +	    $echo "$modename: libraries can \`-dlopen' only libtool
> libraries: $file" 1>&2
> +	    exit 1
> +	    ;;
> +	  esac
> +	done
> +	;;
> +    prog)
> +	compile_deplibs=
> +	finalize_deplibs=
> +	alldeplibs=no
> +	newdlfiles=
> +	newdlprefiles=
> +	passes="conv scan dlopen dlpreopen link"
> +	;;
> +    *)  passes="conv"
> +	;;
> +    esac
> +    for pass in $passes; do
> +      if test $linkmode = prog; then
> +	# Determine which files to process
> +	case $pass in
> +	dlopen)
> +	  libs="$dlfiles"
> +	  save_deplibs="$deplibs" # Collect dlpreopened libraries
> +	  deplibs=
> +	  ;;
> +	dlpreopen) libs="$dlprefiles" ;;
> +	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
> +	esac
> +      fi
> +      for deplib in $libs; do
> +	lib=
> +	found=no
> +	case $deplib in
> +	-l*)
> +	  if test $linkmode = oldlib && test $linkmode = obj; then
> +	    $echo "$modename: warning: \`-l' is ignored for
> archives/objects: $deplib" 1>&2
> +	    continue
> +	  fi
> +	  if test $pass = conv; then
> +	    deplibs="$deplib $deplibs"
> +	    continue
> +	  fi
> +	  name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
> +	  for searchdir in $newlib_search_path $lib_search_path
> $sys_lib_search_path $shlib_search_path; do
> +	    # Search the libtool library
> +	    lib="$searchdir/lib${name}.la"
> +	    if test -f "$lib"; then
> +	      found=yes
> +	      break
> +	    fi
> +	  done
> +	  if test "$found" != yes; then
> +	    # deplib doesn't seem to be a libtool library
> +	    if test "$linkmode,$pass" = "prog,link"; then
> +	      compile_deplibs="$deplib $compile_deplibs"
> +	      finalize_deplibs="$deplib $finalize_deplibs"
> +	    else
> +	      deplibs="$deplib $deplibs"
> +	      test $linkmode = lib && 
> newdependency_libs="$deplib $newdependency_libs"
> +	    fi
> +	    continue
> +	  fi
> +	  ;; # -l
> +	-L*)
> +	  case $linkmode in
> +	  lib)
> +	    deplibs="$deplib $deplibs"
> +	    test $pass = conv && continue
> +	    newdependency_libs="$deplib $newdependency_libs"
> +	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" |
> $Xsed -e 's/^-L//'`
> +	    ;;
> +	  prog)
> +	    if test $pass = conv; then
> +	      deplibs="$deplib $deplibs"
> +	      continue
> +	    fi
> +	    if test $pass = scan; then
> +	      deplibs="$deplib $deplibs"
> +	      newlib_search_path="$newlib_search_path "`$echo 
> "X$deplib" |
> $Xsed -e 's/^-L//'`
> +	    else
> +	      compile_deplibs="$deplib $compile_deplibs"
> +	      finalize_deplibs="$deplib $finalize_deplibs"
> +	    fi
> +	    ;;
> +	  *)
> +	    $echo "$modename: warning: \`-L' is ignored for
> archives/objects: $deplib" 1>&2
> +	    ;;
> +	  esac # linkmode
> +	  continue
> +	  ;; # -L
> +	-R*)
> +	  if test $pass = link; then
> +	    dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
> +	    # Make sure the xrpath contains only unique directories.
> +	    case "$xrpath " in
> +	    *" $dir "*) ;;
> +	    *) xrpath="$xrpath $dir" ;;
> +	    esac
> +	  fi
> +	  deplibs="$deplib $deplibs"
> +	  continue
> +	  ;;
> +	*.la) lib="$deplib" ;;
> +	*.$libext)
> +	  if test $pass = conv; then
> +	    deplibs="$deplib $deplibs"
> +	    continue
> +	  fi
> +	  case $linkmode in
> +	  lib)
> +	    if test "$deplibs_check_method" != pass_all; then
> +	      echo
> +	      echo "*** Warning: This library needs some functionality
> provided by $deplib."
> +	      echo "*** I have the capability to make that library
> automatically link in when"
> +	      echo "*** you link to this library.  But I can 
> only do this if
> you have a"
> +	      echo "*** shared version of the library, which you do not
> appear to have."
> +	    else
> +	      echo
> +	      echo "*** Warning: Linking the shared library 
> $output against the"
> +	      echo "*** static library $deplib is not portable!"
> +	      deplibs="$deplib $deplibs"
> +	    fi
> +	    continue
> +	    ;;
> +	  prog)
> +	    if test $pass != link; then
> +	      deplibs="$deplib $deplibs"
> +	    else
> +	      compile_deplibs="$deplib $compile_deplibs"
> +	      finalize_deplibs="$deplib $finalize_deplibs"
> +	    fi
> +	    continue
> +	    ;;
> +	  esac # linkmode
> +	  ;; # *.$libext
> +	*.lo | *.$objext)
> +	  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"
> +	    compile_deplibs="$deplib $compile_deplibs"
> +	    finalize_deplibs="$deplib $finalize_deplibs"
> +	  else
> +	    newdlfiles="$newdlfiles $deplib"
> +	  fi
> +	  continue
> +	  ;;
> +	%DEPLIBS%)
> +	  alldeplibs=yes
> +	  continue
> +	  ;;
> +	esac # case $deplib
> +	if test $found = yes || test -f "$lib"; then :
> +	else
> +	  $echo "$modename: cannot find the library \`$lib'" 1>&2
> +	  exit 1
> +	fi
> +
> +	# Check to see that this really is a libtool archive.
> +	if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE")
> >/dev/null 2>&1; then :
> +	else
> +	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
> +	  exit 1
> +	fi
> +
> +	ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
> +	test "X$ladir" = "X$lib" && ladir="."
> +
> +	dlname=
> +	dlopen=
> +	dlpreopen=
> +	libdir=
> +	library_names=
> +	old_library=
> +	# If the library was installed with an old release of libtool,
> +	# it will not redefine variable installed.
> +	installed=yes
> +
> +	# Read the .la file
> +	case $lib in
> +	*/* | *\\*) . $lib ;;
> +	*) . ./$lib ;;
> +	esac
> +
> +	if test "$linkmode,$pass" = "lib,link" ||
> +	   test "$linkmode,$pass" = "prog,scan" ||
> +	   { test $linkmode = oldlib && test $linkmode = obj; }; then
> +	   # Add dl[pre]opened files of deplib
> +	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
> +	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
> +	fi
> +
> +	if test $pass = conv; then
> +	  # Only check for convenience libraries
> +	  deplibs="$lib $deplibs"
> +	  if test -z "$libdir"; then
> +	    if test -z "$old_library"; then
> +	      $echo "$modename: cannot find name of link 
> library for \`$lib'" 1>&2
> +	      exit 1
> +	    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"
> +	    tmp_libs=
> +	    for deplib in $dependency_libs; do
> +	      deplibs="$deplib $deplibs"
> +	      case "$tmp_libs " in
> +	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
> +	      esac
> +	      tmp_libs="$tmp_libs $deplib"
> +	    done
> +	  elif test $linkmode != prog && test $linkmode != lib; then
> +	    $echo "$modename: \`$lib' is not a convenience library" 1>&2
> +	    exit 1
> +	  fi
> +	  continue
> +	fi # $pass = conv
> +
> +	# Get the name of the library we link against.
> +	linklib=
> +	for l in $old_library $library_names; do
> +	  linklib="$l"
> +	done
> +	if test -z "$linklib"; then
> +	  $echo "$modename: cannot find name of link library 
> for \`$lib'" 1>&2
> +	  exit 1
> +	fi
> +
> +	# This library was specified with -dlopen.
> +	if test $pass = dlopen; then
> +	  if test -z "$libdir"; then
> +	    $echo "$modename: cannot -dlopen a convenience 
> library: \`$lib'" 1>&2
> +	    exit 1
> +	  fi
> +	  if test -z "$dlname" || test "$dlopen_support" != yes || test
> "$build_libtool_libs" = no; then
> +	    # If there is no dlname, no dlopen support or we're linking
> +	    # statically, we need to preload.
> +	    dlprefiles="$dlprefiles $lib"
> +	  else
> +	    newdlfiles="$newdlfiles $lib"
> +	  fi
> +	  continue
> +	fi # $pass = dlopen
> +
> +	# We need an absolute path.
> +	case $ladir in
> +	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
> +	*)
> +	  abs_ladir=`cd "$ladir" && pwd`
> +	  if test -z "$abs_ladir"; then
> +	    $echo "$modename: warning: cannot determine 
> absolute directory
> name of \`$ladir'" 1>&2
> +	    $echo "$modename: passing it literally to the 
> linker, although
> it might fail" 1>&2
> +	    abs_ladir="$ladir"
> +	  fi
> +	  ;;
> +	esac
> +	laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
> +
> +	# 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
> +	    $echo "$modename: warning: library \`$lib' was moved." 1>&2
> +	    dir="$ladir"
> +	    absdir="$abs_ladir"
> +	    libdir="$abs_ladir"
> +	  else
> +	    dir="$libdir"
> +	    absdir="$libdir"
> +	  fi
> +	else
> +	  dir="$ladir/$objdir"
> +	  absdir="$abs_ladir/$objdir"
> +	  # Remove this search path later
> +	  notinst_path="$notinst_path $abs_ladir"
> +	fi # $installed = yes
> +	name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
> +
> +	# This library was specified with -dlpreopen.
> +	if test $pass = dlpreopen; then
> +	  if test -z "$libdir"; then
> +	    $echo "$modename: cannot -dlpreopen a convenience 
> library: \`$lib'" 1>&2
> +	    exit 1
> +	  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"
> +	  # 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
> +	fi # $pass = dlpreopen
> +
> +	if test -z "$libdir"; then
> +	  # Link the convenience library
> +	  if test $linkmode = lib; then
> +	    deplibs="$dir/$old_library $deplibs"
> +	  elif test "$linkmode,$pass" = "prog,link"; then
> +	    compile_deplibs="$dir/$old_library $compile_deplibs"
> +	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
> +	  else
> +	    deplibs="$lib $deplibs"
> +	  fi
> +	  continue
> +	fi
> +
> +	if test $linkmode = prog && test $pass != link; then
> +	  newlib_search_path="$newlib_search_path $ladir"
> +	  deplibs="$lib $deplibs"
> +
> +	  linkalldeplibs=no
> +	  if test "$link_all_deplibs" != no || test -z 
> "$library_names" ||
> +	     test "$build_libtool_libs" = no; then
> +	    linkalldeplibs=yes
> +	  fi
> +
> +	  tmp_libs=
> +	  for deplib in $dependency_libs; do
> +	    case $deplib in
> +	    -L*) newlib_search_path="$newlib_search_path 
> "`$echo "X$deplib"
> | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
> +	    esac
> +	    # Need to link against all dependency_libs?
> +	    if test $linkalldeplibs = yes; then
> +	      deplibs="$deplib $deplibs"
> +	    else
> +	      # Need to hardcode shared library paths
> +	      # or/and link against static libraries
> +	      newdependency_libs="$deplib $newdependency_libs"
> +	    fi
> +	    case "$tmp_libs " in
> +	    *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
> +	    esac
> +	    tmp_libs="$tmp_libs $deplib"
> +	  done # for deplib
> +	  continue
> +	fi # $linkmode = prog...
> +
> +	link_static=no # Whether the deplib will be linked statically
> +	if test -n "$library_names" &&
> +	   { test "$prefer_static_libs" = no || test -z 
> "$old_library"; }; then
> +	  # Link against this shared library
> +
> +	  if test "$linkmode,$pass" = "prog,link" ||
> +	   { test $linkmode = lib && test $hardcode_into_libs = 
> yes; }; then
> +	    # Hardcode the library path.
> +	    # Skip directories that are in the system default run-time
> +	    # search path.
> +	    case " $sys_lib_dlsearch_path " in
> +	    *" $absdir "*) ;;
> +	    *)
> +	      case "$compile_rpath " in
> +	      *" $absdir "*) ;;
> +	      *) compile_rpath="$compile_rpath $absdir"
> +	      esac
> +	      ;;
> +	    esac
> +	    case " $sys_lib_dlsearch_path " in
> +	    *" $libdir "*) ;;
> +	    *)
> +	      case "$finalize_rpath " in
> +	      *" $libdir "*) ;;
> +	      *) finalize_rpath="$finalize_rpath $libdir"
> +	      esac
> +	      ;;
> +	    esac
> +	    if test $linkmode = prog; then
> +	      # We need to hardcode the library path
> +	      if test -n "$shlibpath_var"; then
> +		# Make sure the rpath contains only unique directories.
> +		case "$temp_rpath " in
> +		*" $dir "*) ;;
> +		*" $absdir "*) ;;
> +		*) temp_rpath="$temp_rpath $dir" ;;
> +		esac
> +	      fi
> +	    fi
> +	  fi # $linkmode,$pass = prog,link...
> +
> +	  if test "$alldeplibs" = yes &&
> +	     { test "$deplibs_check_method" = pass_all ||
> +	       { test "$build_libtool_libs" = yes &&
> +		 test -n "$library_names"; }; }; then
> +	    # We only need to search for static libraries
> +	    continue
> +	  fi
> +
> +	  if test "$installed" = no; then
> +	    notinst_deplibs="$notinst_deplibs $lib"
> +	    need_relink=yes
> +	  fi
> +
> +	  if test -n "$old_archive_from_expsyms_cmds"; then
> +	    # figure out the soname
> +	    set dummy $library_names
> +	    realname="$2"
> +	    shift; shift
> +	    libname=`eval \\$echo \"$libname_spec\"`
> +	    # use dlname if we got it. it's perfectly good, no?
> +	    if test -n "$dlname"; then
> +	      soname="$dlname"
> +	    elif test -n "$soname_spec"; then
> +	      # bleh windows
> +	      case $host in
> +	      *cygwin*)
> +		major=`expr $current - $age`
> +		versuffix="-$major"
> +		;;
> +	      esac
> +	      eval soname=\"$soname_spec\"
> +	    else
> +	      soname="$realname"
> +	    fi
> +
> +	    # Make a new name for the extract_expsyms_cmds to use
> +	    soroot="$soname"
> +	    soname=`echo $soroot | sed -e 's/^.*\///'`
> +	    newlib="libimp-`echo $soname | sed 's/^lib//;s/\.dll$//'`.a"
> +
> +	    # If the library has no export list, then create one now
> +	    if test -f "$output_objdir/$soname-def"; then :
> +	    else
> +	      $show "extracting exported symbol list from \`$soname'"
> +	      save_ifs="$IFS"; IFS='~'
> +	      eval cmds=\"$extract_expsyms_cmds\"
> +	      for cmd in $cmds; do
> +		IFS="$save_ifs"
> +		$show "$cmd"
> +		$run eval "$cmd" || exit $?
> +	      done
> +	      IFS="$save_ifs"
> +	    fi
> +
> +	    # Create $newlib
> +	    if test -f "$output_objdir/$newlib"; then :; else
> +	      $show "generating import library for \`$soname'"
> +	      save_ifs="$IFS"; IFS='~'
> +	      eval cmds=\"$old_archive_from_expsyms_cmds\"
> +	      for cmd in $cmds; do
> +		IFS="$save_ifs"
> +		$show "$cmd"
> +		$run eval "$cmd" || exit $?
> +	      done
> +	      IFS="$save_ifs"
> +	    fi
> +	    # make sure the library variables are pointing to 
> the new library
> +	    dir=$output_objdir
> +	    linklib=$newlib
> +	  fi # test -n $old_archive_from_expsyms_cmds
> +
> +	  if test $linkmode = prog || test "$mode" != relink; then
> +	    add_shlibpath=
> +	    add_dir=
> +	    add=
> +	    lib_linked=yes
> +	    case $hardcode_action in
> +	    immediate | unsupported)
> +	      if test "$hardcode_direct" = no; then
> +		add="$dir/$linklib"
> +	      elif test "$hardcode_minus_L" = no; then
> +		case $host in
> +		*-*-sunos*) add_shlibpath="$dir" ;;
> +		esac
> +		add_dir="-L$dir"
> +		add="-l$name"
> +	      elif test "$hardcode_shlibpath_var" = no; then
> +		add_shlibpath="$dir"
> +		add="-l$name"
> +	      else
> +		lib_linked=no
> +	      fi
> +	      ;;
> +	    relink)
> +	      if test "$hardcode_direct" = yes; then
> +		add="$dir/$linklib"
> +	      elif test "$hardcode_minus_L" = yes; then
> +		add_dir="-L$dir"
> +		add="-l$name"
> +	      elif test "$hardcode_shlibpath_var" = yes; then
> +		add_shlibpath="$dir"
> +		add="-l$name"
> +	      else
> +		lib_linked=no
> +	      fi
> +	      ;;
> +	    *) lib_linked=no ;;
> +	    esac
> +
> +	    if test "$lib_linked" != yes; then
> +	      $echo "$modename: configuration error: 
> unsupported hardcode properties"
> +	      exit 1
> +	    fi
> +
> +	    if test -n "$add_shlibpath"; then
> +	      case :$compile_shlibpath: in
> +	      *":$add_shlibpath:"*) ;;
> +	      *) 
> compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
> +	      esac
> +	    fi
> +	    if test $linkmode = prog; then
> +	      test -n "$add_dir" && compile_deplibs="$add_dir 
> $compile_deplibs"
> +	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
> +	    else
> +	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
> +	      test -n "$add" && deplibs="$add $deplibs"
> +	      if test "$hardcode_direct" != yes && \
> +		 test "$hardcode_minus_L" != yes && \
> +		 test "$hardcode_shlibpath_var" = yes; then
> +		case :$finalize_shlibpath: in
> +		*":$libdir:"*) ;;
> +		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
> +		esac
> +	      fi
> +	    fi
> +	  fi
> +
> +	  if test $linkmode = prog || test "$mode" = relink; then
> +	    add_shlibpath=
> +	    add_dir=
> +	    add=
> +	    # Finalize command for both is simple: just hardcode it.
> +	    if test "$hardcode_direct" = yes; then
> +	      add="$libdir/$linklib"
> +	    elif test "$hardcode_minus_L" = yes; then
> +	      add_dir="-L$libdir"
> +	      add="-l$name"
> +	    elif test "$hardcode_shlibpath_var" = yes; then
> +	      case :$finalize_shlibpath: in
> +	      *":$libdir:"*) ;;
> +	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
> +	      esac
> +	      add="-l$name"
> +	    else
> +	      # We cannot seem to hardcode it, guess we'll fake it.
> +	      add_dir="-L$libdir"
> +	      add="-l$name"
> +	    fi
> +
> +	    if test $linkmode = prog; then
> +	      test -n "$add_dir" && finalize_deplibs="$add_dir 
> $finalize_deplibs"
> +	      test -n "$add" && finalize_deplibs="$add 
> $finalize_deplibs"
> +	    else
> +	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
> +	      test -n "$add" && deplibs="$add $deplibs"
> +	    fi
> +	  fi
> +	elif test $linkmode = prog; then
> +	  if test "$alldeplibs" = yes &&
> +	     { test "$deplibs_check_method" = pass_all ||
> +	       { test "$build_libtool_libs" = yes &&
> +		 test -n "$library_names"; }; }; then
> +	    # We only need to search for static libraries
> +	    continue
> +	  fi
> +
> +	  # Try to link the static library
> +	  # Here we assume that one of hardcode_direct or 
> hardcode_minus_L
> +	  # is not unsupported.  This is valid on all known static and
> +	  # shared platforms.
> +	  if test "$hardcode_direct" != unsupported; then
> +	    test -n "$old_library" && linklib="$old_library"
> +	    compile_deplibs="$dir/$linklib $compile_deplibs"
> +	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
> +	  else
> +	    compile_deplibs="-l$name -L$dir $compile_deplibs"
> +	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
> +	  fi
> +	elif test "$build_libtool_libs" = yes; then
> +	  # Not a shared library
> +	  if test "$deplibs_check_method" != pass_all; then
> +	    # We're trying link a shared library against a static one
> +	    # but the system doesn't support it.
> +
> +	    # Just print a warning and add the library to 
> dependency_libs so
> +	    # that the program can be linked against the static library.
> +	    echo
> +	    echo "*** Warning: This library needs some functionality
> provided by $lib."
> +	    echo "*** I have the capability to make that library
> automatically link in when"
> +	    echo "*** you link to this library.  But I can only 
> do this if you have a"
> +	    echo "*** shared version of the library, which you 
> do not appear to have."
> +	    if test "$module" = yes; then
> +	      echo "*** Therefore, libtool will create a static 
> module, that
> should work "
> +	      echo "*** as long as the dlopening application is 
> linked with
> the -dlopen flag."
> +	      if test -z "$global_symbol_pipe"; then
> +		echo
> +		echo "*** However, this would only work if 
> libtool was able to
> extract symbol"
> +		echo "*** lists from a program, using \`nm' or 
> equivalent, but libtool could"
> +		echo "*** not find such a program.  So, this 
> module is probably useless."
> +		echo "*** \`nm' from GNU binutils and a full 
> rebuild may help."
> +	      fi
> +	      if test "$build_old_libs" = no; then
> +		build_libtool_libs=module
> +		build_old_libs=yes
> +	      else
> +		build_libtool_libs=no
> +	      fi
> +	    fi
> +	  else
> +	    convenience="$convenience $dir/$old_library"
> +	    old_convenience="$old_convenience $dir/$old_library"
> +	    deplibs="$dir/$old_library $deplibs"
> +	    link_static=yes
> +	  fi
> +	fi # link shared/static library?
> +
> +	if test $linkmode = lib; then
> +	  if test -n "$dependency_libs" &&
> +	     { test $hardcode_into_libs != yes || test 
> $build_old_libs = yes ||
> +	       test $link_static = yes; }; then
> +	    # Extract -R from dependency_libs
> +	    temp_deplibs=
> +	    for libdir in $dependency_libs; do
> +	      case $libdir in
> +	      -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
> +		   case " $xrpath " in
> +		   *" $temp_xrpath "*) ;;
> +		   *) xrpath="$xrpath $temp_xrpath";;
> +		   esac;;
> +	      *) temp_deplibs="$temp_deplibs $libdir";;
> +	      esac
> +	    done
> +	    dependency_libs="$temp_deplibs"
> +	  fi
> +
> +	  newlib_search_path="$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"
> +	    case "$tmp_libs " in
> +	    *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
> +	    esac
> +	    tmp_libs="$tmp_libs $deplib"
> +	  done
> +
> +	  if test $link_all_deplibs != no; then
> +	    # Add the search paths of all dependency libraries
> +	    for deplib in $dependency_libs; do
> +	      case $deplib in
> +	      -L*) path="$deplib" ;;
> +	      *.la)
> +		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
> +		test "X$dir" = "X$deplib" && dir="."
> +		# We need an absolute path.
> +		case $dir in
> +		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
> +		*)
> +		  absdir=`cd "$dir" && pwd`
> +		  if test -z "$absdir"; then
> +		    $echo "$modename: warning: cannot determine 
> absolute directory
> name of \`$dir'" 1>&2
> +		    absdir="$dir"
> +		  fi
> +		  ;;
> +		esac
> +		if grep "^installed=no" $deplib > /dev/null; then
> +		  path="-L$absdir/$objdir"
> +		else
> +		  eval libdir=`sed -n -e 
> 's/^libdir=\(.*\)$/\1/p' $deplib`
> +		  if test -z "$libdir"; then
> +		    $echo "$modename: \`$deplib' is not a valid 
> libtool archive" 1>&2
> +		    exit 1
> +		  fi
> +		  if test "$absdir" != "$libdir"; then
> +		    $echo "$modename: warning: \`$deplib' seems 
> to be moved" 1>&2
> +		  fi
> +		  path="-L$absdir"
> +		fi
> +		;;
> +	      *) continue ;;
> +	      esac
> +	      case " $deplibs " in
> +	      *" $path "*) ;;
> +	      *) deplibs="$deplibs $path" ;;
> +	      esac
> +	    done
> +	  fi # link_all_deplibs != no
> +	fi # linkmode = lib
> +      done # for deplib in $libs
> +      if test $pass = dlpreopen; then
> +	# Link the dlpreopened libraries before other libraries
> +	for deplib in $save_deplibs; do
> +	  deplibs="$deplib $deplibs"
> +	done
> +      fi
> +      if test $pass != dlopen; then
> +	test $pass != scan && dependency_libs="$newdependency_libs"
> +	if test $pass != conv; then
> +	  # Make sure lib_search_path contains only unique directories.
> +	  lib_search_path=
> +	  for dir in $newlib_search_path; do
> +	    case "$lib_search_path " in
> +	    *" $dir "*) ;;
> +	    *) lib_search_path="$lib_search_path $dir" ;;
> +	    esac
> +	  done
> +	  newlib_search_path=
> +	fi
> +
> +	if test "$linkmode,$pass" != "prog,link"; then
> +	  vars="deplibs"
> +	else
> +	  vars="compile_deplibs finalize_deplibs"
> +	fi
> +	for var in $vars dependency_libs; do
> +	  # Add libraries to $var in reverse order
> +	  eval tmp_libs=\"\$$var\"
> +	  new_libs=
> +	  for deplib in $tmp_libs; do
> +	    case $deplib in
> +	    -L*) new_libs="$deplib $new_libs" ;;
> +	    *)
> +	      case " $specialdeplibs " in
> +	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
> +	      *)
> +		case " $new_libs " in
> +		*" $deplib "*) ;;
> +		*) new_libs="$deplib $new_libs" ;;
> +		esac
> +		;;
> +	      esac
> +	      ;;
> +	    esac
> +	  done
> +	  tmp_libs=
> +	  for deplib in $new_libs; do
> +	    case $deplib in
> +	    -L*)
> +	      case " $tmp_libs " in
> +	      *" $deplib "*) ;;
> +	      *) tmp_libs="$tmp_libs $deplib" ;;
> +	      esac
> +	      ;;
> +	    *) tmp_libs="$tmp_libs $deplib" ;;
> +	    esac
> +	  done
> +	  eval $var=\"$tmp_libs\"
> +	done # for var
> +      fi
> +      if test "$pass" = "conv" &&
> +       { test "$linkmode" = "lib" || test "$linkmode" = 
> "prog"; }; then
> +	libs="$deplibs" # reset libs
> +	deplibs=
> +      fi
> +    done # for pass
> +    if test $linkmode = prog; then
> +      dlfiles="$newdlfiles"
> +      dlprefiles="$newdlprefiles"
> +    fi
> +
> +    case $linkmode in
> +    oldlib)
> +      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
> +	$echo "$modename: warning: \`-dlopen' is ignored for 
> archives" 1>&2
> +      fi
> +
> +      if test -n "$rpath"; then
> +	$echo "$modename: warning: \`-rpath' is ignored for 
> archives" 1>&2
> +      fi
> +
> +      if test -n "$xrpath"; then
> +	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
> +      fi
> +
> +      if test -n "$vinfo"; then
> +	$echo "$modename: warning: \`-version-info' is ignored 
> for archives" 1>&2
> +      fi
> +
> +      if test -n "$release"; then
> +	$echo "$modename: warning: \`-release' is ignored for 
> archives" 1>&2
> +      fi
> +
> +      if test -n "$export_symbols" || test -n 
> "$export_symbols_regex"; then
> +	$echo "$modename: warning: \`-export-symbols' is 
> ignored for archives" 1>&2
> +      fi
> +
> +      # Now set the variables for building old libraries.
> +      build_libtool_libs=no
> +      oldlibs="$output"
> +      objs="$objs$old_deplibs"
> +      ;;
> +
> +    lib)
> +      # Make sure we only generate libraries of the form 
> `libNAME.la'.
> +      case $outputname in
> +      lib*)
> +	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
> +	eval libname=\"$libname_spec\"
> +	;;
> +      *)
> +	if test "$module" = no; then
> +	  $echo "$modename: libtool library \`$output' must 
> begin with \`lib'" 1>&2
> +	  $echo "$help" 1>&2
> +	  exit 1
> +	fi
> +	if test "$need_lib_prefix" != no; then
> +	  # Add the "lib" prefix for modules if required
> +	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
> +	  eval libname=\"$libname_spec\"
> +	else
> +	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
> +	fi
> +	;;
> +      esac
> +
> +      if test -n "$objs"; then
> +	if test "$deplibs_check_method" != pass_all; then
> +	  $echo "$modename: cannot build libtool library \`$output' from
> non-libtool objects on this host:$objs" 2>&1
> +	  exit 1
> +	else
> +	  echo
> +	  echo "*** Warning: Linking the shared library $output 
> against the
> non-libtool"
> +	  echo "*** objects $objs is not portable!"
> +	  libobjs="$libobjs $objs"
> +	fi
> +      fi
> +
> +      if test "$dlself" != no; then
> +	$echo "$modename: warning: \`-dlopen self' is ignored 
> for libtool
> libraries" 1>&2
> +      fi
> +
> +      set dummy $rpath
> +      if test $# -gt 2; then
> +	$echo "$modename: warning: ignoring multiple \`-rpath's for a
> libtool library" 1>&2
> +      fi
> +      install_libdir="$2"
> +
> +      oldlibs=
> +      if test -z "$rpath"; then
> +	if test "$build_libtool_libs" = yes; then
> +	  # Building a libtool convenience library.
> +	  libext=al
> +	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
> +	  build_libtool_libs=convenience
> +	  build_old_libs=yes
> +	fi
> +
> +	if test -n "$vinfo"; then
> +	  $echo "$modename: warning: \`-version-info' is ignored for
> convenience libraries" 1>&2
> +	fi
> +
> +	if test -n "$release"; then
> +	  $echo "$modename: warning: \`-release' is ignored for 
> convenience
> libraries" 1>&2
> +	fi
> +      else
> +
> +	# Parse the version information argument.
> +	save_ifs="$IFS"; IFS=':'
> +	set dummy $vinfo 0 0 0
> +	IFS="$save_ifs"
> +
> +	if test -n "$8"; then
> +	  $echo "$modename: too many parameters to 
> \`-version-info'" 1>&2
> +	  $echo "$help" 1>&2
> +	  exit 1
> +	fi
> +
> +	current="$2"
> +	revision="$3"
> +	age="$4"
> +
> +	# Check that each of the things are valid numbers.
> +	case $current in
> +	0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
> +	*)
> +	  $echo "$modename: CURRENT \`$current' is not a 
> nonnegative integer" 1>&2
> +	  $echo "$modename: \`$vinfo' is not valid version 
> information" 1>&2
> +	  exit 1
> +	  ;;
> +	esac
> +
> +	case $revision in
> +	0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
> +	*)
> +	  $echo "$modename: REVISION \`$revision' is not a 
> nonnegative integer" 1>&2
> +	  $echo "$modename: \`$vinfo' is not valid version 
> information" 1>&2
> +	  exit 1
> +	  ;;
> +	esac
> +
> +	case $age in
> +	0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
> +	*)
> +	  $echo "$modename: AGE \`$age' is not a nonnegative 
> integer" 1>&2
> +	  $echo "$modename: \`$vinfo' is not valid version 
> information" 1>&2
> +	  exit 1
> +	  ;;
> +	esac
> +
> +	if test $age -gt $current; then
> +	  $echo "$modename: AGE \`$age' is greater than the current
> interface number \`$current'" 1>&2
> +	  $echo "$modename: \`$vinfo' is not valid version 
> information" 1>&2
> +	  exit 1
> +	fi
> +
> +	# Calculate the version variables.
> +	major=
> +	versuffix=
> +	verstring=
> +	case $version_type in
> +	none) ;;
> +
> +	darwin)
> +	  # Like Linux, but with the current version available in
> +	  # verstring for coding it into the library header
> +	  major=.`expr $current - $age`
> +	  versuffix="$major.$age.$revision"
> +	  # Darwin ld doesn't like 0 for these options...
> +	  minor_current=`expr $current + 1`
> +	  verstring="-compatibility_version $minor_current 
> -current_version
> $minor_current.$revision"
> +	  ;;
> +
> +	freebsd-aout)
> +	  major=".$current"
> +	  versuffix=".$current.$revision";
> +	  ;;
> +
> +	freebsd-elf)
> +	  major=".$current"
> +	  versuffix=".$current";
> +	  ;;
> +
> +	irix)
> +	  major=`expr $current - $age + 1`
> +	  verstring="sgi$major.$revision"
> +
> +	  # Add in all the interfaces that we are compatible with.
> +	  loop=$revision
> +	  while test $loop != 0; do
> +	    iface=`expr $revision - $loop`
> +	    loop=`expr $loop - 1`
> +	    verstring="sgi$major.$iface:$verstring"
> +	  done
> +
> +	  # Before this point, $major must not contain `.'.
> +	  major=.$major
> +	  versuffix="$major.$revision"
> +	  ;;
> +
> +	linux)
> +	  major=.`expr $current - $age`
> +	  versuffix="$major.$age.$revision"
> +	  ;;
> +
> +	osf)
> +	  major=`expr $current - $age`
> +	  versuffix=".$current.$age.$revision"
> +	  verstring="$current.$age.$revision"
> +
> +	  # Add in all the interfaces that we are compatible with.
> +	  loop=$age
> +	  while test $loop != 0; do
> +	    iface=`expr $current - $loop`
> +	    loop=`expr $loop - 1`
> +	    verstring="$verstring:${iface}.0"
> +	  done
> +
> +	  # Make executables depend on our current version.
> +	  verstring="$verstring:${current}.0"
> +	  ;;
> +
> +	sunos)
> +	  major=".$current"
> +	  versuffix=".$current.$revision"
> +	  ;;
> +
> +	windows)
> +	  # Use '-' rather than '.', since we only want one
> +	  # extension on DOS 8.3 filesystems.
> +	  major=`expr $current - $age`
> +	  versuffix="-$major"
> +	  ;;
> +
> +	*)
> +	  $echo "$modename: unknown library version type 
> \`$version_type'" 1>&2
> +	  echo "Fatal configuration error.  See the $PACKAGE 
> docs for more
> information." 1>&2
> +	  exit 1
> +	  ;;
> +	esac
> +
> +	# Clear the version info if we defaulted, and they 
> specified a release.
> +	if test -z "$vinfo" && test -n "$release"; then
> +	  major=
> +	  verstring="0.0"
> +	  case $version_type in
> +	  darwin)
> +	    # we can't check for "0.0" in archive_cmds due to quoting
> +	    # problems, so we reset it completely
> +	    verstring=""
> +	    ;;
> +	  *)
> +	    verstring="0.0"
> +	    ;;
> +	  esac
> +	  if test "$need_version" = no; then
> +	    versuffix=
> +	  else
> +	    versuffix=".0.0"
> +	  fi
> +	fi
> +
> +	# Remove version info from name if versioning should be avoided
> +	if test "$avoid_version" = yes && test "$need_version" 
> = no; then
> +	  major=
> +	  versuffix=
> +	  verstring=""
> +	fi
> +
> +	# Check to see if the archive will have undefined symbols.
> +	if test "$allow_undefined" = yes; then
> +	  if test "$allow_undefined_flag" = unsupported; then
> +	    $echo "$modename: warning: undefined symbols not allowed in
> $host shared libraries" 1>&2
> +	    build_libtool_libs=no
> +	    build_old_libs=yes
> +	  fi
> +	else
> +	  # Don't allow undefined symbols.
> +	  allow_undefined_flag="$no_undefined_flag"
> +	fi
> +      fi
> +
> +      if test "$mode" != relink; then
> +	# Remove our outputs.
> +	$show "${rm}r $output_objdir/$outputname 
> $output_objdir/$libname.*
> $output_objdir/${libname}${release}.*"
> +	$run ${rm}r $output_objdir/$outputname $output_objdir/$libname.*
> $output_objdir/${libname}${release}.*
> +      fi
> +
> +      # 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"
> +
> +	# Transform .lo files to .o files.
> +	oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e
> '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
> +      fi
> +
> +      # Eliminate all temporary directories.
> +      for path in $notinst_path; do
> +	lib_search_path=`echo "$lib_search_path " | sed -e 's% 
> $path % %g'`
> +	deplibs=`echo "$deplibs " | sed -e 's% -L$path % %g'`
> +	dependency_libs=`echo "$dependency_libs " | sed -e 's% 
> -L$path % %g'`
> +      done
> +
> +      if test -n "$xrpath"; then
> +	# If the user specified any rpath flags, then add them.
> +	temp_xrpath=
> +	for libdir in $xrpath; do
> +	  temp_xrpath="$temp_xrpath -R$libdir"
> +	  case "$finalize_rpath " in
> +	  *" $libdir "*) ;;
> +	  *) finalize_rpath="$finalize_rpath $libdir" ;;
> +	  esac
> +	done
> +	if test $hardcode_into_libs != yes || test 
> $build_old_libs = yes; then
> +	  dependency_libs="$temp_xrpath $dependency_libs"
> +	fi
> +      fi
> +
> +      # Make sure dlfiles contains only unique files that 
> won't be dlpreopened
> +      old_dlfiles="$dlfiles"
> +      dlfiles=
> +      for lib in $old_dlfiles; do
> +	case " $dlprefiles $dlfiles " in
> +	*" $lib "*) ;;
> +	*) dlfiles="$dlfiles $lib" ;;
> +	esac
> +      done
> +
> +      # Make sure dlprefiles contains only unique files
> +      old_dlprefiles="$dlprefiles"
> +      dlprefiles=
> +      for lib in $old_dlprefiles; do
> +	case "$dlprefiles " in
> +	*" $lib "*) ;;
> +	*) dlprefiles="$dlprefiles $lib" ;;
> +	esac
> +      done
> +
> +      if test "$build_libtool_libs" = yes; then
> +	if test -n "$rpath"; then
> +	  case $host in
> +	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
> +	    # these systems don't actually have a c library (as such)!
> +	    ;;
> +	  *-*-rhapsody* | *-*-darwin1.[012])
> +	    # Rhapsody C library is in the System framework
> +	    deplibs="$deplibs -framework System"
> +	    ;;
> +	  *-*-netbsd*)
> +	    # Don't link with libc until the a.out ld.so is fixed.
> +	    ;;
> +	  *-*-openbsd*)
> +	    # Do not include libc due to us having libc/libc_r.
> +	    ;;
> +	  *)
> +	    # Add libc to deplibs on all other systems if necessary.
> +	    if test $build_libtool_need_lc = "yes"; then
> +	      deplibs="$deplibs -lc"
> +	    fi
> +	    ;;
> +	  esac
> +	fi
> +
> +	# Transform deplibs into only deplibs that can be 
> linked in shared.
> +	name_save=$name
> +	libname_save=$libname
> +	release_save=$release
> +	versuffix_save=$versuffix
> +	major_save=$major
> +	# I'm not sure if I'm treating the release correctly.  I think
> +	# release should show up in the -l (ie -lgmp5) so we 
> don't want to
> +	# add it in twice.  Is that correct?
> +	release=""
> +	versuffix=""
> +	major=""
> +	newdeplibs=
> +	droppeddeps=no
> +	case $deplibs_check_method in
> +	pass_all)
> +	  # Don't check for shared/static.  Everything works.
> +	  # This might be a little naive.  We might want to check
> +	  # whether the library exists or not.  But this is on
> +	  # osf3 & osf4 and I'm not really sure... Just
> +	  # implementing what was already the behaviour.
> +	  newdeplibs=$deplibs
> +	  ;;
> +	test_compile)
> +	  # This code stresses the "libraries are programs" 
> paradigm to its
> +	  # limits. Maybe even breaks it.  We compile a 
> program, linking it
> +	  # against the deplibs as a proxy for the library.  
> Then we can check
> +	  # whether they linked in statically or dynamically with ldd.
> +	  $rm conftest.c
> +	  cat > conftest.c <<EOF
> +	  int main() { return 0; }
> +EOF
> +	  $rm conftest
> +	  $CC -o conftest conftest.c $deplibs
> +	  if test $? -eq 0 ; then
> +	    ldd_output=`ldd conftest`
> +	    for i in $deplibs; do
> +	      name="`expr $i : '-l\(.*\)'`"
> +	      # If $name is empty we are operating on a -L argument.
> +	      if test -n "$name" && test "$name" != "0"; then
> +		libname=`eval \\$echo \"$libname_spec\"`
> +		deplib_matches=`eval \\$echo \"$library_names_spec\"`
> +		set dummy $deplib_matches
> +		deplib_match=$2
> +		if test `expr "$ldd_output" : 
> ".*$deplib_match"` -ne 0 ; then
> +		  newdeplibs="$newdeplibs $i"
> +		else
> +		  droppeddeps=yes
> +		  echo
> +		  echo "*** Warning: This library needs some 
> functionality provided by $i."
> +		  echo "*** I have the capability to make that library
> automatically link in when"
> +		  echo "*** you link to this library.  But I 
> can only do this if you have a"
> +		  echo "*** shared version of the library, 
> which you do not appear to have."
> +		fi
> +	      else
> +		newdeplibs="$newdeplibs $i"
> +	      fi
> +	    done
> +	  else
> +	    # Error occured in the first compile.  Let's try to 
> salvage the situation:
> +	    # Compile a seperate program for each library.
> +	    for i in $deplibs; do
> +	      name="`expr $i : '-l\(.*\)'`"
> +	     # If $name is empty we are operating on a -L argument.
> +	      if test -n "$name" && test "$name" != "0"; then
> +		$rm conftest
> +		$CC -o conftest conftest.c $i
> +		# Did it work?
> +		if test $? -eq 0 ; then
> +		  ldd_output=`ldd conftest`
> +		  libname=`eval \\$echo \"$libname_spec\"`
> +		  deplib_matches=`eval \\$echo \"$library_names_spec\"`
> +		  set dummy $deplib_matches
> +		  deplib_match=$2
> +		  if test `expr "$ldd_output" : 
> ".*$deplib_match"` -ne 0 ; then
> +		    newdeplibs="$newdeplibs $i"
> +		  else
> +		    droppeddeps=yes
> +		    echo
> +		    echo "*** Warning: This library needs some 
> functionality provided by $i."
> +		    echo "*** I have the capability to make that library
> automatically link in when"
> +		    echo "*** you link to this library.  But I 
> can only do this if
> you have a"
> +		    echo "*** shared version of the library, 
> which you do not
> appear to have."
> +		  fi
> +		else
> +		  droppeddeps=yes
> +		  echo
> +		  echo "*** Warning!  Library $i is needed by 
> this library but I
> was not able to"
> +		  echo "***  make it link in!  You will 
> probably need to install it or some"
> +		  echo "*** library that it depends on before 
> this library will be fully"
> +		  echo "*** functional.  Installing it before 
> continuing would be
> even better."
> +		fi
> +	      else
> +		newdeplibs="$newdeplibs $i"
> +	      fi
> +	    done
> +	  fi
> +	  ;;
> +	file_magic*)
> +	  set dummy $deplibs_check_method
> +	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
> +	  for a_deplib in $deplibs; do
> +	    name="`expr $a_deplib : '-l\(.*\)'`"
> +	    # If $name is empty we are operating on a -L argument.
> +	    if test -n "$name" && test "$name" != "0"; then
> +	      libname=`eval \\$echo \"$libname_spec\"`
> +	      for i in $lib_search_path $sys_lib_search_path 
> $shlib_search_path; do
> +		    potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
> +		    for potent_lib in $potential_libs; do
> +		      # Follow soft links.
> +		      if ls -lLd "$potent_lib" 2>/dev/null \
> +			 | grep " -> " >/dev/null; then
> +			continue
> +		      fi
> +		      # The statement above tries to avoid entering an
> +		      # endless loop below, in case of cyclic links.
> +		      # We might still enter an endless loop, 
> since a link
> +		      # loop can be closed while we follow links,
> +		      # but so what?
> +		      potlib="$potent_lib"
> +		      while test -h "$potlib" 2>/dev/null; do
> +			potliblink=`ls -ld $potlib | sed 's/.* -> //'`
> +			case $potliblink in
> +			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
> +			*) potlib=`$echo "X$potlib" | $Xsed -e 
> 's,[^/]*$,,'`"$potliblink";;
> +			esac
> +		      done
> +		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
> +			 | sed 10q \
> +			 | egrep "$file_magic_regex" > /dev/null; then
> +			newdeplibs="$newdeplibs $a_deplib"
> +			a_deplib=""
> +			break 2
> +		      fi
> +		    done
> +	      done
> +	      if test -n "$a_deplib" ; then
> +		droppeddeps=yes
> +		echo
> +		echo "*** Warning: This library needs some 
> functionality provided
> by $a_deplib."
> +		echo "*** I have the capability to make that 
> library automatically
> link in when"
> +		echo "*** you link to this library.  But I can 
> only do this if you have a"
> +		echo "*** shared version of the library, which 
> you do not appear to have."
> +	      fi
> +	    else
> +	      # Add a -L argument.
> +	      newdeplibs="$newdeplibs $a_deplib"
> +	    fi
> +	  done # Gone through all deplibs.
> +	  ;;
> +	match_pattern*)
> +	  set dummy $deplibs_check_method
> +	  match_pattern_regex=`expr "$deplibs_check_method" : 
> "$2 \(.*\)"`
> +	  for a_deplib in $deplibs; do
> +	    name="`expr $a_deplib : '-l\(.*\)'`"
> +	    # If $name is empty we are operating on a -L argument.
> +	    if test -n "$name" && test "$name" != "0"; then
> +	      libname=`eval \\$echo \"$libname_spec\"`
> +	      for i in $lib_search_path $sys_lib_search_path 
> $shlib_search_path; do
> +		potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
> +		for potent_lib in $potential_libs; do
> +		  if eval echo \"$potent_lib\" 2>/dev/null \
> +		      | sed 10q \
> +		      | egrep "$match_pattern_regex" > /dev/null; then
> +		    newdeplibs="$newdeplibs $a_deplib"
> +		    a_deplib=""
> +		    break 2
> +		  fi
> +		done
> +	      done
> +	      if test -n "$a_deplib" ; then
> +		droppeddeps=yes
> +		echo
> +		echo "*** Warning: This library needs some 
> functionality provided
> by $a_deplib."
> +		echo "*** I have the capability to make that 
> library automatically
> link in when"
> +		echo "*** you link to this library.  But I can 
> only do this if you have a"
> +		echo "*** shared version of the library, which 
> you do not appear to have."
> +	      fi
> +	    else
> +	      # Add a -L argument.
> +	      newdeplibs="$newdeplibs $a_deplib"
> +	    fi
> +	  done # Gone through all deplibs.
> +	  ;;
> +	none | unknown | *)
> +	  newdeplibs=""
> +	  if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
> +	       -e 's/ -[LR][^ ]*//g' -e 's/[ 	]//g' |
> +	     grep . >/dev/null; then
> +	    echo
> +	    if test "X$deplibs_check_method" = "Xnone"; then
> +	      echo "*** Warning: inter-library dependencies are not
> supported in this platform."
> +	    else
> +	      echo "*** Warning: inter-library dependencies are 
> not known to
> be supported."
> +	    fi
> +	    echo "*** All declared inter-library dependencies 
> are being dropped."
> +	    droppeddeps=yes
> +	  fi
> +	  ;;
> +	esac
> +	versuffix=$versuffix_save
> +	major=$major_save
> +	release=$release_save
> +	libname=$libname_save
> +	name=$name_save
> +
> +	case $host in
> +	*-*-rhapsody* | *-*-darwin1.[012])
> +	  # On Rhapsody replace the C library is the System framework
> +	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc 
> / -framework System /'`
> +	  ;;
> +	esac
> +
> +	if test "$droppeddeps" = yes; then
> +	  if test "$module" = yes; then
> +	    echo
> +	    echo "*** Warning: libtool could not satisfy all 
> declared inter-library"
> +	    echo "*** dependencies of module $libname.  
> Therefore, libtool
> will create"
> +	    echo "*** a static module, that should work as long 
> as the dlopening"
> +	    echo "*** application is linked with the -dlopen flag."
> +	    if test -z "$global_symbol_pipe"; then
> +	      echo
> +	      echo "*** However, this would only work if 
> libtool was able to
> extract symbol"
> +	      echo "*** lists from a program, using \`nm' or 
> equivalent, but
> libtool could"
> +	      echo "*** not find such a program.  So, this module is
> probably useless."
> +	      echo "*** \`nm' from GNU binutils and a full 
> rebuild may help."
> +	    fi
> +	    if test "$build_old_libs" = no; then
> +	      oldlibs="$output_objdir/$libname.$libext"
> +	      build_libtool_libs=module
> +	      build_old_libs=yes
> +	    else
> +	      build_libtool_libs=no
> +	    fi
> +	  else
> +	    echo "*** The inter-library dependencies that have 
> been dropped
> here will be"
> +	    echo "*** automatically added whenever a program is 
> linked with
> this library"
> +	    echo "*** or is declared to -dlopen it."
> +
> +	    if test $allow_undefined = no; then
> +	      echo
> +	      echo "*** Since this library must not contain 
> undefined symbols,"
> +	      echo "*** because either the platform does not 
> support them or"
> +	      echo "*** it was explicitly requested with -no-undefined,"
> +	      echo "*** libtool will only create a static 
> version of it."
> +	      if test "$build_old_libs" = no; then
> +		oldlibs="$output_objdir/$libname.$libext"
> +		build_libtool_libs=module
> +		build_old_libs=yes
> +	      else
> +		build_libtool_libs=no
> +	      fi
> +	    fi
> +	  fi
> +	fi
> +	# Done checking deplibs!
> +	deplibs=$newdeplibs
> +      fi
> +
> +      # All the library-specific variables (install_libdir 
> is set above).
> +      library_names=
> +      old_library=
> +      dlname=
> +
> +      # Test again, we may have decided not to build it any more
> +      if test "$build_libtool_libs" = yes; then
> +	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"
> +	  for libdir in $rpath; do
> +	    if test -n "$hardcode_libdir_flag_spec"; then
> +	      if test -n "$hardcode_libdir_separator"; then
> +		if test -z "$hardcode_libdirs"; then
> +		  hardcode_libdirs="$libdir"
> +		else
> +		  # Just accumulate the unique libdirs.
> +		  case 
> $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator
> in
> +		  
> *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
> +		    ;;
> +		  *)
> +		    
> hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
> +		    ;;
> +		  esac
> +		fi
> +	      else
> +		eval flag=\"$hardcode_libdir_flag_spec\"
> +		dep_rpath="$dep_rpath $flag"
> +	      fi
> +	    elif test -n "$runpath_var"; then
> +	      case "$perm_rpath " in
> +	      *" $libdir "*) ;;
> +	      *) perm_rpath="$perm_rpath $libdir" ;;
> +	      esac
> +	    fi
> +	  done
> +	  # Substitute the hardcoded libdirs into the rpath.
> +	  if test -n "$hardcode_libdir_separator" &&
> +	     test -n "$hardcode_libdirs"; then
> +	    libdir="$hardcode_libdirs"
> +	    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:"
> +	    done
> +	    eval "$runpath_var='$rpath\$$runpath_var'; export 
> $runpath_var"
> +	  fi
> +	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
> +	fi
> +
> +	shlibpath="$finalize_shlibpath"
> +	test "$mode" != relink && 
> shlibpath="$compile_shlibpath$shlibpath"
> +	if test -n "$shlibpath"; then
> +	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; 
> export $shlibpath_var"
> +	fi
> +
> +	# Get the real and link names of the library.
> +	eval library_names=\"$library_names_spec\"
> +	set dummy $library_names
> +	realname="$2"
> +	shift; shift
> +
> +	if test -n "$soname_spec"; then
> +	  eval soname=\"$soname_spec\"
> +	else
> +	  soname="$realname"
> +	fi
> +	test -z "$dlname" && dlname=$soname
> +
> +	lib="$output_objdir/$realname"
> +	for link
> +	do
> +	  linknames="$linknames $link"
> +	done
> +
> +	# Ensure that we have .o objects for linkers which dislike .lo
> +	# (e.g. aix) in case we are running --disable-static
> +	for obj in $libobjs; do
> +	  xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
> +	  if test "X$xdir" = "X$obj"; then
> +	    xdir="."
> +	  else
> +	    xdir="$xdir"
> +	  fi
> +	  baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
> +	  oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
> +	  if test ! -f $xdir/$oldobj; then
> +	    $show "(cd $xdir && ${LN_S} $baseobj $oldobj)"
> +	    $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' 
> || exit $?
> +	  fi
> +	done
> +
> +	# Use standard objects if they are pic
> +	test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | 
> $SP2NL | $Xsed
> -e "$lo2o" | $NL2SP`
> +
> +	# Prepare the list of exported symbols
> +	if test -z "$export_symbols"; then
> +	  if test "$always_export_symbols" = yes || test -n
> "$export_symbols_regex"; then
> +	    $show "generating symbol list for \`$libname.la'"
> +	    export_symbols="$output_objdir/$libname.exp"
> +	    $run $rm $export_symbols
> +	    eval cmds=\"$export_symbols_cmds\"
> +	    save_ifs="$IFS"; IFS='~'
> +	    for cmd in $cmds; do
> +	      IFS="$save_ifs"
> +	      $show "$cmd"
> +	      $run eval "$cmd" || exit $?
> +	    done
> +	    IFS="$save_ifs"
> +	    if test -n "$export_symbols_regex"; then
> +	      $show "egrep -e \"$export_symbols_regex\" 
> \"$export_symbols\"
> > \"${export_symbols}T\""
> +	      $run eval 'egrep -e "$export_symbols_regex" 
> "$export_symbols"
> > "${export_symbols}T"'
> +	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
> +	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
> +	    fi
> +	  fi
> +	fi
> +
> +	if test -n "$export_symbols" && test -n "$include_expsyms"; then
> +	  $run eval '$echo "X$include_expsyms" | $SP2NL >> 
> "$export_symbols"'
> +	fi
> +
> +	if test -n "$convenience"; then
> +	  if test -n "$whole_archive_flag_spec"; then
> +	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
> +	  else
> +	    gentop="$output_objdir/${outputname}x"
> +	    $show "${rm}r $gentop"
> +	    $run ${rm}r "$gentop"
> +	    $show "mkdir $gentop"
> +	    $run mkdir "$gentop"
> +	    status=$?
> +	    if test $status -ne 0 && test ! -d "$gentop"; then
> +	      exit $status
> +	    fi
> +	    generated="$generated $gentop"
> +
> +	    for xlib in $convenience; do
> +	      # Extract the objects.
> +	      case $xlib in
> +	      [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
> +	      *) xabs=`pwd`"/$xlib" ;;
> +	      esac
> +	      xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
> +	      xdir="$gentop/$xlib"
> +
> +	      $show "${rm}r $xdir"
> +	      $run ${rm}r "$xdir"
> +	      $show "mkdir $xdir"
> +	      $run mkdir "$xdir"
> +	      status=$?
> +	      if test $status -ne 0 && test ! -d "$xdir"; then
> +		exit $status
> +	      fi
> +	      $show "(cd $xdir && $AR x $xabs)"
> +	      $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
> +
> +	      libobjs="$libobjs "`find $xdir -name \*.o -print -o -name
> \*.lo -print | $NL2SP`
> +	    done
> +	  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"
> +	fi
> +
> +	# Make a backup of the uninstalled library when relinking
> +	if test "$mode" = relink; then
> +	  $run eval '(cd $output_objdir && $rm ${realname}U && 
> $mv $realname
> ${realname}U)' || exit $?
> +	fi
> +
> +	# Do each of the archive commands.
> +	if test -n "$export_symbols" && test -n 
> "$archive_expsym_cmds"; then
> +	  eval cmds=\"$archive_expsym_cmds\"
> +	else
> +	  eval cmds=\"$archive_cmds\"
> +	fi
> +	save_ifs="$IFS"; IFS='~'
> +	for cmd in $cmds; do
> +	  IFS="$save_ifs"
> +	  $show "$cmd"
> +	  $run eval "$cmd" || exit $?
> +	done
> +	IFS="$save_ifs"
> +
> +	# Restore the uninstalled library and exit
> +	if test "$mode" = relink; then
> +	  $run eval '(cd $output_objdir && $rm ${realname}T && 
> $mv $realname
> ${realname}T && $mv "$realname"U $realname)' || exit $?
> +	  exit 0
> +	fi
> +
> +	# Create links to the real library.
> +	for linkname in $linknames; do
> +	  if test "$realname" != "$linkname"; then
> +	    $show "(cd $output_objdir && $rm $linkname && $LN_S 
> $realname $linkname)"
> +	    $run eval '(cd $output_objdir && $rm $linkname && $LN_S
> $realname $linkname)' || exit $?
> +	  fi
> +	done
> +
> +	# If -module or -export-dynamic was specified, set the dlname.
> +	if test "$module" = yes || test "$export_dynamic" = yes; then
> +	  # On all known operating systems, these are identical.
> +	  dlname="$soname"
> +	fi
> +      fi
> +      ;;
> +
> +    obj)
> +      if test -n "$deplibs"; then
> +	$echo "$modename: warning: \`-l' and \`-L' are ignore