* configure.in: Look for --enable-shared. Change the value of
authorIan Lance Taylor <ian@airs.com>
Wed, 7 Feb 1996 19:03:38 +0000 (19:03 +0000)
committerIan Lance Taylor <ian@airs.com>
Wed, 7 Feb 1996 19:03:38 +0000 (19:03 +0000)
BFDLIB when linking against a shared library on SunOS.
* configure: Rebuild.
* configure.host: If using a shared BFD library, try to pass a
reasonable -rpath option when linking.
* Makefile.in (BFDLIB): Set to @BFDLIB@.

ld/ChangeLog
ld/Makefile.in
ld/configure
ld/configure.host
ld/configure.in

index cf6ba98..c63e463 100644 (file)
@@ -1,3 +1,17 @@
+Wed Feb  7 14:01:33 1996  Ian Lance Taylor  <ian@cygnus.com>
+
+       * configure.in: Look for --enable-shared.  Change the value of
+       BFDLIB when linking against a shared library on SunOS.
+       * configure: Rebuild.
+       * configure.host: If using a shared BFD library, try to pass a
+       reasonable -rpath option when linking.
+       * Makefile.in (BFDLIB): Set to @BFDLIB@.
+
+Tue Feb  6 12:29:14 1996  Doug Evans  <dje@charmed.cygnus.com>
+
+       * emulparams/elf64_sparc.sh (ARCH): Change to `sparc:v9'.
+       * emultempl/generic.em: Strip `:foo' from ${ARCH}.
+
 Mon Feb  5 16:25:30 1996  Ian Lance Taylor  <ian@cygnus.com>
 
        Support for building bfd and opcodes as shared libraries, based on
index 1b70cf6..75c8d9a 100644 (file)
@@ -62,6 +62,7 @@ AR = ar
 AR_FLAGS = qv
 CC = @CC@
 CFLAGS = @CFLAGS@
+HLDFLAGS = @HLDFLAGS@
 MAKEINFO = makeinfo
 TEXI2DVI = texi2dvi
 RANLIB = ranlib
@@ -187,8 +188,8 @@ ALL_CFLAGS = $(INCLUDES) @HDEFINES@ $(CFLAGS)
 .c.o:
        $(CC) -c $(ALL_CFLAGS) $<
 
-# for self hosting
-BFDLIB = ../bfd/libbfd.a
+BFDDEP = ../bfd/libbfd.a
+BFDLIB = @BFDLIB@
 LIBIBERTY = ../libiberty/libiberty.a
 
 ALL_EMULATIONS = ea29k.o ealpha.o earmaoutl.o earmaoutb.o \
@@ -198,10 +199,10 @@ ALL_EMULATIONS = ea29k.o ealpha.o earmaoutl.o earmaoutb.o \
        eh8300h.o eh8500.o eh8500b.o eh8500c.o eh8500m.o eh8500s.o \
        ehp300bsd.o ehp3hpux.o ehppaelf.o ei386aout.o ei386bsd.o \
        ei386coff.o ei386go32.o ei386linux.o ei386lynx.o ei386mach.o \
-       ei386nbsd.o ei386nw.o elnk960.o em68k4knbsd.o em68kaout.o em68kcoff.o \
-       em68kelf.o em68klynx.o em68knbsd.o em88kbcs.o emipsbig.o emipsbsd.o \
-       emipsidt.o emipsidtl.o emipslit.o enews.o ens32knbsd.o eppcnw.o \
-       eriscix.o esa29200.o eshl.o esh.o esparclynx.o esparcnbsd.o \
+       ei386nbsd.o ei386nw.o elnk960.o em68k4knbsd.o em68kaout.o em68kaux.o \
+       em68kcoff.o em68kelf.o em68klynx.o em68knbsd.o em88kbcs.o emipsbig.o \
+       emipsbsd.o emipsidt.o emipsidtl.o emipslit.o enews.o ens32knbsd.o \
+       eppcnw.o eriscix.o esa29200.o eshl.o esh.o esparclynx.o esparcnbsd.o \
        est2000.o esun3.o esun4.o evanilla.o evax.o evsta.o \
        ez8001.o ez8002.o ei386pe.o earmpe.o eelf32b4300.o eelf32l4300.o \
        eaixppc.o eaixrs6.o eppcmacos.o edelta68.o eppcpe.o
@@ -266,7 +267,7 @@ ldlex.c: ldlex.l
 
 # These all start with e so 'make clean' can find them.
 
-GENSCRIPTS = $(SHELL) $(srcdir)/genscripts.sh ${srcdir} ${libdir} @host_alias@ @target_alias@ ${EMUL} "@NATIVE_LIB_DIRS@"
+GENSCRIPTS = $(SHELL) $(srcdir)/genscripts.sh ${srcdir} ${libdir} @host@ @target@ @target_alias@ ${EMUL} "@NATIVE_LIB_DIRS@"
 GEN_DEPENDS = $(srcdir)/genscripts.sh $(srcdir)/emultempl/stringify.sed
 
 esun4.c: $(srcdir)/emulparams/sun4.sh \
@@ -374,6 +375,9 @@ egld960.c: $(srcdir)/emulparams/gld960.sh \
 egld960coff.c: $(srcdir)/emulparams/gld960coff.sh \
   $(srcdir)/emultempl/gld960c.em $(srcdir)/scripttempl/i960.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} gld960coff
+em68kaux.c: $(srcdir)/emulparams/m68kaux.sh \
+  $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/m68kaux.sc ${GEN_DEPENDS}
+       ${GENSCRIPTS} m68kaux
 em68kcoff.c: $(srcdir)/emulparams/m68kcoff.sh \
   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/m68kcoff.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} m68kcoff
@@ -522,8 +526,8 @@ erce.c: $(srcdir)/emulparams/rce.sh \
        ${GENSCRIPTS} rce
 # end-sanitize-rce
 
-$(LD_PROG): $(OFILES) $(BFDLIB) $(LIBIBERTY)
-       $(CC) $(CFLAGS) $(LDFLAGS) -o $(LD_PROG) $(OFILES) $(BFDLIB) $(LIBIBERTY) $(EXTRALIBS)
+$(LD_PROG): $(OFILES) $(BFDDEP) $(LIBIBERTY)
+       $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(LD_PROG) $(OFILES) $(BFDLIB) $(LIBIBERTY) $(EXTRALIBS)
 
 # The generated emulation files mostly have the same dependencies.
 $(EMULATION_OFILES): ../bfd/bfd.h sysdep.h config.h $(INCDIR)/bfdlink.h \
@@ -573,6 +577,8 @@ check: site.exp
        r=`pwd`; export r; \
        srcroot=`cd ${srcdir}; pwd` ; export srcroot ; \
        EXPECT=${EXPECT} ; export EXPECT ; \
+       LD_LIBRARY_PATH=$$r/../bfd:$$r/../opcodes:$$LD_LIBRARY_PATH; \
+       export LD_LIBRARY_PATH; \
        if [ -f $$r/../expect/expect ] ; then  \
           TCL_LIBRARY=$${srcroot}/../tcl/library ; \
           export TCL_LIBRARY ; \
index 9b8cf2c..2d367ef 100755 (executable)
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 # Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.6 
+# Generated automatically using autoconf version 2.7 
 # Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
 #
 # This configure script is free software; the Free Software Foundation
@@ -13,6 +13,8 @@ ac_default_prefix=/usr/local
 # Any additions from configure.in:
 ac_help="$ac_help
   --enable-targets        alternative target configurations"
+ac_help="$ac_help
+  --enable-shared         build shared BFD library"
 
 # Initialize some variables set by options.
 # The variables have the same names as the options, with
@@ -332,7 +334,7 @@ EOF
     verbose=yes ;;
 
   -version | --version | --versio | --versi | --vers)
-    echo "configure generated by autoconf version 2.6"
+    echo "configure generated by autoconf version 2.7"
     exit 0 ;;
 
   -with-* | --with-*)
@@ -528,6 +530,15 @@ if test "${enable_targets+set}" = set; then
   *)        enable_targets=$enableval ;;
 esac
 fi
+# Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+  enableval="$enable_shared"
+  case "${enableval}" in
+  yes) shared=true ;;
+  no)  shared=false ;;
+  *)   { echo "configure: error: bad value ${enableval} for BFD shared option" 1>&2; exit 1; } ;;
+esac
+fi
 
 
 
@@ -645,8 +656,10 @@ fi
 if test "$program_transform_name" = s,x,x,; then
   program_transform_name=
 else
-  # Double any \ or $.
-  echo 's,\\,\\\\,g; s,\$,$$,g' > conftestsed
+  # Double any \ or $.  echo might interpret backslashes.
+  cat <<\EOF_SED > conftestsed
+s,\\,\\\\,g; s,\$,$$,g
+EOF_SED
   program_transform_name="`echo $program_transform_name|sed -f conftestsed`"
   rm -f conftestsed
 fi
@@ -745,6 +758,22 @@ fi
 
 
 
+
+# For most hosts we can use a simple definition to pick up the BFD and
+# opcodes libraries.  However, if we are building shared libraries, we
+# need to handle some hosts specially.
+BFDLIB='-L../bfd -lbfd'
+if test "${shared}" = "true"; then
+  case "${host}" in
+  *-*-sunos*)
+    # On SunOS, we must link against the name we are going to install,
+    # not -lbfd, since SunOS does not support SONAME.
+    BFDLIB='-L../bfd -l`echo bfd | sed '"'"'$(program_transform_name)'"'"'`'
+    ;;
+  esac
+fi
+
+
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
@@ -760,7 +789,7 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 764 "configure"
+#line 793 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
@@ -774,7 +803,7 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 778 "configure"
+#line 807 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
@@ -807,7 +836,7 @@ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 811 "configure"
+#line 840 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
@@ -842,7 +871,7 @@ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 846 "configure"
+#line 875 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -895,7 +924,7 @@ if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 899 "configure"
+#line 928 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_hdr>
@@ -928,14 +957,14 @@ done
 # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
 if test $ac_header_dirent = dirent.h; then
 echo $ac_n "checking for -ldir""... $ac_c" 1>&6
-ac_lib_var=`echo dir | tr './+' '__p'`
+ac_lib_var=`echo dir | tr '.-/+' '___p'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
 LIBS="-ldir  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 939 "configure"
+#line 968 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -963,14 +992,14 @@ fi
 
 else
 echo $ac_n "checking for -lx""... $ac_c" 1>&6
-ac_lib_var=`echo x | tr './+' '__p'`
+ac_lib_var=`echo x | tr '.-/+' '___p'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
 LIBS="-lx  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 974 "configure"
+#line 1003 "configure"
 #include "confdefs.h"
 
 int main() { return 0; }
@@ -1001,7 +1030,7 @@ fi
 
 
 case "${host}" in
-i[345]86-*-msdos* | i[345]86-*-go32* | i[345]86-*-win32)
+i[345]86-*-msdos* | i[345]86-*-go32* | *-*-cygwin32)
   cat >> confdefs.h <<\EOF
 #define USE_BINARY_FOPEN 1
 EOF
@@ -1013,7 +1042,7 @@ if eval "test \"`echo '$''{'bfd_cv_decl_needed_free'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1017 "configure"
+#line 1046 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -1180,7 +1209,7 @@ do
     echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
     exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
   -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
-    echo "$CONFIG_STATUS generated by autoconf version 2.6"
+    echo "$CONFIG_STATUS generated by autoconf version 2.7"
     exit 0 ;;
   -help | --help | --hel | --he | --h)
     echo "\$ac_cs_usage"; exit 0 ;;
@@ -1191,10 +1220,12 @@ done
 ac_given_srcdir=$srcdir
 
 trap 'rm -fr `echo "Makefile config.h:config.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+EOF
+cat >> $CONFIG_STATUS <<EOF
 
 # Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF
+sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
+ s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
 $ac_vpsub
 $extrasub
 s%@CFLAGS@%$CFLAGS%g
@@ -1234,10 +1265,12 @@ s%@build_cpu@%$build_cpu%g
 s%@build_vendor@%$build_vendor%g
 s%@build_os@%$build_os%g
 s%@CC@%$CC%g
+s%@HLDFLAGS@%$HLDFLAGS%g
 s%@HDEFINES@%$HDEFINES%g
 s%@HOSTING_CRT0@%$HOSTING_CRT0%g
 s%@HOSTING_LIBS@%$HOSTING_LIBS%g
 s%@NATIVE_LIB_DIRS@%$NATIVE_LIB_DIRS%g
+s%@BFDLIB@%$BFDLIB%g
 s%@CPP@%$CPP%g
 s%@EMUL@%$EMUL%g
 s%@EMULATION_OFILES@%$EMULATION_OFILES%g
index e324be2..8d43d7e 100644 (file)
@@ -80,11 +80,16 @@ i[345]86-*-lynxos*)
   HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else gcc -print-libgcc-file-name; fi` -lc -lm /lib/initn.o'
   ;;
 
-mips-dec-bsd*)
+mips*-dec-bsd*)
   HOSTING_CRT0=/usr/lib/crt0.o
   ;;
 
-mips-sgi-irix4*)
+mips*-sgi-irix4*)
+  HOSTING_CRT0=/usr/lib/crt1.o
+  HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else gcc -print-libgcc-file-name; fi` -lc /usr/lib/crtn.o'
+  ;;
+
+mips*-sgi-irix5*)
   HOSTING_CRT0=/usr/lib/crt1.o
   HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else gcc -print-libgcc-file-name; fi` -lc /usr/lib/crtn.o'
   ;;
@@ -126,3 +131,41 @@ sparc-*-solaris2*)
   ;;
 
 esac
+
+HLDFLAGS=
+# If we have shared libraries, try to set rpath reasonably.
+if test "${shared}" = "true"; then
+  case "${host}" in
+  *-*-irix5*)
+    HLDFLAGS='-Wl,-rpath,$(libdir)'
+    ;;
+  *-*-linux*aout*)
+    ;;
+  *-*-linux*)
+    HLDFLAGS='-Wl,-rpath,$(libdir)'
+    ;;
+  *-*-sysv4* | *-*-solaris*)
+    HLDFLAGS='-R $(libdir)'
+    ;;
+  esac
+fi
+
+# On SunOS, if the linker supports the -rpath option, use it to
+# prevent ../bfd and ../opcodes from being included in the run time
+# search path.
+case "${host}" in
+  *-*-sunos*)
+    echo 'main () { }' > conftest.c
+    ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t
+    if grep 'unrecognized' conftest.t >/dev/null 2>&1; then
+      :
+    elif grep 'No such file' conftest.t >/dev/null 2>&1; then
+      :
+    elif test "${shared}" = "true"; then
+      HLDFLAGS='-Wl,-rpath=$(libdir)'
+    else
+      HLDFLAGS='-Wl,-rpath='
+    fi
+    rm -f conftest.t conftest.c conftest
+    ;;
+esac
index 4913982..4444fce 100644 (file)
@@ -11,6 +11,13 @@ AC_ARG_ENABLE(targets,
   no)       enable_targets= ;;
   *)        enable_targets=$enableval ;;
 esac])dnl
+AC_ARG_ENABLE(shared,
+[  --enable-shared         build shared BFD library],
+[case "${enableval}" in
+  yes) shared=true ;;
+  no)  shared=false ;;
+  *)   AC_MSG_ERROR([bad value ${enableval} for BFD shared option]) ;;
+esac])dnl
 
 AC_CONFIG_HEADER(config.h:config.in)
 
@@ -30,16 +37,35 @@ AC_ARG_PROGRAM
 
 AC_PROG_CC
 AC_SUBST(CFLAGS)
+AC_SUBST(HLDFLAGS)
 AC_SUBST(HDEFINES)
 AC_SUBST(HOSTING_CRT0)
 AC_SUBST(HOSTING_LIBS)
 AC_SUBST(NATIVE_LIB_DIRS)
 
+# For most hosts we can use a simple definition to pick up the BFD and
+# opcodes libraries.  However, if we are building shared libraries, we
+# need to handle some hosts specially.
+BFDLIB='-L../bfd -lbfd'
+if test "${shared}" = "true"; then
+  case "${host}" in
+  *-*-sunos*)
+    # On SunOS, we must link against the name we are going to install,
+    # not -lbfd, since SunOS does not support SONAME.
+    BFDLIB='-L../bfd -l`echo bfd | sed '"'"'$(program_transform_name)'"'"'`'
+    ;;
+  esac
+fi
+AC_SUBST(BFDLIB)
+
 AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h)
 AC_CHECK_FUNCS(sbrk)
+AC_HEADER_DIRENT
 
 BFD_BINARY_FOPEN
 
+BFD_NEED_DECLARATION(free)
+
 # target-specific stuff:
 
 # Canonicalize the secondary target names.