From 54a401b9c514e8ad4d7c21213bd52374c57f9d3c Mon Sep 17 00:00:00 2001 From: law Date: Mon, 11 May 1998 23:00:52 +0000 Subject: [PATCH] # * mpw-* Delete. Not used. * ltconfig, ltmain.sh: Update to libtool 1.2a. * Makefile.in (CC_FOR_TARGET): Use $(TARGET_SUBDIR) when passing -B for newlib directory. (CXX_FOR_TARGET): Likewise. Bring over from devo. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@19691 138bc75d-0d04-0410-961f-82ee72b054a4 --- ltconfig | 1045 +++++++++++++++++------ ltmain.sh | 2575 ++++++++++++++++++++++++++++++++++++--------------------- mpw-build.in | 204 ----- mpw-config.in | 113 --- mpw-configure | 448 ---------- mpw-install | 122 --- 6 files changed, 2441 insertions(+), 2066 deletions(-) delete mode 100644 mpw-build.in delete mode 100644 mpw-config.in delete mode 100644 mpw-configure delete mode 100644 mpw-install diff --git a/ltconfig b/ltconfig index 7bba4e6b37f..4f1a9cec0e4 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,19 +25,82 @@ # A lot of this script is taken from autoconf-2.10. +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} +if test "X$1" = "X--no-reexec"; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$SHELL" != X/bin/sh; then + # Restart under the correct shell. + exec "$SHELL" "$0" --no-reexec ${1+"$@"} +fi + +# 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, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" + for dir in $PATH /usr/ucb; do + if test -f $dir/echo && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t'; then + echo="$dir/echo" + break + fi + done + IFS="$save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t'; then + # This shell has a builtin print -r that does the trick. + echo='print -r' +# elif test -f /bin/ksh && test "X$CONFIG_SHELL" != X/bin/ksh; then +# # If we have ksh, try running ltconfig again with it. +# CONFIG_SHELL=/bin/ksh +# export CONFIG_SHELL +# exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then : + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + 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.2a 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." # Global variables: +default_ofile=libtool can_build_shared=yes enable_shared=yes # All known linkers require a `.a' archive for static linking. @@ -51,6 +112,7 @@ ac_config_guess= ac_config_sub= host= nonopt= +ofile="$default_ofile" verify_host=yes with_gcc=no with_gnu_ld=no @@ -61,9 +123,10 @@ 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 +old_DLLTOOL="$DLLTOOL" +old_AS="$AS" # Parse the command line options. args= @@ -88,12 +151,14 @@ Usage: $progname [OPTION]... LTMAIN [HOST] Generate a system-specific libtool script. + --debug enable verbose shell tracing --disable-shared do not build shared libraries --disable-static do not build static libraries --help display this help and exit --no-verify do not verify that HOST is a valid host type +-o, --output=FILE specify the output file [default=$default_ofile] --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 @@ -107,6 +172,11 @@ EOM exit 0 ;; + --debug) + echo "$progname: enabling shell trace mode" + set -x + ;; + --disable-shared) enable_shared=no ;; --disable-static) enable_static=no ;; @@ -118,6 +188,9 @@ EOM --no-verify) verify_host=no ;; + --output | -o) prev=ofile ;; + --output=*) ofile="$optarg" ;; + --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION"; exit 0 ;; --with-gcc) with_gcc=yes ;; @@ -133,7 +206,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 +227,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 +281,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 +324,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 +337,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,14 +383,18 @@ 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 +# Set sane defaults for `DLLTOOL' and `AS', used on cygwin32. +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$AS" && AS=as + # Check to see if we are using GCC. if test "$with_gcc" != yes || test -z "$CC"; then # If CC is not set, then try to find GCC or a usable CC. @@ -313,9 +412,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 +451,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 +465,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:468: 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:476: \"$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 +486,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. + ;; + cygwin32* | 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? + hpux9* | hpux10* | hpux11*) + # 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 +532,14 @@ else wl='-Wl,' link_static_flag='-non_shared' # PIC (with -KPIC) is the default. - pic_flag= + ;; + + cygwin32* | 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 +562,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 "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $pic_flag -DPIC" + echo "$progname:591: checking if $compiler PIC flag $pic_flag works" >&5 + if { (eval echo $progname:592: \"$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 +627,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:635: checking if $compiler static flag $link_static_flag works" >&5 +if { (eval echo $progname:636: \"$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,81 +659,131 @@ 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:668: 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:686: checking for GNU ld" >&5 + else + echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 + echo "$progname:689: 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= ld_shlibs=yes if test "$with_gnu_ld" = yes; then - # See if GNU ld supports shared libraries. + # See if GNU ld supports shared libraries. case "$host_os" in + 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 + ;; + sunos4*) - ld_shlibs=yes - hardcode_direct=yes - hardcode_shlibpath_var=no + archive_cmds='$LD -assert pure-text -Bstatic -o $lib$libobjs' + ;; + + cygwin32*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + # Very, very bogus. + echo ' +#include + +struct _reent *_impure_ptr; +extern struct _reent *__imp_reent_data; +BOOL APIENTRY +__dll_entry (HINSTANCE hinst, DWORD reason, LPVOID reserved) +{ + _impure_ptr = __imp_reent_data; +} +' > libtool.c + archive_cmds='$CC -c '"`pwd`"'/libtool.c;echo EXPORTS > $soname-def;$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' >> $soname-def;$LD -s --base-file $soname-base --dll -e ___dll_entry@12 -o $lib libtool.o$libobjs$deplibs;$DLLTOOL --as=$AS --dllname $soname --def $soname-def --base-file $soname-base --output-exp $soname-exp;$LD -s --base-file $soname-base $soname-exp --dll -e ___dll_entry@12 -o $lib libtool.o$libobjs$deplibs;$DLLTOOL --as=$AS --dllname $soname --def $soname-def --base-file $soname-base --output-exp $soname-exp;$LD $soname-exp --dll -e ___dll_entry@12 -o $lib libtool.o$libobjs$deplibs;$rm libtool.o $soname-base $soname-exp' + old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $soname-def --output-lib $objdir/$libname.a;$rm $soname-def' ;; *) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes + archive_cmds='$CC -shared ${wl}-soname $wl$soname -o $lib$libobjs' else ld_shlibs=no fi @@ -598,42 +791,75 @@ if test "$with_gnu_ld" = yes; then esac 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' + runpath_var=LD_RUN_PATH + 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 + ;; + + cygwin32*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + # Very, very bogus. + echo ' +#include + +struct _reent *_impure_ptr; +extern struct _reent *__imp_reent_data; +BOOL APIENTRY +__dll_entry (HINSTANCE hinst, DWORD reason, LPVOID reserved) +{ + _impure_ptr = __imp_reent_data; +} +' > libtool.c + archive_cmds='$CC -c '"`pwd`"'/libtool.c;echo EXPORTS > $soname-def;$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' >> $soname-def;$LD -s --base-file $soname-base --dll -e ___dll_entry@12 -o $lib libtool.o$libobjs$deplibs;$DLLTOOL --as=$AS --dllname $soname --def $soname-def --base-file $soname-base --output-exp $soname-exp;$LD -s --base-file $soname-base $soname-exp --dll -e ___dll_entry@12 -o $lib libtool.o$libobjs$deplibs;$DLLTOOL --as=$AS --dllname $soname --def $soname-def --base-file $soname-base --output-exp $soname-exp;$LD $soname-exp --dll -e ___dll_entry@12 -o $lib libtool.o$libobjs$deplibs;$rm libtool.o $soname-base $soname-exp' + old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $soname-def --output-lib $objdir/$libname.a;$rm $soname-def' + ;; + # 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,55 +867,85 @@ 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' + hpux10* | hpux11*) + 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' + if test "$with_gcc" = yes; then + archive_cmds='$CC -shared -o $lib ${wl}-soname ${wl}$soname ${wl}-set_version ${wl}$verstring$libobjs' + else + archive_cmds='$LD -shared -o $lib -soname $soname -set_version $verstring$libobjs' + fi 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*) @@ -700,19 +956,208 @@ else 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]' + ;; +cygwin32*) + sympat='_\([_A-Za-z][_A-Za-z0-9]*\)' + symxfrm='_\1 \1' + ;; +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 + +case "$host_os" in +cygwin32*) + # We do not want undefined symbols on cygwin32. The user must + # arrange to define them via -l arguments. + symcode='[ABCDGISTW]' + ;; +esac + +# 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:1069: \"$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:1072: 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:1130: \"$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 && \ @@ -725,32 +1170,30 @@ if test -n "$hardcode_libdir_flag_spec" || \ # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi -elif test "$hardcode_direct" != yes && \ - test "$hardcode_minus_L" != yes && \ - test "$hardcode_shlibpath_var" != yes; then - # We can't hardcode anything. - hardcode_action=unsupported else - # We can only hardcode existing directories. - hardcode_action=relink + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported fi -echo $ac_t "$hardcode_action" 1>&6 -test "$hardcode_action" = unsupported && can_build_shared=no +echo "$ac_t$hardcode_action" 1>&6 reload_flag= 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. +# PORTME Some linkers may need a different reload flag. reload_flag='-r' -echo $ac_t "$reload_flag" +echo "$ac_t$reload_flag" 1>&6 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,42 +1202,55 @@ 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' + ;; + +cygwin32*) + version_type=windows + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a' + dynamic_linker='Win32 ld.exe' + shlibpath_var=PATH ;; freebsd2* | freebsd3*) version_type=sunos - library_names_spec='$libname.so.$versuffix $libname.so' + 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 ;; -hpux9* | hpux10*) +hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. 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,8 +1262,8 @@ 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' + 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 @@ -824,76 +1280,75 @@ linux-gnu*) netbsd* | openbsd*) version_type=sunos - library_names_spec='$libname.so.$versuffix' + 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' + 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 + ;; + *) 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,28 +1359,98 @@ 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 -ofile=libtool -trap "$rm $ofile; exit 1" 1 2 15 -echo creating $ofile -rm -fr $ofile -cat < $ofile -#! /bin/sh +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 old_DLLTOOL old_AS AR CC LD LN_S NM DLLTOOL AS 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 -# libtool - Provide generalized library-building support services. -# +trap "$rm \"$ofile\"; exit 1" 1 2 15 +echo "creating $ofile" +$rm "$ofile" +cat < "$ofile" +#! $SHELL + +# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM - GNU $PACKAGE $VERSION -# This program was configured as follows, -# on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# 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. + +# 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 + +### BEGIN LIBTOOL CONFIG +# Libtool 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" \\ +# DLLTOOL="$old_DLLTOOL" AS="$old_AS" \\ # $0$ltconfig_args # # Compiler and other test output produced by $progname, useful for @@ -934,72 +1459,106 @@ cat < $ofile # The version of $progname that generated this script. LTCONFIG_VERSION="$VERSION" -# Whether or not to build libtool libraries. +# Shell to use when invoking shell scripts. +SHELL="$SHELL" + +# Whether or not to build shared libraries. build_libtool_libs=$enable_shared -# Whether or not to build old-style libraries. +# Whether or not to build static libraries. build_old_libs=$enable_static # The host system. host_alias="$host_alias" host="$host" +# An echo program that does not interpret backslashes. +echo="$ltecho" + # 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" + +# Used on cygwin32: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin32: assembler. +AS="$AS" + +# 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" + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval="$finish_eval" -# How to strip a library file. -striplib='$striplib' -old_striplib='$old_striplib' +# 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 +1571,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,37 +1584,33 @@ 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 +echo '### END LIBTOOL CONFIG' >> "$ofile" +echo >> "$ofile" + +# Append the ltmain.sh script. +cat "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) -chmod +x $ofile +chmod +x "$ofile" exit 0 # Local Variables: diff --git a/ltmain.sh b/ltmain.sh index cda618977f0..1893b011a6d 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.2a 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 @@ -90,6 +111,16 @@ do exit 0 ;; + --config) + sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0 + exit 0 + ;; + + --debug) + echo "$progname: enabling shell trace mode" + set -x + ;; + --dry-run | -n) run=: ;; @@ -114,9 +145,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 +167,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 +190,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 +327,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 +376,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 +405,450 @@ 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 .*$PACKAGE") >/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 + ;; + 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,225 +859,316 @@ 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 - # Parse the version information argument. - IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' - set dummy $vinfo - IFS="$save_ifs" + if test -z "$rpath"; then + $echo "$modename: you must specify an installation directory with \`-rpath'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi - if test -n "$5"; then - echo "$progname: too many parameters to \`-version-info'" 1>&2 - echo "$help" 1>&2 - exit 1 + 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" - test -n "$2" && current="$2" - test -n "$3" && revision="$3" - test -n "$4" && age="$4" + if test -n "$vinfo"; then - # Check that each of the things are valid numbers. - 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 - exit 1 - ;; - esac + # Parse the version information argument. + IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' + set dummy $vinfo + IFS="$save_ifs" - 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 - exit 1 - ;; - esac + if test -n "$5"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi - 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 - exit 1 - ;; - esac + test -n "$2" && current="$2" + test -n "$3" && revision="$3" + test -n "$4" && age="$4" - 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 - exit 1 - fi + # Check that each of the things are valid numbers. + case "$current" in + 0 | [1-9] | [1-9][0-9]*) ;; + *) + $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac - # Calculate the version variables. - version_vars="version_type current age revision" - case "$version_type" in - none) ;; + case "$revision" in + 0 | [1-9] | [1-9][0-9]*) ;; + *) + $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac - linux) - version_vars="$version_vars major versuffix" - major=`expr $current - $age` - versuffix="$major.$age.$revision" - ;; + case "$age" in + 0 | [1-9] | [1-9][0-9]*) ;; + *) + $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac - 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 + if test $age -gt $current; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + fi - # Make executables depend on our current version. - verstring="$verstring:${current}.0" - ;; + # Calculate the version variables. + version_vars="version_type current age revision" + case "$version_type" in + none) ;; - sunos) - version_vars="$version_vars major versuffix" - major="$current" - versuffix="$current.$revision" - ;; + linux) + version_vars="$version_vars major versuffix" + major=.`expr $current - $age` + versuffix=".$major.$age.$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 - ;; - esac + osf) + version_vars="$version_vars versuffix verstring" + major=.`expr $current - $age` + versuffix=."$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test $loop != 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + version_vars="$version_vars major versuffix" + major=."$current" + versuffix=."$current.$revision" + ;; + + windows) + # Like Linux, but with '-' rather than '.', since we only + # want one extension on Windows 95. + version_vars="$version_vars major versuffix" + major=`expr $current - $age` + versuffix="-$major-$age-$revision" + ;; + + *) + $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 + else + + # No version information. + version_vars= + + case "$version_type" in + none) ;; + + linux) + version_vars="$version_vars versuffix major" + major= + versuffix= + ;; + + osf) + version_vars="$version_vars versuffix verstring" + major= + versuffix= + verstring=":0.0" + ;; + + sunos) + version_vars="$version_vars major versuffix" + major= + versuffix= + ;; + + windows) + # Like Linux, but with '-' rather than '.', and with a leading + # '-', since we only want one extension on Windows 95. + version_vars="$version_vars major versuffix" + major= + versuffix= + ;; + + *) + $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 + fi # 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 + if test "$realname" != "$linkname"; then + $show "(cd $objdir && $LN_S $realname $linkname)" + $run eval '(cd $objdir && $LN_S $realname $linkname)' || exit $? + fi + 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 "$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 "$install_libdir"; then - echo "$progname: warning: \`-rpath' is ignored while creating objects" 1>&2 + 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 +1178,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,111 +1205,289 @@ 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 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/ $//'` - # 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 + # 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 - ;; - esac + if test "$hardcode_action" = relink; then + # 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 + fi $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 "\ +#! $SHELL # $output - temporary wrapper script for $objdir/$output # Generated by $PROGRAM - GNU $PACKAGE $VERSION @@ -981,96 +1498,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,11 +1619,11 @@ 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 @@ -1098,14 +1636,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,31 +1660,50 @@ EOF # libtool install mode install) - progname="$progname: install" - - # The first argument is the name of the installation program. - install_prog="$nonopt" + modename="$modename: install" - # CYGNUS LOCAL: Handle /bin/sh at the start. - if test "$install_prog" = "/bin/sh"; then - install_prog=$1 + # There may be an optional sh(1) 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 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= files= opts= prev= install_type= - isdir= + isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" - dest="$arg" - continue + dest="$arg" + continue fi case "$arg" in @@ -1153,83 +1713,95 @@ 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 - if test -n "$isdir"; then + if test "$isdir" = yes; then 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= @@ -1238,69 +1810,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 .*$PACKAGE") >/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 @@ -1309,179 +1871,169 @@ 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 + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi - 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 .*$PACKAGE") >/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 $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || 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" @@ -1492,106 +2044,224 @@ 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" + admincmds= + + 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" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $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 at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" - if test -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 -n "$admincmds"; then + echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo + echo "See any operating system documentation about shared libraries for" + 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" + + # 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 - # Check to see that this really is a libtool archive. - if egrep "^# Generated by $PROGRAM" $arg >/dev/null 2>&1; then : + # 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 .*$PACKAGE") >/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 .*$PACKAGE") >/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= @@ -1604,93 +2274,128 @@ 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" + # Possibly a libtool archive, so verify it. + if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/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 - # FIXME: should reinstall the best remaining shared library. - 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 diff --git a/mpw-build.in b/mpw-build.in deleted file mode 100644 index 86d9530fa3b..00000000000 --- a/mpw-build.in +++ /dev/null @@ -1,204 +0,0 @@ -# Top-level script fragment to build everything for MPW. - -Set savedir "`Directory`" - -#Set Echo 1 - -Set ThisScript "{0}" - -Set objdir ":" - -Set verify 0 - -Set BuildTarget "none" - -# Parse arguments. - -Loop - Break If {#} == 0 - If "{BuildTarget}" =~ /none/ - Set BuildTarget "{1}" - Else - Echo Only one build target allowed, ignoring "{1}" - End If - Shift 1 -End Loop - -If "{BuildTarget}" =~ /none/ - Set BuildTarget "all" -End If - -If {verify} == 1 - Echo "#" Doing "{ThisScript}" "{BuildTarget}" in "`Directory`" ... -End If - -Set ranmake 0 - -If "`Exists Makefile`" != "" - Echo "Set Echo 1" >{BuildTarget}.makeout - Make -f Makefile {BuildTarget} >>{BuildTarget}.makeout - {BuildTarget}.makeout - Delete {BuildTarget}.makeout - Set ranmake 1 -End If - -If "`Exists Makefile.PPC`" != "" - Echo "Set Echo 1" >{BuildTarget}.makeout.ppc - Make -f Makefile.PPC {BuildTarget} >>{BuildTarget}.makeout.ppc - {BuildTarget}.makeout.ppc - Delete {BuildTarget}.makeout.ppc - Set ranmake 1 -End If - -If {ranmake} == 1 - Exit -End If - -# Dispatch on various pseudo-targets. - -If "{BuildTarget}" =~ /all/ - Echo Started `Date` - "{ThisScript}" all-gcc - "{ThisScript}" all-gdb - Echo Finished `Date` -Else If "{BuildTarget}" =~ /all-libiberty/ - "{ThisScript}" do-libiberty -Else If "{BuildTarget}" =~ /all-bfd/ - "{ThisScript}" do-bfd -Else If "{BuildTarget}" =~ /all-opcodes/ - "{ThisScript}" do-opcodes -Else If "{BuildTarget}" =~ /all-byacc/ - "{ThisScript}" do-byacc -Else If "{BuildTarget}" =~ /all-flex/ - "{ThisScript}" all-libiberty - "{ThisScript}" do-flex -Else If "{BuildTarget}" =~ /all-binutils/ - "{ThisScript}" all-libiberty - "{ThisScript}" all-bfd - "{ThisScript}" all-opcodes - "{ThisScript}" do-binutils -Else If "{BuildTarget}" =~ /all-gas/ - "{ThisScript}" all-libiberty - "{ThisScript}" all-bfd - "{ThisScript}" all-opcodes - "{ThisScript}" do-gas -Else If "{BuildTarget}" =~ /all-gcc/ - "{ThisScript}" all-libiberty - "{ThisScript}" all-gas - "{ThisScript}" all-binutils - "{ThisScript}" all-ld - "{ThisScript}" do-gcc -Else If "{BuildTarget}" =~ /all-gdb/ - "{ThisScript}" all-libiberty - "{ThisScript}" all-bfd - "{ThisScript}" all-opcodes - "{ThisScript}" do-gdb -Else If "{BuildTarget}" =~ /all-grez/ - "{ThisScript}" all-libiberty - "{ThisScript}" all-bfd - "{ThisScript}" do-grez -Else If "{BuildTarget}" =~ /all-ld/ - "{ThisScript}" all-libiberty - "{ThisScript}" all-bfd - "{ThisScript}" all-opcodes - "{ThisScript}" do-ld -Else If "{BuildTarget}" =~ /do-byacc/ - SetDirectory :byacc: - ::mpw-build all -Else If "{BuildTarget}" =~ /do-flex/ - SetDirectory :flex: - ::mpw-build _bootstrap - ::mpw-build all -Else If "{BuildTarget}" =~ /do-bfd/ - SetDirectory :bfd: - ::mpw-build all -Else If "{BuildTarget}" =~ /do-libiberty/ - SetDirectory :libiberty: - ::mpw-build all -Else If "{BuildTarget}" =~ /do-opcodes/ - SetDirectory :opcodes: - ::mpw-build all -Else If "{BuildTarget}" =~ /do-binutils/ - SetDirectory :binutils: - ::mpw-build stamps - ::mpw-build all -Else If "{BuildTarget}" =~ /do-gas/ - SetDirectory :gas: - ::mpw-build stamps - ::mpw-build all -Else If "{BuildTarget}" =~ /do-gcc/ - SetDirectory :gcc: - :mpw-build all -Else If "{BuildTarget}" =~ /do-gdb/ - SetDirectory :gdb: - ::mpw-build all -Else If "{BuildTarget}" =~ /do-grez/ - SetDirectory :grez: - ::mpw-build all -Else If "{BuildTarget}" =~ /do-ld/ - SetDirectory :ld: - ::mpw-build all -Else If "{BuildTarget}" =~ /do-newlib/ - SetDirectory :newlib: - ::mpw-build all -Else If "{BuildTarget}" =~ /install/ - "{ThisScript}" install-only-top - "{ThisScript}" install-binutils - "{ThisScript}" install-gas - "{ThisScript}" install-gcc - "{ThisScript}" install-ld - "{ThisScript}" install-gdb -Else If "{BuildTarget}" =~ /install-binutils/ - SetDirectory :binutils: - ::mpw-build install -Else If "{BuildTarget}" =~ /install-gas/ - SetDirectory :gas: - ::mpw-build install -Else If "{BuildTarget}" =~ /install-gcc/ - SetDirectory :gcc: - :mpw-build install -Else If "{BuildTarget}" =~ /install-gdb/ - SetDirectory :gdb: - ::mpw-build install -Else If "{BuildTarget}" =~ /install-grez/ - SetDirectory :grez: - ::mpw-build install -Else If "{BuildTarget}" =~ /install-ld/ - SetDirectory :ld: - ::mpw-build install -Else If "{BuildTarget}" =~ /install-only/ - "{ThisScript}" install-only-top - "{ThisScript}" install-only-binutils - "{ThisScript}" install-only-gas - "{ThisScript}" install-only-gcc - "{ThisScript}" install-only-gdb - "{ThisScript}" install-only-ld -Else If "{BuildTarget}" =~ /install-only-binutils/ - SetDirectory :binutils: - ::mpw-build install-only -Else If "{BuildTarget}" =~ /install-only-gas/ - SetDirectory :gas: - ::mpw-build install-only -Else If "{BuildTarget}" =~ /install-only-gcc/ - SetDirectory :gcc: - :mpw-build install-only -Else If "{BuildTarget}" =~ /install-only-gdb/ - SetDirectory :gdb: - ::mpw-build install-only -Else If "{BuildTarget}" =~ /install-only-grez/ - SetDirectory :grez: - ::mpw-build install-only -Else If "{BuildTarget}" =~ /install-only-ld/ - SetDirectory :ld: - ::mpw-build install-only -Else If "{BuildTarget}" =~ /install-only-top/ - NewFolderRecursive "{prefix}" - If "{prefix}" != "`Directory`" - Duplicate -y 'Read Me for MPW' "{prefix}"'Read Me for MPW' - Duplicate -y Install "{prefix}"Install - End If -Else - Echo {BuildTarget} not understood, ignoring -End If - -SetDirectory "{savedir}" diff --git a/mpw-config.in b/mpw-config.in deleted file mode 100644 index 8028737a8b6..00000000000 --- a/mpw-config.in +++ /dev/null @@ -1,113 +0,0 @@ -# Configuration fragment for Cygnus source tree. - -# Check that we can find all the special tools that we will need. -# The test for sed is semi-pointless, because it's already been invoked -# by the calculation of target_cpu in the main configure script, but -# the test will also show which one is being used. - -Set Exit 0 -Echo byacc is `Which byacc` -Echo flex is `Which flex` -Echo forward-include is `Which forward-include` -Echo MoveIfChange is `Which MoveIfChange` -Echo mpw-touch is `Which mpw-touch` -Echo mpw-true is `Which mpw-true` -Echo NewFolderRecursive is `Which NewFolderRecursive` -Echo null-command is `Which null-command` -Echo open-brace is `Which open-brace` -Echo sed is `Which sed` -Echo 'tr-7to8' is `Which tr-7to8` -Echo true is `Which true` -Set Exit 1 - -Set host_libs "mmalloc libiberty opcodes bfd readline gash tcl tk tclX" - -Set host_tools "texinfo byacc flex bison binutils ld gas gcc gdb make patch \Option-d - prms send-pr gprof gdbtest tgas etc expect dejagnu sim bash \Option-d - m4 autoconf ispell grep diff rcs cvs fileutils shellutils time \Option-d - textutils wdiff find emacs emacs19 uudecode hello tar gzip indent \Option-d - recode release sed utils guile perl apache inet gawk" - -Set target_libs "newlib" - -Set target_tools "examples" - -# Configure the resource compiler if targeting Macs. -If {target_os} =~ /macos/ || {target_os} =~ /mpw/ - Set host_tools "{host_tools} grez" -End If - -Set configdirs "{host_libs} {host_tools} {target_libs} {target_tools}" -Export configdirs - -# Make up a special include directory that tools will share. - -If "`Exists "{objdir}"extra-include`" == "" - NewFolder "{objdir}"extra-include -End If - -Set edir "{objdir}extra-include:" - -forward-include "{srcdir}"include:mpw:sys:file.h "{edir}"'sys/file.h' -forward-include "{srcdir}"include:mpw:sys:ioctl.h "{edir}"'sys/ioctl.h' -forward-include "{srcdir}"include:mpw:sys:param.h "{edir}"'sys/param.h' -forward-include "{srcdir}"include:mpw:sys:resource.h "{edir}"'sys/resource.h' -forward-include "{srcdir}"include:mpw:sys:stat.h "{edir}"'sys/stat.h' -forward-include "{srcdir}"include:mpw:sys:time.h "{edir}"'sys/time.h' -forward-include "{srcdir}"include:mpw:sys:types.h "{edir}"'sys/types.h' - -forward-include "{srcroot}"include:aout:aout64.h "{edir}"'aout/aout64.h' -forward-include "{srcroot}"include:aout:ar.h "{edir}"'aout/ar.h' -forward-include "{srcroot}"include:aout:ranlib.h "{edir}"'aout/ranlib.h' -forward-include "{srcroot}"include:aout:reloc.h "{edir}"'aout/reloc.h' -forward-include "{srcroot}"include:aout:stab.def "{edir}"'aout/stab.def' -forward-include "{srcroot}"include:aout:stab_gnu.h "{edir}"'aout/stab_gnu.h' - -If "`Exists "{srcroot}"include:aout:"{target_cpu}".h`" != "" - forward-include "{srcroot}"include:aout:"{target_cpu}".h "{edir}"'aout/'"{target_cpu}"'.h' -End If - -forward-include "{srcroot}"include:coff:ecoff.h "{edir}"'coff/ecoff.h' -forward-include "{srcroot}"include:coff:internal.h "{edir}"'coff/internal.h' -forward-include "{srcroot}"include:coff:sym.h "{edir}"'coff/sym.h' -forward-include "{srcroot}"include:coff:symconst.h "{edir}"'coff/symconst.h' - -If "`Exists "{srcroot}"include:coff:"{target_cpu}".h`" != "" - forward-include "{srcroot}"include:coff:"{target_cpu}".h "{edir}"'coff/'"{target_cpu}"'.h' -End If -If "{target_cpu}" =~ /powerpc/ - forward-include "{srcroot}"include:coff:rs6000.h "{edir}"'coff/rs6000.h' -End If - -forward-include "{srcroot}"include:elf:common.h "{edir}"'elf/common.h' -forward-include "{srcroot}"include:elf:dwarf.h "{edir}"'elf/dwarf.h' -forward-include "{srcroot}"include:elf:dwarf2.h "{edir}"'elf/dwarf2.h' -forward-include "{srcroot}"include:elf:external.h "{edir}"'elf/external.h' -forward-include "{srcroot}"include:elf:internal.h "{edir}"'elf/internal.h' - -# Believe it or not, GDB needs this for all targets. -forward-include "{srcroot}"include:elf:mips.h "{edir}"'elf/mips.h' - -If "`Exists "{srcroot}"include:elf:"{target_cpu}".h`" != "" - forward-include "{srcroot}"include:elf:"{target_cpu}".h "{edir}"'elf/'"{target_cpu}"'.h' -End If -If "{target_cpu}" =~ /powerpc/ - forward-include "{srcroot}"include:elf:ppc.h "{edir}"'elf/ppc.h' -End If - -If "`Exists "{srcroot}"include:opcode:"{target_cpu}".h`" != "" - forward-include "{srcroot}"include:opcode:"{target_cpu}".h "{edir}"'opcode/'"{target_cpu}"'.h' -End If -If "{target_cpu}" =~ /powerpc/ - forward-include "{srcroot}"include:opcode:ppc.h "{edir}"'opcode/ppc.h' -End If - -# Add some bfd includes that get mentioned outside the bfd dir. - -forward-include "{srcroot}"bfd:libcoff.h "{edir}"'bfd/libcoff.h' -forward-include "{srcroot}"bfd:libecoff.h "{edir}"'bfd/libecoff.h' - -# Translate random files into MPW-only character set. - -tr-7to8 "{srcdir}"mpw-README > "{objdir}Read Me for MPW" -tr-7to8 "{srcdir}"mpw-install > "{objdir}"Install diff --git a/mpw-configure b/mpw-configure deleted file mode 100644 index cf45148ec63..00000000000 --- a/mpw-configure +++ /dev/null @@ -1,448 +0,0 @@ -# Configuration script -# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 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. - -### WARNING -### This script must NOT use any 8-bit chars! -### WARNING - -# This is an MPW Shell script that sets everything up for compilation, -# mainly creating directories, and editing copies of files. - -Set savedir "`Directory`" - -#Set Echo 1 - -Set ThisScript "{0}" - -Set srcroot "--------" - -Set srcdir ":" - -Set objdir ":" - -Set prefix "{MPW}":GNUTools: - -Set exec_prefix "" - -Set bindir "" - -Set host_alias "m68k-apple-mpw" - -Set target_alias {host_alias} - -Set host_cc "mpwc" - -Set with_gnu_ld 0 - -Set helpoutput 0 - -Set recurse 1 - -Set verify 0 -Set verifystr "" - -Set enable_options "" -Set disable_options "" - -# Parse arguments. - -Loop - Break If {#} == 0 - If "{1}" =~ /--cc/ - Set host_cc "{2}" - Shift 1 - Else If "{1}" =~ /--bindir/ - Set bindir "{2}" - Shift 1 - Else If "{1}" =~ /--disable-?+/ - Set `Echo {1} | sed -e 's/--disable-/enable_/'` no - Set disable_options "{disable_options} '{1}'" - Else If "{1}" =~ /--enable-?+/ - Set `Echo {1} | sed -e 's/--enable-/enable_/'` yes - Set enable_options "{enable_options} '{1}'" - Else If "{1}" =~ /--exec-prefix/ - Set exec_prefix "{2}" - Shift 1 - Else If "{1}" =~ /--help/ - Set helpoutput 1 - Else If "{1}" =~ /--host/ - Set host_alias "{2}" - Shift 1 - Else If "{1}" =~ /--norecursion/ - Set recurse 0 - Else If "{1}" =~ /--prefix/ - Set prefix "{2}" - Shift 1 - Else If "{1}" =~ /--srcdir/ - Set srcdir "{2}" - Shift 1 - Else If "{1}" =~ /--srcroot/ - Set srcroot "{2}" - Shift 1 - Else If "{1}" =~ /--target/ - Set target_alias "{2}" - Shift 1 - Else If "{1}" =~ /-v/ - Set verify 1 - Set verifystr "-v" - Else If "{1}" =~ /--with-gnu-ld/ - Set with_gnu_ld 1 - Else - Echo -n 'mpw-configure: Unrecognized option: "' - Echo -n "{1}" - Echo '"; use --help for usage.' - Exit 1 - End If - Shift 1 -End Loop - -If {helpoutput} == 1 - Echo "Usage: mpw-configure [OPTIONS]" - Echo "" - Echo "Options: [defaults in brackets]" - Echo "--bindir DIR directory for binaries []" - Echo "--cc CC use C compiler CC [mpwc]" - Echo "--disable-FOO do not include feature FOO" - Echo "--enable-FOO include feature FOO" - Echo "--exec-prefix DIR install host-dependent files into DIR []" - Echo "--help print this message" - Echo "--host HOST configure for HOST [m68k-apple-mpw]" - Echo "--norecursion configure this directory only [recurse]" - Echo "--prefix DIR install into DIR [{MPW}:GNUTools:]" - Echo "--srcdir DIR find the sources in DIR [:]" - Echo "--srcroot DIR find the toplevel sources in DIR [:]" - Echo "--target TARGET configure for TARGET [TARGET=HOST]" - Echo "-v verbose" - Echo "--with-gnu-ld link using GNU ld [no]" - Exit 0 -End If - -Set Exit 0 - -# Default exec_prefix from prefix. - -If "{exec_prefix}" == "" - Set exec_prefix "{prefix}" -End If - -If "{bindir}" == "" - Set bindir "{prefix}"bin: -End If - -# Point to the correct set of tools to use with the chosen compiler. - -If "{host_cc}" =~ /mpwc/ - Set host_alias "m68k-apple-mpw" - Set cc_name '{CC_MPW_C}' - Set segment_flag '-s ' - Set ar_name '{AR_LIB}' - Set ranlib_name '{RANLIB_NULL}' - Set cc_ld_name '{CC_LD_LINK}' - Set prog_ext_name '{PROG_EXT_68K}' - Set extralibs_name '{EXTRALIBS_C}' - Set makepef_name '{MAKEPEF_NULL}' - Set rez_name '{REZ_68K}' -Else If "{host_cc}" =~ /sc68k/ - Set host_alias "m68k-apple-mpw" - Set cc_name '{CC_SC}' - Set segment_flag '-s ' - Set ar_name '{AR_LIB}' - Set ranlib_name '{RANLIB_NULL}' - Set cc_ld_name '{CC_LD_LINK}' - Set prog_ext_name '{PROG_EXT_68K}' - Set extralibs_name '{EXTRALIBS_C}' - Set makepef_name '{MAKEPEF_NULL}' - Set rez_name '{REZ_68K}' -Else If "{host_cc}" =~ /mwc68k/ - Set host_alias "m68k-apple-mpw" - Set cc_name '{CC_MWC68K}' - Set segment_flag '-s ' - Set ar_name '{AR_MWLINK68K}' - Set ranlib_name '{RANLIB_NULL}' - Set cc_ld_name '{CC_LD_MWLINK68K}' - Set prog_ext_name '{PROG_EXT_68K}' - Set extralibs_name '{EXTRALIBS_MWC68K}' - Set makepef_name '{MAKEPEF_NULL}' - Set rez_name '{REZ_68K}' -Else If "{host_cc}" =~ /gcc68k/ - Set host_alias "m68k-apple-mpw" - Set cc_name '{CC_68K_GCC}' - Set segment_flag '-s ' - Set ar_name '{AR_68K_AR}' - Set ranlib_name '{RANLIB_RANLIB}' - Set cc_ld_name '{CC_68K_GCC}' - Set prog_ext_name '{PROG_EXT_68K}' - Set extralibs_name '{EXTRALIBS_C}' - Set makepef_name '{MAKEPEF_NULL}' - Set rez_name '{REZ_68K}' -Else If "{host_cc}" =~ /ppcc/ - Set host_alias "powerpc-apple-mpw" - Set cc_name '{CC_PPCC}' - Set segment_flag '-d ___s_e_g___=' - Set ar_name '{AR_PPCLINK}' - Set ranlib_name '{RANLIB_NULL}' - Set cc_ld_name '{CC_LD_PPCLINK}' - Set prog_ext_name '{PROG_EXT_XCOFF}' - Set extralibs_name '{EXTRALIBS_PPC}' - Set makepef_name '{MAKEPEF_PPC}' - Set rez_name '{REZ_PPC}' -Else If "{host_cc}" =~ /mrc/ - Set host_alias "powerpc-apple-mpw" - Set cc_name '{CC_MRC}' - Set segment_flag '-d ___s_e_g___=' - Set ar_name '{AR_PPCLINK}' - Set ranlib_name '{RANLIB_NULL}' - Set cc_ld_name '{CC_LD_PPCLINK}' - Set prog_ext_name '{PROG_EXT_XCOFF}' - Set extralibs_name '{EXTRALIBS_PPC}' - Set makepef_name '{MAKEPEF_PPC}' - Set rez_name '{REZ_PPC}' -Else If "{host_cc}" =~ /scppc/ - Set host_alias "powerpc-apple-mpw" - Set cc_name '{CC_SC}' - Set segment_flag '-d ___s_e_g___=' - Set ar_name '{AR_PPCLINK}' - Set ranlib_name '{RANLIB_NULL}' - Set cc_ld_name '{CC_LD_PPCLINK}' - Set prog_ext_name '{PROG_EXT_XCOFF}' - Set extralibs_name '{EXTRALIBS_PPC}' - Set makepef_name '{MAKEPEF_PPC}' - Set rez_name '{REZ_PPC}' -Else If "{host_cc}" =~ /mwcppc/ - Set host_alias "powerpc-apple-mpw" - Set cc_name '{CC_MWCPPC}' - Set segment_flag '-d ___s_e_g___=' - Set ar_name '{AR_MWLINKPPC}' - Set ranlib_name '{RANLIB_NULL}' - Set cc_ld_name '{CC_LD_MWLINKPPC}' - # Misleading, but we don't need a PEF step. - Set prog_ext_name '{PROG_EXT_68K}' - Set extralibs_name '{EXTRALIBS_MWCPPC}' - Set makepef_name '{MAKEPEF_NULL}' - Set rez_name '{REZ_PPC}' -Else If "{host_cc}" =~ /gccppc/ - Set host_alias "powerpc-apple-mpw" - Set cc_name '{CC_PPC_GCC}' - Set segment_flag '-d ___s_e_g___=' - Set ar_name '{AR_PPCLINK}' - If {with_gnu_ld} == 1 - Set ranlib_name '{RANLIB_RANLIB}' - Set cc_ld_name '{CC_LD_GLD}' - Else - Set ranlib_name '{RANLIB_NULL}' - Set cc_ld_name '{CC_LD_PPCLINK}' - End If - Set prog_ext_name '{PROG_EXT_XCOFF}' - Set extralibs_name '{EXTRALIBS_PPC}' - Set makepef_name '{MAKEPEF_PPC}' - Set rez_name '{REZ_PPC}' -Else - Echo "{host_cc}" is not a known MPW compiler type -End If - -Set dash_c_flag '' -If "{host_cc}" =~ /gcc68k/ - Set dash_c_flag '-c' -Else If "{host_cc}" =~ /gccppc/ - Set dash_c_flag '-c' -End If - -# (should interpret aliases if not in canonical form) - -Set host_canonical "{host_alias}" - -Set target_canonical "{target_alias}" - -Set configdirs "" - -If "{srcroot}" =~ /--------/ - Set srcroot "{srcdir}" -End If -If "`Exists "{srcdir}"`" == "" - Echo Source directory {srcdir} does not exist! - Exit 1 -End If -If "`Exists "{srcroot}"`" == "" - Echo Top-level source directory {srcroot} does not exist! - Exit 1 -End If - -Set target_cpu "`echo {target_canonical} | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'`" -Set target_vendor "`echo {target_canonical} | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'`" -Set target_os "`echo {target_canonical} | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'`" - -# Create a file that is guaranteed to be older than any other here. - -If "`Exists "{objdir}"_oldest`" == "" - mpw-touch _oldest -End If - -# Record this before creating any files, makefiles sometimes mention -# dependencies on config.status. - -Echo "# This directory was configured as follows:" >config.new -Echo "{ThisScript} --host {host_alias} --target {target_alias} --srcdir {srcdir} --srcroot {srcroot} --prefix {prefix} --cc {host_cc} {verifystr} {enable_options} {disable_options} --norecursion" >>config.new -MoveIfChange config.new config.status - -If "`Exists "{srcdir}"mpw-config.in`" != "" - tr-7to8 "{srcdir}"mpw-config.in >"{objdir}"mpw-config.in - Execute "{objdir}"mpw-config.in -End If - -# Start Makefile construction by defining all the variables chosen by -# configuration. - -Echo "# This Makefile produced by mpw-configure. Changes may get lost!" > "{objdir}"Makefile.tem -Echo "srcroot = " {srcroot} >> "{objdir}"Makefile.tem -Echo "topsrcdir = " {srcroot} >> "{objdir}"Makefile.tem -Echo "srcdir = " {srcdir} >> "{objdir}"Makefile.tem -Echo "mpw_prefix = " {prefix} >> "{objdir}"Makefile.tem -Echo "mpw_exec_prefix = " {exec_prefix} >> "{objdir}"Makefile.tem -Echo "mpw_bindir = " {bindir} >> "{objdir}"Makefile.tem -Echo "host_alias = " {host_alias} >> "{objdir}"Makefile.tem -Echo "target_alias = " {target_alias} >> "{objdir}"Makefile.tem -Echo "target_cpu = " {target_cpu} >> "{objdir}"Makefile.tem -Echo "target_vendor = " {target_vendor} >> "{objdir}"Makefile.tem -Echo "target_os = " {target_os} >> "{objdir}"Makefile.tem -Echo "target_canonical = " {target_canonical} >> "{objdir}"Makefile.tem -Echo "host_makefile_frag = " >> "{objdir}"Makefile.tem -Echo "target_makefile_frag = " >> "{objdir}"Makefile.tem -Echo "CC = " {cc_name} >> "{objdir}"Makefile.tem -Echo "AR = " {ar_name} >> "{objdir}"Makefile.tem -Echo "RANLIB = " {ranlib_name} >> "{objdir}"Makefile.tem -Echo "CC_LD = " {cc_ld_name} >> "{objdir}"Makefile.tem -Echo "PROG_EXT = " {prog_ext_name} >> "{objdir}"Makefile.tem -Echo "EXTRALIBS = " {extralibs_name} >> "{objdir}"Makefile.tem -Echo "MAKEPEF = " {makepef_name} >> "{objdir}"Makefile.tem -Echo "REZ = " {rez_name} >> "{objdir}"Makefile.tem - -If {host_cc} =~ /gccppc/ - Echo -n "dq =\Option-d\Option-d\Option-d" > "{objdir}"Makefile.tem0 - Echo '"' >> "{objdir}"Makefile.tem0 - tr-7to8 "{objdir}"Makefile.tem0 >>"{objdir}"Makefile.tem -Else - Echo -n "dq ='" >> "{objdir}"Makefile.tem - Echo -n '"' >> "{objdir}"Makefile.tem - Echo "'" >> "{objdir}"Makefile.tem -End If - -# Append the master set of definitions for the various compilers. - -If "`Exists "{srcdir}"config:mpw-mh-mpw`" != "" - tr-7to8 "{srcdir}"config:mpw-mh-mpw >>"{objdir}"Makefile.tem -Else If "`Exists "{srcroot}"config:mpw-mh-mpw`" != "" - tr-7to8 "{srcroot}"config:mpw-mh-mpw >>"{objdir}"Makefile.tem -Else - Echo "can't find a host config file!" - Exit 0 -End If - -# Append anything produced by the directory's mpw-config.in. - -If "`Exists "{objdir}"mk.tmp`" != "" - Catenate "{objdir}"mk.tmp >>"{objdir}"Makefile.tem - # An mpw-config.in might change so as not to create this - # anymore, so get rid of it now to be safe. - Delete -i -y "{objdir}"mk.tmp -End If - -# If there are sed scripts to edit the Unix Makefile.in, use them; otherwise -# use an mpw-make.in if present. - -If "`Exists "{srcdir}"mpw-make.sed`" != "" - If "`Exists "{objdir}"hacked_Makefile.in`" != "" - Set MakefileIn "{objdir}"hacked_Makefile.in - Else - Set MakefileIn "{srcdir}"Makefile.in - End If - # Find the generic makefile editing script. - If "`Exists "{srcroot}"config:mpw:g-mpw-make.sed`" != "" - sed -f "{srcroot}"config:mpw:g-mpw-make.sed "{MakefileIn}" >"{objdir}"Makefile.tem1 - Else If "`Exists "{srcroot}"utils:mpw:g-mpw-make.sed`" != "" - sed -f "{srcroot}"utils:mpw:g-mpw-make.sed "{MakefileIn}" >"{objdir}"Makefile.tem1 - Else If "`Exists "{srcdir}"g-mpw-make.sed`" != "" - sed -f "{srcdir}"g-mpw-make.sed "{MakefileIn}" >"{objdir}"Makefile.tem1 - Else - Echo Warning: g-mpw-make.sed not found, copying "{MakefileIn}" verbatim... - Catenate "{MakefileIn}" >"{objdir}"Makefile.tem1 - End If - sed -f "{srcdir}"mpw-make.sed "{objdir}"Makefile.tem1 >"{objdir}"Makefile.tem2 - sed -e 's/^prefix = .*$/prefix = {mpw_prefix}/g' -e 's/^exec_prefix = .*$/exec_prefix = {mpw_exec_prefix}/g' -e 's/^bindir = @bindir@/bindir = {mpw_bindir}/g' "{objdir}"Makefile.tem2 >"{objdir}"Makefile.tem3 - sed -e "s/@DASH_C_FLAG@/{dash_c_flag}/" -e "s/@SEGMENT_FLAG(\([^)]*\))@/{segment_flag}\1/" "{objdir}"Makefile.tem3 >"{objdir}"mpw-make.in - tr-7to8 "{objdir}"mpw-make.in >>"{objdir}"Makefile.tem - If "`Exists "{objdir}"mk.sed`" != "" - sed -f "{objdir}"mk.sed "{objdir}"Makefile.tem >"{objdir}"Makefile.tem2 - Rename -y "{objdir}"Makefile.tem2 "{objdir}"Makefile.tem - End If - MoveIfChange "{objdir}"Makefile.tem "{objdir}"Makefile - Delete -i -y "{objdir}"Makefile.tem[12] - If {verify} == 1 - Echo Created Makefile in "`Directory`" - End If -Else If "`Exists "{srcdir}"mpw-make.in`" != "" - sed -e 's/^prefix = .*$/prefix = {mpw_prefix}/g' "{srcdir}"mpw-make.in >"{objdir}"Makefile.tem1 - sed -e "s/@DASH_C_FLAG@/{dash_c_flag}/" -e "s/@SEGMENT_FLAG(\([^)]*\))@/{segment_flag}}\1/" "{objdir}"Makefile.tem1 >"{objdir}"Makefile.tem2 - tr-7to8 "{objdir}"Makefile.tem2 >>"{objdir}"Makefile.tem - If "`Exists "{objdir}"mk.sed`" != "" - sed -f "{objdir}"mk.sed "{objdir}"Makefile.tem >"{objdir}"Makefile.tem2 - Rename -y "{objdir}"Makefile.tem2 "{objdir}"Makefile.tem - End If - MoveIfChange "{objdir}"Makefile.tem "{objdir}"Makefile - Delete -i -y "{objdir}"Makefile.tem[12] - If {verify} == 1 - Echo Created Makefile in "`Directory`" - End If -End If - -# Produce a build script if the source is defined. - -If "`Exists "{srcdir}"mpw-build.in`" != "" - Echo "Set srcroot " {srcroot} > "{objdir}"mpw-build.tem - Echo "Set srcdir " {srcdir} >> "{objdir}"mpw-build.tem - Echo "Set target_canonical " {target_canonical} >> "{objdir}"mpw-build.tem - Echo "Set prefix " {prefix} >> "{objdir}"mpw-build.tem - tr-7to8 "{srcdir}"mpw-build.in >>"{objdir}"mpw-build.tem - MoveIfChange "{objdir}"mpw-build.tem "{objdir}"mpw-build - If {verify} == 1 - Echo Created mpw-build in "`Directory`" - End If -End If - -# Apply ourselves recursively to the list of subdirectories to configure. - -If {recurse} == 1 - For subdir In {configdirs} - Set savedir "`Directory`" - If "`Exists "{srcdir}{subdir}:"`" == "" - If {verify} == 1 - Echo No "{srcdir}{subdir}:" found, skipping - End If - Continue - End If - If {verify} == 1 - Echo Configuring {subdir}... - End If - If "`Exists "{objdir}{subdir}:"`" == "" - NewFolder "{objdir}{subdir}" - End If - SetDirectory "{objdir}{subdir}:" - "{ThisScript}" --target "{target_canonical}" --srcdir "{srcdir}{subdir}:" --srcroot "{srcroot}" --prefix "{prefix}" --cc "{host_cc}" {verifystr} {enable_options} {disable_options} - SetDirectory "{savedir}" - End For -End If - -SetDirectory "{savedir}" diff --git a/mpw-install b/mpw-install deleted file mode 100644 index 04c5aac2a4f..00000000000 --- a/mpw-install +++ /dev/null @@ -1,122 +0,0 @@ -# GNU Install script for MPW. - -Set OldExit "{Exit}" -Set Exit 0 - -Set TempUserStartup "{TempFolder}"__temp__UserStartup - -Echo '# UserStartup generated by GNU Install script' > "{TempUserStartup}" -Echo '' >> "{TempUserStartup}" - -# (should) Check that disk space is sufficient for installation. - -# Assume that the install script is where everything else is. - -Set thisdir "`Directory`" - -# Copy the binaries to the desired place. - -Confirm -t "Copy the binaries to somewhere else?" -Set TmpStatus {Status} -If {TmpStatus} == 0 - Set bindest "`GetFileName -d -m "Where to install the binaries?"`" - If {Status} == 0 - If "`Exists "{thisdir}bin"`" != "" - For afile In "{thisdir}"bin:\Option-x - Duplicate -y "{afile}" "{bindest}" - End For - Else - Echo "bin directory not found, exiting" - Exit 1 - End If - Else - Echo "No destination supplied, exiting" - Exit 1 - End If -Else If {TmpStatus} == 4 - # Use the existing directory. - Set bindest "{thisdir}bin:" -Else - # Cancelled from confirmation, escape altogether. - Exit 1 -End If - -# Copy the libraries to the desired place. - -Confirm -t "Copy the libraries to somewhere else?" -Set TmpStatus {Status} -If {TmpStatus} == 0 - Set libdest "`GetFileName -d -m "Where to install the libraries?"`" - If {Status} == 0 - If "`Exists "{thisdir}lib:"`" != "" - For afile In "{thisdir}"lib:\Option-x - Duplicate -y "{afile}" "{libdest}" - End For - Else - Echo "lib directory not found, exiting" - Exit 1 - End If - Else - Echo "No destination supplied, exiting" - Exit 1 - End If -Else If {TmpStatus} == 4 - # Use the existing directory. - Set libdest "{thisdir}lib:" -Else - # Cancelled from confirmation, escape altogether. - Exit 1 -End If - - -# Add the location of the binaries to the command path. - -Echo -n 'Set Commands "' >> "{TempUserStartup}" -Echo -n "{bindest}" >> "{TempUserStartup}" -Echo ',{Commands}"' >> "{TempUserStartup}" -Echo '' >> "{TempUserStartup}" - -# Set up GCC exec prefix. - -Set gcclibdir "{libdest}"gcc-lib: - -Echo -n 'Set GCC_EXEC_PREFIX "' >> "{TempUserStartup}" -Echo -n "{gcclibdir}" >> "{TempUserStartup}" -Echo '"' >> "{TempUserStartup}" -Echo "Export GCC_EXEC_PREFIX" >> "{TempUserStartup}" -Echo '' >> "{TempUserStartup}" - -# Set up path to libgcc.xcoff etc. - -Echo -n 'Set GCCPPCLibraries "' >> "{TempUserStartup}" -Echo -n "{libdest}" >> "{TempUserStartup}" -Echo '"' >> "{TempUserStartup}" -Echo "Export GCCPPCLibraries" >> "{TempUserStartup}" -Echo '' >> "{TempUserStartup}" - -# Display contents of UserStartup, confirm installation. - -Set UserStartupName "UserStartup\Option-8GNU" - -Echo "Contents of" {UserStartupName} "will be:" -Catenate "{TempUserStartup}" - -Confirm "Install {UserStartupName} into the MPW folder {MPW} ?" -If {Status} == 0 - Duplicate "{TempUserStartup}" "{MPW}{UserStartupName}" - Delete -y "{TempUserStartup}" -Else - Echo "{UserStartupName} file not installed" -End If - -# (should) Check HEXA resource, warn if low. - -# (should) Check for spaces in pathnames, warn if found. - -Echo "Installation was successful." -Echo "" -Echo "Be sure to review the usage notes in 'Read Me for MPW' before proceeding!" - -# Restore previous settings. - -Set Exit "{OldExit}" -- 2.11.0