diff options
author | Ian Lance Taylor <ian@airs.com> | 1996-02-05 21:14:14 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1996-02-05 21:14:14 +0000 |
commit | 44f795f7feef198729a978ff84c4c2dc9efbc1b3 (patch) | |
tree | 3a602f4dcd09c9cb6352484478e64d4daa4ec844 /bfd/configure.host | |
parent | fc71ad23ddd09cfc590e487eb3be266a11837465 (diff) | |
download | gdb-44f795f7feef198729a978ff84c4c2dc9efbc1b3.zip gdb-44f795f7feef198729a978ff84c4c2dc9efbc1b3.tar.gz gdb-44f795f7feef198729a978ff84c4c2dc9efbc1b3.tar.bz2 |
Support for building as a shared library, based on patches from
Alan Modra <alan@spri.levels.unisa.edu.au>:
* configure.in: Add AC_ARG_ENABLE for shared and commonbfdlib.
New substitutions: ALLLIBS, PICFLAG, SHLIB, SHLIB_CC,
SHLIB_CFLAGS, COMMON_SHLIB, PICLIST, SHLINK.
* configure: Rebuild.
* configure.host: If --enable-shared, adjust shared library stuff
based on the host. If the host is SunOS, and the linker supports
-rpath, set HLDFLAGS to use it.
* Makefile.in (ALLLIBS): New variable.
(PICFLAG, SHLIB, SHLIB_CC, SHLIB_CFLAGS): New variables.
(COMMON_SHLIB, SHLINK): New variables.
(.c.o): If PICFLAG is set, compile twice, once PIC, once normal.
(STAGESTUFF): Remove variable.
(all): Depend upon $(ALLLIBS) and @PICLIST@ rather than
$(TARGETLIB).
(stamp-ofiles): New target, like old ofiles target, but build
using a temporary file and move-if-change, and touch stamp-ofiles
when done.
(ofiles): Just depend upon stamp-ofiles.
(stamp-piclist, piclist): New targets.
($(SHLIB), $(SHLINK)): New targets.
(targets.o, archures.o): Build twice if PICFLAG is set.
(do_mostlyclean): Remove pic/*.o.
(do_clean): Remove stamp-ofiles, $(SHLIB), $(SHLINK), piclist, and
stamp-piclist.
(do_distclean): Remove pic and stamp-picdir.
(install): Install shared libraries.
($(OFILES)): Depend upon stamp-picdir.
(stamp-picdir): New target.
Diffstat (limited to 'bfd/configure.host')
-rw-r--r-- | bfd/configure.host | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/bfd/configure.host b/bfd/configure.host index e062ac4..de8d65d 100644 --- a/bfd/configure.host +++ b/bfd/configure.host @@ -15,6 +15,12 @@ # HDEFINES host specific compiler options # host64 set to true if this is a 64 bit host # HOST_64BIT_TYPE host 64 bit type +# SHLIB_CC compiler to use when building shared library +# SHLIB_CFLAGS flags to use when building shared library +# PICFLAG may be set to flag to use to compile PIC +# SHLINK may be set to the name to link the shared library to +# ALLLIBS may be set to libraries to build +# HLDFLAGS LDFLAGS specific to the host HDEFINES= host64=false @@ -53,6 +59,7 @@ i[345]86-*-win32) test -z "$CC" && CC="i386-win32-gcc -O2" RANLIB=${RANLIB-i386-win32-ranlib} ;; +mips-dec-netbsd*) ;; mips-dec-*) HDEFINES="-G 4" ;; mips-sgi-irix3*) HDEFINES="-G 4" test -z "$LDFLAGS" && LDFLAGS=-lmalloc @@ -83,3 +90,70 @@ powerpc-*-aix4*) HDEFINES=-DHOST_AIX ;; powerpc-*-aix*) HDEFINES=-DHOST_AIX ;; esac + +# If we are configuring with --enable-shared, adjust the shared +# library support based on the host. This support must work for both +# the BFD and the opcodes libraries. +SHLIB_CC='$(CC)' +SHLIB_CFLAGS='-shared' +if [ "${shared}" = "true" ]; then + case "${host}" in + hppa*-*-*) picfrag=../config/mh-papic ;; + i[3456]86-*-*) picfrag=../config/mh-x86pic ;; + *-*-*) picfrag=../config/mh-${host_cpu}pic ;; + esac + if [ -f "${picfrag}" ]; then + pic=`sed -n -e 's/^PICFLAG[ ]*=[ ]*\(.*\)$/\1/p' ${picfrag}` + if [ -n "${pic}" ]; then + PICFLAG=${pic} + fi + fi + + base_shlib=`echo ${SHLIB} | sed -e 's,^.*/\([^/]*\)$,\1,'` + + case "${host}" in + *-dec-osf*) + # -fpic is not needed on the Alpha. + PICFLAG= + ;; + *-*-hpux*) + # HP/UX uses .sl for shared libraries. + SHLINK=`echo ${SHLINK} | sed -e 's/so$/sl/'` + ;; + *-*-irix5*) + # -fpic is not needed on Irix 5. + PICFLAG= + SHLIB_CFLAGS="-shared -Wl,-soname,${base_shlib}" + ;; + *-*-linux*aout*) + ;; + *-*-linux*) + SHLIB_CFLAGS="-shared -Wl,-soname,${base_shlib}" + ;; + *-*-sysv4* | *-*-solaris*) + SHLIB_CFLAGS="-shared -h ${base_shlib}" + ;; + *-*-sunos*) + ALLLIBS=`echo ${ALLLIBS} | sed -e 's/\$(SHLINK)//'` + ;; + 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. +HLDFLAGS= +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 + : + else + HLDFLAGS='-Wl,-rpath=' + fi + rm -f conftest.t conftest.c conftest + ;; +esac |