| #! /bin/sh |
| # |
| # shobj-conf -- output a series of variable assignments to be substituted |
| # into a Makefile by configure which specify system-dependent |
| # information for creating shared objects that may be loaded |
| # into bash with `enable -f' |
| # |
| # usage: shobj-conf [-C compiler] -c host_cpu -o host_os -v host_vendor |
| # |
| # Chet Ramey |
| # chet@po.cwru.edu |
| |
| # |
| # defaults |
| # |
| SHOBJ_STATUS=supported |
| SHLIB_STATUS=supported |
| |
| SHOBJ_CC=cc |
| SHOBJ_CFLAGS= |
| SHOBJ_LD= |
| SHOBJ_LDFLAGS= |
| SHOBJ_XLDFLAGS= |
| SHOBJ_LIBS= |
| |
| SHLIB_XLDFLAGS= |
| SHLIB_LIBS= |
| SHLIB_LIBSUFF='so' |
| |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF)' |
| |
| PROGNAME=`basename $0` |
| USAGE="$PROGNAME [-C compiler] -c host_cpu -o host_os -v host_vendor" |
| |
| while [ $# -gt 0 ]; do |
| case "$1" in |
| -C) shift; SHOBJ_CC="$1"; shift ;; |
| -c) shift; host_cpu="$1"; shift ;; |
| -o) shift; host_os="$1"; shift ;; |
| -v) shift; host_vendor="$1"; shift ;; |
| *) echo "$USAGE" >&2 ; exit 2;; |
| esac |
| done |
| |
| case "${host_os}-${SHOBJ_CC}" in |
| sunos4*-gcc*) |
| SHOBJ_CFLAGS=-fpic |
| SHOBJ_LD=/usr/bin/ld |
| SHOBJ_LDFLAGS='-assert pure-text' |
| |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' |
| ;; |
| |
| sunos4*) |
| SHOBJ_CFLAGS=-pic |
| SHOBJ_LD=/usr/bin/ld |
| SHOBJ_LDFLAGS='-assert pure-text' |
| |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' |
| ;; |
| |
| sunos5*-gcc*|solaris2*-gcc*) |
| SHOBJ_CFLAGS=-fpic |
| SHOBJ_LD='${CC}' |
| SHOBJ_LDFLAGS='-shared -Wl,-i -Wl,-h,$@' |
| |
| # SHLIB_XLDFLAGS='-R $(libdir)' |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
| ;; |
| |
| sunos5*|solaris2*) |
| SHOBJ_CFLAGS='-K pic' |
| SHOBJ_LD=/usr/ccs/bin/ld |
| SHOBJ_LDFLAGS='-G -dy -z text -i -h $@' |
| |
| # SHLIB_XLDFLAGS='-R $(libdir)' |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
| ;; |
| |
| freebsd2* | netbsd* | openbsd*) |
| SHOBJ_CFLAGS=-fpic |
| SHOBJ_LD=ld |
| SHOBJ_LDFLAGS='-x -Bshareable' |
| |
| SHLIB_XLDFLAGS='-R$(libdir)' |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' |
| ;; |
| |
| # FreeBSD-3.x can have either a.out or ELF object files |
| #freebsd3*) |
| # SHOBJ_CFLAGS=-fpic |
| # SHOBJ_LD='${CC}' |
| # SHOBJ_LDFLAGS='-shared' |
| # |
| # SHLIB_XLDFLAGS='-R$(libdir)' |
| # SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' |
| # ;; |
| |
| # FreeBSD-3.x ELF |
| freebsd3*) |
| SHOBJ_CFLAGS=-fpic |
| SHOBJ_LD='${CC}' |
| |
| if [ -x /usr/bin/objformat ] && [ "`/usr/bin/objformat`" = "elf" ]; then |
| SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' |
| |
| SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)' |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
| else |
| SHOBJ_LDFLAGS='-shared' |
| |
| SHLIB_XLDFLAGS='-R$(libdir)' |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' |
| fi |
| ;; |
| |
| linux*) |
| SHOBJ_CFLAGS=-fPIC |
| SHOBJ_LD='${CC}' |
| SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' |
| |
| SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)' |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' |
| ;; |
| |
| bsdi2*) |
| SHOBJ_CC=shlicc2 |
| SHOBJ_CFLAGS= |
| SHOBJ_LD=ld |
| SHOBJ_LDFLAGS=-r |
| SHOBJ_LIBS=-lc_s.2.1.0 |
| |
| # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in |
| # the ass -- they require changing {/usr/lib,etc}/shlib.map on |
| # each system, and the library creation process is byzantine |
| SHLIB_STATUS=unsupported |
| ;; |
| |
| bsdi3*) |
| SHOBJ_CC=shlicc2 |
| SHOBJ_CFLAGS= |
| SHOBJ_LD=ld |
| SHOBJ_LDFLAGS=-r |
| SHOBJ_LIBS=-lc_s.3.0.0 |
| |
| # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in |
| # the ass -- they require changing {/usr/lib,etc}/shlib.map on |
| # each system, and the library creation process is byzantine |
| SHLIB_STATUS=unsupported |
| ;; |
| |
| bsdi4*) |
| # BSD/OS 4.x now supports ELF and SunOS-style dynamically-linked |
| # shared libraries. gcc 2.x is the standard compiler, and the |
| # `normal' gcc options should work as they do in Linux. |
| |
| SHOBJ_CFLAGS=-fPIC |
| SHOBJ_LD='${CC}' |
| SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' |
| |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' |
| ;; |
| |
| osf*-gcc*) |
| # Fix to use gcc linker driver from bfischer@TechFak.Uni-Bielefeld.DE |
| SHOBJ_LD='${CC}' |
| SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' |
| |
| SHLIB_XLDFLAGS='-rpath $(libdir)' |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
| ;; |
| |
| osf*) |
| SHOBJ_LD=ld |
| SHOBJ_LDFLAGS='-shared -soname $@ -expect_unresolved "*"' |
| |
| SHLIB_XLDFLAGS='-rpath $(libdir)' |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
| ;; |
| |
| aix4.[2-9]*-gcc*) # lightly tested by jik@cisco.com |
| SHOBJ_CFLAGS=-fpic |
| SHOBJ_LD='ld' |
| SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall' |
| SHOBJ_XLDFLAGS='-G' |
| |
| SHLIB_XLDFLAGS='-bM:SRE' |
| SHLIB_LIBS='-lcurses -lc' |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
| ;; |
| |
| aix4.[2-9]*) |
| SHOBJ_CFLAGS=-K |
| SHOBJ_LD='ld' |
| SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall' |
| SHOBJ_XLDFLAGS='-G' |
| |
| SHLIB_XLDFLAGS='-bM:SRE' |
| SHLIB_LIBS='-lcurses -lc' |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
| ;; |
| |
| # |
| # THE FOLLOWING ARE UNTESTED -- and some may not support the dlopen interface |
| # |
| irix[56]*-gcc*) |
| SHOBJ_CFLAGS='-fpic' |
| SHOBJ_LD='${CC}' |
| SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' |
| |
| SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)' |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
| ;; |
| |
| irix[56]*) |
| SHOBJ_CFLAGS='-K PIC' |
| SHOBJ_LD=ld |
| # SHOBJ_LDFLAGS='-call_shared -hidden_symbol -no_unresolved -soname $@' |
| # Change from David Kaelbling <drk@sgi.com> |
| SHOBJ_LDFLAGS='-shared -no_unresolved -soname $@' |
| |
| SHLIB_XLDFLAGS='-rpath $(libdir)' |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
| ;; |
| |
| hpux9*-gcc*) |
| # must use gcc; the bundled cc cannot compile PIC code |
| SHOBJ_CFLAGS='-fpic' |
| SHOBJ_LD='${CC}' |
| SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s' |
| |
| SHLIB_XLDFLAGS='-Wl,+b,$(libdir)' |
| SHLIB_LIBSUFF='sl' |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
| ;; |
| |
| hpux9*) |
| SHOBJ_STATUS=unsupported |
| SHLIB_STATUS=unsupported |
| ;; |
| |
| hpux10*-gcc*) |
| # must use gcc; the bundled cc cannot compile PIC code |
| SHOBJ_CFLAGS='-fpic' |
| SHOBJ_LD='${CC}' |
| SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s' |
| |
| SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)' |
| SHLIB_LIBSUFF='sl' |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
| ;; |
| |
| hpux10*) |
| SHOBJ_STATUS=unsupported |
| SHLIB_STATUS=unsupported |
| ;; |
| |
| hpux11*-gcc*) |
| # must use gcc; the bundled cc cannot compile PIC code |
| SHOBJ_CFLAGS='-fpic' |
| SHOBJ_LD='${CC}' |
| # SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,-B,symbolic -Wl,+s -Wl,+std -Wl,+h,$@' |
| SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s -Wl,+h,$@' |
| |
| SHLIB_XLDFLAGS='-Wl,+b,$(libdir)' |
| SHLIB_LIBSUFF='sl' |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
| ;; |
| |
| hpux11*) |
| SHOBJ_STATUS=unsupported |
| SHLIB_STATUS=unsupported |
| ;; |
| |
| sysv4*-gcc*) |
| SHOBJ_CFLAGS=-shared |
| SHOBJ_LDFLAGS='-shared -h $@' |
| SHOBJ_LD='${CC}' |
| |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
| ;; |
| |
| sysv4*) |
| SHOBJ_CFLAGS='-K PIC' |
| SHOBJ_LD=ld |
| SHOBJ_LDFLAGS='-dy -z text -G -h $@' |
| |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
| ;; |
| |
| sco3.2v5*-gcc*) |
| SHOBJ_CFLAGS='-fpic' # DEFAULTS TO ELF |
| SHOBJ_LD='${CC}' |
| SHOBJ_LDFLAGS='-shared' |
| |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
| ;; |
| |
| sco3.2v5*) |
| SHOBJ_CFLAGS='-K pic -b elf' |
| SHOBJ_LD=ld |
| SHOBJ_LDFLAGS='-G -b elf -dy -z text -h $@' |
| |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
| ;; |
| |
| sysv5uw7*-gcc*) |
| SHOBJ_CFLAGS='-fpic' |
| SHOBJ_LD='${CC}' |
| SHOBJ_LDFLAGS='-shared' |
| |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
| ;; |
| |
| sysv5uw7*) |
| SHOBJ_CFLAGS='-K PIC' |
| SHOBJ_LD=ld |
| SHOBJ_LDFLAGS='-G -dy -z text -h $@' |
| |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
| ;; |
| |
| dgux*-gcc*) |
| SHOBJ_CFLAGS=-fpic |
| SHOBJ_LD='${CC}' |
| SHOBJ_LDFLAGS='-shared' |
| |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
| ;; |
| |
| dgux*) |
| SHOBJ_CFLAGS='-K pic' |
| SHOBJ_LD=ld |
| SHOBJ_LDFLAGS='-G -dy -h $@' |
| |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
| ;; |
| |
| msdos*) |
| SHOBJ_STATUS=unsupported |
| SHLIB_STATUS=unsupported |
| ;; |
| |
| # |
| # Rely on correct gcc configuration for everything else |
| # |
| *-gcc*) |
| SHOBJ_CFLAGS=-fpic |
| SHOBJ_LD='${CC}' |
| SHOBJ_LDFLAGS='-shared' |
| |
| SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' |
| ;; |
| |
| *) |
| SHOBJ_STATUS=unsupported |
| SHLIB_STATUS=unsupported |
| ;; |
| |
| esac |
| |
| echo SHOBJ_CC=\'"$SHOBJ_CC"\' |
| echo SHOBJ_CFLAGS=\'"$SHOBJ_CFLAGS"\' |
| echo SHOBJ_LD=\'"$SHOBJ_LD"\' |
| echo SHOBJ_LDFLAGS=\'"$SHOBJ_LDFLAGS"\' |
| echo SHOBJ_XLDFLAGS=\'"$SHOBJ_XLDFLAGS"\' |
| echo SHOBJ_LIBS=\'"$SHOBJ_LIBS"\' |
| |
| echo SHLIB_XLDFLAGS=\'"$SHLIB_XLDFLAGS"\' |
| echo SHLIB_LIBS=\'"$SHLIB_LIBS"\' |
| echo SHLIB_LIBSUFF=\'"$SHLIB_LIBSUFF"\' |
| echo SHLIB_LIBVERSION=\'"$SHLIB_LIBVERSION"\' |
| |
| echo SHOBJ_STATUS=\'"$SHOBJ_STATUS"\' |
| echo SHLIB_STATUS=\'"$SHLIB_STATUS"\' |
| |
| exit 0 |