home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl560.zip / hints / linux.sh < prev    next >
Text File  |  2000-03-18  |  10KB  |  289 lines

  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.
  19. d_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.
  40. ignore_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.
  73. set `echo X "$libswanted "| sed -e 's/ bsd / /' -e 's/ net / /'`
  74. shift
  75. libswanted="$*"
  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.
  85. if test -L /lib/libc.so.6; then
  86.     libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'`
  87.     libc=/lib/$libc
  88. fi
  89.  
  90. # Configure may fail to find lstat() since it's a static/inline
  91. # function in <sys/stat.h>.
  92. d_lstat=define
  93.  
  94. # Explanation?
  95. case "$usemymalloc" in
  96. '') usemymalloc='n' ;;
  97. esac
  98.  
  99. case "$optimize" in
  100. '') optimize='-O2' ;;
  101. esac
  102.  
  103. # Are we using ELF?  Thanks to Kenneth Albanowski <kjahds@kjahds.com>
  104. # for this test.
  105. cat >try.c <<'EOM'
  106. /* Test for whether ELF binaries are produced */
  107. #include <fcntl.h>
  108. #include <stdlib.h>
  109. main() {
  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. }
  121. EOM
  122. if ${cc:-gcc} try.c >/dev/null 2>&1 && ./a.out; then
  123.     cat <<'EOM' >&4
  124.  
  125. You appear to have ELF support.  I'll try to use it for dynamic loading.
  126. If dynamic loading doesn't work, read hints/linux.sh for further information.
  127. EOM
  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.  
  133. else
  134.     cat <<'EOM' >&4
  135.  
  136. You don't have an ELF gcc.  I will use dld if possible.  If you are
  137. using a version of DLD earlier than 3.2.6, or don't have it at all, you
  138. should probably upgrade. If you are forced to use 3.2.4, you should
  139. uncomment a couple of lines in hints/linux.sh and restart Configure so
  140. that shared libraries will be disallowed.
  141.  
  142. EOM
  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.  
  181. Disabling ndbm.  This will generate a Whoa There message in Configure.
  182. Read hints/linux.sh for further information.
  183. EOM
  184.         # You can override this with Configure -Dd_dbm_open
  185.         d_dbm_open=undef
  186.         ;;
  187.     esac
  188. fi
  189.  
  190. rm -f try.c a.out
  191.  
  192. if /bin/bash -c exit; then
  193.   echo ''
  194.   echo 'You appear to have a working bash.  Good.'
  195. else
  196.   cat << 'EOM' >&4
  197.  
  198. *********************** Warning! *********************
  199. It would appear you have a defective bash shell installed. This is likely to
  200. give you a failure of op/exec test #5 during the test phase of the build,
  201. Upgrading to a recent version (1.14.4 or later) should fix the problem.
  202. ******************************************************
  203. EOM
  204.  
  205. fi
  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.  
  222. if [  ! "`csh -c 'echo $version' 2>/dev/null`"  ] 
  223. then
  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
  235. else
  236.     echo 'Your csh is really tcsh.  Good.'
  237. fi
  238.  
  239. # Shimpei Yamashita <shimpei@socrates.patnet.caltech.edu>
  240. # Message-Id: <33EF1634.B36B6500@pobox.com>
  241. # The DR2 of MkLinux (osname=linux,archname=ppc-linux) may need
  242. # special flags passed in order for dynamic loading to work.
  243. # instead of the recommended:
  244. #
  245. # ccdlflags='-rdynamic'
  246. # it should be:
  247. # ccdlflags='-Wl,-E'
  248. #
  249. # So if your DR2 (DR3 came out summer 1998, consider upgrading)
  250. # has problems with dynamic loading, uncomment the
  251. # following three lines, make distclean, and re-Configure:
  252. #case "`uname -r | sed 's/^[0-9.-]*//'``arch`" in
  253. #'osfmach3ppc') ccdlflags='-Wl,-E' ;;
  254. #esac
  255.  
  256. case "`uname -r`" in
  257. sparc-linux)
  258.     case "$cccdlflags" in
  259.     *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;;
  260.     *)     cccdlflags="$cccdlflags -fPIC" ;;
  261.     esac
  262.     ;;
  263. esac
  264.  
  265. # This script UU/usethreads.cbu will get 'called-back' by Configure 
  266. # after it has prompted the user for whether to use threads.
  267. cat > UU/usethreads.cbu <<'EOCBU'
  268. case "$usethreads" in
  269. $define|true|[yY]*)
  270.         ccflags="-D_REENTRANT $ccflags"
  271.         set `echo X "$libswanted "| sed -e 's/ c / pthread c /'`
  272.         shift
  273.         libswanted="$*"
  274.     ;;
  275. esac
  276. EOCBU
  277.  
  278. cat > UU/uselargefiles.cbu <<'EOCBU'
  279. # This script UU/uselargefiles.cbu will get 'called-back' by Configure 
  280. # after it has prompted the user for whether to use large files.
  281. case "$uselargefiles" in
  282. ''|$define|true|[yY]*)
  283.     ccflags="$ccflags -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
  284.     ;;
  285. esac
  286. EOCBU
  287.