Imported from ../bash-4.0-rc1.tar.gz.
[platform/upstream/bash.git] / support / shobj-conf
index cbd3d1b..bcc9dc7 100755 (executable)
 # Chet Ramey
 # chet@po.cwru.edu
 
+#   Copyright (C) 1996-2009 Free Software Foundation, Inc.
+#
+#   This file is part of GNU Bash, the Bourne Again SHell.
+#
+#   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 3 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, see <http://www.gnu.org/licenses/>.
+#
+
 #
 # defaults
 #
@@ -25,9 +43,13 @@ SHOBJ_LIBS=
 
 SHLIB_XLDFLAGS=
 SHLIB_LIBS=
+
+SHLIB_DOT='.'
+SHLIB_LIBPREF='lib'
 SHLIB_LIBSUFF='so'
 
 SHLIB_LIBVERSION='$(SHLIB_LIBSUFF)'
+SHLIB_DLLVERSION='$(SHLIB_MAJOR)'
 
 PROGNAME=`basename $0`
 USAGE="$PROGNAME [-C compiler] -c host_cpu -o host_os -v host_vendor"
@@ -43,7 +65,7 @@ while [ $# -gt 0 ]; do
 done
 
 case "${host_os}-${SHOBJ_CC}" in
-sunos4*-gcc*)
+sunos4*-*gcc*)
        SHOBJ_CFLAGS=-fpic
        SHOBJ_LD=/usr/bin/ld
        SHOBJ_LDFLAGS='-assert pure-text'
@@ -59,12 +81,21 @@ sunos4*)
        SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
        ;;
 
-sunos5*-gcc*|solaris2*-gcc*)
-       SHOBJ_CFLAGS=-fpic
+sunos5*-*gcc*|solaris2*-*gcc*)
        SHOBJ_LD='${CC}'
-       SHOBJ_LDFLAGS='-shared -Wl,-i'
-
-       SHLIB_XLDFLAGS='-R $(libdir)'
+       ld_used=`gcc -print-prog-name=ld`
+       if ${ld_used} -V 2>&1 | grep GNU >/dev/null 2>&1; then
+               # This line works for the GNU ld
+               SHOBJ_LDFLAGS='-shared -Wl,-h,$@'
+               # http://sourceware.org/ml/binutils/2001-08/msg00361.html
+               SHOBJ_CFLAGS=-fPIC
+       else
+               # This line works for the Solaris linker in /usr/ccs/bin/ld
+               SHOBJ_LDFLAGS='-shared -Wl,-i -Wl,-h,$@'
+               SHOBJ_CFLAGS=-fpic
+       fi
+
+#      SHLIB_XLDFLAGS='-R $(libdir)'
        SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
        ;;
 
@@ -73,11 +104,21 @@ sunos5*|solaris2*)
        SHOBJ_LD=/usr/ccs/bin/ld
        SHOBJ_LDFLAGS='-G -dy -z text -i -h $@'
 
-       SHLIB_XLDFLAGS='-R $(libdir)'
+#      SHLIB_XLDFLAGS='-R $(libdir)'
        SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
        ;;
 
-freebsd2* | netbsd* | openbsd*)
+# All versions of Linux or the semi-mythical GNU Hurd.
+linux*-*|gnu*-*|k*bsd*-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*)
        SHOBJ_CFLAGS=-fpic
        SHOBJ_LD=ld
        SHOBJ_LDFLAGS='-x -Bshareable'
@@ -86,21 +127,71 @@ freebsd2* | netbsd* | openbsd*)
        SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
        ;;
 
-freebsd3*)
-       SHOBJ_CFLAGS=-fpic
+# FreeBSD-3.x ELF
+freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*|dragonfly*)
+       SHOBJ_CFLAGS=-fPIC
        SHOBJ_LD='${CC}'
-       SHOBJ_LDFLAGS='-shared'
 
-       SHLIB_XLDFLAGS='-R$(libdir)'
-       SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
+       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*)
+# Darwin/MacOS X
+darwin[89]*|darwin10*)
+       SHOBJ_STATUS=supported
+       SHLIB_STATUS=supported
+       
+       SHOBJ_CFLAGS='-fno-common'
+
+       SHOBJ_LD='MACOSX_DEPLOYMENT_TARGET=10.3 ${CC}'
+
+       SHLIB_LIBVERSION='$(SHLIB_MAJOR)$(SHLIB_MINOR).$(SHLIB_LIBSUFF)'
+       SHLIB_LIBSUFF='dylib'
+
+       SHOBJ_LDFLAGS='-dynamiclib -dynamic -undefined dynamic_lookup -arch_only `/usr/bin/arch`'
+       SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
+
+       SHLIB_LIBS='-lncurses'  # see if -lcurses works on MacOS X 10.1 
+       ;;
+
+darwin*|macosx*)
+       SHOBJ_STATUS=unsupported
+       SHLIB_STATUS=supported
+
+       SHOBJ_CFLAGS='-fno-common'
+
+       SHOBJ_LD='${CC}'
+
+       SHLIB_LIBVERSION='$(SHLIB_MAJOR)$(SHLIB_MINOR).$(SHLIB_LIBSUFF)'
+       SHLIB_LIBSUFF='dylib'
+
+       case "${host_os}" in
+       darwin[789]*|darwin10*) SHOBJ_LDFLAGS=''
+                       SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
+                       ;;
+       *)              SHOBJ_LDFLAGS='-dynamic'
+                       SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
+                       ;;
+       esac
+
+       SHLIB_LIBS='-lncurses'  # see if -lcurses works on MacOS X 10.1 
+       ;;
+
+openbsd*|netbsd*)
        SHOBJ_CFLAGS=-fPIC
        SHOBJ_LD='${CC}'
-       SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
+       SHOBJ_LDFLAGS='-shared'
 
-       SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)'
+       SHLIB_XLDFLAGS='-R$(libdir)'
        SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
        ;;
 
@@ -139,9 +230,19 @@ bsdi4*)
        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 "*"'
@@ -150,7 +251,7 @@ osf*)
        SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
        ;;
 
-aix4.[2-9]*-gcc*)              # lightly tested by jik@cisco.com
+aix4.[2-9]*-*gcc*|aix[5-9].*-*gcc*)            # lightly tested by jik@cisco.com
        SHOBJ_CFLAGS=-fpic
        SHOBJ_LD='ld'
        SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall'
@@ -161,7 +262,7 @@ aix4.[2-9]*-gcc*)           # lightly tested by jik@cisco.com
        SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
        ;;
 
-aix4.[2-9]*)
+aix4.[2-9]*|aix[5-9].*)
        SHOBJ_CFLAGS=-K
        SHOBJ_LD='ld'
        SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall'
@@ -175,7 +276,7 @@ aix4.[2-9]*)
 #
 # THE FOLLOWING ARE UNTESTED -- and some may not support the dlopen interface
 #
-irix[56]*-gcc*)
+irix[56]*-*gcc*)
        SHOBJ_CFLAGS='-fpic'
        SHOBJ_LD='${CC}'
        SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
@@ -187,13 +288,16 @@ irix[56]*-gcc*)
 irix[56]*)
        SHOBJ_CFLAGS='-K PIC'
        SHOBJ_LD=ld
-       SHOBJ_LDFLAGS='-call_shared -hidden_symbol -no_unresolved -soname $@'
+#      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*)
+hpux9*-*gcc*)
        # must use gcc; the bundled cc cannot compile PIC code
        SHOBJ_CFLAGS='-fpic'
        SHOBJ_LD='${CC}'
@@ -207,13 +311,29 @@ hpux9*-gcc*)
 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*)
+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'
+       # if you have problems linking here, moving the `-Wl,+h,$@' from
+       # SHLIB_XLDFLAGS to SHOBJ_LDFLAGS has been reported to work
+       SHOBJ_LDFLAGS='-shared -fpic -Wl,-b -Wl,+s'
 
        SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)'
        SHLIB_LIBSUFF='sl'
@@ -223,14 +343,28 @@ hpux10*-gcc*)
 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*)
+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,$@'
+       SHOBJ_LDFLAGS='-shared -fpic -Wl,-b -Wl,+s -Wl,+h,$@'
 
        SHLIB_XLDFLAGS='-Wl,+b,$(libdir)'
        SHLIB_LIBSUFF='sl'
@@ -240,9 +374,23 @@ hpux11*-gcc*)
 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*)
+sysv4*-*gcc*)
        SHOBJ_CFLAGS=-shared
        SHOBJ_LDFLAGS='-shared -h $@'
        SHOBJ_LD='${CC}'
@@ -258,7 +406,7 @@ sysv4*)
        SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
        ;;
 
-sco3.2v5*-gcc*)
+sco3.2v5*-*gcc*)
        SHOBJ_CFLAGS='-fpic'            # DEFAULTS TO ELF
        SHOBJ_LD='${CC}'
        SHOBJ_LDFLAGS='-shared'
@@ -274,7 +422,7 @@ sco3.2v5*)
        SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
        ;;
 
-sysv5uw7*-gcc*)
+sysv5uw7*-*gcc*)
        SHOBJ_CFLAGS='-fpic'
        SHOBJ_LD='${CC}'
        SHOBJ_LDFLAGS='-shared'
@@ -289,8 +437,40 @@ sysv5uw7*)
 
        SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
        ;;
-       
-dgux*-gcc*)
+
+sysv5UnixWare*-*gcc*)
+       SHOBJ_CFLAGS=-fpic
+       SHOBJ_LD='${CC}'
+       SHOBJ_LDFLAGS='-shared'
+
+       SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
+       ;;
+
+sysv5UnixWare*)
+       SHOBJ_CFLAGS='-K PIC'
+       SHOBJ_LD=ld
+       SHOBJ_LDFLAGS='-G -dy -z text -h $@'
+
+       SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
+       ;;
+
+sysv5OpenUNIX*-*gcc*)
+       SHOBJ_CFLAGS=-fpic
+       SHOBJ_LD='${CC}'
+       SHOBJ_LDFLAGS='-shared'
+
+       SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
+       ;;
+
+sysv5OpenUNIX*)
+       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'
@@ -305,10 +485,51 @@ dgux*)
 
        SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
        ;;
+
+msdos*)
+       SHOBJ_STATUS=unsupported
+       SHLIB_STATUS=unsupported
+       ;;
+
+cygwin*)
+       SHOBJ_LD='$(CC)'
+       SHOBJ_LDFLAGS='-shared -Wl,--enable-auto-import -Wl,--enable-auto-image-base -Wl,--export-all -Wl,--out-implib=$(@).a'
+       SHLIB_LIBPREF='cyg'
+       SHLIB_LIBSUFF='dll'
+       SHLIB_LIBVERSION='$(SHLIB_DLLVERSION).$(SHLIB_LIBSUFF)'
+       SHLIB_LIBS='$(TERMCAP_LIB)'
+
+       SHLIB_DOT=
+       # For official cygwin releases, DLLVERSION will be defined in the
+       # environment of configure, and will be incremented any time the API
+       # changes in a non-backwards compatible manner.  Otherwise, it is just
+       # SHLIB_MAJOR.
+       if [ -n "$DLLVERSION" ] ; then
+               SHLIB_DLLVERSION="$DLLVERSION"
+       fi
+       ;;
+
+mingw*)
+       SHOBJ_LD='$(CC)'
+       SHOBJ_LDFLAGS='-shared -Wl,--enable-auto-import -Wl,--enable-auto-image-base -Wl,--export-all -Wl,--out-implib=$(@).a'
+       SHLIB_LIBSUFF='dll'
+       SHLIB_LIBVERSION='$(SHLIB_DLLVERSION).$(SHLIB_LIBSUFF)'
+       SHLIB_LIBS='$(TERMCAP_LIB)'
+
+       SHLIB_DOT=
+       # For official cygwin releases, DLLVERSION will be defined in the
+       # environment of configure, and will be incremented any time the API
+       # changes in a non-backwards compatible manner.  Otherwise, it is just
+       # SHLIB_MAJOR.
+       if [ -n "$DLLVERSION" ] ; then
+               SHLIB_DLLVERSION="$DLLVERSION"
+       fi
+       ;;
+
 #
 # Rely on correct gcc configuration for everything else
 #
-*-gcc*)
+*-*gcc*)
        SHOBJ_CFLAGS=-fpic
        SHOBJ_LD='${CC}'
        SHOBJ_LDFLAGS='-shared'
@@ -332,8 +553,14 @@ echo SHOBJ_LIBS=\'"$SHOBJ_LIBS"\'
 
 echo SHLIB_XLDFLAGS=\'"$SHLIB_XLDFLAGS"\'
 echo SHLIB_LIBS=\'"$SHLIB_LIBS"\'
+
+echo SHLIB_DOT=\'"$SHLIB_DOT"\'
+
+echo SHLIB_LIBPREF=\'"$SHLIB_LIBPREF"\'
 echo SHLIB_LIBSUFF=\'"$SHLIB_LIBSUFF"\'
+
 echo SHLIB_LIBVERSION=\'"$SHLIB_LIBVERSION"\'
+echo SHLIB_DLLVERSION=\'"$SHLIB_DLLVERSION"\'
 
 echo SHOBJ_STATUS=\'"$SHOBJ_STATUS"\'
 echo SHLIB_STATUS=\'"$SHLIB_STATUS"\'