source: trunk/third/perl/hints/linux.sh @ 14545

Revision 14545, 9.5 KB checked in by ghudson, 24 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r14544, which included commits to RCS files with non-trunk default branches.
Line 
1# hints/linux.sh
2# Original version by rsanders
3# Additional support by Kenneth Albanowski <kjahds@kjahds.com>
4#
5# ELF support by H.J. Lu <hjl@nynexst.com>
6# Additional info from Nigel Head <nhead@ESOC.bitnet>
7# and Kenneth Albanowski <kjahds@kjahds.com>
8#
9# Consolidated by Andy Dougherty <doughera@lafcol.lafayette.edu>
10#
11# Updated Thu Feb  8 11:56:10 EST 1996
12
13# Updated Thu May 30 10:50:22 EDT 1996 by <doughera@lafcol.lafayette.edu>
14
15# Updated Fri Jun 21 11:07:54 EDT 1996
16# NDBM support for ELF renabled by <kjahds@kjahds.com>
17
18# No version of Linux supports setuid scripts.
19d_suidsafe='undef'
20
21# Debian and Red Hat, and perhaps other vendors, provide both runtime and
22# development packages for some libraries.  The runtime packages contain shared
23# libraries with version information in their names (e.g., libgdbm.so.1.7.3);
24# the development packages supplement this with versionless shared libraries
25# (e.g., libgdbm.so).
26#
27# If you want to link against such a library, you must install the development
28# version of the package.
29#
30# These packages use a -dev naming convention in both Debian and Red Hat:
31#   libgdbmg1  (non-development version of GNU libc 2-linked GDBM library)
32#   libgdbmg1-dev (development version of GNU libc 2-linked GDBM library)
33# So make sure that for any libraries you wish to link Perl with under
34# Debian or Red Hat you have the -dev packages installed.
35#
36# Some operating systems (e.g., Solaris 2.6) will link to a versioned shared
37# library implicitly.  For example, on Solaris, `ld foo.o -lgdbm' will find an
38# appropriate version of libgdbm, if one is available; Linux, however, doesn't
39# do the implicit mapping.
40ignore_versioned_solibs='y'
41
42# perl goes into the /usr tree.  See the Filesystem Standard
43# available via anonymous FTP at tsx-11.mit.edu in
44# /pub/linux/docs/linux-standards/fsstnd.
45# Allow a command line override, e.g. Configure -Dprefix=/foo/bar
46#
47#  Addendum for 5.005_57 and beyond:
48#
49# However, most Linux users probably already have a /usr/bin/perl.
50# We can't know whether the current user is intending to *replace*
51# that /usr/bin/perl or whether the user is intending to install
52# a *different* installation.
53#
54# Here is what we used to do:
55# Allow a command line override, e.g. Configure -Dprefix=/foo/bar
56# case "$prefix" in
57# '') prefix='/usr' ;;
58# esac
59#
60# For now, let's assume that most Linux users get their /usr/bin/perl
61# from some packaging system, so that those compiling from source are
62# probably the more experimental folks and hence probably aren't
63# intending to replace /usr/bin/perl (at least just yet).
64# This change makes linux consistent with most other unix platforms
65# in having a default of prefix=/usr/local.
66# These notes can probably safely be removed in 5.005_50 and beyond.
67#
68#       9 April 1999  Andy Dougherty  <doughera@lafayette.edu>
69#
70
71# BSD compatability library no longer needed
72# 'kaffe' has a /usr/lib/libnet.so which is not at all relevent for perl.
73set `echo X "$libswanted "| sed -e 's/ bsd / /' -e 's/ net / /'`
74shift
75libswanted="$*"
76
77# If you have glibc, then report the version for ./myconfig bug reporting.
78# (Configure doesn't need to know the specific version since it just uses
79# gcc to load the library for all tests.)
80# Is this sufficiently robust for libc5 systems as well as
81# glibc-2.1.x systems?
82# We don't use __GLIBC__ and  __GLIBC_MINOR__ because they
83# are insufficiently precise to distinguish things like
84# libc-2.0.6 and libc-2.0.7.
85if test -L /lib/libc.so.6; then
86    libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'`
87    libc=/lib/$libc
88fi
89
90# Configure may fail to find lstat() since it's a static/inline
91# function in <sys/stat.h>.
92d_lstat=define
93
94# Explanation?
95case "$usemymalloc" in
96'') usemymalloc='n' ;;
97esac
98
99case "$optimize" in
100'') optimize='-O2' ;;
101esac
102
103# Are we using ELF?  Thanks to Kenneth Albanowski <kjahds@kjahds.com>
104# for this test.
105cat >try.c <<'EOM'
106/* Test for whether ELF binaries are produced */
107#include <fcntl.h>
108#include <stdlib.h>
109main() {
110        char buffer[4];
111        int i=open("a.out",O_RDONLY);
112        if(i==-1)
113                exit(1); /* fail */
114        if(read(i,&buffer[0],4)<4)
115                exit(1); /* fail */
116        if(buffer[0] != 127 || buffer[1] != 'E' ||
117           buffer[2] != 'L' || buffer[3] != 'F')
118                exit(1); /* fail */
119        exit(0); /* succeed (yes, it's ELF) */
120}
121EOM
122if ${cc:-gcc} try.c >/dev/null 2>&1 && ./a.out; then
123    cat <<'EOM' >&4
124
125You appear to have ELF support.  I'll try to use it for dynamic loading.
126If dynamic loading doesn't work, read hints/linux.sh for further information.
127EOM
128
129#For RedHat Linux 3.0.3, you may need to fetch
130# ftp://ftp.redhat.com/pub/redhat-3.0.3/i386/updates/RPMS/ld.so-1.7.14-3.i386.rpm
131#
132
133else
134    cat <<'EOM' >&4
135
136You don't have an ELF gcc.  I will use dld if possible.  If you are
137using a version of DLD earlier than 3.2.6, or don't have it at all, you
138should probably upgrade. If you are forced to use 3.2.4, you should
139uncomment a couple of lines in hints/linux.sh and restart Configure so
140that shared libraries will be disallowed.
141
142EOM
143    lddlflags="-r $lddlflags"
144    # These empty values are so that Configure doesn't put in the
145    # Linux ELF values.
146    ccdlflags=' '
147    cccdlflags=' '
148    ccflags="-DOVR_DBL_DIG=14 $ccflags"
149    so='sa'
150    dlext='o'
151    nm_so_opt=' '
152    ## If you are using DLD 3.2.4 which does not support shared libs,
153    ## uncomment the next two lines:
154    #ldflags="-static"
155    #so='none'
156
157        # In addition, on some systems there is a problem with perl and NDBM
158        # which causes AnyDBM and NDBM_File to lock up. This is evidenced
159        # in the tests as AnyDBM just freezing.  Apparently, this only
160        # happens on a.out systems, so we disable NDBM for all a.out linux
161        # systems.  If someone can suggest a more robust test
162        #  that would be appreciated.
163        #
164        # More info:
165        # Date: Wed, 7 Feb 1996 03:21:04 +0900
166        # From: Jeffrey Friedl <jfriedl@nff.ncl.omron.co.jp>
167        #
168        # I tried compiling with DBM support and sure enough things locked up
169        # just as advertised. Checking into it, I found that the lockup was
170        # during the call to dbm_open. Not *in* dbm_open -- but between the call
171        # to and the jump into.
172        #
173        # To make a long story short, making sure that the *.a and *.sa pairs of
174        #   /usr/lib/lib{m,db,gdbm}.{a,sa}
175        # were perfectly in sync took care of it.
176        #
177        # This will generate a harmless Whoa There! message
178        case "$d_dbm_open" in
179        '')     cat <<'EOM' >&4
180
181Disabling ndbm.  This will generate a Whoa There message in Configure.
182Read hints/linux.sh for further information.
183EOM
184                # You can override this with Configure -Dd_dbm_open
185                d_dbm_open=undef
186                ;;
187        esac
188fi
189
190rm -f try.c a.out
191
192if /bin/bash -c exit; then
193  echo ''
194  echo 'You appear to have a working bash.  Good.'
195else
196  cat << 'EOM' >&4
197
198*********************** Warning! *********************
199It would appear you have a defective bash shell installed. This is likely to
200give you a failure of op/exec test #5 during the test phase of the build,
201Upgrading to a recent version (1.14.4 or later) should fix the problem.
202******************************************************
203EOM
204
205fi
206
207# On SPARClinux,
208# The following csh consistently coredumped in the test directory
209# "/home/mikedlr/perl5.003_94/t", though not most other directories.
210
211#Name        : csh                    Distribution: Red Hat Linux (Rembrandt)
212#Version     : 5.2.6                        Vendor: Red Hat Software
213#Release     : 3                        Build Date: Fri May 24 19:42:14 1996
214#Install date: Thu Jul 11 16:20:14 1996 Build Host: itchy.redhat.com
215#Group       : Shells                   Source RPM: csh-5.2.6-3.src.rpm
216#Size        : 184417
217#Description : BSD c-shell
218
219# For this reason I suggest using the much bug-fixed tcsh for globbing
220# where available.
221
222if [  ! "`csh -c 'echo $version' 2>/dev/null`"  ]
223then
224    echo 'Real csh found (might break); looking for tcsh ...'
225    # Use ./UU/loc to find tcsh.  (We no longer run in the hints/ directory)
226    if xxx=`./UU/loc tcsh blurfl $pth`; $test -f "$xxx"; then
227        echo "Found tcsh.  I'll use it for globbing."
228        # We can't change Configure's setting of $csh, due to the way
229        # Configure handles $d_portable and commands found in $loclist.
230        # We can set the value for CSH in config.h by setting full_csh.
231        full_csh=$xxx
232    else
233        echo "Couldn't find tcsh.  BEWARE:  GLOBBING MIGHT BE BROKEN."
234    fi
235else
236    echo 'Your csh is really tcsh.  Good.'
237fi
238
239# Shimpei Yamashita <shimpei@socrates.patnet.caltech.edu>
240# Message-Id: <33EF1634.B36B6500@pobox.com>
241#
242# The DR2 of MkLinux (osname=linux,archname=ppc-linux) may need
243# special flags passed in order for dynamic loading to work.
244# instead of the recommended:
245#
246# ccdlflags='-rdynamic'
247#
248# it should be:
249# ccdlflags='-Wl,-E'
250#
251# So if your DR2 (DR3 came out summer 1998, consider upgrading)
252# has problems with dynamic loading, uncomment the
253# following three lines, make distclean, and re-Configure:
254#case "`uname -r | sed 's/^[0-9.-]*//'``arch`" in
255#'osfmach3ppc') ccdlflags='-Wl,-E' ;;
256#esac
257
258case "`uname -r`" in
259sparc-linux)
260        case "$cccdlflags" in
261        *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;;
262        *)       cccdlflags="$cccdlflags -fPIC" ;;
263        esac
264        ;;
265esac
266
267# This script UU/usethreads.cbu will get 'called-back' by Configure
268# after it has prompted the user for whether to use threads.
269cat > UU/usethreads.cbu <<'EOCBU'
270case "$usethreads" in
271$define|true|[yY]*)
272        ccflags="-D_REENTRANT $ccflags"
273        set `echo X "$libswanted "| sed -e 's/ c / pthread c /'`
274        shift
275        libswanted="$*"
276        ;;
277esac
278EOCBU
279
280cat > UU/uselargefiles.cbu <<'EOCBU'
281# This script UU/uselargefiles.cbu will get 'called-back' by Configure
282# after it has prompted the user for whether to use large files.
283case "$uselargefiles" in
284''|$define|true|[yY]*)
285        ccflags="$ccflags -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
286        ;;
287esac
288EOCBU
Note: See TracBrowser for help on using the repository browser.