From: curt Date: Thu, 16 Jul 1998 17:28:42 +0000 (+0000) Subject: Ran libtoolize ... X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=ba6f80b9fdcabf339299ccb601f639cebb18b7a2;p=flightgear.git Ran libtoolize ... --- diff --git a/NEWS b/NEWS index e78a60ccc..3998207d9 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,8 @@ +New in 0.51 +* Translucent menus +* Various HUD intensities so you can find something that is readable for the + current conditions and lighting. + New in 0.50 * HUD updates from Charlie Hotchkiss (ladder number rotate w/ ladder, control position indicators are back) @@ -15,6 +20,7 @@ New in 0.50 * added an enable/disable mouse pointer option * Ground collision detection. You can now land or test for collision with any scenery surface. +* Converted angle of attack scale into a radio altimeter. New in 0.49 * Managment of multiple textures diff --git a/README.autoconf b/README.autoconf index ec9c808e7..b937e5cf5 100644 --- a/README.autoconf +++ b/README.autoconf @@ -11,7 +11,12 @@ install the following packages: - GNU autoconf 2.12 (available from ftp://prep.ai.mit.edu/pub/gnu) - GNU automake 1.2h (available from ftp://ftp.cygnus.com/pub/tromey) - - GNU libtool 1.0c (available from ftp://prep.ai.mit.edu/pub/gnu) + - GNU libtool 1.2 (available from ftp://prep.ai.mit.edu/pub/gnu) + (or maybe ftp://alpha.gnu.org/gnu) + +After upgrading libtool, you will want to run: + + libtoolize --force When making a change to any of these files you will need to run: diff --git a/config.guess b/config.guess index 30230b3df..413ed41c0 100755 --- a/config.guess +++ b/config.guess @@ -1,6 +1,6 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc. +# Copyright (C) 1992, 93, 94, 95, 96, 1997 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -478,10 +478,10 @@ EOF echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` exit 0 ;; i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin32 + echo i386-pc-cygwin32 exit 0 ;; i*:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 + echo i386-pc-mingw32 exit 0 ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin32 @@ -493,12 +493,6 @@ EOF echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; *:Linux:*:*) - # uname on the ARM produces all sorts of strangeness, and we need to - # filter it out. - case "$UNAME_MACHINE" in - arm* | sa110*) UNAME_MACHINE="arm" ;; - esac - # The BFD linker knows what the default object file format is, so # first see if it will tell us. ld_help_string=`ld --help 2>&1` @@ -512,7 +506,6 @@ EOF i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;; i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;; sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; - armlinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; elf32ppc) echo "powerpc-unknown-linux-gnu" ; exit 0 ;; esac diff --git a/config.sub b/config.sub index 0131946b9..213a6d47d 100755 --- a/config.sub +++ b/config.sub @@ -1,6 +1,6 @@ #! /bin/sh # Configuration validation subroutine script, version 1.1. -# Copyright (C) 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc. +# Copyright (C) 1991, 92, 93, 94, 95, 96, 1997 Free Software Foundation, Inc. # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. @@ -149,13 +149,14 @@ esac case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. - tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arm \ - | arme[lb] | pyramid | mn10300 \ + tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \ + | arme[lb] | pyramid | mn10200 | mn10300 \ | tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \ - | alpha | we32k | ns16k | clipper | i370 | sh \ - | powerpc | powerpcle | 1750a | dsp16xx | mips64 | mipsel \ - | pdp11 | mips64el | mips64orion | mips64orionel \ - | sparc | sparclet | sparclite | sparc64) + | alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \ + | i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \ + | mips64 | mipsel | mips64el | mips64orion | mips64orionel \ + | mipstx39 | mipstx39el \ + | sparc | sparclet | sparclite | sparc64 | v850) basic_machine=$basic_machine-unknown ;; # We use `pc' rather than `unknown' @@ -171,13 +172,17 @@ case $basic_machine in ;; # Recognize the basic CPU types with company name. vax-* | tahoe-* | i[3456]86-* | i860-* | m32r-* | m68k-* | m68000-* \ - | m88k-* | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \ - | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \ - | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \ - | hppa-* | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \ - | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \ - | pdp11-* | sh-* | powerpc-* | powerpcle-* | sparc64-* | mips64-* | mipsel-* \ - | mips64el-* | mips64orion-* | mips64orionel-* | f301-*) + | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \ + | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ + | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \ + | xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* \ + | alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \ + | ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \ + | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ + | sparc64-* | mips64-* | mipsel-* \ + | mips64el-* | mips64orion-* | mips64orionel-* \ + | mipstx39-* | mipstx39el-* \ + | f301-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. @@ -204,9 +209,9 @@ case $basic_machine in amiga | amiga-*) basic_machine=m68k-cbm ;; - amigados) + amigaos | amigados) basic_machine=m68k-cbm - os=-amigados + os=-amigaos ;; amigaunix | amix) basic_machine=m68k-cbm @@ -391,11 +396,11 @@ case $basic_machine in ;; mipsel*-linux*) basic_machine=mipsel-unknown - os=-linux + os=-linux-gnu ;; mips*-linux*) basic_machine=mips-unknown - os=-linux + os=-linux-gnu ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` @@ -566,6 +571,12 @@ case $basic_machine in basic_machine=i386-sequent os=-dynix ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; tower | tower-32) basic_machine=m68k-ncr ;; @@ -585,7 +596,7 @@ case $basic_machine in basic_machine=vax-dec os=-vms ;; - vpp*|vx|vx-*) + vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) @@ -615,7 +626,7 @@ case $basic_machine in # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. mips) - if [ x$os = x-linux ]; then + if [ x$os = x-linux-gnu ]; then basic_machine=mips-unknown else basic_machine=mips-mips @@ -680,9 +691,12 @@ case $os in -solaris) os=-solaris2 ;; - -unixware* | svr4*) + -svr4*) os=-sysv4 ;; + -unixware*) + os=-sysv4.2uw + ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; @@ -693,7 +707,8 @@ case $os in -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigados* | -msdos* | -newsos* | -unicos* | -aof* | -aos* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ @@ -701,7 +716,7 @@ case $os in | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -linux-gnu* | -uxpv*) + | -mingw32* | -linux-gnu* | -uxpv*) # Remember, each alternative MUST END IN *, to match a version number. ;; -linux*) @@ -827,7 +842,7 @@ case $basic_machine in os=-sysv ;; *-cbm) - os=-amigados + os=-amigaos ;; *-dg) os=-dgux diff --git a/configure.in b/configure.in index 0be9d99ca..e782461d6 100644 --- a/configure.in +++ b/configure.in @@ -5,7 +5,7 @@ dnl AC_INIT(Simulator/Aircraft/aircraft.c) dnl Initialize the automake stuff -AM_INIT_AUTOMAKE(FlightGear, 0.50) +AM_INIT_AUTOMAKE(FlightGear, 0.51) dnl Checks for programs. @@ -44,13 +44,13 @@ AC_EXT_TIMEZONE AM_CONDITIONAL(HAVE_TIMEZONE, test "$have_timezone" = yes ) dnl Check for Linux style audio support -AM_CONDITIONAL(HAVE_AUDIO_SUPPORT, \ +AM_CONDITIONAL(ENABLE_AUDIO_SUPPORT, \ test -r /usr/include/soundcard.h \ -o -r /usr/include/linux/soundcard.h \ -o -r /usr/include/machine/soundcard.h \ -o "x$ac_cv_header_windows_h" = "xyes" ) -AM_CONDITIONAL(HAVE_WIN32_AUDIO, test "x$ac_cv_header_windows_h" = "xyes") +AM_CONDITIONAL(ENABLE_WIN32_AUDIO, test "x$ac_cv_header_windows_h" = "xyes") dnl extra library and include directories EXTRA_DIRS="/usr/local /usr/X11R6 /opt/X11R6" @@ -93,6 +93,12 @@ else AC_CHECK_LIB(GL, glXCreateContext) fi +dnl if using mesa, check for xmesa.h +if test "x$ac_cv_lib_MesaGL_glNewList" = "xyes" ; then + AC_CHECK_HEADER(GL/xmesa.h) + AM_CONDITIONAL(ENABLE_XMESA_FX, test "x$ac_cv_header_GL_xmesa_h" = "xyes") +fi + AC_CHECK_LIB(GLU, gluLookAt) if test "x$ac_cv_lib_GLU_gluLookAt" = "xno" ; then dnl if no GLU, check for MesaGLU diff --git a/ltconfig b/ltconfig index 7bba4e6b3..2347e6943 100755 --- a/ltconfig +++ b/ltconfig @@ -1,9 +1,7 @@ #! /bin/sh # ltconfig - Create a system-specific libtool. -# When updating this script, search for LINENUM and fix line number refs. -# Generated automatically from ltconfig.in by configure. -# Copyright (C) 1996, 1997, Free Software Foundation, Inc. +# Copyright (C) 1996-1998 Free Software Foundation, Inc. # Gordon Matzigkeit , 1996 # # This file is free software; you can redistribute it and/or modify it @@ -27,14 +25,50 @@ # A lot of this script is taken from autoconf-2.10. +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi + +echo=echo +if test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then : +else + # The Solaris and AIX default echo program unquotes backslashes. + # This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # So, we emulate echo with printf '%s\n' + echo="printf %s\\n" + if test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then : + else + # Oops. We have no working printf. Try to find a not-so-buggy echo. + echo=echo + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" + for dir in $PATH /usr/ucb; do + if test -f $dir/echo && test "X`$dir/echo '\t'`" = 'X\t'; then + echo="$dir/echo" + break + fi + done + IFS="$save_ifs" + fi +fi + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + # The name of this program. -progname=`echo "$0" | sed 's%^.*/%%'` +progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'` # Constants: PROGRAM=ltconfig PACKAGE=libtool -VERSION=1.0 +VERSION=1.2 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.c 1>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.c $LIBS 1>&5' rm="rm -f" help="Try \`$progname --help' for more information." @@ -61,10 +95,9 @@ old_CFLAGS="$CFLAGS" old_CPPFLAGS="$CPPFLAGS" old_LD="$LD" old_LN_S="$LN_S" +old_NM="$NM" old_RANLIB="$RANLIB" -test -z "$AR" && AR=ar - # Parse the command line options. args= prev= @@ -93,7 +126,7 @@ Generate a system-specific libtool script. --help display this help and exit --no-verify do not verify that HOST is a valid host type --quiet same as \`--silent' - --silent don't print informational messages + --silent do not print informational messages --srcdir=DIR find \`config.guess' in DIR --version output version information and exit --with-gcc assume that the GNU C compiler will be used @@ -133,7 +166,7 @@ EOM if test -z "$ltmain"; then ltmain="$option" elif test -z "$host"; then -# FIXME This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1 +# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1 # if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then # echo "$progname: warning \`$option' is not a valid host type" 1>&2 # fi @@ -154,7 +187,9 @@ fi if test -f "$ltmain"; then : else - echo "$progname: warning: \`$ltmain' does not exist" 1>&2 + echo "$progname: \`$ltmain' does not exist" 1>&2 + echo "$help" 1>&2 + exit 1 fi # Quote any args containing shell metacharacters. @@ -206,10 +241,11 @@ fi if test -z "$srcdir"; then # Assume the source directory is the same one as the path to ltmain.sh. - srcdir=`echo "$ltmain" | sed 's%/[^/]*$%%'` + srcdir=`$echo "$ltmain" | $Xsed -e 's%/[^/]*$%%'` test "$srcdir" = "$ltmain" && srcdir=. fi +trap "$rm conftest*; exit 1" 1 2 15 if test "$verify_host" = yes; then # Check for config.guess and config.sub. ac_aux_dir= @@ -248,7 +284,10 @@ if test "$verify_host" = yes; then fi ;; esac host=`$ac_config_sub $host_alias` - echo "$ac_t""$host" 1>&6 + echo "$ac_t$host" 1>&6 + + # Make sure the host verified. + test -z "$host" && exit 1 elif test -z "$host"; then echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2 @@ -258,19 +297,35 @@ else host_alias=$host fi -# Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts. -case "$host" in -*-*-linux-gnu*) ;; -*-*-linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +case "$host_os" in +linux-gnu*) ;; +linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` esac host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +case "$host_os" in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "${COLLECT_NAMES+set}" != set; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + # Determine commands to create old-style static archives. old_archive_cmds='$AR cru $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +# Set a sane default for `AR'. +test -z "$AR" && AR=ar # If RANLIB is not set, then run the test. if test "${RANLIB+set}" != "set"; then @@ -288,12 +343,12 @@ if test "${RANLIB+set}" != "set"; then done IFS="$save_ifs" - echo $ac_t "$result" 1>&6 + echo "$ac_t$result" 1>&6 fi if test -n "$RANLIB"; then old_archive_cmds="$old_archive_cmds;\$RANLIB \$oldlib" - old_postinstall_cmds="$old_postinstall_cmds;\$RANLIB \$oldlib" + old_postinstall_cmds="\$RANLIB \$oldlib;$old_postinstall_cmds" fi # Check to see if we are using GCC. @@ -313,9 +368,9 @@ if test "$with_gcc" != yes || test -z "$CC"; then IFS="$save_ifs" if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 + echo "$ac_t$CC" 1>&6 else - echo "$ac_t""no" 1>&6 + echo "$ac_t"no 1>&6 fi fi @@ -352,9 +407,9 @@ if test "$with_gcc" != yes || test -z "$CC"; then fi if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 + echo "$ac_t$CC" 1>&6 else - echo "$ac_t""no" 1>&6 + echo "$ac_t"no 1>&6 fi if test -z "$CC"; then @@ -366,20 +421,19 @@ if test "$with_gcc" != yes || test -z "$CC"; then # Now see if the compiler is really GCC. with_gcc=no echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 + echo "$progname:424: checking whether we are using GNU C" >&5 - trap "$rm conftest.c; exit 1" 1 2 15 $rm conftest.c cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:432: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then with_gcc=yes fi $rm conftest.c - echo $ac_t "$with_gcc" 1>&6 + echo "$ac_t$with_gcc" 1>&6 fi # Allow CC to be a program name with arguments. @@ -388,29 +442,45 @@ compiler="$2" echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6 pic_flag= -profile_flag_pattern= special_shlib_compile_flags= wl= link_static_flag= +no_builtin_flag= if test "$with_gcc" = yes; then - pic_flag='-fPIC' - profile_flag_pattern='-pg?' wl='-Wl,' link_static_flag='-static' + no_builtin_flag=' -fno-builtin' + + case "$host_os" in + aix3* | aix4* | irix5* | irix6* | osf3* | osf4*) + # PIC is the default for these OSes. + ;; + os2*) + # We can build DLLs from non-PIC. + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + pic_flag='-m68020 -resident32 -malways-restore-a4' + ;; + *) + pic_flag='-fPIC' + ;; + esac else # PORTME Check for PIC flags for the system compiler. case "$host_os" in aix3* | aix4*) - # FIXME All rs/6000 code is PIC, but is there any non-rs/6000 AIX platform? - pic_flag= + # All AIX code is PIC. link_static_flag='-bnso -bI:/lib/syscalls.exp' ;; hpux9* | hpux10*) - # FIXME is there a better link_static_flag that works with the bundled CC? + # Is there a better link_static_flag that works with the bundled CC? wl='-Wl,' - link_static_flag='${wl}-a ${wl}archive' + link_static_flag="${wl}-a ${wl}archive" pic_flag='+Z' ;; @@ -418,11 +488,14 @@ else wl='-Wl,' link_static_flag='-non_shared' # PIC (with -KPIC) is the default. - pic_flag= + ;; + + os2*) + # We can build DLLs from non-PIC. ;; osf3* | osf4*) - # FIXME - pic_flag is probably required for hppa*-osf* and i860-osf* + # All OSF/1 code is PIC. wl='-Wl,' link_static_flag='-non_shared' ;; @@ -445,24 +518,59 @@ else wl='-Qoption ld ' ;; + sysv4.2uw2*) + pic_flag='-KPIC' + link_static_flag='-Bstatic' + wl='-Wl,' + ;; + + uts4*) + pic_flag='-pic' + link_static_flag='-Bstatic' + ;; + *) can_build_shared=no ;; esac fi -case "$host_cpu" in -rs6000 | powerpc | powerpcle) - # Yippee! All RS/6000 and PowerPC code is position-independent. - pic_flag= - ;; -esac - if test -n "$pic_flag"; then - echo $ac_t "$pic_flag" 1>&6 - pic_flag=" $pic_flag" + echo "$ac_t$pic_flag" 1>&6 + + # Check to make sure the pic_flag actually works. + echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6 + $rm conftest* + echo > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $pic_flag -DPIC" + echo "$progname:547: checking if $compiler PIC flag $pic_flag works" >&5 + if { (eval echo $progname:548: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + + # On HP-UX, both CC and GCC only warn that PIC is supported... then they + # create non-PIC objects. So, if there were any warnings, we assume that + # PIC is not supported. + if test -s conftest.err; then + echo "$ac_t"no 1>&6 + can_build_shared=no + pic_flag= + else + echo "$ac_t"yes 1>&6 + pic_flag=" $pic_flag" + fi + else + # Append any errors to the config.log. + cat conftest.err 1>&5 + can_build_shared=no + pic_flag= + echo "$ac_t"no 1>&6 + fi + CFLAGS="$save_CFLAGS" + $rm conftest* else - echo $ac_t none 1>&6 + echo "$ac_t"none 1>&6 fi # Check for any special shared library compilation flags. @@ -475,36 +583,27 @@ if test -n "$special_shlib_compile_flags"; then fi fi -# See if we are using a broken GCC collect2 program. -if test "$with_gcc" = yes; then - echo $ac_n "checking for broken GCC collect2... $ac_c" 1>&6 - - # FIXME: Run a test here, instead of relying on the canonical system name. - case "$host_os" in - aix3*) - can_build_shared=no - echo $ac_t yes 1>&6 - echo "$progname: to build shared libraries, set the CC env variable to \`xlc' and reconfigure" 1>&2 - ;; - *) - echo $ac_t no 1>&6 - ;; - esac -fi - -echo $ac_n "checking for $compiler option to statically link programs... $ac_c" 1>&6 -if test -n "$link_static_flag"; then - echo $ac_t "$link_static_flag" 1>&6 +echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6 +$rm conftest* +echo 'main(){return(0);}' > conftest.c +save_LDFLAGS="$LDFLAGS" +LDFLAGS="$LDFLAGS $link_static_flag" +echo "$progname:591: checking if $compiler static flag $link_static_flag works" >&5 +if { (eval echo $progname:592: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + echo "$ac_t$link_static_flag" 1>&6 else - echo $ac_t none 1>&6 + echo "$ac_t"none 1>&6 + link_static_flag= fi +LDFLAGS="$save_LDFLAGS" +$rm conftest* if test -z "$LN_S"; then # Check to see if we can use ln -s, or we need hard links. echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 - rm -f conftestdata + $rm conftestdata if ln -s X conftestdata 2>/dev/null; then - rm -f conftestdata + $rm conftestdata LN_S="ln -s" else LN_S=ln @@ -516,124 +615,162 @@ if test -z "$LN_S"; then fi fi -if test "$with_gnu_ld" != yes || test -z "$LD"; then - if test -z "$LD"; then - if test "$with_gnu_ld" = yes; then - echo $ac_n "checking for GNU ld... $ac_c" 1>&6 - else - echo $ac_n "checking for non-GNU ld... $ac_c" 1>&6 - fi +# Make sure LD is an absolute path. +if test -z "$LD"; then + ac_prog=ld + if test "$with_gcc" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 + echo "$progname:624: checking for ld used by GCC" >&5 + ac_prog=`($CC -print-prog-name=ld) 2>&5` + case "$ac_prog" in + # Accept absolute paths. + /* | [A-Za-z]:\\*) + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we are not using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac + elif test "$with_gnu_ld" = yes; then + echo $ac_n "checking for GNU ld... $ac_c" 1>&6 + echo "$progname:642: checking for GNU ld" >&5 + else + echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 + echo "$progname:645: checking for non-GNU ld" >&5 + fi + if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/ld"; then - LD="$ac_dir/ld" + if test -f "$ac_dir/$ac_prog"; then + LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. - if "$LD" -v 2>&1 < /dev/null | egrep '(GNU ld|with BFD)' > /dev/null; then - test "$with_gnu_ld" = yes && break + if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" + fi - if test -n "$LD"; then - echo "$ac_t""$LD" 1>&6 - else - echo "$ac_t""no" 1>&6 - fi - - if test -z "$LD"; then - echo "$progname: error: no acceptable ld found in \$PATH" 1>&2 - exit 1 - fi + if test -n "$LD"; then + echo "$ac_t$LD" 1>&6 + else + echo "$ac_t"no 1>&6 fi - echo $ac_n "checking whether we are using GNU ld... $ac_c" 1>&6 - # I'd rather use --version here, but apparently some GNU ld's only accept -v. - if $LD -v 2>&1 /dev/null; then - with_gnu_ld=yes + if test -z "$LD"; then + echo "$progname: error: no acceptable ld found in \$PATH" 1>&2 + exit 1 fi - echo $ac_t "$with_gnu_ld" 1>&6 fi +# Check to see if it really is or is not GNU ld. +echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6 +# I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + with_gnu_ld=yes +else + with_gnu_ld=no +fi +echo "$ac_t$with_gnu_ld" 1>&6 + # See if the linker supports building shared libraries. echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6 allow_undefined_flag= +no_undefined_flag= archive_cmds= -export_dynamic_flag= +old_archive_from_new_cmds= +export_dynamic_flag_spec= hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no -hardcode_runpath_var=no hardcode_shlibpath_var=unsupported runpath_var= +case "$host_os" in +amigaos* | sunos4*) + # On these operating systems, we should treat GNU ld like the system ld. + gnu_ld_acts_native=yes + ;; +*) + gnu_ld_acts_native=no + ;; +esac + ld_shlibs=yes -if test "$with_gnu_ld" = yes; then - # See if GNU ld supports shared libraries. +if test "$with_gnu_ld" = yes && test "$gnu_ld_acts_native" != yes; then - case "$host_os" in - sunos4*) + # See if GNU ld supports shared libraries. + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared ${wl}-soname $wl$soname -o $lib$libobjs' + runpath_var=LD_RUN_PATH ld_shlibs=yes - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - else - ld_shlibs=no - fi - ;; - esac + else + ld_shlibs=no + fi if test "$ld_shlibs" = yes; then - archive_cmds='$cc -shared ${wl}-soname $wl$soname -o $lib$libobjs$deplibs' - hardcode_libdir_flag_spec='${wl}-rpath $wl$libdir' - export_dynamic_flag='${wl}-export-dynamic' + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' fi else # PORTME fill in a description of your system's linker (not GNU ld) case "$host_os" in aix3*) allow_undefined_flag=unsupported - archive_cmds='/usr/ucb/nm$libobjs | egrep \" [BD] \" | sed \"s/^.* //\" > $lib.exp;$LD -o $objdir/$soname$libobjs -bE:$lib.exp -T512 -H512 -bM:SRE -lc$deplibs;$AR cru $lib $objdir/$soname' + archive_cmds='$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' > $lib.exp;$LD -o $objdir/$soname$libobjs -bE:$lib.exp -T512 -H512 -bM:SRE;$AR cru $lib $objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes + if test "$with_gcc" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi ;; aix4*) allow_undefined_flag=unsupported - archive_cmds='/bin/nm -B$libobjs | egrep \" [BD] \" | sed \"s/^.* //\" > $lib.exp;$cc -o $objdir/$soname$libobjs ${wl}-bE:$lib.exp ${wl}-bM:SRE ${wl}-bnoentry$deplibs;$AR cru $lib $objdir/$soname' + archive_cmds='$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' > $lib.exp;$CC -o $objdir/$soname$libobjs ${wl}-bE:$lib.exp ${wl}-bM:SRE ${wl}-bnoentry;$AR cru $lib $objdir/$soname' hardcode_direct=yes hardcode_minus_L=yes ;; + amigaos*) + archive_cmds='$rm $objdir/a2ixlibrary.data;$echo "#define NAME $libname" > $objdir/a2ixlibrary.data;$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data;$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data;$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data;$AR cru $lib$libobjs;$RANLIB $lib;(cd $objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o - # doesn't break anything, and helps significantly (at the cost of a little + # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib$libobjs$deplibs /usr/lib/c++rt0.o' + archive_cmds='$LD -Bshareable -o $lib$libobjs /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; - # Unfortunately, older versions of FreeBSD 2 don't have this feature. + # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) - archive_cmds='$LD -Bshareable -o $lib$libobjs$deplibs' + archive_cmds='$LD -Bshareable -o $lib$libobjs' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no @@ -641,78 +778,289 @@ else # FreeBSD 3, at last, uses gcc -shared to do shared libraries. freebsd3*) - archive_cmds='$CC -shared -o $lib$libobjs$deplibs' + archive_cmds='$CC -shared -o $lib$libobjs' + hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes - hardcode_minusL=yes + hardcode_minus_L=yes hardcode_shlibpath_var=no ;; hpux9*) - archive_cmds='$rm $objdir/$soname;$LD -b +s +b $install_libdir -o $objdir/$soname$libobjs$deplibs;mv $objdir/$soname $lib' + archive_cmds='$rm $objdir/$soname;$LD -b +s +b $install_libdir -o $objdir/$soname$libobjs;mv $objdir/$soname $lib' hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_direct=yes hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' ;; hpux10*) - archive_cmds='$LD -b +h $soname +s +b $install_libdir -o $lib$libobjs$deplibs' + archive_cmds='$LD -b +h $soname +s +b $install_libdir -o $lib$libobjs' hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_direct=yes hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' ;; irix5* | irix6*) - archive_cmds='$LD -shared -o $lib -soname $soname -set_version $verstring$libobjs -lc$deplibs' + archive_cmds='$LD -shared -o $lib -soname $soname -set_version $verstring$libobjs' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ;; - netbsd* | openbsd*) + netbsd*) # Tested with NetBSD 1.2 ld - archive_cmds='$LD -Bshareable -o $lib$libobjs$deplibs' + archive_cmds='$LD -Bshareable -o $lib$libobjs' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + openbsd*) + archive_cmds='$LD -Bshareable -o $lib$libobjs' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def;$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def;$echo DATA >> $objdir/$libname.def;$echo " SINGLE NONSHARED" >> $objdir/$libname.def;$echo EXPORTS >> $objdir/$libname.def;emxexp$libobjs >> $objdir/$libname.def;$CC -Zdll -Zcrtdll -o $lib$libobjs $objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def' + ;; + osf3* | osf4*) - allow_undefined_flag=' -expect_unresolved' - archive_cmds='$LD -shared${allow_undefined_flag} -o $lib -soname $soname -set_version $verstring$libobjs -lc$deplibs' + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} -o $lib -soname $soname -set_version $verstring$libobjs$deplibs' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; sco3.2v5*) - archive_cmds='$LD -G -o $lib$libobjs$deplibs' + archive_cmds='$LD -G -o $lib$libobjs' hardcode_direct=yes ;; solaris2*) - archive_cmds='$LD -G -z text -h $soname -o $lib$libobjs$deplibs' + no_undefined_flag=' -z text' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib$libobjs' hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no + + # Solaris 2 before 2.5 hardcodes -L paths. + case "$host_os" in + solaris2.[0-4]*) + hardcode_minus_L=yes + ;; + esac ;; sunos4*) - archive_cmds='$LD -assert pure-text -Bstatic -o $lib$libobjs' + if test "$with_gcc" = yes; then + archive_cmds='$CC -shared -o $lib$libobjs' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib$libobjs' + fi + + if test "$with_gnu_ld" = yes; then + export_dynamic_flag_spec='${wl}-export-dynamic' + fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; + uts4*) + archive_cmds='$LD -G -h $soname -o $lib$libobjs' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=no + hardcode_minus_L=no + hardcode_shlibpath_var=no + ;; + *) ld_shlibs=no can_build_shared=no ;; esac fi -echo $ac_t "$ld_shlibs" 1>&6 +echo "$ac_t$ld_shlibs" 1>&6 + +if test -z "$NM"; then + echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 + case "$NM" in + /* | [A-Za-z]:\\*) ;; # Let the user override the test with a path. + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in /usr/ucb /usr/ccs/bin $PATH /bin; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/nm; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + NM="$ac_dir/nm -B" + elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + NM="$ac_dir/nm -p" + else + NM="$ac_dir/nm" + fi + break + fi + done + IFS="$ac_save_ifs" + test -z "$NM" && NM=nm + ;; + esac + echo "$ac_t$NM" 1>&6 +fi + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6 + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRSTU]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform the above into a raw symbol and a C symbol. +symxfrm='\1 \1' + +# Define system-specific variables. +case "$host_os" in +aix*) + symcode='[BCDTU]' + ;; +irix*) + # Cannot use undefined symbols on IRIX because inlined functions mess us up. + symcode='[BCDEGRST]' + ;; +solaris2*) + symcode='[BDTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then + symcode='[ABCDGISTUW]' +fi + +# Write the raw and C identifiers. +global_symbol_pipe="sed -n -e 's/^.* $symcode $sympat$/$symxfrm/p'" + +# Check to see that the pipe works correctly. +pipe_works=no +$rm conftest* +cat > conftest.c <&5 +if { (eval echo $progname:972: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.o; then + # Now try to grab the symbols. + nlist=conftest.nm + if { echo "$progname:975: eval \"$NM conftest.o | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.o | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then + + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + wcout=`wc "$nlist" 2>/dev/null` + count=`$echo "X$wcout" | $Xsed -e 's/^[ ]*\([0-9][0-9]*\).*$/\1/'` + (test "$count" -ge 0) 2>/dev/null || count=-1 + else + rm -f "$nlist"T + count=-1 + fi + + # Make sure that we snagged all the symbols we need. + if egrep ' nm_test_var$' "$nlist" >/dev/null; then + if egrep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.c +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + sed 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> conftest.c + + cat <> conftest.c +#if defined (__STDC__) && __STDC__ +# define __ptr_t void * +#else +# define __ptr_t char * +#endif + +/* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */ +int dld_preloaded_symbol_count = $count; + +/* The mapping between symbol names and symbols. */ +struct { + char *name; + __ptr_t address; +} +dld_preloaded_symbols[] = +{ +EOF + sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> conftest.c + cat <<\EOF >> conftest.c + {0, (__ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.o conftestm.o + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS='conftestm.o' + CFLAGS="$CFLAGS$no_builtin_flag" + if { (eval echo $progname:1033: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + pipe_works=yes + else + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 + fi + LIBS="$save_LIBS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $global_symbol_pipe" >&5 + fi +else + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 +fi +$rm conftest* + +# Do not use the global_symbol_pipe unless it works. +echo "$ac_t$pipe_works" 1>&6 +test "$pipe_works" = yes || global_symbol_pipe= # Check hardcoding attributes. echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ - test "$hardcode_runpath_var" = yes; then + test -n "$runpath_var"; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && \ @@ -728,13 +1076,13 @@ if test -n "$hardcode_libdir_flag_spec" || \ elif test "$hardcode_direct" != yes && \ test "$hardcode_minus_L" != yes && \ test "$hardcode_shlibpath_var" != yes; then - # We can't hardcode anything. + # We cannot hardcode anything. hardcode_action=unsupported else # We can only hardcode existing directories. hardcode_action=relink fi -echo $ac_t "$hardcode_action" 1>&6 +echo "$ac_t$hardcode_action" 1>&6 test "$hardcode_action" = unsupported && can_build_shared=no @@ -743,14 +1091,17 @@ reload_cmds='$LD$reload_flag -o $output$reload_objs' echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6 # PORTME Some linker may need a different reload flag. reload_flag='-r' -echo $ac_t "$reload_flag" +echo "$ac_t$reload_flag" test -n "$reload_flag" && reload_flag=" $reload_flag" # PORTME Fill in your ld.so characteristics library_names_spec= +libname_spec='lib$name' soname_spec= postinstall_cmds= +postuninstall_cmds= finish_cmds= +finish_eval= shlibpath_var= version_type=none dynamic_linker="$host_os ld.so" @@ -759,23 +1110,29 @@ echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6 case "$host_os" in aix3* | aix4*) version_type=linux - library_names_spec='$libname.so.$versuffix $libname.a' + library_names_spec='${libname}${release}.so.$versuffix $libname.a' shlibpath_var=LIBPATH # AIX has no versioning support, so we append a major version to the name. - soname_spec='$libname.so.$major' + soname_spec='${libname}${release}.so.$major' + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' ;; freebsd2* | freebsd3*) version_type=sunos - library_names_spec='$libname.so.$versuffix $libname.so' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + library_names_spec='${libname}${release}.so.$versuffix $libname.so' + finish_cmds='PATH="$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH ;; gnu*) version_type=sunos - library_names_spec='$libname.so.$versuffix' + library_names_spec='${libname}${release}.so.$versuffix' shlibpath_var=LD_LIBRARY_PATH ;; @@ -785,16 +1142,16 @@ hpux9* | hpux10*) dynamic_linker="$host_os dld.sl" version_type=sunos shlibpath_var=SHLIB_PATH - library_names_spec='$libname.sl.$versuffix $libname.sl.$major $libname.sl' - soname_spec='$libname.sl.$major' + library_names_spec='${libname}${release}.sl.$versuffix ${libname}${release}.sl.$major $libname.sl' + soname_spec='${libname}${release}.sl.$major' # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6*) version_type=osf - soname_spec='$libname.so' - library_names_spec='$libname.so.$versuffix $libname.so' + soname_spec='${libname}${release}.so' + library_names_spec='${libname}${release}.so.$versuffix $libname.so' shlibpath_var=LD_LIBRARY_PATH ;; @@ -806,9 +1163,9 @@ linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) # This must be Linux ELF. linux-gnu*) version_type=linux - library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' - soname_spec='$libname.so.$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so' + soname_spec='${libname}${release}.so.$major' + finish_cmds='PATH="$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH if test -f /lib/ld.so.1; then @@ -824,36 +1181,57 @@ linux-gnu*) netbsd* | openbsd*) version_type=sunos - library_names_spec='$libname.so.$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + library_names_spec='${libname}${release}.so.$versuffix' + finish_cmds='PATH="$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH ;; +os2*) + libname_spec='$name' + library_names_spec='$libname.dll $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + osf3* | osf4*) version_type=osf - soname_spec='$libname.so' - library_names_spec='$libname.so.$versuffix $libname.so' + soname_spec='${libname}${release}.so' + library_names_spec='${libname}${release}.so.$versuffix $libname.so' shlibpath_var=LD_LIBRARY_PATH ;; sco3.2v5*) version_type=osf - soname_spec='$libname.so.$major' - library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' + soname_spec='${libname}${release}.so.$major' + library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so' shlibpath_var=LD_LIBRARY_PATH ;; solaris2*) version_type=linux - library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' - soname_spec='$libname.so.$major' + library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so' + soname_spec='${libname}${release}.so.$major' shlibpath_var=LD_LIBRARY_PATH ;; sunos4*) version_type=sunos - library_names_spec='$libname.so.$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + library_names_spec='${libname}${release}.so.$versuffix' + finish_cmds='PATH="$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + +sysv4.2uw2*) + version_type=linux + library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so' + soname_spec='${libname}${release}.so.$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so' + soname_spec='${libname}${release}.so.$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -861,39 +1239,17 @@ sunos4*) dynamic_linker=no ;; esac -echo "$ac_t""$dynamic_linker" +echo "$ac_t$dynamic_linker" test "$dynamic_linker" = no && can_build_shared=no -# FIXME need to add library stripping features -# strip -x works for most platforms, though not for static libraries on NetBSD -# HP-UX requires "-r" for library stripping -striplib= -old_striplib= - -#echo $ac_n "checking for static library strip program... $ac_c" 1>&6 -#if test -n "$old_striplib"; then -# echo $ac_t "$old_striplib" 1>&6 -#else -# echo $ac_t none 1>&6 -#fi - -#if test "$can_build_shared" = yes; then -# echo $ac_n "checking for shared library strip program... $ac_c" 1>&6 -# -# if test -n "$striplib"; then -# echo $ac_t "$striplib" 1>&6 -# else -# echo $ac_t none 1>&6 -# fi -#fi - -# Report the consequences. +# Report the final consequences. echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6 echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6 test "$can_build_shared" = "no" && enable_shared=no -# On AIX, shared libraries and static libraries use the same namespace. +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. case "$host_os" in aix*) test "$enable_shared" = yes && enable_static=no @@ -904,36 +1260,112 @@ aix*) ;; esac -echo "$ac_t""$enable_shared" 1>&6 +echo "$ac_t$enable_shared" 1>&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "checking whether to build static libraries... $enable_static" 1>&6 +echo $ac_n "checking for objdir... $ac_c" 1>&6 +rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + objdir=_libs +fi +rmdir .libs 2>/dev/null +echo "$ac_t$objdir" 1>&6 + +# Copy echo and quote the copy, instead of the original, because it is +# used later. +ltecho="$echo" + +# Now quote all the things that may contain metacharacters. +for var in ltecho old_CC old_CFLAGS old_CPPFLAGS old_LD old_NM old_RANLIB \ + old_LN_S AR CC LD LN_S NM reload_flag reload_cmds wl pic_flag \ + link_static_flag no_builtin_flag export_dynamic_flag_spec \ + libname_spec library_names_spec soname_spec RANLIB \ + old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ + old_postuninstall_cmds archive_cmds postinstall_cmds postuninstall_cmds \ + allow_undefined_flag no_undefined_flag \ + finish_cmds finish_eval global_symbol_pipe \ + hardcode_libdir_flag_spec hardcode_libdir_separator; do + + case "$var" in + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | archive_cmds | \ + postinstall_cmds | postuninstall_cmds | finish_cmds) + # Double-quote double-evaled strings. + eval "$var=\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\"\`" + ;; + *) + eval "$var=\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`" + ;; + esac +done + ofile=libtool trap "$rm $ofile; exit 1" 1 2 15 echo creating $ofile -rm -fr $ofile +$rm $ofile cat < $ofile #! /bin/sh # libtool - Provide generalized library-building support services. -# # Generated automatically by $PROGRAM - GNU $PACKAGE $VERSION +# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh. +# +# Copyright (C) 1996-1998 Free Software Foundation, Inc. +# Gordon Matzigkeit , 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. + # This program was configured as follows, # on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # # CC="$old_CC" CFLAGS="$old_CFLAGS" CPPFLAGS="$old_CPPFLAGS" \\ -# LD="$old_LD" RANLIB="$old_RANLIB" LN_S="$old_LN_S" \\ +# LD="$old_LD" NM="$old_NM" RANLIB="$old_RANLIB" LN_S="$old_LN_S" \\ # $0$ltconfig_args # # Compiler and other test output produced by $progname, useful for # debugging $progname, is in ./config.log if it exists. +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="sed -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "\${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi + +# An echo program that does not interpret backslashes. +echo="$ltecho" + # The version of $progname that generated this script. LTCONFIG_VERSION="$VERSION" +# Shell to use when invoking shell scripts. +SHELL=${CONFIG_SHELL-/bin/sh} + # Whether or not to build libtool libraries. build_libtool_libs=$enable_shared @@ -945,61 +1377,83 @@ host_alias="$host_alias" host="$host" # The archiver. -AR='$AR' +AR="$AR" + +# The default C compiler. +CC="$CC" # The linker used to build libraries. -LD='$LD' +LD="$LD" # Whether we need hard or soft links. -LN_S='$LN_S' +LN_S="$LN_S" + +# A BSD-compatible nm program. +NM="$NM" + +# The name of the directory that contains temporary libtool files. +objdir="$objdir" # How to create reloadable object files. -reload_flag='$reload_flag' -reload_cmds='$reload_cmds' +reload_flag="$reload_flag" +reload_cmds="$reload_cmds" # How to pass a linker flag through the compiler. -wl='$wl' +wl="$wl" # Additional compiler flags for building library objects. -pic_flag='$pic_flag' +pic_flag="$pic_flag" # Compiler flag to prevent dynamic linking. -link_static_flag='$link_static_flag' +link_static_flag="$link_static_flag" -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag='$export_dynamic_flag' +# Compiler flag to turn off builtin functions. +no_builtin_flag="$no_builtin_flag" -# Pattern to match compiler flags for creating libNAME_p libraries: -profile_flag_pattern='$profile_flag_pattern' +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec="$export_dynamic_flag_spec" # Library versioning type. version_type=$version_type +# Format of library name prefix. +libname_spec="$libname_spec" + # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. -library_names_spec='$library_names_spec' +library_names_spec="$library_names_spec" # The coded name of the library, if different from the real name. -soname_spec='$soname_spec' +soname_spec="$soname_spec" # Commands used to build and install an old-style archive. -RANLIB='$RANLIB' -old_archive_cmds='$old_archive_cmds' -old_postinstall_cmds='$old_postinstall_cmds' +RANLIB="$RANLIB" +old_archive_cmds="$old_archive_cmds" +old_postinstall_cmds="$old_postinstall_cmds" +old_postuninstall_cmds="$old_postuninstall_cmds" + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds="$old_archive_from_new_cmds" # Commands used to build and install a shared archive. -archive_cmds='$archive_cmds' -postinstall_cmds='$postinstall_cmds' +archive_cmds="$archive_cmds" +postinstall_cmds="$postinstall_cmds" +postuninstall_cmds="$postuninstall_cmds" # Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag='$allow_undefined_flag' +allow_undefined_flag="$allow_undefined_flag" + +# Flag that forces no undefined symbols. +no_undefined_flag="$no_undefined_flag" # Commands used to finish a libtool library installation in a directory. -finish_cmds='$finish_cmds' +finish_cmds="$finish_cmds" -# How to strip a library file. -striplib='$striplib' -old_striplib='$old_striplib' +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval="$finish_eval" + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe="$global_symbol_pipe" # This is the shared library runtime path variable. runpath_var=$runpath_var @@ -1012,10 +1466,10 @@ hardcode_action=$hardcode_action # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec='$hardcode_libdir_flag_spec' +hardcode_libdir_flag_spec="$hardcode_libdir_flag_spec" # Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator='$hardcode_libdir_separator' +hardcode_libdir_separator="$hardcode_libdir_separator" # Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the # resulting binary. @@ -1025,35 +1479,29 @@ hardcode_direct=$hardcode_direct # resulting binary. hardcode_minus_L=$hardcode_minus_L -# Set to yes if using RUNPATH_VAR=DIR during linking hardcodes DIR into the -# resulting binary. -hardcode_runpath_var=$hardcode_runpath_var - # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var EOF -# Detect if we are using a relative or absolute path to ltmain.sh. -case "$ltmain" in -/*) cat <> $ofile -# Execute the libtool backend. -. $ltmain -EOF2 - ;; -*) cat <> $ofile -# Find the path to this script. -thisdir=\`echo "\$0" | sed -e 's%/[^/]*\$%%'\` -test "X\$0" = "X\$thisdir" && thisdir=. - -# Execute the libtool backend. -. \$thisdir/$ltmain -EOF3 +case "$host_os" in +aix3*) + cat <<\EOF >> $ofile +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "${COLLECT_NAMES+set}" != set; then + COLLECT_NAMES= + export COLLECT_NAMES +fi + +EOF ;; esac -echo 'exit 1' >> $ofile +# Append the ltmain.sh script. +cat "$ltmain" >> $ofile || (rm -f $ofile; exit 1) chmod +x $ofile exit 0 diff --git a/ltmain.sh b/ltmain.sh index cf2ef9155..e9350b3fa 100644 --- a/ltmain.sh +++ b/ltmain.sh @@ -1,6 +1,7 @@ # ltmain.sh - Provide generalized library-building support services. -# Generated automatically from ltmain.sh.in by configure. -# Copyright (C) 1996, 1997 Free Software Foundation, Inc. +# NOTE: Changing this file will not affect anything until you rerun ltconfig. +# +# Copyright (C) 1996-1998 Free Software Foundation, Inc. # Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify @@ -23,30 +24,41 @@ # the same distribution terms that you use for the rest of that program. # The name of this program. -progname=`echo "$0" | sed 's%^.*/%%'` +progname=`$echo "$0" | sed 's%^.*/%%'` +modename="$progname" # Constants. PROGRAM=ltmain.sh PACKAGE=libtool -VERSION=1.0 +VERSION=1.2 default_mode= help="Try \`$progname --help' for more information." magic="%%%MAGIC variable%%%" mkdir="mkdir" mv="mv -f" -objdir=.libs 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 s/^X//' +sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' + +# 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). +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LANG+set}" = set; then LANG=C; export LANG; fi + if test "$LTCONFIG_VERSION" != "$VERSION"; then - echo "$progname: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2 + echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit 1 fi -# if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - echo "$progname: not configured to build any kind of library" 1>&2 + 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 @@ -57,8 +69,9 @@ nonopt= prev= prevopt= run= -show=echo +show="$echo" show_help= +execute_dlfiles= # Parse our command line options once, thoroughly. while test $# -gt 0 @@ -67,13 +80,21 @@ do shift case "$arg" in - -*=*) optarg=`echo "$arg" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + -*=*) 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 - eval "$prev=\$arg" + case "$prev" in + execute_dlfiles) + eval "$prev=\"\$$prev \$arg\"" + ;; + *) + eval "$prev=\$arg" + ;; + esac + prev= prevopt= continue @@ -114,9 +135,18 @@ do --mode) prevopt="--mode" prev=mode ;; --mode=*) mode="$optarg" ;; + --quiet | --silent) + show=: + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + -*) - echo "$progname: unrecognized option \`$arg'" 1>&2 - echo "$help" 1>&2 + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 exit 1 ;; @@ -127,20 +157,18 @@ do esac done - if test -n "$prevopt"; then - echo "$progname: option \`$prevopt' requires an argument" 1>&2 - echo "$help" 1>&2 + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 exit 1 fi - if test -z "$show_help"; then # Infer the operation mode. if test -z "$mode"; then case "$nonopt" in - *cc) + *cc | *++ | gcc* | *-gcc*) mode=link for arg do @@ -152,83 +180,129 @@ if test -z "$show_help"; then esac done ;; - *install*|cp) + *db | *dbx) + mode=execute + ;; + *install*|cp|mv) mode=install ;; *rm) mode=uninstall ;; - *.la) - mode=dlname - ;; *) + # 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 "$progname: warning: cannot infer operation mode from \`$nonopt'" 1>&2 - else - echo "$progname: warning: cannot infer operation mode without MODE-ARGS" 1>&2 - fi + 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 \`$progname --help --mode=$mode' for more information." + 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) - progname="$progname: compile" + modename="$modename: compile" # Get the compilation command and the source file. - base_compile="$nonopt" + base_compile= lastarg= - srcfile= + srcfile="$nonopt" + suppress_output= for arg do - # Quote any args containing shell metacharacters. + # Accept any command-line options. case "$arg" in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*|*\"*) - quote_arg="'$arg'" ;; - *) quote_arg="$arg" ;; + -o) + $echo "$modename: you cannot specify the output filename with \`-o'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; esac - base_compile="$base_compile$lastarg" - srcfile="$quote_arg" - lastarg=" $srcfile" + # 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 # Get the name of the library object. - libobj=`echo "$srcfile" | sed -e 's%^.*/%%'` + libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` # Recognize several different file suffixes. - xform='[cCFSf]' + xform='[cCFSfms]' case "$libobj" in - *.c++) xform='c++' ;; + *.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' ;; + *.for) xform=for ;; esac - libobj=`echo "$libobj" | sed -e "s/\.$xform$/.lo/"` + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` case "$libobj" in - *.lo) obj=`echo "$libobj" | sed -e 's/\.lo$/.o/'` ;; + *.lo) obj=`$echo "X$libobj" | $Xsed -e 's/\.lo$/.o/'` ;; *) - echo "$progname: cannot determine name of library object from \`$srcfile'" 1>&2 + $echo "$modename: cannot determine name of library object from \`$srcfile'" 1>&2 exit 1 ;; esac if test -z "$base_compile"; then - echo "$progname: you must specify a compilation command" 1>&2 - echo "$help" 1>&2 + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 exit 1 fi @@ -243,41 +317,48 @@ if test -z "$show_help"; then # 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 + # All platforms use -DPIC, to notify preprocessed assembler code. $show "$base_compile$pic_flag -DPIC $srcfile" - if $run eval "$base_compile$pic_flag -DPIC $srcfile"; then : + if $run eval "$base_compile\$pic_flag -DPIC \$srcfile"; then : else - test -n "$obj" && $run $rm $obj - exit 1 + test -n "$obj" && $run $rm $obj + exit 1 fi # If we have no pic_flag, then copy the object into place and finish. if test -z "$pic_flag"; then - $show "$LN_S $obj $libobj" - $run $LN_S $obj $libobj - exit $? + $show "$LN_S $obj $libobj" + $run $LN_S $obj $libobj + exit $? fi # Just move the object, then go on to compile the next one $show "$mv $obj $libobj" $run $mv $obj $libobj || exit 1 + + # 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 - $show "$base_compile $srcfile" - if $run eval "$base_compile $srcfile"; then : + # Suppress compiler output if we already did a PIC compilation. + $show "$base_compile $srcfile$suppress_output" + if $run eval "$base_compile \$srcfile$suppress_output"; then : else $run $rm $obj $libobj exit 1 fi fi - # Create an invalid libtool object if no PIC, so that we don't accidentally - # link it into a program. + # 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 $? + $run eval "echo timestamp > \$libobj" || exit $? fi exit 0 @@ -285,26 +366,27 @@ if test -z "$show_help"; then # libtool link mode link) - progname="$progname: link" - # Go through the arguments, transforming them on the way. - cc="$nonopt" - args="$cc" - allow_undefined=no - compile_command="$cc" - finalize_command="$cc" + modename="$modename: link" + CC="$nonopt" + allow_undefined=yes + compile_command="$CC" + finalize_command="$CC" + compile_shlibpath= finalize_shlibpath= deplibs= + dlfiles= + dlprefiles= export_dynamic=no hardcode_libdirs= - install_libdir= libobjs= link_against_libtool_libs= - link_static= ltlibs= objs= prev= prevarg= + release= + rpath= perm_rpath= temp_rpath= vinfo= @@ -313,294 +395,455 @@ if test -z "$show_help"; then for arg do case "$arg" in - -static) + -all-static | -static) + if test "X$arg" = "X-all-static" && 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 build_libtool_libs=no - build_old_libs=yes + build_old_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. for arg do # 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@" - args="$args $arg" - ;; - esac - - eval "$prev=\$arg" - prev= + case "$prev" in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac - continue + case "$prev" in + dlfiles|dlprefiles) + case "$arg" in + *.la | *.lo) ;; # We handle these cases below. + *) + dlprefiles="$dlprefiles $arg" + test "$prev" = dlfiles && dlfiles="$dlfiles $arg" + prev= + ;; + esac + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath) + rpath="$rpath $arg" + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac fi - args="$args $arg" prevarg="$arg" case "$arg" in - -allow-undefined) allow_undefined=yes ;; + -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 + ;; - -export-dynamic) - export_dynamic=yes - compile_command="$compile_command $export_dynamic_flag" - finalize_command="$finalize_command $export_dynamic_flag" + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 continue ;; - -L*) - dir=`echo "$arg" | sed 's%^-L\(.*\)$%\1%'` - case "$dir" in - /*) - ;; - *) - echo "$progname: \`-L$dir' cannot specify a relative directory" 1>&2 - exit 1 - ;; - esac - deplibs="$deplibs $arg" - ;; + -dlopen) + prev=dlfiles + continue + ;; - -l*) deplibs="$deplibs $arg" ;; + -dlpreopen) + prev=dlprefiles + continue + ;; - -o) prev=output ;; + -export-dynamic) + if test "$export_dynamic" != yes; then + export_dynamic=yes + if test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + else + arg= + fi - -rpath) - prev=install_libdir - continue - ;; + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + fi + ;; - -static) - link_static="`eval echo \"$link_static_flag\"`" - compile_command="$compile_command $link_static" - continue - ;; + -L*) + dir=`$echo "X$arg" | $Xsed -e 's%^-L\(.*\)$%\1%'` + case "$dir" in + /* | [A-Za-z]:\\*) + # Add the corresponding hardcode_libdir_flag, if it is not identical. + ;; + *) + $echo "$modename: \`-L$dir' cannot specify a relative directory" 1>&2 + exit 1 + ;; + esac + deplibs="$deplibs $arg" + ;; - -version-file) - echo "$progname: \`-version-file' has been replaced by \`-version-info'" 1>&2 - echo "$help" 1>&2 - exit 1 - ;; + -l*) deplibs="$deplibs $arg" ;; - -version-info) - prev=vinfo + -no-undefined) + allow_undefined=no continue ;; - -*) cc="$cc $arg" ;; # Some other compiler flag. + -o) prev=output ;; - *.o) - # A standard object. - objs="$objs $arg" + -release) + prev=release + continue ;; - *.a) - # Find the relevant object directory and library name. - file=`echo "$arg" | sed 's%^.*/%%'` - dir=`echo "$arg" | sed 's%/[^/]*$%/%'` - test "$dir" = "$arg" && dir= + -rpath) + prev=rpath + continue + ;; - # Standard archive. - objs="$objs $arg" + -static) + # If we have no pic_flag, then this is the same as -all-static. + if test -z "$pic_flag" && test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue ;; - *.lo) - # A library object. - libobjs="$libobjs $arg" - ;; + -version-info) + prev=vinfo + continue + ;; - *.la) - # A libtool-controlled library. + # 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 + ;; - libdir= - library_names= - old_library= + *.o | *.a) + # A standard object. + objs="$objs $arg" + ;; - # Check to see that this really is a libtool archive. - if egrep "^# Generated by $PROGRAM" $arg >/dev/null 2>&1; then : - else - echo "$progname: \`$arg' is not a valid libtool archive" 1>&2 - exit 1 + *.lo) + # A library object. + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + if test "$build_libtool_libs" = yes; then + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi fi - # If there is no directory component, then add one. - case "$arg" in - */*) . $arg ;; - *) . ./$arg ;; - esac - - if test -z "$libdir"; then - echo "$progname: \`$arg' contains no -rpath information" 1>&2 - exit 1 + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e 's/\.lo$/\.o/'` + prev= fi + libobjs="$libobjs $arg" + ;; - # Get the name of the library we link against. - linklib= - for l in $old_library $library_names; do - linklib="$l" - done + *.la) + # A libtool-controlled library. - if test -z "$linklib"; then - echo "$progname: cannot find name of link library for \`$arg'" 1>&2 - exit 1 - fi + dlname= + libdir= + library_names= + old_library= - # Find the relevant object directory and library name. - name=`echo "$arg" | sed 's%^.*/%%; s/\.la$//; s/^lib//'` - dir=`echo "$arg" | sed 's%/[^/]*$%%'` - if test "$dir" = "$arg"; then - dir="$objdir" - else - dir="$dir/$objdir" - fi + # Check to see that this really is a libtool archive. + if (sed -e '2q' $arg | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then : + else + $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2 + exit 1 + fi - if test "$build_libtool_libs" = yes && test -n "$library_names"; then - link_against_libtool_libs="$link_against_libtool_libs $arg" - if test -n "$shlibpath_var"; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath " in - "* $dir *") ;; - *) temp_rpath="$temp_rpath $dir" ;; - esac - fi + # If there is no directory component, then add one. + case "$arg" in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - # Put the magic libdir with the hardcode flag. - hardcode_libdirs="$libdir" - libdir="@HARDCODE_LIBDIRS@" - else - # Just accumulate the libdirs. - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - libdir= - fi - fi + if test -z "$libdir"; then + $echo "$modename: \`$arg' contains no -rpath information" 1>&2 + exit 1 + fi - if test -n "$libdir"; then - hardcode_libdir_flag=`eval echo \"$hardcode_libdir_flag_spec\"` - compile_command="$compile_command $hardcode_libdir_flag" - finalize_command="$finalize_command $hardcode_libdir_flag" - fi - elif test "$hardcode_runpath_var" = yes; then - # Do the same for the permanent run path. - case "$perm_rpath " in - "* $libdir *") ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi + # 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 \`$arg'" 1>&2 + exit 1 + fi - case "$hardcode_action" in - immediate) - if test "$hardcode_direct" = no; then - compile_command="$compile_command $dir/$linklib" - elif test "$hardcode_minus_L" = no; then - compile_command="$compile_command -L$dir -l$name" - elif test "$hardcode_shlibpath_var" = no; then - compile_shlibpath="$compile_shlibpath$dir:" - compile_command="$compile_command -l$name" - fi - ;; + # Find the relevant object directory and library name. + name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'` + dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$arg"; then + dir="$objdir" + else + dir="$dir/$objdir" + fi - relink) - # We need an absolute path. - case "$dir" in - /*) ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - echo "$progname: cannot determine absolute directory name of \`$dir'" 1>&2 - exit 1 - fi - dir="$absdir" - ;; - esac - - if test "$hardcode_direct" = yes; then - compile_command="$compile_command $dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - compile_command="$compile_command -L$dir -l$name" - elif test "$hardcode_shlibpath_var" = yes; then - compile_shlibpath="$compile_shlibpath$dir:" - compile_command="$compile_command -l$name" - fi - ;; + # This library was specified with -dlopen. + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + if test -z "$dlname"; then + # If there is no dlname, we need to preload. + prev=dlprefiles + else + # We should not create a dependency on this library, but we + # may need any libraries it requires. + compile_command="$compile_command$dependency_libs" + finalize_command="$finalize_command$dependency_libs" + prev= + continue + fi + fi - *) - echo "$progname: \`$hardcode_action' is an unknown hardcode action" 1>&2 - exit 1 - ;; - esac + # The library was specified with -dlpreopen. + if test "$prev" = dlprefiles; then + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + dlprefiles="$dlprefiles $dir/$old_library" + else + dlprefiles="$dlprefiles $dir/$linklib" + fi + prev= + fi - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes; then - finalize_command="$finalize_command $libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - finalize_command="$finalize_command -L$libdir -l$name" - elif test "$hardcode_shlibpath_var" = yes; then - finalize_shlibpath="$finalize_shlibpath$libdir:" - finalize_command="$finalize_command -l$name" + if test "$build_libtool_libs" = yes && test -n "$library_names"; then + link_against_libtool_libs="$link_against_libtool_libs $arg" + if test -n "$shlibpath_var"; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *) temp_rpath="$temp_rpath $dir" ;; + esac + fi + + # This is the magic to use -rpath. + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + # Put the magic libdir with the hardcode flag. + hardcode_libdirs="$libdir" + libdir="@HARDCODE_LIBDIRS@" + 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 + libdir= + fi + fi + + if test -n "$libdir"; then + eval flag=\"$hardcode_libdir_flag_spec\" + + compile_command="$compile_command $flag" + finalize_command="$finalize_command $flag" + fi + elif test -n "$runpath_var"; then + # Do the same for the permanent run path. + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + + + case "$hardcode_action" in + immediate) + if test "$hardcode_direct" = no; then + compile_command="$compile_command $dir/$linklib" + elif test "$hardcode_minus_L" = no; then + compile_command="$compile_command -L$dir -l$name" + elif test "$hardcode_shlibpath_var" = no; then + compile_shlibpath="$compile_shlibpath$dir:" + compile_command="$compile_command -l$name" + fi + ;; + + relink) + # 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 + + if test "$hardcode_direct" = yes; then + compile_command="$compile_command $dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + compile_command="$compile_command -L$dir -l$name" + elif test "$hardcode_shlibpath_var" = yes; then + compile_shlibpath="$compile_shlibpath$dir:" + compile_command="$compile_command -l$name" + fi + ;; + + *) + $echo "$modename: \`$hardcode_action' is an unknown hardcode action" 1>&2 + exit 1 + ;; + esac + + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + finalize_command="$finalize_command $libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + finalize_command="$finalize_command -L$libdir -l$name" + elif test "$hardcode_shlibpath_var" = yes; then + finalize_shlibpath="$finalize_shlibpath$libdir:" + finalize_command="$finalize_command -l$name" else - # We can't seem to hardcode it, guess we'll fake it. - finalize_command="$finalize_command -L$libdir -l$name" - fi + # We cannot seem to hardcode it, guess we'll fake it. + finalize_command="$finalize_command -L$libdir -l$name" + fi else # Transform directly to old archives if we don't build new libraries. if test -n "$pic_flag" && test -z "$old_library"; then - echo "$progname: cannot find static library for \`$arg'" 1>&2 - exit 1 + $echo "$modename: cannot find static library for \`$arg'" 1>&2 + exit 1 + fi + + # 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_command="$compile_command $dir/$linklib" + finalize_command="$finalize_command $dir/$linklib" + else + compile_command="$compile_command -L$dir -l$name" + finalize_command="$finalize_command -L$dir -l$name" fi - test -n "$old_library" && linklib="$old_library" - compile_command="$compile_command $dir/$linklib" - finalize_command="$finalize_command $dir/$linklib" fi + + # Add in any libraries that this one depends upon. + compile_command="$compile_command$dependency_libs" + finalize_command="$finalize_command$dependency_libs" continue - ;; + ;; + # Some other compiler argument. *) - echo "$progname: unknown file suffix for \`$arg'" 1>&2 - echo "$help" 1>&2 - exit 1 - ;; + # 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 - compile_command="$compile_command $arg" - finalize_command="$finalize_command $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 if test -n "$prev"; then - echo "$progname: the \`$prevarg' option requires an argument" 1>&2 - echo "$help" 1>&2 + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 exit 1 fi - # Substitute the hardcoded libdirs into the compile commands. - if test "$hardcode_libdir_colon_separated" = yes; then - compile_command=`echo "$compile_command" | sed "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"` - finalize_command=`echo "$finalize_command" | sed "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"` + if test -n "$vinfo" && test -n "$release"; then + $echo "$modename: you cannot specify both \`-version-info' and \`-release'" 1>&2 + $echo "$help" 1>&2 + exit 1 fi oldlib= oldobjs= case "$output" in "") - echo "$progname: you must specify an output file" 1>&2 - echo "$help" 1>&2 + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 exit 1 ;; - */*) - echo "$progname: output file \`$output' must have no directory components" 1>&2 + */* | *\\*) + $echo "$modename: output file \`$output' must have no directory components" 1>&2 exit 1 ;; + *.a) + # Now set the variables for building old libraries. + build_libtool_libs=no + build_old_libs=yes + oldlib="$output" + $show "$rm $oldlib" + $run $rm $oldlib + ;; + *.la) - libname=`echo "$output" | sed 's/\.la$//'` + # Make sure we only generate libraries of the form `libNAME.la'. + case "$output" in + lib*) ;; + *) + $echo "$modename: libtool library \`$arg' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + esac + + name=`$echo "X$output" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval libname=\"$libname_spec\" # All the library-specific variables (install_libdir is set above). library_names= @@ -611,20 +854,34 @@ if test -z "$show_help"; then age=0 if test -n "$objs"; then - echo "$progname: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1 - exit 1 + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1 + exit 1 fi # How the heck are we supposed to write a wrapper for a shared library? if test -n "$link_against_libtool_libs"; then - echo "$progname: libtool library \`$output' may not depend on uninstalled libraries:$link_against_libtool_libs" 1>&2 - exit 1 + $echo "$modename: libtool library \`$output' may not depend on uninstalled libraries:$link_against_libtool_libs" 1>&2 + exit 1 fi - if test -z "$install_libdir"; then - echo "$progname: you must specify an installation directory with \`-rpath'" 1>&2 - exit 1 + if test -n "$dlfiles$dlprefiles"; then + $echo "$modename: warning: \`-dlopen' is ignored while creating libtool libraries" 1>&2 + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test -z "$rpath"; then + $echo "$modename: you must specify an installation directory with \`-rpath'" 1>&2 + $echo "$help" 1>&2 + exit 1 + 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" # Parse the version information argument. IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' @@ -632,9 +889,9 @@ if test -z "$show_help"; then IFS="$save_ifs" if test -n "$5"; then - echo "$progname: too many parameters to \`-version-info'" 1>&2 - echo "$help" 1>&2 - exit 1 + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit 1 fi test -n "$2" && current="$2" @@ -645,33 +902,33 @@ if test -z "$show_help"; then case "$current" in 0 | [1-9] | [1-9][0-9]*) ;; *) - echo "$progname: CURRENT \`$current' is not a nonnegative integer" 1>&2 - echo "$progname: \`$vinfo' is not valid version information" 1>&2 + $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]*) ;; *) - echo "$progname: REVISION \`$revision' is not a nonnegative integer" 1>&2 - echo "$progname: \`$vinfo' is not valid version information" 1>&2 + $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]*) ;; *) - echo "$progname: AGE \`$age' is not a nonnegative integer" 1>&2 - echo "$progname: \`$vinfo' is not valid version information" 1>&2 + $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 "$progname: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 - echo "$progname: \`$vinfo' is not valid version information" 1>&2 + $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 @@ -681,155 +938,178 @@ if test -z "$show_help"; then none) ;; linux) - version_vars="$version_vars major versuffix" - major=`expr $current - $age` - versuffix="$major.$age.$revision" - ;; + version_vars="$version_vars major versuffix" + major=`expr $current - $age` + versuffix="$major.$age.$revision" + ;; osf) - version_vars="$version_vars versuffix verstring" - major=`expr $current - $age` - versuffix="$current.$age.$revision" - verstring="$versuffix" - - # 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 + version_vars="$version_vars versuffix verstring" + major=`expr $current - $age` + versuffix="$current.$age.$revision" + verstring="$versuffix" + + # 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" - ;; + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; sunos) - version_vars="$version_vars major versuffix" - major="$current" - versuffix="$current.$revision" - ;; + version_vars="$version_vars major versuffix" + major="$current" + versuffix="$current.$revision" + ;; *) - echo "$progname: unknown library version type \`$version_type'" 1>&2 - echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit 1 - ;; + $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 # Create the output directory, or remove our outputs if we need to. if test -d $objdir; then - $show "$rm $objdir/$libname.*" - $run $rm $objdir/$libname.* + $show "$rm $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.*" + $run $rm $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.* else $show "$mkdir $objdir" - $run $mkdir $objdir || exit $? + $run $mkdir $objdir + status=$? + if test $status -eq 0 || test -d $objdir; then : + else + exit $status + fi 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 "$progname: warning: undefined symbols not allowed in $host shared libraries" 1>&2 - build_libtool_libs=no - fi + 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 - # Clear the flag. - allow_undefined_flag= + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" fi + # Add libc to deplibs on all systems. + dependency_libs="$deplibs" + deplibs="$deplibs -lc" + if test "$build_libtool_libs" = yes; then - # Get the real and link names of the library. - library_names=`eval echo \"$library_names_spec\"` - set dummy $library_names - realname="$2" - shift; shift - - if test -n "$soname_spec"; then - soname=`eval echo \"$soname_spec\"` - else - soname="$realname" - 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 - lib="$objdir/$realname" - linknames= + lib="$objdir/$realname" for link do linknames="$linknames $link" done - # Use standard objects if they are PIC. - test -z "$pic_flag" && libobjs=`echo "$libobjs " | sed 's/\.lo /.o /g; s/ $//g'` + # Use standard objects if they are PIC. + test -z "$pic_flag" && libobjs=`$echo "X$libobjs " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//g'` - # Do each of the archive commands. - cmds=`eval echo \"$archive_cmds\"` - IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" + # Do each of the archive commands. + eval cmds=\"$archive_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" - # Create links to the real library. - for link in $linknames; do - $show "(cd $objdir && $LN_S $realname $link)" - $run eval "(cd $objdir && $LN_S $realname $link)" || exit $? - done + # Create links to the real library. + for linkname in $linknames; do + $show "(cd $objdir && $LN_S $realname $linkname)" + $run eval '(cd $objdir && $LN_S $realname $linkname)' || exit $? + done - # If -export-dynamic was specified, set the dlname. - if test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi + # If -export-dynamic was specified, set the dlname. + if test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi fi + + # Now set the variables for building old libraries. + oldlib="$objdir/$libname.a" ;; *.lo | *.o) if test -n "$link_against_libtool_libs"; then - echo "$progname: error: cannot link libtool libraries into reloadable objects" 1>&2 - exit 1 + $echo "$modename: error: cannot link libtool libraries into reloadable objects" 1>&2 + exit 1 fi if test -n "$deplibs"; then - echo "$progname: warning: \`-l' and \`-L' are ignored while creating objects" 1>&2 + $echo "$modename: warning: \`-l' and \`-L' are ignored while creating objects" 1>&2 fi - if test -n "$install_libdir"; then - echo "$progname: warning: \`-rpath' is ignored while creating objects" 1>&2 + if test -n "$dlfiles$dlprefiles"; then + $echo "$modename: warning: \`-dlopen' is ignored while creating objects" 1>&2 + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored while creating objects" 1>&2 fi if test -n "$vinfo"; then - echo "$progname: warning: \`-version-info' is ignored while creating objects" 1>&2 + $echo "$modename: warning: \`-version-info' is ignored while creating objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2 fi case "$output" in *.lo) - if test -n "$objs"; then - echo "$progname: cannot build library object \`$output' from non-libtool objects" 1>&2 - exit 1 - fi - libobj="$output" - obj=`echo "$output" | sed 's/\.lo$/.o/'` - ;; + if test -n "$objs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit 1 + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e 's/\.lo$/.o/'` + ;; *) libobj= - obj="$output" - ;; + obj="$output" + ;; esac # Delete the old objects. $run $rm $obj $libobj # Create the old-style object. - reload_objs="$objs"`echo "$libobjs " | sed 's/[^ ]*\.a //g; s/\.lo /.o /g; s/ $//g'` + reload_objs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/\.lo /.o /g' -e 's/ $//g'` output="$obj" - cmds=`eval echo \"$reload_cmds\"` + eval cmds=\"$reload_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" - $run eval "$cmd" || exit $? + $run eval "$cmd" || exit $? done IFS="$save_ifs" @@ -839,16 +1119,16 @@ if test -z "$show_help"; then if test "$build_libtool_libs" != yes; then # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. - $show "echo timestamp > $libobj" - $run eval "echo timestamp > $libobj" || exit $? - exit 0 + $show "echo timestamp > $libobj" + $run eval "echo timestamp > $libobj" || exit $? + exit 0 fi if test -n "$pic_flag"; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs" - output="$libobj" - cmds=`eval echo \"$reload_cmds\"` + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs" + output="$libobj" + eval cmds=\"$reload_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' for cmd in $cmds; do IFS="$save_ifs" @@ -866,114 +1146,294 @@ if test -z "$show_help"; then ;; *) - if test -n "$install_libdir"; then - echo "$progname: warning: \`-rpath' is ignored while linking programs" 1>&2 + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored while linking programs" 1>&2 fi - if test -n "$vinfo"; then - echo "$progname: warning: \`-version-info' is ignored while linking programs" 1>&2 + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2 fi - if test -n "$libobjs"; then - # Transform all the library objects into standard objects. - compile_command=`echo "$compile_command " | sed 's/\.lo /.o /g; s/ $//'` - finalize_command=`echo "$finalize_command " | sed 's/\.lo /.o /g; s/ $//'` + if test -n "$rpath"; then + # If the user specified any rpath flags, then add them. + 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 + # Put the magic libdir with the hardcode flag. + hardcode_libdirs="$libdir" + libdir="@HARDCODE_LIBDIRS@" + 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 + libdir= + fi + fi + + if test -n "$libdir"; then + eval flag=\"$hardcode_libdir_flag_spec\" + + compile_command="$compile_command $flag" + finalize_command="$finalize_command $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done fi - if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then - # Replace the output file specification. - compile_command=`echo "$compile_command" | sed 's%@OUTPUT@%'"$output"'%g'` - finalize_command=`echo "$finalize_command" | sed 's%@OUTPUT@%'"$output"'%g'` + # Substitute the hardcoded libdirs into the compile commands. + if test -n "$hardcode_libdir_separator"; then + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"` + fi - # We have no uninstalled library dependencies, so finalize right now. - $show "$compile_command" - $run $compile_command - status=$? + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'` + finalize_command=`$echo "X$finalize_command " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'` + fi + + if test "$export_dynamic" = yes && test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${output}S.c" + else + dlsyms= + fi - # If we failed to link statically, then try again. - if test $status -ne 0 && test -n "$link_static"; then - echo "$progname: cannot link \`$output' statically; retrying semi-dynamically" 1>&2 - compile_command=`echo "$compile_command " | sed "s% $link_static % %;s/ $//"` - $show "$finalize_command" - $run $finalize_command + if test -n "$dlsyms"; then + # Add our own program objects to the preloaded list. + dlprefiles=`$echo "X$objs$dlprefiles " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'` + + # Discover the nlist of each of the dlfiles. + nlist="$objdir/${output}.nm" + + if test -d $objdir; then + $show "$rm $nlist ${nlist}T" + $run $rm "$nlist" "${nlist}T" + else + $show "$mkdir $objdir" + $run $mkdir $objdir status=$? + if test $status -eq 0 || test -d $objdir; then : + else + exit $status + fi fi - exit $status + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + # Parse the name list into a source file. + $show "creating $objdir/$dlsyms" + if test -z "$run"; then + # Make sure we at least have an empty file. + test -f "$nlist" || : > "$nlist" + + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + wcout=`wc "$nlist" 2>/dev/null` + count=`echo "X$wcout" | $Xsed -e 's/^[ ]*\([0-9][0-9]*\).*$/\1/'` + (test "$count" -ge 0) 2>/dev/null || count=-1 + else + $rm "$nlist"T + count=-1 + fi + + case "$dlsyms" in + "") ;; + *.c) + $echo > "$objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$output' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define dld_preloaded_symbol_count some_other_symbol +#define dld_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test -f "$nlist"; then + sed -e 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> "$objdir/$dlsyms" + else + echo '/* NONE */' >> "$objdir/$dlsyms" + fi + + $echo >> "$objdir/$dlsyms" "\ + +#undef dld_preloaded_symbol_count +#undef dld_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define __ptr_t void * +#else +# define __ptr_t char * +#endif + +/* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */ +int dld_preloaded_symbol_count = $count; + +/* The mapping between symbol names and symbols. */ +struct { + char *name; + __ptr_t address; +} +dld_preloaded_symbols[] = +{\ +" + + if test -f "$nlist"; then + sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> "$objdir/$dlsyms" + fi + + $echo >> "$objdir/$dlsyms" "\ + {0, (__ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif\ +" + ;; + + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit 1 + ;; + esac + fi + + # Now compile the dynamic symbol file. + $show "(cd $objdir && $CC -c$no_builtin_flag \"$dlsyms\")" + $run eval '(cd $objdir && $CC -c$no_builtin_flag "$dlsyms")' || exit $? + + # Transform the symbol file into the correct name. + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.o%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.o%"` + elif test "$export_dynamic" != yes; then + test -n "$dlfiles$dlprefiles" && $echo "$modename: warning: \`-dlopen' and \`-dlpreopen' are ignored without \`-export-dynamic'" 1>&2 + else + # We keep going just in case the user didn't refer to + # dld_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + + # We have no uninstalled library dependencies, so finalize right now. + $show "$compile_command" + $run eval "$compile_command" + exit $? fi # Replace the output file specification. - compile_command=`echo "$compile_command" | sed 's%@OUTPUT@%'"$objdir/$output"'%g'` - finalize_command=`echo "$finalize_command" | sed 's%@OUTPUT@%'"$objdir/$output"'T%g'` + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'%g'` + finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'T%g'` # Create the binary in the object directory, then wrap it. if test -d $objdir; then : else $show "$mkdir $objdir" - $run $mkdir $objdir || exit $? + $run $mkdir $objdir + status=$? + if test $status -eq 0 || test -d $objdir; then : + else + exit $status + fi fi if test -n "$shlibpath_var"; then # We should set the shlibpath_var - rpath= - for dir in $temp_rpath; do - case "$dir" in - /*) - # Absolute path. - rpath="$rpath$dir:" - ;; - *) - # Relative path: add a thisdir entry. - rpath="$rpath\$thisdir/$dir:" - ;; - esac - done - temp_rpath="$rpath" + rpath= + for dir in $temp_rpath; do + case "$dir" in + /* | [A-Za-z]:\\*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" fi # Delete the old output file. $run $rm $output if test -n "$compile_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath\$$shlibpath_var\" $compile_command" + compile_command="$shlibpath_var=\"$compile_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - compile_command="$runpath_var=\"$rpath\$$runpath_var\" $compile_command" - finalize_command="$runpath_var=\"$rpath\$$runpath_var\" $finalize_command" + 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 + compile_command="$runpath_var=\"$rpath\$$runpath_var\" $compile_command" + finalize_command="$runpath_var=\"$rpath\$$runpath_var\" $finalize_command" fi case "$hardcode_action" in relink) - # AGH! Flame the AIX and HP-UX people for me, will ya? - echo "$progname: warning: using a buggy system linker" 1>&2 - echo "$progname: relinking will be required before \`$output' can be installed" 1>&2 - ;; + # AGH! Flame the AIX and HP-UX people for me, will ya? + $echo "$modename: warning: using a buggy system linker" 1>&2 + $echo "$modename: relinking will be required before \`$output' can be installed" 1>&2 + ;; esac $show "$compile_command" $run eval "$compile_command" || exit $? # Now create the wrapper script. - echo "creating $output" + $show "creating $output" + + # Quote the finalize command for shipping. + finalize_command=`$echo "X$finalize_command" | $Xsed -e "$sed_quote_subst"` + + # Quote $echo for shipping. + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` # Only actually do things if our run command is non-null. if test -z "$run"; then - $rm $output - trap "$rm $output; exit 1" 1 2 15 + $rm $output + trap "$rm $output; exit 1" 1 2 15 - cat > $output < $output "\ #! /bin/sh # $output - temporary wrapper script for $objdir/$output -# Generated by $PROGRAM - GNU $PACKAGE $VERSION +# Generated by ltmain.sh - GNU $PACKAGE $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. @@ -981,96 +1441,117 @@ if test -z "$show_help"; then # This wrapper script should never be moved out of \``pwd`'. # If it is, it will not operate correctly. +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +sed_quote_subst='$sed_quote_subst' + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi + # This environment variable determines our operation mode. -if test "\$libtool_install_magic" = "$magic"; then +if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: link_against_libtool_libs='$link_against_libtool_libs' - finalize_command='$finalize_command' + finalize_command=\"$finalize_command\" else - # Find the directory that this script lives in. - thisdir=\`echo \$0 | sed 's%/[^/]*$%%'\` - test "x\$thisdir" = "x\$0" && thisdir=. + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" = \"$magic\"; then : + else + echo=\"$qecho\" + file=\"\$0\" + fi\ +" + $echo >> $output "\ - # Try to get the absolute directory name. - absdir=\`cd "\$thisdir" && pwd\` - test -n "\$absdir" && thisdir="\$absdir" + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + /* | [A-Za-z]:\\*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi - progdir="\$thisdir/$objdir" - program="$output" + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` + done - if test -f "\$progdir/\$program"; then - # Run the actual program with our arguments. - args= - for arg - do - # Quote arguments (to preserve shell metacharacters). - args="\$args '\$arg'" - done + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" - # Export the path to the program. - PATH="\$progdir:\$PATH" - export PATH -EOF + progdir=\"\$thisdir/$objdir\" + program='$output' - # Export our shlibpath_var if we have one. - if test -n "$shlibpath_var" && test -n "$temp_rpath"; then - cat >> $output <> $output "\ # Add our own library path to $shlibpath_var - $shlibpath_var="$temp_rpath\$$shlibpath_var" + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var - $shlibpath_var=\`echo \$$shlibpath_var | sed -e 's/:*\$//'\` + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/:*\$//'\` export $shlibpath_var -EOF - fi +" + fi - cat >> $output <> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. - eval "exec \$program \$args" + # Export the path to the program. + PATH=\"\$progdir:\$PATH\" + export PATH - echo "\$0: cannot exec \$program \$args" - exit 1 + exec \$program \${1+\"\$@\"} + + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" + exit 1 + fi else # The program doesn't exist. - echo "\$0: error: \$progdir/\$program does not exist" 1>&2 - echo "This script is just a wrapper for \$program." 1>&2 - echo "See the $PACKAGE documentation for more information." 1>&2 + \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + echo \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi -fi -EOF - chmod +x $output +fi\ +" + chmod +x $output fi exit 0 ;; esac - # See if we need to build an old-fashioned archive. if test "$build_old_libs" = "yes"; then - # Now set the variables for building old libraries. - oldlib="$objdir/$libname.a" - # Transform .lo files to .o files. - oldobjs="$objs"`echo "$libobjs " | sed 's/[^ ]*\.a //g; s/\.lo /.o /g; s/ $//g'` + oldobjs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/\.lo /.o /g' -e 's/ $//g'` - if test -d "$objdir"; then - $show "$rm $oldlib" - $run $rm $oldlib + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + eval cmds=\"$old_archive_from_new_cmds\" else - $show "$mkdir $objdir" - $run $mkdir $objdir + eval cmds=\"$old_archive_cmds\" fi - - # Do each command in the archive commands. - cmds=`eval echo \"$old_archive_cmds\"` IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" - $run eval "$cmd" || exit $? + $run eval "$cmd" || exit $? done IFS="$save_ifs" fi @@ -1081,13 +1562,13 @@ EOF old_library= test "$build_old_libs" = yes && old_library="$libname.a" - echo "creating $output" + $show "creating $output" # Only create the output if not a dry run. if test -z "$run"; then - cat > $output < $output "\ # $output - a libtool library file -# Generated by $PROGRAM - GNU $PACKAGE $VERSION +# Generated by ltmain.sh - GNU $PACKAGE $VERSION # The name that we can dlopen(3). dlname='$dlname' @@ -1098,14 +1579,17 @@ library_names='$library_names' # The name of the static archive. old_library='$old_library' +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + # Version information for $libname. current=$current age=$age revision=$revision # Directory that this library needs to be installed in: -libdir='$install_libdir' -EOF +libdir='$install_libdir'\ +" fi # Do a symbolic link so that the libtool archive can be found in @@ -1119,10 +1603,35 @@ EOF # libtool install mode install) - progname="$progname: install" + modename="$modename: install" + + # There may be an optional /bin/sh argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL"; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg="$nonopt" + fi - # The first argument is the name of the installation program. - install_prog="$nonopt" + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" # We need to accept at least all the BSD install flags. dest= @@ -1136,8 +1645,8 @@ EOF do if test -n "$dest"; then files="$files $dest" - dest="$arg" - continue + dest="$arg" + continue fi case "$arg" in @@ -1147,48 +1656,56 @@ EOF -m) prev="-m" ;; -o) prev="-o" ;; -s) - stripme=" -s" - continue - ;; + stripme=" -s" + continue + ;; -*) ;; *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - prev= - else - dest="$arg" - continue - fi + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest="$arg" + continue + fi ;; esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac install_prog="$install_prog $arg" done if test -z "$install_prog"; then - echo "$progname: you must specify an install program" 1>&2 - echo "$help" 1>&2 + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 exit 1 fi if test -n "$prev"; then - echo "$progname: the \`$prev' option requires an argument" 1>&2 - echo "$help" 1>&2 + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 exit 1 fi if test -z "$files"; then if test -z "$dest"; then - echo "$progname: no file or destination specified" 1>&2 + $echo "$modename: no file or destination specified" 1>&2 else - echo "$progname: you must specify a destination" 1>&2 + $echo "$modename: you must specify a destination" 1>&2 fi - echo "$help" 1>&2 + $echo "$help" 1>&2 exit 1 fi # Strip any trailing slash from the destination. - dest=`echo "$dest" | sed 's%/$%%'` + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` # Check to see that the destination is a directory. test -d "$dest" && isdir=yes @@ -1196,34 +1713,38 @@ EOF destdir="$dest" destname= else - destdir=`echo "$dest" | sed 's%/[^/]*$%%'` - test "$destdir" = "$dest" && destdir=. - destname=`echo "$dest" | sed 's%^.*/%%'` + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` # Not a directory, so check to see that there is only one file specified. set dummy $files if test $# -gt 2; then - echo "$progname: \`$dest' is not a directory" 1>&2 - echo "$help" 1>&2 - exit 1 + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit 1 fi fi case "$destdir" in - /*) ;; + /* | [A-Za-z]:\\*) ;; *) for file in $files; do - case "$file" in - *.lo) ;; - *) - echo "$progname: \`$destdir' must be an absolute directory name" 1>&2 - echo "$help" 1>&2 - exit 1 - ;; - esac + case "$file" in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + esac done ;; esac + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + staticlibs= future_libdirs= current_libdirs= @@ -1232,69 +1753,59 @@ EOF # Do each installation. case "$file" in *.a) - # Do the static libraries later. - staticlibs="$staticlibs $file" - ;; + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; *.la) - # Check to see that this really is a libtool archive. - if egrep "^# Generated by $PROGRAM" $file >/dev/null 2>&1; then : - else - echo "$progname: \`$file' is not a valid libtool archive" 1>&2 - echo "$help" 1>&2 - exit 1 - fi + # Check to see that this really is a libtool archive. + if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi - library_names= - old_library= - # If there is no directory component, then add one. - case "$file" in - */*) . $file ;; - *) . ./$file ;; - esac + library_names= + old_library= + # If there is no directory component, then add one. + case "$file" in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac - # Add the libdir to current_libdirs if it is the destination. - if test "$destdir" = "$libdir"; then - case "$current_libdirs " in - "* $libdir *") ;; - *) current_libdirs="$current_libdirs $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - "* $libdir *") ;; - *) future_libdirs="$future_libdirs $libdir" ;; - esac - fi + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi - dir="`echo "$file" | sed 's%/[^/]*$%%'`/" - test "$dir" = "$file/" && dir= - dir="$dir$objdir" - - # See the names of the shared library. - set dummy $library_names - if test -n "$2"; then - realname="$2" - shift - shift - - # Install the shared library and build the symlinks. - $show "$install_prog $dir/$realname $destdir/$realname" - $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $? - test "X$dlname" = "X$realname" && dlname= - - # Support stripping libraries. - if test -n "$stripme"; then - if test -n "$striplib"; then - $show "$striplib $destdir/$realname" - $run $striplib $destdir/$realname || exit $? - else - echo "$progname: warning: no library stripping program" 1>&2 - fi - fi + dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/" + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift - if test $# -gt 0; then - # Delete the old symlinks. + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$realname $destdir/$realname" + $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $? + test "X$dlname" = "X$realname" && dlname= + + if test $# -gt 0; then + # Delete the old symlinks. rmcmd="$rm" for linkname do @@ -1303,179 +1814,161 @@ EOF $show "$rmcmd" $run $rmcmd - # ... and create new ones. - for linkname - do - test "X$dlname" = "X$linkname" && dlname= - $show "(cd $destdir && $LN_S $realname $linkname)" - $run eval "(cd $destdir && $LN_S $realname $linkname)" - done - fi - - if test -n "$dlname"; then - # Install the dynamically-loadable library. - $show "$install_prog $dir/$dlname $destdir/$dlname" - $run eval "$install_prog $dir/$dlname $destdir/$dlname" || exit $? - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - cmds=`eval echo \"$postinstall_cmds\"` - IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi + # ... and create new ones. + for linkname + do + test "X$dlname" = "X$linkname" && dlname= + $show "(cd $destdir && $LN_S $realname $linkname)" + $run eval "(cd $destdir && $LN_S $realname $linkname)" + done + fi + + if test -n "$dlname"; then + # Install the dynamically-loadable library. + $show "$install_prog $dir/$dlname $destdir/$dlname" + $run eval "$install_prog $dir/$dlname $destdir/$dlname" || exit $? + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + eval cmds=\"$postinstall_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi - # Install the pseudo-library for information purposes. - name=`echo "$file" | sed 's%^.*/%%'` - $show "$install_prog $file $destdir/$name" - $run $install_prog $file $destdir/$name || exit $? + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + $show "$install_prog $file $destdir/$name" + $run eval "$install_prog $file $destdir/$name" || exit $? - # Maybe install the static library, too. - test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" - ;; + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then - destfile="$destdir/$destname" - else - destfile=`echo "$file" | sed 's%^.*/%%;'` - destfile="$destdir/$destfile" + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" fi - # Deduce the name of the destination old-style object file. - case "$destfile" in - *.lo) - staticdest=`echo "$destfile" | sed 's/\.lo$/\.o/;'` - ;; - *.o) - staticdest="$destfile" - destfile= - ;; - *) - echo "$progname: cannot copy a libtool object to \`$destfile'" 1>&2 - echo "$help" 1>&2 - exit 1 + # Deduce the name of the destination old-style object file. + case "$destfile" in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e 's/\.lo$/\.o/'` ;; - esac + *.o) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + esac - # Install the libtool object if requested. - if test -n "$destfile"; then - $show "$install_prog $file $destfile" - $run $install_prog $file $destfile || exit $? - fi + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - staticobj=`echo "$file" | sed 's/\.lo$/\.o/;'` + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e 's/\.lo$/\.o/'` - $show "$install_prog $staticobj $staticdest" - $run $install_prog $staticobj $staticdest || exit $? - fi - exit 0 - ;; + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit 0 + ;; *) - # Do a test to see if this is really a libtool program. - if egrep "^# Generated by $PROGRAM" $file >/dev/null 2>&1; then - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - link_against_libtool_libs= - finalize_command= - - # If there is no directory component, then add one. - case "$file" in - */*) . $file ;; - *) . ./$file ;; - esac - - # Check the variables that should have been set. - if test -z "$link_against_libtool_libs" || test -z "$finalize_command"; then - echo "$progname: invalid libtool wrapper script \`$file'" 1>&2 - exit 1 - fi - - finalize=yes - for lib in $link_against_libtool_libs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - # If there is no directory component, then add one. - case "$lib" in - */*) . $lib ;; - *) . ./$lib ;; - esac - fi - libfile="$libdir/`echo "$lib" | sed 's%^.*/%%g'`" - if test -z "$libdir"; then - echo "$progname: warning: \`$lib' contains no -rpath information" 1>&2 - elif test -f "$libfile"; then : - else - echo "$progname: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 - finalize=no - fi - done - - if test "$hardcode_action" = relink; then - if test "$finalize" = yes; then - echo "$progname: warning: relinking \`$file' on behalf of your buggy system linker" 1>&2 - $show "$finalize_command" - if $run $finalize_command; then : - else - echo "$progname: error: relink \`$file' with the above command before installing it" 1>&2 - continue - fi - file="$objdir/$file"T - else - echo "$progname: warning: cannot relink \`$file' on behalf of your buggy system linker" 1>&2 - fi - else - # Install the binary that we compiled earlier. - dir=`echo "$file" | sed 's%/[^/]*$%%'` - if test "$file" = "$dir"; then - file="$objdir/$file" - else - file="$dir/$objdir/`echo "$file" | sed 's%^.*/%%'`" - fi - fi - fi + # Do a test to see if this is really a libtool program. + if (sed -e '4q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then + link_against_libtool_libs= + finalize_command= + + # If there is no directory component, then add one. + case "$file" in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Check the variables that should have been set. + if test -z "$link_against_libtool_libs" || test -z "$finalize_command"; then + $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 + exit 1 + fi + + finalize=yes + for lib in $link_against_libtool_libs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case "$lib" in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`" + if test -z "$libdir"; then + $echo "$modename: warning: \`$lib' contains no -rpath information" 1>&2 + elif test -f "$libfile"; then : + else + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + if test "$hardcode_action" = relink; then + if test "$finalize" = yes; then + $echo "$modename: warning: relinking \`$file' on behalf of your buggy system linker" 1>&2 + $show "$finalize_command" + if $run eval "$finalize_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + continue + fi + file="$objdir/$file"T + else + $echo "$modename: warning: cannot relink \`$file' on behalf of your buggy system linker" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi - $show "$install_prog$stripme $file $dest" - $run $install_prog$stripme $file $dest || exit $? - ;; + $show "$install_prog$stripme $file $dest" + $run eval "$install_prog\$stripme \$file \$dest" || exit $? + ;; esac done for file in $staticlibs; do - name=`echo "$file" | sed 's%^.*/%%'` + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` # Set up the ranlib parameters. oldlib="$destdir/$name" $show "$install_prog $file $oldlib" - $run $install_prog $file $oldlib || exit $? - - # Support stripping libraries. - if test -n "$stripme"; then - if test -n "$old_striplib"; then - $show "$old_striplib $oldlib" - $run $old_striplib $oldlib || exit $? - else - echo "$progname: warning: no static library stripping program" 1>&2 - fi - fi + $run eval "$install_prog \$file \$oldlib" || exit $? # Do each command in the postinstall commands. - cmds=`eval echo \"$old_postinstall_cmds\"` + eval cmds=\"$old_postinstall_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' for cmd in $cmds; do IFS="$save_ifs" @@ -1486,106 +1979,218 @@ EOF done if test -n "$future_libdirs"; then - echo "$progname: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 fi if test -n "$current_libdirs"; then # Maybe just do a dry run. test -n "$run" && current_libdirs=" -n$current_libdirs" - exec $0 --finish$current_libdirs + exec $SHELL $0 --finish$current_libdirs exit 1 fi exit 0 ;; - # libtool dlname mode - dlname) - progname="$progname: dlname" - ltlibs="$nonopt" - for lib - do - ltlibs="$ltlibs $lib" + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + eval cmds=\"$finish_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" + fi + done + fi + + echo "------------------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + echo " $libdir" done + echo + echo "To link against installed libraries in a given directory, LIBDIR," + echo "you must use the \`-LLIBDIR' flag during linking." + echo + echo " You will also need to do one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" - if test -z "$ltlibs"; then - echo "$progname: you must specify at least one LTLIBRARY" 1>&2 - echo "$help" 1>&2 - exit 1 + echo " - use the \`$flag' linker flag" fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo + echo "See any operating system documentation about shared libraries for" + echo "more information, such as the ld(1) and ld.so(8) manual pages." + echo "------------------------------------------------------------------------------" + exit 0 + ;; - # Now check to make sure each one is a valid libtool library. - status=0 - for lib in $ltlibs; do - dlname= - libdir= - library_names= + # libtool execute mode + execute) + modename="$modename: execute" - # Check to see that this really is a libtool archive. - if egrep "^# Generated by $PROGRAM" $arg >/dev/null 2>&1; then : + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit 1 + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test -f "$file"; then : else - echo "$progname: \`$arg' is not a valid libtool archive" 1>&2 - status=1 - continue + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit 1 fi - # If there is no directory component, then add one. - case "$arg" in - */*) . $arg ;; - *) . ./$arg ;; + dir= + case "$file" in + *.la) + # Check to see that this really is a libtool archive. + if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case "$file" in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit 1 + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; esac - if test -z "$libdir"; then - echo "$progname: \`$arg' contains no -rpath information" 1>&2 - status=1 - elif test -n "$dlname"; then - echo "$libdir/$dlname" - elif test -z "$library_names"; then - echo "$progname: \`$arg' is not a shared library" 1>&2 - status=1 + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" else - echo "$progname: \`$arg' was not linked with \`-export-dynamic'" 1>&2 - status=1 + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done - exit $status - ;; - # libtool finish mode - finish) - progname="$progname: finish" - libdirs="$nonopt" + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" - if test -n "$finish_cmds" && test -n "$libdirs"; then - for dir - do - libdirs="$libdirs $dir" - done + # Check if any of the arguments is a wrapper script. + args= + for file + do + case "$file" in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (sed -e '4q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then + # If there is no directory component, then add one. + case "$file" in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac - for libdir in $libdirs; do - # Do each command in the postinstall commands. - cmds=`eval echo \"$finish_cmds\"` - IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" - done - IFS="$save_ifs" - done - fi + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done - echo "To link against installed libraries in LIBDIR, users may have to:" - if test -n "$shlibpath_var"; then - echo " - add LIBDIR to their \`$shlibpath_var' environment variable" + if test -z "$run"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + + # Now actually exec the command. + eval "exec \$cmd$args" + + $echo "$modename: cannot exec \$cmd$args" + exit 1 + else + # Display what would be done. + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + $echo "$cmd$args" + exit 0 fi - echo " - use the \`-LLIBDIR' linker flag" - exit 0 ;; # libtool uninstall mode uninstall) - progname="$progname: uninstall" + modename="$modename: uninstall" rm="$nonopt" files= @@ -1598,66 +2203,97 @@ EOF done if test -z "$rm"; then - echo "$progname: you must specify an RM program" 1>&2 - echo "$help" 1>&2 + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 exit 1 fi for file in $files; do - dir=`echo "$file" | sed -e 's%/[^/]*$%%'` - test "$dir" = "$file" && dir=. - name=`echo "$file" | sed -e 's%^.*/%%'` + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` rmfiles="$file" case "$name" in *.la) - # Possibly a libtool archive, so verify it. - if egrep "^# Generated by $PROGRAM" $file >/dev/null 2>&1; then - . $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - rmfiles="$rmfiles $dir/$n" - test "X$n" = "X$dlname" && dlname= - done - test -n "$dlname" && rmfiles="$rmfiles $dir/$dlname" - test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library" - - # FIXME: should reinstall the best remaining shared library. - fi - ;; + # Possibly a libtool archive, so verify it. + if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $dir/$n" + test "X$n" = "X$dlname" && dlname= + done + test -n "$dlname" && rmfiles="$rmfiles $dir/$dlname" + test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library" + + $show "$rm $rmfiles" + $run $rm $rmfiles + + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + eval cmds=\"$postuninstall_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + eval cmds=\"$old_postuninstall_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" + done + IFS="$save_ifs" + fi + + # FIXME: should reinstall the best remaining shared library. + fi + ;; *.lo) - if test "$build_old_libs" = yes; then - oldobj=`echo "$name" | sed 's/\.lo$/\.o/'` - rmfiles="$rmfiles $dir/$oldobj" - fi - ;; - esac + if test "$build_old_libs" = yes; then + oldobj=`$echo "X$name" | $Xsed -e 's/\.lo$/\.o/'` + rmfiles="$rmfiles $dir/$oldobj" + fi + $show "$rm $rmfiles" + $run $rm $rmfiles + ;; - $show "$rm $rmfiles" - $run $rm $rmfiles + *) + $show "$rm $rmfiles" + $run $rm $rmfiles + ;; + esac done exit 0 ;; - NONE) - echo "$progname: you must specify a MODE" 1>&2 - echo "$generic_help" 1>&2 + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 exit 1 ;; esac - echo "$progname: invalid operation mode \`$mode'" 1>&2 - echo "$generic_help" 1>&2 + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 exit 1 fi # test -z "$show_help" # We need to display help for each of the modes. case "$mode" in -NONE) cat <&2 - echo "$help" 1>&2 + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 exit 1 ;; esac -case "$mode" in -archive|compile) - echo - echo "Try \`$progname --help' for more information about other modes." - ;; -esac +echo +$echo "Try \`$modename --help' for more information about other modes." exit 0