#! /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

# Copyright (C) 1996-2002 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, 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 USA.

#
# 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}'
	# This line works for the Solaris linker in /usr/ccs/bin/ld
	SHOBJ_LDFLAGS='-shared -Wl,-i -Wl,-h,$@'
	# This line works for the GNU ld
#	SHOBJ_LDFLAGS='-shared -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)'
	;;

# All versions of Linux or the semi-mythical GNU Hurd.
linux*|gnu*)
	SHOBJ_CFLAGS=-fPIC
	SHOBJ_LD='${CC}'
	SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'

	SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
	SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
	;;

freebsd2* | netbsd*)
	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 ELF
freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*)
	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
	;;

# Darwin/MacOS X
darwin*|macosx*)
	SHOBJ_STATUS=unsupported
	SHLIB_STATUS=supported

	SHOBJ_CFLAGS='-dynamic -fno-common'

	SHOBJ_LD=/usr/bin/libtool

	SHLIB_LIBVERSION='$(SHLIB_MAJOR)$(SHLIB_MINOR).$(SHLIB_LIBSUFF)'
	SHLIB_LIBSUFF='dylib'

	SHOBJ_LDFLAGS='-dynamic'
	SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'

	SHLIB_LIBS='-lSystem'
	;;

openbsd*)
	SHOBJ_CFLAGS=-fPIC
	SHOBJ_LD='${CC}'
	SHOBJ_LDFLAGS='-shared'

	SHLIB_XLDFLAGS='-R$(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_XLDFLAGS='-Wl,-soname,`basename $@ $(SHLIB_MINOR)`'
	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>.  If you have problems,
#	remove the `-no_unresolved'
	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

	# If you are using the HP ANSI C compiler, you can uncomment and use
	# this code (I have not tested it)
#	SHOBJ_STATUS=supported
#	SHLIB_STATUS=supported
#
#	SHOBJ_CFLAGS='+z'
#	SHOBJ_LD='ld'
#	SHOBJ_LDFLAGS='-b +s'
#
#	SHLIB_XLDFLAGS='+b $(libdir)'
#	SHLIB_LIBSUFF='sl'
#	SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'	

	;;

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

	# If you are using the HP ANSI C compiler, you can uncomment and use
	# this code (I have not tested it)
#	SHOBJ_STATUS=supported
#	SHLIB_STATUS=supported
#
#	SHOBJ_CFLAGS='+z'
#	SHOBJ_LD='ld'
#	SHOBJ_LDFLAGS='-b +s +h $@'
#
#	SHLIB_XLDFLAGS='+b $(libdir)'
#	SHLIB_LIBSUFF='sl'
#	SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'	

	;;

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 -fpic -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

	# If you are using the HP ANSI C compiler, you can uncomment and use
	# this code (I have not tested it)
#	SHOBJ_STATUS=supported
#	SHLIB_STATUS=supported
#
#	SHOBJ_CFLAGS='+z'
#	SHOBJ_LD='ld'
#	SHOBJ_LDFLAGS='-b +s +h $@'
#
#	SHLIB_XLDFLAGS='+b $(libdir)'
#	SHLIB_LIBSUFF='sl'
#	SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'	

	;;

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
