Bash-4.3 distribution sources and documentation
[platform/upstream/bash.git] / support / shobj-conf
index 4c13717..1f64433 100755 (executable)
 # Chet Ramey
 # chet@po.cwru.edu
 
-# Copyright (C) 1996-2002 Free Software Foundation, Inc.
+#   Copyright (C) 1996-2014 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 file is part of GNU Bash, the Bourne Again SHell.
 #
-# 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.
+#   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/>.
 #
-# 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
@@ -41,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"
@@ -58,7 +64,21 @@ while [ $# -gt 0 ]; do
        esac
 done
 
-case "${host_os}-${SHOBJ_CC}" in
+case "${host_os}-${SHOBJ_CC}-${host_vendor}" in
+nsk-cc-tandem)
+       SHOBJ_CFLAGS=-Wglobalized
+       case `uname -m` in
+       NSR*)
+               SHOBJ_CFLAGS="${SHOBJ_CFLAGS} -Wcall_shared" # default on TNS/E, needed on TNS/R
+               SHOBJ_LD=/usr/bin/ld # for TNS/R
+               ;;
+       NSE*|NEO*)
+               SHOBJ_LD=/usr/bin/eld
+               ;;
+       esac
+       SHOBJ_LDFLAGS='-shared -bglobalized -unres_symbols ignore'
+       ;;
+
 sunos4*-*gcc*)
        SHOBJ_CFLAGS=-fpic
        SHOBJ_LD=/usr/bin/ld
@@ -76,12 +96,18 @@ sunos4*)
        ;;
 
 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,$@'
+       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)'
@@ -96,8 +122,8 @@ sunos5*|solaris2*)
        SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
        ;;
 
-# All versions of Linux or the semi-mythical GNU Hurd.
-linux*-*|gnu*-*|k*bsd*-gnu-*)
+# All versions of Linux (including Gentoo/FreeBSD) or the semi-mythical GNU Hurd.
+linux*-*|gnu*-*|k*bsd*-gnu-*|freebsd*-gentoo)
        SHOBJ_CFLAGS=-fPIC
        SHOBJ_LD='${CC}'
        SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
@@ -106,7 +132,7 @@ linux*-*|gnu*-*|k*bsd*-gnu-*)
        SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
        ;;
 
-freebsd2* | netbsd*)
+freebsd2*)
        SHOBJ_CFLAGS=-fpic
        SHOBJ_LD=ld
        SHOBJ_LDFLAGS='-x -Bshareable'
@@ -116,8 +142,8 @@ freebsd2* | netbsd*)
        ;;
 
 # FreeBSD-3.x ELF
-freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*)
-       SHOBJ_CFLAGS=-fpic
+freebsd3*|freebsdaout*)
+       SHOBJ_CFLAGS=-fPIC
        SHOBJ_LD='${CC}'
 
        if [ -x /usr/bin/objformat ] && [ "`/usr/bin/objformat`" = "elf" ]; then
@@ -133,11 +159,20 @@ freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*)
        fi
        ;;
 
-# Darwin/MacOS X
-darwin*|macosx*)
-       SHOBJ_STATUS=unsupported
-       SHLIB_STATUS=supported
+# FreeBSD-4.x and later have only ELF
+freebsd[4-9]*|freebsd1[0-9]*|freebsdelf*|dragonfly*)
+       SHOBJ_CFLAGS=-fPIC
+       SHOBJ_LD='${CC}'
 
+       SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
+       SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)'
+
+       SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
+       ;;
+
+# Darwin/MacOS X
+darwin*)
+       # Common definitions for all darwin/mac os x versions
        SHOBJ_CFLAGS='-fno-common'
 
        SHOBJ_LD='${CC}'
@@ -145,19 +180,39 @@ darwin*|macosx*)
        SHLIB_LIBVERSION='$(SHLIB_MAJOR)$(SHLIB_MINOR).$(SHLIB_LIBSUFF)'
        SHLIB_LIBSUFF='dylib'
 
+       # unused at this time
+       SHLIB_SONAME='$(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF)'
+
        case "${host_os}" in
-       darwin7*)       SHOBJ_LDFLAGS=''
-                       SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
+       # Darwin versions 1, 5, 6, 7 correspond to Mac OS X 10.0, 10.1, 10.2,
+       # and 10.3, respectively.
+       darwin[1-7].*)
+               SHOBJ_STATUS=unsupported
+               SHOBJ_LDFLAGS='-dynamic'
+               SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
+               ;;
+       # Darwin 8 == Mac OS X 10.4; Mac OS X 10.N == Darwin N+4
+       *)
+               case "${host_os}" in
+               darwin[89]*|darwin1[012]*)
+                       SHOBJ_ARCHFLAGS='-arch_only `/usr/bin/arch`'
                        ;;
-       *)              SHOBJ_LDFLAGS='-dynamic'
-                       SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
+                *)     # Mac OS X 10.9 (Mavericks) and later
+                       SHOBJ_ARCHFLAGS=
+                       # for 32 and 64bit universal library
+                       #SHOBJ_ARCHFLAGS='-arch i386 -arch x86_64'
+                       #SHOBJ_CFLAGS=${SHOBJ_CFLAGS}' -arch i386 -arch x86_64'
                        ;;
+                esac
+                SHOBJ_LDFLAGS="-dynamiclib -dynamic -undefined dynamic_lookup ${SHOBJ_ARCHFLAGS}"
+                SHLIB_XLDFLAGS="-dynamiclib ${SHOBJ_ARCHFLAGS}"' -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -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*)
+openbsd*|netbsd*|mirbsd*)
        SHOBJ_CFLAGS=-fPIC
        SHOBJ_LD='${CC}'
        SHOBJ_LDFLAGS='-shared'
@@ -222,7 +277,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'
@@ -233,7 +288,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'
@@ -304,7 +359,7 @@ hpux10*-*gcc*)
        SHOBJ_LD='${CC}'
        # if you have problems linking here, moving the `-Wl,+h,$@' from
        # SHLIB_XLDFLAGS to SHOBJ_LDFLAGS has been reported to work
-       SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s'
+       SHOBJ_LDFLAGS='-shared -fpic -Wl,-b -Wl,+s'
 
        SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)'
        SHLIB_LIBSUFF='sl'
@@ -408,7 +463,39 @@ sysv5uw7*)
 
        SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
        ;;
-       
+
+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}'
@@ -430,6 +517,41 @@ msdos*)
        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
 #
@@ -457,8 +579,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"\'