home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl501m.zip / patches / patch.1c < prev    next >
Text File  |  1995-04-20  |  75KB  |  2,678 lines

  1. # This is my patch  patch.1c for perl5.001.  See description below.
  2. #    Andy Dougherty        doughera@lafcol.lafayette.edu
  3. exit 0           # Just in case
  4.  
  5. This is my patch  patch.1c  for perl5.001.  
  6.  
  7. To apply, change to your perl directory,
  8. and apply with 
  9.     patch -N -p1 < thispatch.
  10.  
  11.     Patch and enjoy,
  12.  
  13.     Andy Dougherty            doughera@lafcol.lafayette.edu
  14.     Dept. of Physics
  15.     Lafayette College, Easton PA
  16.  
  17. Configure
  18.     Updated to dist PL53.
  19.     Fix overlapping memcpy test.
  20.     Add check for ld.  Use $cc instead, if on an ELF system.
  21.     With -d, don't reuse config.sh unless $myuname matches.
  22.     Warn more explicitly about changing compilers before reloading
  23.     old config.sh.
  24.     Detect Linux ELF format in nm scan.
  25.     Better detection of d_castneg.  (ISC 4.1 was passing the test,
  26.     but couldn't cast in an argument list.)
  27.     Suggest -fpic for dynamic loading if you're using GNU CC under any 
  28.     name.
  29.     No longer test for byacc, fmod, or drem, since they are not used.
  30.  
  31. Makefile.SH
  32.     Use $ld, not ld (only matters for SVR4)
  33.     Silence some byacc-related harmless error messages.
  34.  
  35. README
  36.     Suggest using -Dcc=gcc (or whatever).
  37.     Warn about reusing old config.sh.  (The warning was already there
  38.     in 5.001; I've just expanded it a little.)
  39.     Warn against using GNU as and GNU ld on SunOS & Solaris.
  40.    
  41. config.H
  42. config_h.SH
  43.     Updated to match Configure.
  44.  
  45. doio.c
  46.     Add socket includes.
  47.  
  48. ext/Fcntl/Fcntl.xs
  49.     Fix typo:  s/SETFL/F_SETFL/;
  50.  
  51. handy.h
  52.     Check _G_HAVE_BOOL, not just if it's defined.
  53.  
  54. hints/dynix.sh
  55. hints/hpux_9.sh
  56. hints/linux.sh
  57. hints/netbsd.sh
  58. hints/titanos.sh
  59.     Updated.  ELF on linux should probably work.
  60.  
  61. installperl
  62.     Install pod2html, pod2latex, and pod2man.
  63.  
  64. lib/ExtUtils/MakeMaker.pm
  65.     Updated to 4.091.  (4.09 + a small writedoc() patch.)
  66.  
  67. myconfig
  68.     Now includes 'ld' command.
  69.  
  70. perl.c
  71.     Revised an #elif clause since Pyramid's cpp doesn't understand
  72.     #elif.
  73.  
  74. perl.h
  75.     Fix U_L, I_V, and I_32 cast macros to ensure that
  76.     the cast_ulong(), cast_iv(), and cast_i32() functions (if used)
  77.     are passed a double.  In particular, the FIXSTATUS macros were
  78.     handing int's to U_L().
  79.     Remove unnecessary HAS_FMOD testing (See util.c).
  80.  
  81. proto.h
  82.     Remove my_fmod() prototype.  (See util.c)
  83.  
  84. sv.h
  85.     Fix GV/CV typo.
  86.  
  87. util.c
  88.     Simplified cast_i32() and cast_iv() to mimic what *actually*
  89.     happens on a SPARC running SunOS 4.1.3.  (Previously, they did
  90.     some complicated fmod() calculation.  I've since discovered that's
  91.     not what happens on the SPARC.)
  92.  
  93.     With this change, fmod() is no longer necessary.  Hence my_fmod
  94.     is removed.  This also means the HAS_FMOD and HAS_DREM tests are
  95.     no longer needed in Configure, so they are gone too.
  96.  
  97. vms/config.vms
  98.     Remove unnecessary HAS_FMOD and HAS_DREM defines.
  99.  
  100. x2p/Makefile.SH
  101.     Silence byacc-related things.
  102.  
  103. Index: Configure
  104. Prereq:  3.0.1.6 
  105. *** perl5.001b/Configure    Sun Mar 12 02:35:24 1995
  106. --- perl5.001c/Configure    Thu Apr  6 11:16:18 1995
  107. ***************
  108. *** 18,26 ****
  109.   # archive site. Check with Archie if you don't know where that can be.)
  110.   #
  111.   
  112. ! # $Id: Head.U,v 3.0.1.6 1994/10/29 15:54:19 ram Exp $
  113.   #
  114. ! # Generated on Fri Mar 10 09:48:55 EST 1995 [metaconfig 3.0 PL51]
  115.   
  116.   cat >/tmp/c1$$ <<EOF
  117.   ARGGGHHHH!!!!!
  118. --- 18,26 ----
  119.   # archive site. Check with Archie if you don't know where that can be.)
  120.   #
  121.   
  122. ! # $Id: Head.U,v 3.0.1.7 1995/03/21 08:46:15 ram Exp $
  123.   #
  124. ! # Generated on Thu Apr  6 11:09:32 EDT 1995 [metaconfig 3.0 PL53]
  125.   
  126.   cat >/tmp/c1$$ <<EOF
  127.   ARGGGHHHH!!!!!
  128. ***************
  129. *** 58,68 ****
  130.   
  131.   : Proper PATH setting
  132.   paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
  133. ! paths=$paths:'/usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin'
  134. ! paths=$paths:'/sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb'
  135. ! paths=$paths:'/bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin'
  136. ! paths=$paths:'/etc /usr/lib /usr/ucblib /lib /usr/ccs/lib'
  137. ! paths=$paths:'/sbin /usr/sbin /usr/libexec'
  138.   
  139.   for p in $paths
  140.   do
  141. --- 58,68 ----
  142.   
  143.   : Proper PATH setting
  144.   paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
  145. ! paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
  146. ! paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
  147. ! paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
  148. ! paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
  149. ! paths="$paths /sbin /usr/sbin /usr/libexec"
  150.   
  151.   for p in $paths
  152.   do
  153. ***************
  154. *** 229,235 ****
  155.   d_attribut=''
  156.   d_bcmp=''
  157.   d_bcopy=''
  158. - d_byacc=''
  159.   d_bzero=''
  160.   d_casti32=''
  161.   castflags=''
  162. --- 229,234 ----
  163. ***************
  164. *** 252,258 ****
  165.   d_dlsymun=''
  166.   d_dosuid=''
  167.   d_suidsafe=''
  168. - d_drem=''
  169.   d_dup2=''
  170.   d_fchmod=''
  171.   d_fchown=''
  172. --- 251,256 ----
  173. ***************
  174. *** 263,269 ****
  175.   d_fgetpos=''
  176.   d_flexfnam=''
  177.   d_flock=''
  178. - d_fmod=''
  179.   d_fork=''
  180.   d_fsetpos=''
  181.   d_Gconvert=''
  182. --- 261,266 ----
  183. ***************
  184. *** 390,395 ****
  185. --- 387,393 ----
  186.   ccdlflags=''
  187.   d_shrplib=''
  188.   dlsrc=''
  189. + ld=''
  190.   lddlflags=''
  191.   shrpdir=''
  192.   usedl=''
  193. ***************
  194. *** 607,613 ****
  195.   al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
  196.   al="$al xenix z8000"
  197.   
  198. - gccversion=''
  199.   groupstype=''
  200.   i_whoami=''
  201.   : change the next line if compiling for Xenix/286 on Xenix/386
  202. --- 605,610 ----
  203. ***************
  204. *** 803,809 ****
  205.           esac
  206.           shift
  207.           ;;
  208. !     -V) echo "$me generated by metaconfig 3.0 PL51." >&2
  209.           exit 0;;
  210.       --) break;;
  211.       -*) echo "$me: unknown option $1" >&2; shift; error=true;;
  212. --- 800,806 ----
  213.           esac
  214.           shift
  215.           ;;
  216. !     -V) echo "$me generated by metaconfig 3.0 PL53." >&2
  217.           exit 0;;
  218.       --) break;;
  219.       -*) echo "$me: unknown option $1" >&2; shift; error=true;;
  220. ***************
  221. *** 1425,1433 ****
  222.       ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
  223.   newmyuname="$myuname"
  224.   dflt=n
  225. ! if test "$fastread" = yes; then
  226. !     dflt=y
  227. ! elif test -f ../config.sh; then
  228.       if $contains myuname= ../config.sh >/dev/null 2>&1; then
  229.           eval "`grep myuname= ../config.sh`"
  230.       fi
  231. --- 1422,1428 ----
  232.       ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
  233.   newmyuname="$myuname"
  234.   dflt=n
  235. ! if test -f ../config.sh; then
  236.       if $contains myuname= ../config.sh >/dev/null 2>&1; then
  237.           eval "`grep myuname= ../config.sh`"
  238.       fi
  239. ***************
  240. *** 1441,1448 ****
  241.   hint=default
  242.   cd ..
  243.   if test -f config.sh; then
  244. !     echo " "
  245. !     rp="I see a config.sh file.  Shall I use it to set the defaults?"
  246.       . UU/myread
  247.       case "$ans" in
  248.       n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
  249. --- 1436,1446 ----
  250.   hint=default
  251.   cd ..
  252.   if test -f config.sh; then
  253. !     $cat <<EOM
  254. ! I see a config.sh file.  Was it built on THIS system with THIS compiler?  
  255. ! EOM
  256. !     rp="Shall I use config.sh to set the defaults?"
  257.       . UU/myread
  258.       case "$ans" in
  259.       n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
  260. ***************
  261. *** 3087,3093 ****
  262.   $grep fprintf libc.tmp > libc.ptf
  263.   xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
  264.   xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
  265. ! if com="$sed -n -e 's/__IO//' -e 's/^.* [ADTSI]  *_[_.]*//p' -e 's/^.* [ADTSI] //p'";\
  266.       eval $xscan;\
  267.       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
  268.           eval $xrun
  269. --- 3085,3091 ----
  270.   $grep fprintf libc.tmp > libc.ptf
  271.   xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
  272.   xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
  273. ! if com="$sed -n -e 's/__IO//' -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
  274.       eval $xscan;\
  275.       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
  276.           eval $xrun
  277. ***************
  278. *** 3130,3136 ****
  279.           eval $xrun
  280.   else
  281.       nm -p $* 2>/dev/null >libc.tmp
  282. !     com="$sed -n -e 's/^.* [ADTSI]  *_[_.]*//p' -e 's/^.* [ADTSI] //p'";\
  283.       eval "<libc.tmp $com >libc.list"
  284.       if $contains '^fprintf$' libc.list >/dev/null 2>&1; then
  285.           nm_opt='-p'
  286. --- 3128,3134 ----
  287.           eval $xrun
  288.   else
  289.       nm -p $* 2>/dev/null >libc.tmp
  290. !     com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
  291.       eval "<libc.tmp $com >libc.list"
  292.       if $contains '^fprintf$' libc.list >/dev/null 2>&1; then
  293.           nm_opt='-p'
  294. ***************
  295. *** 3701,3714 ****
  296.   eval $setvar
  297.   $rm -f set set.c
  298.   
  299. - : Check if we really have byacc
  300. - case "$byacc" in
  301. - ''|'byacc') val="$undef" ;;
  302. - *) val="$define" ;;
  303. - esac
  304. - set d_byacc
  305. - eval $setvar
  306.   : see if bzero exists
  307.   set bzero d_bzero
  308.   eval $inlibc
  309. --- 3699,3704 ----
  310. ***************
  311. *** 3832,3841 ****
  312.   $cat >try.c <<EOCP
  313.   #include <sys/types.h>
  314.   #include <signal.h>
  315. ! $signal_t blech() { exit(3); }
  316.   main()
  317.   {
  318. !     double f = -123;
  319.       unsigned long along;
  320.       unsigned int aint;
  321.       unsigned short ashort;
  322. --- 3822,3835 ----
  323.   $cat >try.c <<EOCP
  324.   #include <sys/types.h>
  325.   #include <signal.h>
  326. ! $signal_t blech() { exit(7); }
  327. ! $signal_t blech_in_list() { exit(4); }
  328. ! unsigned long dummy_long(p) unsigned long p; { return p; }
  329. ! unsigned int dummy_int(p) unsigned int p; { return p; }
  330. ! unsigned short dummy_short(p) unsigned short p; { return p; }
  331.   main()
  332.   {
  333. !     double f = -123.;
  334.       unsigned long along;
  335.       unsigned int aint;
  336.       unsigned short ashort;
  337. ***************
  338. *** 3867,3872 ****
  339. --- 3861,3879 ----
  340.       along = (unsigned long)f;
  341.       if (along != 0x80000001)
  342.           result |= 2;
  343. +     if (result)
  344. +         exit(result);
  345. +     signal(SIGFPE, blech_in_list);
  346. +     f = 123.;
  347. +     along = dummy_long((unsigned long)f);
  348. +     aint = dummy_int((unsigned int)f);
  349. +     ashort = dummy_short((unsigned short)f);
  350. +     if (along != (unsigned long)123)
  351. +         result |= 4;
  352. +     if (aint != (unsigned int)123)
  353. +         result |= 4;
  354. +     if (ashort != (unsigned short)123)
  355. +         result |= 4;
  356.       exit(result);
  357.   
  358.   }
  359. ***************
  360. *** 3876,3882 ****
  361.       castflags=$?
  362.   else
  363.       echo "(I can't seem to compile the test program--assuming it can't)"
  364. !     castflags=3
  365.   fi
  366.   case "$castflags" in
  367.   0)    val="$define"
  368. --- 3883,3889 ----
  369.       castflags=$?
  370.   else
  371.       echo "(I can't seem to compile the test program--assuming it can't)"
  372. !     castflags=7
  373.   fi
  374.   case "$castflags" in
  375.   0)    val="$define"
  376. ***************
  377. *** 4209,4214 ****
  378. --- 4216,4222 ----
  379.       usedl="$define"
  380.       : emulate basename
  381.       dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
  382.       $cat << EOM
  383.   
  384.   Some systems may require passing special flags to $cc -c to
  385. ***************
  386. *** 4217,4225 ****
  387.   
  388.   EOM
  389.       case "$cccdlflags" in
  390. !     ''|' ') case "$cc" in
  391. !         *gcc*)    dflt='-fpic' ;;
  392. !         *)  case "$osname" in
  393.               hpux)    dflt='+z' ;;
  394.               next)    dflt='none' ;;
  395.               solaris) dflt='-K pic' ;;
  396. --- 4225,4232 ----
  397.   
  398.   EOM
  399.       case "$cccdlflags" in
  400. !     '')    case "$gccversion" in
  401. !         '') case "$osname" in
  402.               hpux)    dflt='+z' ;;
  403.               next)    dflt='none' ;;
  404.               solaris) dflt='-K pic' ;;
  405. ***************
  406. *** 4227,4234 ****
  407.               svr4*|esix*) dflt='-Kpic' ;;
  408.               *)    dflt='none' ;;
  409.               esac ;;
  410.           esac ;;
  411. !     *) dflt="$cccdlflags" ;;
  412.       esac
  413.       rp="Any special flags to pass to $cc -c to compile shared library modules?"
  414.       . ./myread
  415. --- 4234,4242 ----
  416.               svr4*|esix*) dflt='-Kpic' ;;
  417.               *)    dflt='none' ;;
  418.               esac ;;
  419. +         *)    dflt='-fpic' ;;
  420.           esac ;;
  421. !     *)    dflt="$cccdlflags" ;;
  422.       esac
  423.       rp="Any special flags to pass to $cc -c to compile shared library modules?"
  424.       . ./myread
  425. ***************
  426. *** 4237,4245 ****
  427.       *) cccdlflags="$ans" ;;
  428.       esac
  429.   
  430. !     cat << 'EOM'
  431.   
  432. ! Some systems may require passing special flags to ld to create a
  433.   library that can be dynamically loaded.  If your ld flags include
  434.   -L/other/path options to locate libraries outside your loader's normal
  435.   search path, you may need to specify those -L options here as well.  To
  436. --- 4245,4294 ----
  437.       *) cccdlflags="$ans" ;;
  438.       esac
  439.   
  440. !     cat << EOM
  441. ! Some systems use ld to create libraries that can be dynamically loaded,
  442. ! while other systems (such as those using ELF) use $cc.
  443. ! EOM
  444. !     case "$ld" in
  445. !     '')    $cat >try.c <<'EOM'
  446. ! /* Test for whether ELF binaries are produced */
  447. ! #include <fcntl.h>
  448. ! #include <stdlib.h>
  449. ! main() {
  450. !     char b[4];
  451. !     int i = open("a.out",O_RDONLY);
  452. !     if(i == -1) 
  453. !         exit(1); /* fail */
  454. !     if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
  455. !         exit(0); /* succeed (yes, it's ELF) */
  456. !     else
  457. !         exit(1); /* fail */
  458. ! }
  459. ! EOM
  460. !         if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
  461. !             cat <<EOM
  462. ! You appear to have ELF support.  I'll use $cc to build dynamic libraries.
  463. ! EOM
  464. !             dflt="$cc"
  465. !         else
  466. !             echo "I'll use ld to build dynamic libraries."
  467. !             dflt='ld'
  468. !         fi
  469. !         rm -f try.c a.out
  470. !         ;;
  471. !     *)    dflt=ld
  472. !         ;;
  473. !     esac
  474. !     rp="What comnmand should be used to create dynamic libraries?"
  475. !     . ./myread
  476. !     ld="$ans"
  477. !     cat << EOM
  478.   
  479. ! Some systems may require passing special flags to $ld to create a
  480.   library that can be dynamically loaded.  If your ld flags include
  481.   -L/other/path options to locate libraries outside your loader's normal
  482.   search path, you may need to specify those -L options here as well.  To
  483. ***************
  484. *** 4249,4254 ****
  485. --- 4298,4304 ----
  486.       case "$lddlflags" in
  487.       ''|' ') case "$osname" in
  488.               hpux)  dflt='-b' ;;
  489. +             linux)    dflt='-shared' ;;
  490.               next)  dflt='none' ;;
  491.               solaris) dflt='-G' ;;
  492.               sunos) dflt='-assert nodefinitions' ;;
  493. ***************
  494. *** 4258,4264 ****
  495.               ;;
  496.       *) dflt="$lddlflags" ;;
  497.       esac
  498. !     rp="Any special flags to pass to ld to create a dynamically loaded library?"
  499.       . ./myread
  500.       case "$ans" in
  501.       none) lddlflags='' ;;
  502. --- 4308,4314 ----
  503.               ;;
  504.       *) dflt="$lddlflags" ;;
  505.       esac
  506. !     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
  507.       . ./myread
  508.       case "$ans" in
  509.       none) lddlflags='' ;;
  510. ***************
  511. *** 4274,4280 ****
  512.   EOM
  513.       case "$ccdlflags" in
  514.       ''|' ') case "$osname" in
  515. !         hpux)    dflt='none' ;;
  516.           next)    dflt='none' ;;
  517.           sunos)    dflt='none' ;;
  518.           *)    dflt='none' ;;
  519. --- 4324,4331 ----
  520.   EOM
  521.       case "$ccdlflags" in
  522.       ''|' ') case "$osname" in
  523. !         hpux)    dflt='-Wl,-E' ;;
  524. !         linux)    dflt='-rdynamic' ;;
  525.           next)    dflt='none' ;;
  526.           sunos)    dflt='none' ;;
  527.           *)    dflt='none' ;;
  528. ***************
  529. *** 4289,4294 ****
  530. --- 4340,4346 ----
  531.       esac
  532.       ;;
  533.   *)  usedl="$undef"
  534. +     ld='ld'
  535.       dlsrc='dl_none.xs'
  536.       lddlflags=''
  537.       ccdlflags=''
  538. ***************
  539. *** 4420,4426 ****
  540.   }
  541.   EOM
  542.       if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
  543. !         ld $lddlflags -o dyna.$dlext dyna.o > /dev/null 2>&1 && 
  544.           $cc $ccflags $ldflags $cccdlflags $ccdlflags fred.c -o fred $libs > /dev/null 2>&1; then
  545.           xxx=`./fred`
  546.           case $xxx in
  547. --- 4472,4478 ----
  548.   }
  549.   EOM
  550.       if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
  551. !         $ld $lddlflags -o dyna.$dlext dyna.o > /dev/null 2>&1 && 
  552.           $cc $ccflags $ldflags $cccdlflags $ccdlflags fred.c -o fred $libs > /dev/null 2>&1; then
  553.           xxx=`./fred`
  554.           case $xxx in
  555. ***************
  556. *** 4552,4561 ****
  557.   set d_dosuid
  558.   eval $setvar
  559.   
  560. - : see if drem exists
  561. - set drem d_drem
  562. - eval $inlibc
  563.   : see if dup2 exists
  564.   set dup2 d_dup2
  565.   eval $inlibc
  566. --- 4604,4609 ----
  567. ***************
  568. *** 4623,4632 ****
  569.   set flock d_flock
  570.   eval $inlibc
  571.   
  572. - : see if fmod exists
  573. - set fmod d_fmod
  574. - eval $inlibc
  575.   : see if fork exists
  576.   set fork d_fork
  577.   eval $inlibc
  578. --- 4671,4676 ----
  579. ***************
  580. *** 5204,5213 ****
  581.   for (align = 7; align >= 0; align--) {
  582.       for (len = 36; len; len--) {
  583.           b = buf+align;
  584. !         memcpy(abc, b, len);
  585.           for (off = 1; off <= len; off++) {
  586. -             memcpy(b, b+off, len);
  587.               memcpy(b+off, b, len);
  588.               if (memcmp(b, abc, len))
  589.                   exit(1);
  590.           }
  591. --- 5248,5257 ----
  592.   for (align = 7; align >= 0; align--) {
  593.       for (len = 36; len; len--) {
  594.           b = buf+align;
  595. !         memcpy(b, abc, len);
  596.           for (off = 1; off <= len; off++) {
  597.               memcpy(b+off, b, len);
  598. +             memcpy(b, b+off, len);
  599.               if (memcmp(b, abc, len))
  600.                   exit(1);
  601.           }
  602. ***************
  603. *** 5626,5632 ****
  604.           . ./myread
  605.           case "$ans" in
  606.           y*) hostcat='nidump hosts .';;
  607. !         *) ;;
  608.           esac
  609.       fi
  610.       case "$hostcat" in
  611. --- 5670,5679 ----
  612.           . ./myread
  613.           case "$ans" in
  614.           y*) hostcat='nidump hosts .';;
  615. !         *)    case "$hostcat" in
  616. !             nidump*) hostcat='';;
  617. !             esac
  618. !             ;;
  619.           esac
  620.       fi
  621.       case "$hostcat" in
  622. ***************
  623. *** 6097,6103 ****
  624.   define)
  625.       : Check the return type needed for hash 
  626.       echo "Checking return type needed for hash for Berkeley DB ..." >&4
  627. !     cat >try.c <<'EOCP'
  628.   #include <sys/types.h>
  629.   #include <db.h>
  630.   u_int32_t 
  631. --- 6144,6150 ----
  632.   define)
  633.       : Check the return type needed for hash 
  634.       echo "Checking return type needed for hash for Berkeley DB ..." >&4
  635. !     $cat >try.c <<'EOCP'
  636.   #include <sys/types.h>
  637.   #include <db.h>
  638.   u_int32_t 
  639. ***************
  640. *** 6122,6128 ****
  641.           echo "I can't seem to compile the test program." >&4
  642.           db_hashtype=int
  643.       fi
  644. !     $rm -f try.[co]
  645.       echo "Your version of Berkeley DB uses $db_hashtype for hash."
  646.       ;;
  647.   *)    db_hashtype=int
  648. --- 6169,6175 ----
  649.           echo "I can't seem to compile the test program." >&4
  650.           db_hashtype=int
  651.       fi
  652. !     $rm -f try.*
  653.       echo "Your version of Berkeley DB uses $db_hashtype for hash."
  654.       ;;
  655.   *)    db_hashtype=int
  656. ***************
  657. *** 6158,6164 ****
  658.           echo "I can't seem to compile the test program." >&4
  659.           db_prefixtype='int'
  660.       fi
  661. !     $rm -f try.[co]
  662.       echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
  663.       ;;
  664.   *)    db_prefixtype='int'
  665. --- 6205,6211 ----
  666.           echo "I can't seem to compile the test program." >&4
  667.           db_prefixtype='int'
  668.       fi
  669. !     $rm -f try.*
  670.       echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
  671.       ;;
  672.   *)    db_prefixtype='int'
  673. ***************
  674. *** 7702,7708 ****
  675.   d_bcopy='$d_bcopy'
  676.   d_bsd='$d_bsd'
  677.   d_bsdpgrp='$d_bsdpgrp'
  678. - d_byacc='$d_byacc'
  679.   d_bzero='$d_bzero'
  680.   d_casti32='$d_casti32'
  681.   d_castneg='$d_castneg'
  682. --- 7749,7754 ----
  683. ***************
  684. *** 7722,7728 ****
  685.   d_dlopen='$d_dlopen'
  686.   d_dlsymun='$d_dlsymun'
  687.   d_dosuid='$d_dosuid'
  688. - d_drem='$d_drem'
  689.   d_dup2='$d_dup2'
  690.   d_eunice='$d_eunice'
  691.   d_fchmod='$d_fchmod'
  692. --- 7768,7773 ----
  693. ***************
  694. *** 7734,7740 ****
  695.   d_fgetpos='$d_fgetpos'
  696.   d_flexfnam='$d_flexfnam'
  697.   d_flock='$d_flock'
  698. - d_fmod='$d_fmod'
  699.   d_fork='$d_fork'
  700.   d_fpathconf='$d_fpathconf'
  701.   d_fsetpos='$d_fsetpos'
  702. --- 7779,7784 ----
  703. ***************
  704. *** 7945,7950 ****
  705. --- 7989,7995 ----
  706.   known_extensions='$known_extensions'
  707.   ksh='$ksh'
  708.   large='$large'
  709. + ld='$ld'
  710.   lddlflags='$lddlflags'
  711.   ldflags='$ldflags'
  712.   less='$less'
  713. Index: Makefile.SH
  714. *** perl5.001b/Makefile.SH    Fri Apr  7 07:58:29 1995
  715. --- perl5.001c/Makefile.SH    Thu Apr  6 13:59:46 1995
  716. ***************
  717. *** 77,82 ****
  718. --- 77,83 ----
  719.   # I now supply perly.c with the kits, so don't remake perly.c without byacc
  720.   BYACC = $byacc
  721.   CC = $cc
  722. + LD = $ld
  723.   bin = $installbin
  724.   scriptdir = $scriptdir
  725.   privlib = $installprivlib
  726. ***************
  727. *** 221,227 ****
  728.   case "$d_shrplib" in
  729.   *define*)
  730.   $spitshell >>Makefile <<'!NO!SUBS!'
  731. !     ld $(LDDLFLAGS) -o $@ perl.o $(obj)
  732.   !NO!SUBS!
  733.   ;;
  734.   *)
  735. --- 222,228 ----
  736.   case "$d_shrplib" in
  737.   *define*)
  738.   $spitshell >>Makefile <<'!NO!SUBS!'
  739. !     $(LD) $(LDDLFLAGS) -o $@ perl.o $(obj)
  740.   !NO!SUBS!
  741.   ;;
  742.   *)
  743. ***************
  744. *** 281,287 ****
  745.   # to run with precisely the same version of byacc as I use.  You
  746.   # normally shouldn't remake perly.[ch].
  747.   
  748. ! run_byacc:
  749.       @ echo 'Expect' 109 shift/reduce and 1 reduce/reduce conflict
  750.       $(BYACC) -d perly.y
  751.       sh $(shellflags) ./perly.fixer y.tab.c perly.c
  752. --- 282,288 ----
  753.   # to run with precisely the same version of byacc as I use.  You
  754.   # normally shouldn't remake perly.[ch].
  755.   
  756. ! run_byacc:    FORCE
  757.       @ echo 'Expect' 109 shift/reduce and 1 reduce/reduce conflict
  758.       $(BYACC) -d perly.y
  759.       sh $(shellflags) ./perly.fixer y.tab.c perly.c
  760. ***************
  761. *** 292,301 ****
  762.   # appear out-of-date after a patch is applied or a new distribution is
  763.   # made.
  764.   perly.c: perly.y
  765. !     - touch perly.c
  766.   
  767.   perly.h: perly.y
  768. !     - touch perly.h
  769.   
  770.   # Extensions:
  771.   # Names added to $(dynamic_ext) or $(static_ext) will automatically
  772. --- 293,302 ----
  773.   # appear out-of-date after a patch is applied or a new distribution is
  774.   # made.
  775.   perly.c: perly.y
  776. !     -@touch perly.c
  777.   
  778.   perly.h: perly.y
  779. !     -@touch perly.h
  780.   
  781.   # Extensions:
  782.   # Names added to $(dynamic_ext) or $(static_ext) will automatically
  783. ***************
  784. *** 337,342 ****
  785. --- 338,344 ----
  786.       rm -f config.h makefile makefile.old
  787.       rm -f $(private)
  788.       rm -rf lib/auto
  789. +     rm -f lib/.exists
  790.       rm -f h2ph h2ph.man c2ph pstruct h2xs makeaperl
  791.       rm -rf .config
  792.       @echo "Note that make realclean does not delete config.sh"
  793. Index: README
  794. *** perl5.001b/README    Tue Feb 28 19:40:58 1995
  795. --- perl5.001c/README    Thu Apr  6 14:08:57 1995
  796. ***************
  797. *** 73,81 ****
  798.   
  799.       Configure supports a number of useful options.  Run Configure -h 
  800.       to get a listing.  To compile with gcc, for example, you can run 
  801. !     Configure -Dcc=gcc, or answer 'gcc' at the cc prompt.  If you
  802. !     change compilers or make other significant changes, you should
  803. !     probably _not_ re-use your old config.sh.
  804.       
  805.       By default, perl will be installed in /usr/local/{bin, lib, man}.
  806.       You can specify a different prefix for the default installation
  807. --- 73,85 ----
  808.   
  809.       Configure supports a number of useful options.  Run Configure -h 
  810.       to get a listing.  To compile with gcc, for example, you can run 
  811. !     Configure -Dcc=gcc, or answer 'gcc' at the cc prompt.  This is the
  812. !     preferred way to invoke an alternate compiler, since the hints
  813. !     files can then set appropriate defaults.
  814. !     
  815. !     If you change compilers or make other significant changes, you should
  816. !     probably _not_ re-use your old config.sh.  Simply remove it or
  817. !     rename it, e.g. mv config.sh config.sh.old.
  818.       
  819.       By default, perl will be installed in /usr/local/{bin, lib, man}.
  820.       You can specify a different prefix for the default installation
  821. ***************
  822. *** 152,157 ****
  823. --- 156,165 ----
  824.       If you get varags problems with gcc, be sure that gcc is installed
  825.       correctly.  When using gcc, you should probably have i_stdarg='define'
  826.       and i_varags='undef' in config.sh.
  827. +     If you wish to use dynamic loading on SunOS or Solaris, and you
  828. +     have GNU as and GNU ld installed, you may need to add -B/bin/ to
  829. +     your $ccflags and $ldflags so that the system's versions of as 
  830. +     and ld are used.
  831.   
  832.   5)  make test
  833.   
  834. ***************
  835. *** 184,189 ****
  836. --- 192,200 ----
  837.       s2p        sed-to-perl translator
  838.       find2perl    find-to-perl translator
  839.       h2xs        Converts C .h header files to Perl extensions.
  840. +     pod2html,    Converters from perl's pod documentation format
  841. +     pod2latex, and     to other useful formats.
  842. +     pod2man
  843.   
  844.       library files    in $privlib and $archlib specified to
  845.               Configure, usually under /usr/local/lib/perl5/.
  846. Index: config.H
  847. Prereq:  3.0.1.3 
  848. *** perl5.001b/config.H    Tue Feb 28 19:41:30 1995
  849. --- perl5.001c/config.H    Thu Apr  6 14:10:48 1995
  850. ***************
  851. *** 14,20 ****
  852.    * $Id: Config_h.U,v 3.0.1.3 1995/01/30 14:25:39 ram Exp $
  853.    */
  854.   
  855. ! /* Configuration time: Mon Feb 27 17:21:15 EST 1995
  856.    * Configured by: andy
  857.    * Target system: crystal crystal 3.2 2 i386 
  858.    */
  859. --- 14,20 ----
  860.    * $Id: Config_h.U,v 3.0.1.3 1995/01/30 14:25:39 ram Exp $
  861.    */
  862.   
  863. ! /* Configuration time: Wed Apr  5 14:50:33 EDT 1995
  864.    * Configured by: andy
  865.    * Target system: crystal crystal 3.2 2 i386 
  866.    */
  867. ***************
  868. *** 140,148 ****
  869.    *        0 = ok
  870.    *        1 = couldn't cast < 0
  871.    *        2 = couldn't cast >= 0x80000000
  872.    */
  873.   /*#define    CASTNEGFLOAT        /**/
  874. ! #define CASTFLAGS 3        /**/
  875.   
  876.   /* HAS_CHOWN:
  877.    *    This symbol, if defined, indicates that the chown routine is
  878. --- 140,149 ----
  879.    *        0 = ok
  880.    *        1 = couldn't cast < 0
  881.    *        2 = couldn't cast >= 0x80000000
  882. +  *        4 = couldn't cast in argument expression list
  883.    */
  884.   /*#define    CASTNEGFLOAT        /**/
  885. ! #define CASTFLAGS 7        /**/
  886.   
  887.   /* HAS_CHOWN:
  888.    *    This symbol, if defined, indicates that the chown routine is
  889. ***************
  890. *** 232,245 ****
  891.   /*#define SETUID_SCRIPTS_ARE_SECURE_NOW    /**/
  892.   /*#define DOSUID        /**/
  893.   
  894. - /* HAS_DREM:
  895. -  *    This symbol, if defined, indicates that the drem routine is
  896. -  *    available.  This routine is roughly the same as fmod, i.e. it
  897. -  *    computes the remainder r=x-n*y, where n=rint(x/y), whereas fmod
  898. -  *    uses n=trunc(x/y).
  899. -  */
  900. - /*#define HAS_DREM        /**/
  901.   /* HAS_DUP2:
  902.    *    This symbol, if defined, indicates that the dup2 routine is
  903.    *    available to duplicate file descriptors.
  904. --- 233,238 ----
  905. ***************
  906. *** 282,293 ****
  907.    */
  908.   /*#define HAS_FLOCK        /**/
  909.   
  910. - /* HAS_FMOD:
  911. -  *    This symbol, if defined, indicates that the fmod routine is
  912. -  *    available to compute the remainder r=x-n*y where n=trunc(x/y).
  913. -  */
  914. - #define HAS_FMOD        /**/
  915.   /* HAS_FORK:
  916.    *    This symbol, if defined, indicates that the fork routine is
  917.    *    available.
  918. --- 275,280 ----
  919. ***************
  920. *** 597,603 ****
  921.    *    probably use memmove() or memcpy(). If neither is defined, roll your
  922.    *    own version.
  923.    */
  924. ! #define HAS_SAFE_MEMCPY    /**/
  925.   
  926.   /* HAS_SELECT:
  927.    *    This symbol, if defined, indicates that the select routine is
  928. --- 584,590 ----
  929.    *    probably use memmove() or memcpy(). If neither is defined, roll your
  930.    *    own version.
  931.    */
  932. ! /*#define HAS_SAFE_MEMCPY    /**/
  933.   
  934.   /* HAS_SELECT:
  935.    *    This symbol, if defined, indicates that the select routine is
  936. ***************
  937. *** 959,964 ****
  938. --- 946,964 ----
  939.   #define Groups_t gid_t    /* Type for 2nd arg to getgroups() */
  940.   #endif
  941.   
  942. + /* DB_Prefix_t:
  943. +  *    This symbol contains the type of the prefix structure element
  944. +  *    in the <db.h> header file.  In older versions of DB, it was
  945. +  *    int, while in newer ones it is u_int32_t.
  946. +  */
  947. + /* DB_Hash_t:
  948. +  *    This symbol contains the type of the prefix structure element
  949. +  *    in the <db.h> header file.  In older versions of DB, it was
  950. +  *    int, while in newer ones it is size_t.
  951. +  */
  952. + #define DB_Hash_t    int        /**/
  953. + #define DB_Prefix_t    int      /**/
  954.   /* I_DIRENT:
  955.    *    This symbol, if defined, indicates to the C program that it should
  956.    *    include <dirent.h>. Using this symbol also triggers the definition
  957. ***************
  958. *** 1022,1027 ****
  959. --- 1022,1033 ----
  960.    */
  961.   /*#define I_MEMORY        /**/
  962.   
  963. + /* I_NDBM:
  964. +  *    This symbol, if defined, indicates that ndbm.h exists and should
  965. +  *    be included.
  966. +  */
  967. + #define I_NDBM    /**/
  968.   /* I_NET_ERRNO:
  969.    *    This symbol, if defined, indicates that <net/errno.h> exists and 
  970.    *    should be included.
  971. ***************
  972. *** 1372,1396 ****
  973.    *    some sort is available.
  974.    */
  975.   /*#define USE_DYNAMIC_LOADING        /**/
  976. - /* DB_Prefix_t:
  977. -  *    This symbol contains the type of the prefix structure element
  978. -  *    in the <db.h> header file.  In older versions of DB, it was
  979. -  *    int, while in newer ones it is u_int32_t.
  980. -  */
  981. - /* DB_Hash_t:
  982. -  *    This symbol contains the type of the prefix structure element
  983. -  *    in the <db.h> header file.  In older versions of DB, it was
  984. -  *    int, while in newer ones it is size_t.
  985. -  */
  986. - #define DB_Hash_t    int        /**/
  987. - #define DB_Prefix_t    int      /**/
  988. - /* I_NDBM:
  989. -  *    This symbol, if defined, indicates that ndbm.h exists and should
  990. -  *    be included.
  991. -  */
  992. - #define I_NDBM    /**/
  993.   
  994.   /* I_SYS_STAT:
  995.    *    This symbol, if defined, indicates to the C program that it should
  996. --- 1378,1383 ----
  997. Index: config_h.SH
  998. Prereq:  3.0.1.3 
  999. *** perl5.001b/config_h.SH    Tue Feb 28 19:42:13 1995
  1000. --- perl5.001c/config_h.SH    Thu Apr  6 11:16:18 1995
  1001. ***************
  1002. *** 154,159 ****
  1003. --- 154,160 ----
  1004.    *        0 = ok
  1005.    *        1 = couldn't cast < 0
  1006.    *        2 = couldn't cast >= 0x80000000
  1007. +  *        4 = couldn't cast in argument expression list
  1008.    */
  1009.   #$d_castneg    CASTNEGFLOAT        /**/
  1010.   #define CASTFLAGS $castflags        /**/
  1011. ***************
  1012. *** 246,259 ****
  1013.   #$d_suidsafe SETUID_SCRIPTS_ARE_SECURE_NOW    /**/
  1014.   #$d_dosuid DOSUID        /**/
  1015.   
  1016. - /* HAS_DREM:
  1017. -  *    This symbol, if defined, indicates that the drem routine is
  1018. -  *    available.  This routine is roughly the same as fmod, i.e. it
  1019. -  *    computes the remainder r=x-n*y, where n=rint(x/y), whereas fmod
  1020. -  *    uses n=trunc(x/y).
  1021. -  */
  1022. - #$d_drem HAS_DREM        /**/
  1023.   /* HAS_DUP2:
  1024.    *    This symbol, if defined, indicates that the dup2 routine is
  1025.    *    available to duplicate file descriptors.
  1026. --- 247,252 ----
  1027. ***************
  1028. *** 296,307 ****
  1029.    */
  1030.   #$d_flock HAS_FLOCK        /**/
  1031.   
  1032. - /* HAS_FMOD:
  1033. -  *    This symbol, if defined, indicates that the fmod routine is
  1034. -  *    available to compute the remainder r=x-n*y where n=trunc(x/y).
  1035. -  */
  1036. - #$d_fmod HAS_FMOD        /**/
  1037.   /* HAS_FORK:
  1038.    *    This symbol, if defined, indicates that the fork routine is
  1039.    *    available.
  1040. --- 289,294 ----
  1041. ***************
  1042. *** 973,978 ****
  1043. --- 960,978 ----
  1044.   #define Groups_t $groupstype    /* Type for 2nd arg to getgroups() */
  1045.   #endif
  1046.   
  1047. + /* DB_Prefix_t:
  1048. +  *    This symbol contains the type of the prefix structure element
  1049. +  *    in the <db.h> header file.  In older versions of DB, it was
  1050. +  *    int, while in newer ones it is u_int32_t.
  1051. +  */
  1052. + /* DB_Hash_t:
  1053. +  *    This symbol contains the type of the prefix structure element
  1054. +  *    in the <db.h> header file.  In older versions of DB, it was
  1055. +  *    int, while in newer ones it is size_t.
  1056. +  */
  1057. + #define DB_Hash_t    $db_hashtype        /**/
  1058. + #define DB_Prefix_t    $db_prefixtype      /**/
  1059.   /* I_DIRENT:
  1060.    *    This symbol, if defined, indicates to the C program that it should
  1061.    *    include <dirent.h>. Using this symbol also triggers the definition
  1062. ***************
  1063. *** 1036,1041 ****
  1064. --- 1036,1047 ----
  1065.    */
  1066.   #$i_memory I_MEMORY        /**/
  1067.   
  1068. + /* I_NDBM:
  1069. +  *    This symbol, if defined, indicates that ndbm.h exists and should
  1070. +  *    be included.
  1071. +  */
  1072. + #$i_ndbm I_NDBM    /**/
  1073.   /* I_NET_ERRNO:
  1074.    *    This symbol, if defined, indicates that <net/errno.h> exists and 
  1075.    *    should be included.
  1076. ***************
  1077. *** 1386,1410 ****
  1078.    *    some sort is available.
  1079.    */
  1080.   #$usedl USE_DYNAMIC_LOADING        /**/
  1081. - /* DB_Prefix_t:
  1082. -  *    This symbol contains the type of the prefix structure element
  1083. -  *    in the <db.h> header file.  In older versions of DB, it was
  1084. -  *    int, while in newer ones it is u_int32_t.
  1085. -  */
  1086. - /* DB_Hash_t:
  1087. -  *    This symbol contains the type of the prefix structure element
  1088. -  *    in the <db.h> header file.  In older versions of DB, it was
  1089. -  *    int, while in newer ones it is size_t.
  1090. -  */
  1091. - #define DB_Hash_t    $db_hashtype        /**/
  1092. - #define DB_Prefix_t    $db_prefixtype      /**/
  1093. - /* I_NDBM:
  1094. -  *    This symbol, if defined, indicates that ndbm.h exists and should
  1095. -  *    be included.
  1096. -  */
  1097. - #$i_ndbm I_NDBM    /**/
  1098.   
  1099.   /* I_SYS_STAT:
  1100.    *    This symbol, if defined, indicates to the C program that it should
  1101. --- 1392,1397 ----
  1102. Index: doio.c
  1103. *** perl5.001b/doio.c    Thu Mar  9 23:44:15 1995
  1104. --- perl5.001c/doio.c    Fri Mar 31 15:44:07 1995
  1105. ***************
  1106. *** 43,48 ****
  1107. --- 43,58 ----
  1108.   #include <sys/file.h>
  1109.   #endif
  1110.   
  1111. + #if defined(HAS_SOCKET) && !defined(VMS) /* VMS handles sockets via vmsish.h */
  1112. + # include <sys/socket.h>
  1113. + # include <netdb.h>
  1114. + # ifndef ENOTSOCK
  1115. + #  ifdef I_NET_ERRNO
  1116. + #   include <net/errno.h>
  1117. + #  endif
  1118. + # endif
  1119. + #endif
  1120.   bool
  1121.   do_open(gv,name,len,supplied_fp)
  1122.   GV *gv;
  1123. Index: ext/Fcntl/Fcntl.xs
  1124. *** perl5.001b/ext/Fcntl/Fcntl.xs    Tue Oct 18 12:28:38 1994
  1125. --- perl5.001c/ext/Fcntl/Fcntl.xs    Fri Mar 31 15:32:00 1995
  1126. ***************
  1127. *** 51,59 ****
  1128.   #else
  1129.               goto not_there;
  1130.   #endif
  1131. !         if (strEQ(name, "SETFL"))
  1132. ! #ifdef SETFL
  1133. !             return SETFL;
  1134.   #else
  1135.               goto not_there;
  1136.   #endif
  1137. --- 51,59 ----
  1138.   #else
  1139.               goto not_there;
  1140.   #endif
  1141. !         if (strEQ(name, "F_SETFL"))
  1142. ! #ifdef F_SETFL
  1143. !             return F_SETFL;
  1144.   #else
  1145.               goto not_there;
  1146.   #endif
  1147. Index: handy.h
  1148. *** perl5.001b/handy.h    Wed Feb  8 19:43:10 1995
  1149. --- perl5.001c/handy.h    Sun Apr  2 16:13:10 1995
  1150. ***************
  1151. *** 23,36 ****
  1152.   #define Nullfp Null(FILE*)
  1153.   #define Nullsv Null(SV*)
  1154.   
  1155. ! /* bool is built-in for g++-2.6.3, which might be used for an extension. */
  1156. ! #if !defined(HAS_BOOL) && !defined(_G_HAVE_BOOL)
  1157.   #ifdef UTS
  1158.   #define bool int
  1159.   #else
  1160.   #define bool char
  1161.   #endif
  1162. ! #endif /* !defined(HAS_BOOL) && !defined(_G_HAVE_BOOL) */
  1163.   
  1164.   #ifdef TRUE
  1165.   #undef TRUE
  1166. --- 23,38 ----
  1167.   #define Nullfp Null(FILE*)
  1168.   #define Nullsv Null(SV*)
  1169.   
  1170. ! /* bool is built-in for g++-2.6.3, which might be used for an extension.
  1171. !    gcc-2.6.2 under Linux defines _G_HAVE_BOOL to 0, and does not
  1172. !    define bool. */
  1173. ! #if !defined(HAS_BOOL) && !(_G_HAVE_BOOL)
  1174.   #ifdef UTS
  1175.   #define bool int
  1176.   #else
  1177.   #define bool char
  1178.   #endif
  1179. ! #endif /* !defined(HAS_BOOL) && !(_G_HAVE_BOOL) */
  1180.   
  1181.   #ifdef TRUE
  1182.   #undef TRUE
  1183. Index: hints/dynix.sh
  1184. *** perl5.001b/hints/dynix.sh    Tue Oct 18 12:32:46 1994
  1185. --- perl5.001c/hints/dynix.sh    Mon Apr  3 17:07:44 1995
  1186. ***************
  1187. *** 1,2 ****
  1188. --- 1,3 ----
  1189. + # If this doesn't work, try specifying 'none' for hints.
  1190.   d_castneg=undef
  1191.   libswanted=`echo $libswanted | sed -e 's/socket /socket seq /'`
  1192. Index: hints/hpux_9.sh
  1193. *** perl5.001b/hints/hpux_9.sh    Wed Feb  8 19:43:15 1995
  1194. --- perl5.001c/hints/hpux_9.sh    Tue Mar 28 16:26:21 1995
  1195. ***************
  1196. *** 14,21 ****
  1197.       ;;
  1198.   esac
  1199.   libswanted='m dld'
  1200. ! # ldflags="-Wl,-E -Wl,-a,shared"  # Force all shared?
  1201. ! ldflags="-Wl,-E"
  1202.   usemymalloc='y'
  1203.   alignbytes=8
  1204.   selecttype='int *' 
  1205. --- 14,21 ----
  1206.       ;;
  1207.   esac
  1208.   libswanted='m dld'
  1209. ! # ccdlflags="-Wl,-E -Wl,-a,shared $ccdlflags"  # Force all shared?
  1210. ! ccdlflags="-Wl,-E $ccdlflags"
  1211.   usemymalloc='y'
  1212.   alignbytes=8
  1213.   selecttype='int *' 
  1214. Index: hints/linux.sh
  1215. *** perl5.001b/hints/linux.sh    Sun Mar 12 02:36:00 1995
  1216. --- perl5.001c/hints/linux.sh    Fri Apr  7 09:20:47 1995
  1217. ***************
  1218. *** 2,21 ****
  1219.   # Original version by rsanders
  1220.   # Additional support by Kenneth Albanowski <kjahds@kjahds.com>
  1221.   #
  1222. ! # First pass at ELF support by Andy Dougherty <doughera@lafcol.lafayette.edu>
  1223. ! # Fri Feb  3 14:05:00 EST 1995
  1224. ! # Use   sh Configure -Dcc=gcc-elf     to try using gcc-elf.  It might work.
  1225.   #
  1226. ! # Last updated Mon Mar  6 10:18:10 EST 1995
  1227.   #
  1228.   
  1229. ! # Why is this needed?
  1230. ! bin='/usr/bin'
  1231.   
  1232. ! # Apparently some versions of gcc 2.6.2 are picking up _G_HAVE_BOOL
  1233. ! # from somewhere (_G_config.h maybe?) but not actually defining bool.
  1234. ! # Anyone really know what's going on?
  1235. ! ccflags='-Dbool=char -DHAS_BOOL'
  1236.   
  1237.   d_dosuid='define'
  1238.   
  1239. --- 2,39 ----
  1240.   # Original version by rsanders
  1241.   # Additional support by Kenneth Albanowski <kjahds@kjahds.com>
  1242.   #
  1243. ! # ELF support by H.J. Lu <hjl@nynexst.com>
  1244. ! # Additional info from Nigel Head <nhead@ESOC.bitnet>
  1245. ! # and Kenneth Albanowski <kjahds@kjahds.com>
  1246.   #
  1247. ! # Consolidated by Andy Dougherty <doughera@lafcol.lafayette.edu>
  1248.   #
  1249. + # Last updated Thu Apr  6 12:22:03 EDT 1995
  1250. + #
  1251. + # perl goes into the /usr tree.  See the Filesystem Standard
  1252. + # available via anonymous FTP at tsx-11.mit.edu in
  1253. + # /pub/linux/docs/linux-standards/fsstnd.
  1254. + # This used to be
  1255. + # bin='/usr/bin'
  1256. + # but it doesn't seem sensible to put the binary in /usr and all the
  1257. + # rest of the support stuff (lib, man pages) into /usr/local.
  1258. + # However, allow a command line override, e.g. Configure -Dprefix=/foo/bar
  1259. + case "$prefix" in
  1260. + '') prefix='/usr' ;;
  1261. + esac
  1262.   
  1263. ! # Perl expects BSD style signal handling.
  1264. ! ccflags="-D__USE_BSD_SIGNAL $ccflags"
  1265.   
  1266. ! # The following functions are gcc built-ins, but the Configure test
  1267. ! # may fail because it doesn't supply a proper prototype.
  1268. ! d_memcmp=define
  1269. ! d_memcpy=define
  1270. ! # Configure may fail to find lstat() since it's a static/inline
  1271. ! # function in <sys/stat.h>.
  1272. ! d_lstat=define
  1273.   
  1274.   d_dosuid='define'
  1275.   
  1276. ***************
  1277. *** 26,51 ****
  1278.   '') optimize='-O2' ;;
  1279.   esac
  1280.   
  1281. ! case "$cc" in
  1282. ! *cc-elf*)
  1283.       so='so'
  1284.       dlext='so'
  1285. !     # Configure might not understand nm output for ELF.
  1286. !     usenm=false
  1287. !     ;;
  1288. ! *)
  1289. !     lddlflags='-r'
  1290.       so='sa'
  1291.       dlext='o'
  1292.       ## If you are using DLD 3.2.4 which does not support shared libs,
  1293.       ## uncomment the next two lines:
  1294.       #ldflags="-static"
  1295.       #so='none'
  1296. !     ;;
  1297. ! esac
  1298.   
  1299. ! cat <<EOM
  1300.   
  1301.   You should take a look at hints/linux.sh. There are a some lines you
  1302. ! may wish to change near the bottom.
  1303.   EOM
  1304. --- 44,103 ----
  1305.   '') optimize='-O2' ;;
  1306.   esac
  1307.   
  1308. ! # Are we using ELF?  Thanks to Kenneth Albanowski <kjahds@kjahds.com>
  1309. ! # for this test.
  1310. ! cat >try.c <<'EOM'
  1311. ! /* Test for whether ELF binaries are produced */
  1312. ! #include <fcntl.h>
  1313. ! #include <stdlib.h>
  1314. ! main() {
  1315. !     char buffer[4];
  1316. !     int i=open("a.out",O_RDONLY);
  1317. !     if(i==-1)
  1318. !         exit(1); /* fail */
  1319. !     if(read(i,&buffer[0],4)<4)
  1320. !         exit(1); /* fail */
  1321. !     if(buffer[0] != 127 || buffer[1] != 'E' ||
  1322. !            buffer[2] != 'L' || buffer[3] != 'F')
  1323. !         exit(1); /* fail */
  1324. !     exit(0); /* succeed (yes, it's ELF) */
  1325. ! }
  1326. ! EOM
  1327. ! if gcc try.c >/dev/null 2>&1 && ./a.out; then
  1328. !     cat <<'EOM'
  1329. ! You appear to have ELF support.  I'll try to use it for dynamic loading.
  1330. ! EOM
  1331. !     # Be careful not to overwrite lddlflags, since the user might
  1332. !     # have specified some -L/path options on the Configure command line.
  1333. !     lddlflags="-shared $lddlflags"
  1334. !     ccdlflags='-rdynamic'
  1335.       so='so'
  1336.       dlext='so'
  1337. !     ld=gcc
  1338. ! else
  1339. !     echo "You don't have an ELF gcc, using dld if available."
  1340. !     # We might possibly have a version of DLD around.
  1341. !     lddlflags="-r $lddlflags"
  1342.       so='sa'
  1343.       dlext='o'
  1344.       ## If you are using DLD 3.2.4 which does not support shared libs,
  1345.       ## uncomment the next two lines:
  1346.       #ldflags="-static"
  1347.       #so='none'
  1348. ! fi
  1349. ! rm -rf try.c a.out
  1350.   
  1351. ! cat <<'EOM'
  1352.   
  1353.   You should take a look at hints/linux.sh. There are a some lines you
  1354. ! may wish to change.
  1355.   EOM
  1356. + # And -- reported by one user:
  1357. + # We need to get -lc away from the link lines.
  1358. + # If we leave it there we get SEGV from miniperl during the build.
  1359. + # This may have to do with bugs in the pre-release version of libc for ELF.
  1360. + # Uncomment the next two lines to remove -lc from the link line.
  1361. + # set `echo " $libswanted " | sed -e 's@ c @ @'`
  1362. + # libswanted="$*"
  1363. Index: hints/netbsd.sh
  1364. *** perl5.001b/hints/netbsd.sh    Tue Oct 18 12:33:27 1994
  1365. --- perl5.001c/hints/netbsd.sh    Fri Mar 31 15:29:47 1995
  1366. ***************
  1367. *** 1,10 ****
  1368.   # hints/netbsd.sh
  1369.   case "$osvers" in
  1370. ! 0.9|0.8)
  1371.       usedl="$undef"
  1372.       ;;
  1373. ! *)    d_dlopen="$define"
  1374. !     cccdlflags='-DPIC -fpic'
  1375. !     lddlflags='-Bforcearchive -Bshareable'
  1376.       ;;
  1377.   esac
  1378. --- 1,17 ----
  1379.   # hints/netbsd.sh
  1380. + # netbsd keeps  dynamic loading dl*() functions in /lib/crt0.o,
  1381. + # so Configure doesn't find them (unless you abandon the nm scan).
  1382.   case "$osvers" in
  1383. ! 0.9*|0.8*)
  1384.       usedl="$undef"
  1385.       ;;
  1386. ! *)    d_dlopen=$define
  1387. !     d_dlerror=$define
  1388. !     cccdlflags="-DPIC -fpic $cccdlflags"
  1389. !     lddlflags="-Bforcearchive -Bshareable $lddlflags"
  1390.       ;;
  1391.   esac
  1392. + # Avoid telldir prototype conflict in pp_sys.c  (NetBSD uses const DIR *)
  1393. + # Configure should test for this.  Volunteers?
  1394. + pp_sys_cflags='ccflags="$ccflags -DHAS_TELLDIR_PROTOTYPE"'
  1395. Index: hints/titanos.sh
  1396. *** perl5.001b/hints/titanos.sh    Tue Oct 18 12:34:08 1994
  1397. --- perl5.001c/hints/titanos.sh    Fri Mar 31 14:55:53 1995
  1398. ***************
  1399. *** 2,7 ****
  1400. --- 2,8 ----
  1401.   # Created by: JT McDuffie (jt@kpc.com)  26 DEC 1991
  1402.   # p5ed by: Jarkko Hietaniemi <jhi@hut.fi> Aug 27 1994
  1403.   #  NOTE:   You should run Configure with tcsh (yes, tcsh).
  1404. + # Comments by Andy Dougherty <doughera@lafcol.lafayette.edu> 28 Mar 1995
  1405.   alignbytes="8"
  1406.   byteorder="4321"
  1407.   castflags='0'
  1408. ***************
  1409. *** 14,22 ****
  1410.   models='none'
  1411.   ccflags="$ccflags -I/usr/include/net -DDEBUGGING -DSTANDARD_C"
  1412.   cppflags="$cppflags -I/usr/include/net -DDEBUGGING -DSTANDARD_C"
  1413. - libs='-lnsl -ldbm -lPW -lmalloc -lm'
  1414.   stdchar='unsigned char'
  1415. ! static_ext='DynaLoader NDBM_File Socket'
  1416.   uidtype='ushort'
  1417.   voidflags='7'
  1418.   inclwanted='/usr/include /usr/include/net'
  1419. --- 15,38 ----
  1420.   models='none'
  1421.   ccflags="$ccflags -I/usr/include/net -DDEBUGGING -DSTANDARD_C"
  1422.   cppflags="$cppflags -I/usr/include/net -DDEBUGGING -DSTANDARD_C"
  1423.   stdchar='unsigned char'
  1424. ! #
  1425. ! # Apparently there are some harmful libs in Configure's $libswanted.
  1426. ! # Perl5.000 had: libs='-lnsl -ldbm -lPW -lmalloc -lm'
  1427. ! # Unfortunately, this line prevents users from including things like
  1428. ! # -lgdbm and -ldb, which they may or may not have or want.
  1429. ! # We should probably fiddle with libswanted instead of libs.
  1430. ! # And even there, we should only bother to delete harmful libraries.
  1431. ! # However, I don't know what they are or why they should be deleted,
  1432. ! # so this will have to do for now.  --AD  28 Mar 1995
  1433. ! libswanted='nsl dbm gdbm db PW malloc m'
  1434. ! #
  1435. ! # Extensions:  This system can not compile POSIX. We'll let Configure 
  1436. ! # figure out the others.  Certainly Fcntl, Socket, and at least one *DB*
  1437. ! # extension should be included.
  1438. ! # perl5.000 had:  static_ext='DynaLoader NDBM_File Socket'
  1439. ! useposix='n'
  1440. ! #
  1441.   uidtype='ushort'
  1442.   voidflags='7'
  1443.   inclwanted='/usr/include /usr/include/net'
  1444. Index: installperl
  1445. *** perl5.001b/installperl    Wed Feb 22 14:37:10 1995
  1446. --- perl5.001c/installperl    Tue Apr  4 11:55:03 1995
  1447. ***************
  1448. *** 12,18 ****
  1449.   
  1450.   umask 022;
  1451.   
  1452. ! @scripts = ('cppstdin', 'c2ph', 'h2xs', 'pstruct', 'x2p/s2p', 'x2p/find2perl');
  1453.   @manpages = (<pod/*.man>, 'x2p/a2p.man', 'x2p/s2p.man');
  1454.   
  1455.   # Read in the config file.
  1456. --- 12,19 ----
  1457.   
  1458.   umask 022;
  1459.   
  1460. ! @scripts = ('cppstdin', 'c2ph', 'h2xs', 'pstruct', 'x2p/s2p', 'x2p/find2perl',
  1461. !         'pod/pod2man', 'pod/pod2html', 'pod/pod2latex' );
  1462.   @manpages = (<pod/*.man>, 'x2p/a2p.man', 'x2p/s2p.man');
  1463.   
  1464.   # Read in the config file.
  1465. Index: lib/ExtUtils/MakeMaker.pm
  1466. *** perl5.001b/lib/ExtUtils/MakeMaker.pm    Sun Mar 12 03:13:57 1995
  1467. --- perl5.001c/lib/ExtUtils/MakeMaker.pm    Mon Apr  3 15:52:47 1995
  1468. ***************
  1469. *** 1,6 ****
  1470.   package ExtUtils::MakeMaker;
  1471.   
  1472. ! $Version = 4.086; # Last edited 9 Mar 1995 by Andy Dougherty
  1473.   
  1474.   use Config;
  1475.   check_hints();
  1476. --- 1,6 ----
  1477.   package ExtUtils::MakeMaker;
  1478.   
  1479. ! $Version = 4.091; # Last edited 31 Mar 1995 by Andreas Koenig
  1480.   
  1481.   use Config;
  1482.   check_hints();
  1483. ***************
  1484. *** 9,18 ****
  1485.   
  1486.   require Exporter;
  1487.   @ISA = qw(Exporter);
  1488. ! @EXPORT = qw(&WriteMakefile &mkbootstrap &mksymlists $Verbose);
  1489.   @EXPORT_OK = qw($Version %att %skip %Recognized_Att_Keys
  1490.       @MM_Sections %MM_Sections
  1491. !     &help &lsdir &neatvalue);
  1492.   
  1493.   $Is_VMS = $Config{'osname'} eq 'VMS';
  1494.   require ExtUtils::MM_VMS if $Is_VMS;
  1495. --- 9,18 ----
  1496.   
  1497.   require Exporter;
  1498.   @ISA = qw(Exporter);
  1499. ! @EXPORT = qw(&WriteMakefile $Verbose);
  1500.   @EXPORT_OK = qw($Version %att %skip %Recognized_Att_Keys
  1501.       @MM_Sections %MM_Sections
  1502. !     &help &lsdir &neatvalue &mkbootstrap &mksymlists);
  1503.   
  1504.   $Is_VMS = $Config{'osname'} eq 'VMS';
  1505.   require ExtUtils::MM_VMS if $Is_VMS;
  1506. ***************
  1507. *** 23,29 ****
  1508.   $Verbose = 0;
  1509.   $^W=1;
  1510.   
  1511.   =head1 NAME
  1512.   
  1513.   ExtUtils::MakeMaker - create an extension Makefile
  1514. --- 23,28 ----
  1515. ***************
  1516. *** 73,79 ****
  1517.     perl Makefile.PL INST_LIB=~/myperllib INST_EXE=~/bin
  1518.   
  1519.   Note, that in this example MakeMaker does the tilde expansion for you
  1520. ! and INST_ARCHLIB is set to either C<INST_LIB/$Config{"osname"}> if
  1521.   that directory exists and otherwise to INST_LIB.
  1522.   
  1523.   Other interesting targets in the generated Makefile are
  1524. --- 72,78 ----
  1525.     perl Makefile.PL INST_LIB=~/myperllib INST_EXE=~/bin
  1526.   
  1527.   Note, that in this example MakeMaker does the tilde expansion for you
  1528. ! and INST_ARCHLIB is set to either C<INST_LIB/$Config{"archname"}> if
  1529.   that directory exists and otherwise to INST_LIB.
  1530.   
  1531.   Other interesting targets in the generated Makefile are
  1532. ***************
  1533. *** 392,397 ****
  1534. --- 391,402 ----
  1535.   
  1536.    H:        Ref to array of *.h file names. Similar to C: above.
  1537.   
  1538. +  PL_FILES:      Ref to hash of files to be processed as perl programs. MakeMaker
  1539. +         will default to any found C<*.PL> file (except C<Makefile.PL>) being
  1540. +         keys and the basename of the file being the value. E.g.
  1541. +         C<{ 'foobar.PL' => 'foobar' }>. The C<*.PL> files are expected to
  1542. +         produce output to the target files themselves.
  1543.    EXE_FILES:    Ref to array of executable files. The files will be copied to 
  1544.           the INST_EXE directory. The installed files will be deleted 
  1545.           by a make realclean.
  1546. ***************
  1547. *** 455,460 ****
  1548. --- 460,466 ----
  1549.       'tool_xsubpp'    => {},
  1550.       'tools_other'    => {},
  1551.       'post_constants'    => {},
  1552. +     'pasthru'        => {},
  1553.       'c_o'        => {},
  1554.       'xs_c'        => {},
  1555.       'xs_o'        => {},
  1556. ***************
  1557. *** 467,472 ****
  1558. --- 473,479 ----
  1559.       'static'        => {},
  1560.       'static_lib'    => {},
  1561.       'installpm'        => {},
  1562. +     'processPL'        => {},
  1563.       'installbin'    => {},
  1564.       'subdirs'        => {},
  1565.       'clean'        => {},
  1566. ***************
  1567. *** 527,532 ****
  1568. --- 534,540 ----
  1569.   
  1570.       parse_args(\%att, @ARGV);
  1571.       my(%initial_att) = %att; # record initial attributes
  1572. +     my($key);
  1573.   
  1574.       MY->init_main();
  1575.   
  1576. ***************
  1577. *** 553,558 ****
  1578. --- 561,567 ----
  1579.       # build hash for SKIP to make testing easy
  1580.       %skip = map( ($_,1), @{$att{'SKIP'} || []});
  1581.   
  1582. +     my $section;
  1583.       foreach $section ( @MM_Sections ){
  1584.       print "Processing Makefile '$section' section" if ($Verbose >= 2);
  1585.       my($skipit) = skipcheck($section);
  1586. ***************
  1587. *** 658,664 ****
  1588.       return "{ ".join(', ',@m)." }";
  1589.   }
  1590.   
  1591.   # ------ Define the MakeMaker default methods in package MM_Unix ------
  1592.   
  1593.   package MM_Unix;
  1594. --- 667,672 ----
  1595. ***************
  1596. *** 687,694 ****
  1597.       # --- Initialize PERL_LIB, INST_LIB, PERL_SRC
  1598.   
  1599.       # *Real* information: where did we get these two from? ...
  1600. !     $inc_config_dir = dirname($INC{'Config.pm'});
  1601. !     $inc_carp_dir   = dirname($INC{'Carp.pm'});
  1602.   
  1603.       # Typically PERL_* and INST_* will be identical but that need
  1604.       # not be the case (e.g., installing into project libraries etc).
  1605. --- 695,702 ----
  1606.       # --- Initialize PERL_LIB, INST_LIB, PERL_SRC
  1607.   
  1608.       # *Real* information: where did we get these two from? ...
  1609. !     my $inc_config_dir = dirname($INC{'Config.pm'});
  1610. !     my $inc_carp_dir   = dirname($INC{'Carp.pm'});
  1611.   
  1612.       # Typically PERL_* and INST_* will be identical but that need
  1613.       # not be the case (e.g., installing into project libraries etc).
  1614. ***************
  1615. *** 704,710 ****
  1616.   
  1617.       unless ($att{PERL_SRC}){
  1618.       foreach(qw(../.. ../../.. ../../../..)){
  1619. !         ($att{PERL_SRC}=$_, last) if -f "$_/config.sh";
  1620.       }
  1621.       }
  1622.       unless ($att{PERL_SRC}){
  1623. --- 712,721 ----
  1624.   
  1625.       unless ($att{PERL_SRC}){
  1626.       foreach(qw(../.. ../../.. ../../../..)){
  1627. !         if ( -f "$_/config.sh" && -f "$_/perl.h" && -f "$_/lib/Exporter.pm") {
  1628. !         $att{PERL_SRC}=$_ ;
  1629. !         last;
  1630. !         }
  1631.       }
  1632.       }
  1633.       unless ($att{PERL_SRC}){
  1634. ***************
  1635. *** 719,724 ****
  1636. --- 730,748 ----
  1637.       $att{PERL_LIB}     = "$att{PERL_SRC}/lib" unless $att{PERL_LIB};
  1638.       $att{PERL_ARCHLIB} = $att{PERL_LIB};
  1639.       $att{PERL_INC}     = $att{PERL_SRC};
  1640. +     # catch an situation that has occurred a few times in the past:
  1641. +     warn <<EOM unless -s "$att{PERL_SRC}/cflags";
  1642. + You cannot build extensions below the perl source tree after executing
  1643. + a 'make clean' in the perl source tree.
  1644. + To rebuild extensions distributed with the perl source you should
  1645. + simply Configure (to include those extensions) and then build perl as
  1646. + normal. After installing perl the source tree can be deleted. It is not
  1647. + needed for building extensions.
  1648. + It is recommended that you unpack and build additional extensions away
  1649. + from the perl source tree.
  1650. + EOM
  1651.       }
  1652.   
  1653.       # INST_LIB typically pre-set if building an extension after
  1654. ***************
  1655. *** 728,740 ****
  1656.       if (defined $att{PERL_SRC}) {
  1657.           $att{INST_LIB} = $att{PERL_LIB};
  1658.       } else {
  1659. !         $att{INST_LIB} = "$pwd/blib";
  1660.       }
  1661.       }
  1662.       # Try to work out what INST_ARCHLIB should be if not set:
  1663.       unless ($att{INST_ARCHLIB}){
  1664.       my(%archmap) = (
  1665. !         "$pwd/blib"     => "$pwd/blib", # our private build lib
  1666.           $att{PERL_LIB}    => $att{PERL_ARCHLIB},
  1667.           $Config{'privlib'}    => $Config{'archlib'},
  1668.           $Config{'installprivlib'}    => $Config{'installarchlib'},
  1669. --- 752,764 ----
  1670.       if (defined $att{PERL_SRC}) {
  1671.           $att{INST_LIB} = $att{PERL_LIB};
  1672.       } else {
  1673. !         $att{INST_LIB} = "./blib";
  1674.       }
  1675.       }
  1676.       # Try to work out what INST_ARCHLIB should be if not set:
  1677.       unless ($att{INST_ARCHLIB}){
  1678.       my(%archmap) = (
  1679. !         "./blib"        => "./blib", # our private build lib
  1680.           $att{PERL_LIB}    => $att{PERL_ARCHLIB},
  1681.           $Config{'privlib'}    => $Config{'archlib'},
  1682.           $Config{'installprivlib'}    => $Config{'installarchlib'},
  1683. ***************
  1684. *** 810,816 ****
  1685.   
  1686.   sub init_dirscan {    # --- File and Directory Lists (.xs .pm etc)
  1687.   
  1688. !     my($name, %dir, %xs, %c, %h, %ignore);
  1689.       local(%pm); #the sub in find() has to see this hash
  1690.       $ignore{'test.pl'} = 1;
  1691.       $ignore{'makefile.pl'} = 1 if $Is_VMS;
  1692. --- 834,840 ----
  1693.   
  1694.   sub init_dirscan {    # --- File and Directory Lists (.xs .pm etc)
  1695.   
  1696. !     my($name, %dir, %xs, %c, %h, %ignore, %pl_files);
  1697.       local(%pm); #the sub in find() has to see this hash
  1698.       $ignore{'test.pl'} = 1;
  1699.       $ignore{'makefile.pl'} = 1 if $Is_VMS;
  1700. ***************
  1701. *** 828,833 ****
  1702. --- 852,859 ----
  1703.           $h{$name} = 1;
  1704.       } elsif ($name =~ /\.p[ml]$/){
  1705.           $pm{$name} = "\$(INST_LIBDIR)/$name";
  1706. +     } elsif ($name =~ /\.PL$/ && $name ne "Makefile.PL") {
  1707. +         ($pl_files{$name} = $name) =~ s/\.PL$// ;
  1708.       }
  1709.       }
  1710.   
  1711. ***************
  1712. *** 890,895 ****
  1713. --- 916,922 ----
  1714.       my($sufx) = $Is_VMS ? '.obj' : '.o';
  1715.       $att{O_FILES} = [grep s/\.c$/$sufx/, @o_files] ;
  1716.       $att{H}   = [sort keys %h]   unless $att{H};
  1717. +     $att{PL_FILES} = \%pl_files unless $att{PL_FILES};
  1718.   }
  1719.   
  1720.   
  1721. ***************
  1722. *** 899,905 ****
  1723.   }
  1724.   
  1725.   sub init_others {    # --- Initialize Other Attributes
  1726.       for $key (keys(%Recognized_Att_Keys), keys(%Other_Att_Keys)){
  1727.       # avoid warnings for uninitialized vars
  1728.       next if exists $att{$key};
  1729. --- 926,932 ----
  1730.   }
  1731.   
  1732.   sub init_others {    # --- Initialize Other Attributes
  1733. !     my($key);
  1734.       for $key (keys(%Recognized_Att_Keys), keys(%Other_Att_Keys)){
  1735.       # avoid warnings for uninitialized vars
  1736.       next if exists $att{$key};
  1737. ***************
  1738. *** 1107,1112 ****
  1739. --- 1134,1140 ----
  1740.       join('',@m);
  1741.   }
  1742.   
  1743. + $Const_cccmd=0; # package global
  1744.   
  1745.   sub const_cccmd{
  1746.       my($self,$libperl)=@_;
  1747. ***************
  1748. *** 1115,1125 ****
  1749.       # e.g., do both and compare results during the transition period.
  1750.       my($cc,$ccflags,$optimize,$large,$split, $shflags)
  1751.       = @Config{qw(cc ccflags optimize large split shellflags)};
  1752.       $shflags = '' unless $shflags;
  1753.       my($prog, $old, $uc, $perltype);
  1754.   
  1755. !     chop($old = `cd $att{PERL_SRC}; sh $shflags ./cflags $libperl $att{BASEEXT}.c 2>/dev/null`)
  1756. !     if $att{PERL_SRC};
  1757.   
  1758.       my(%map) =  (
  1759.           D =>   '-DDEBUGGING',
  1760. --- 1143,1158 ----
  1761.       # e.g., do both and compare results during the transition period.
  1762.       my($cc,$ccflags,$optimize,$large,$split, $shflags)
  1763.       = @Config{qw(cc ccflags optimize large split shellflags)};
  1764. +     my($optdebug)="";
  1765.       $shflags = '' unless $shflags;
  1766.       my($prog, $old, $uc, $perltype);
  1767.   
  1768. !     unless ($Const_cccmd++){
  1769. !     chop($old = `cd $att{PERL_SRC}; sh $shflags ./cflags $libperl $att{BASEEXT}.c`)
  1770. !       if $att{PERL_SRC};
  1771. !     $Const_cccmd++; # shut up typo warning
  1772. !     }
  1773.   
  1774.       my(%map) =  (
  1775.           D =>   '-DDEBUGGING',
  1776. ***************
  1777. *** 1162,1168 ****
  1778.         echo large=\$large
  1779.         echo split=\$split
  1780.         `;
  1781. !     my(%cflags);
  1782.       foreach $line (@o){
  1783.           chomp $line;
  1784.           if ($line =~ /(.*?)=\s*(.*)\s*$/){
  1785. --- 1195,1201 ----
  1786.         echo large=\$large
  1787.         echo split=\$split
  1788.         `;
  1789. !     my(%cflags,$line);
  1790.       foreach $line (@o){
  1791.           chomp $line;
  1792.           if ($line =~ /(.*?)=\s*(.*)\s*$/){
  1793. ***************
  1794. *** 1298,1303 ****
  1795. --- 1331,1349 ----
  1796.       "";
  1797.   }
  1798.   
  1799. + sub pasthru {
  1800. +     my(@m,@pasthru,$key);
  1801. +     # It has to be considered carefully, which variables are apt to be passed through, e.g. PERL_SRC
  1802. +     # is not suited for subdirectories, as it might be relativ to the parent directory.
  1803. +     # Probably we need a PASTHRU2 variable. PASTHRU1 is a conservative approach, that hardly changes
  1804. +     # MakeMaker between version 4.086 and 4.09.
  1805. +     push @m, "\nPASTHRU1 = ";
  1806. +     foreach $key (qw(INST_ARCHLIB INST_EXE INST_LIB LIBPERL_A LINKTYPE)){
  1807. +     push @pasthru, "$key=\"\$($key)\"";
  1808. +     }
  1809. +     push @m, join "\\\n\t", @pasthru;
  1810. +     join "", @m;
  1811. + }
  1812.   
  1813.   # --- Translation Sections ---
  1814.   
  1815. ***************
  1816. *** 1334,1343 ****
  1817.   all ::    config linkext $(INST_PM)
  1818.   '.$att{NOOP}.'
  1819.   
  1820. ! config :: '.$att{MAKEFILE}.'
  1821. !     @ $(MKPATH) $(INST_LIBDIR) $(INST_ARCHAUTODIR)
  1822.   ';
  1823.   
  1824.       push @m, '
  1825.   $(O_FILES): $(H_FILES)
  1826.   ' if @{$att{O_FILES} || []} && @{$att{H} || []};
  1827. --- 1380,1390 ----
  1828.   all ::    config linkext $(INST_PM)
  1829.   '.$att{NOOP}.'
  1830.   
  1831. ! config :: '.$att{MAKEFILE}.' $(INST_LIBDIR)/.exists $(INST_ARCHAUTODIR)/.exists
  1832.   ';
  1833.   
  1834. +     push @m, MM->dir_target('$(INST_LIBDIR)', '$(INST_ARCHAUTODIR)');
  1835.       push @m, '
  1836.   $(O_FILES): $(H_FILES)
  1837.   ' if @{$att{O_FILES} || []} && @{$att{H} || []};
  1838. ***************
  1839. *** 1375,1382 ****
  1840.   
  1841.       push(@m,"
  1842.   $att{BASEEXT}.exp: Makefile.PL
  1843. ! ",'    $(PERL) $(I_PERL_LIBS) -e \'use ExtUtils::MakeMaker; \\
  1844. !     mksymlists(DL_FUNCS => ',
  1845.       %$funcs ? neatvalue($funcs) : '""',', DL_VARS => ',
  1846.       @$vars  ? neatvalue($vars)  : '""', ", NAME => \"$att{NAME}\")'
  1847.   ");
  1848. --- 1422,1429 ----
  1849.   
  1850.       push(@m,"
  1851.   $att{BASEEXT}.exp: Makefile.PL
  1852. ! ",'    $(PERL) $(I_PERL_LIBS) -e \'use ExtUtils::MakeMaker qw(&mksymlists); \\
  1853. !     &mksymlists(DL_FUNCS => ',
  1854.       %$funcs ? neatvalue($funcs) : '""',', DL_VARS => ',
  1855.       @$vars  ? neatvalue($vars)  : '""', ", NAME => \"$att{NAME}\")'
  1856.   ");
  1857. ***************
  1858. *** 1406,1412 ****
  1859.   $(BOOTSTRAP): '."$att{MAKEFILE} $att{BOOTDEP}".'
  1860.       @ echo "Running mkbootstrap for $(NAME) ($(BSLOADLIBS))"
  1861.       @ $(PERL) $(I_PERL_LIBS) \
  1862. !         -e \'use ExtUtils::MakeMaker; &mkbootstrap("$(BSLOADLIBS)");\' \
  1863.           INST_LIB=$(INST_LIB) INST_ARCHLIB=$(INST_ARCHLIB) PERL_SRC=$(PERL_SRC) NAME=$(NAME)
  1864.       @ $(TOUCH) $(BOOTSTRAP)
  1865.   
  1866. --- 1453,1459 ----
  1867.   $(BOOTSTRAP): '."$att{MAKEFILE} $att{BOOTDEP}".'
  1868.       @ echo "Running mkbootstrap for $(NAME) ($(BSLOADLIBS))"
  1869.       @ $(PERL) $(I_PERL_LIBS) \
  1870. !         -e \'use ExtUtils::MakeMaker qw(&mkbootstrap); &mkbootstrap("$(BSLOADLIBS)");\' \
  1871.           INST_LIB=$(INST_LIB) INST_ARCHLIB=$(INST_ARCHLIB) PERL_SRC=$(PERL_SRC) NAME=$(NAME)
  1872.       @ $(TOUCH) $(BOOTSTRAP)
  1873.   
  1874. ***************
  1875. *** 1431,1438 ****
  1876.   ARMAYBE = '.$armaybe.'
  1877.   OTHERLDFLAGS = '.$otherldflags.'
  1878.   
  1879. ! $(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP)
  1880. !     @ $(MKPATH) $(INST_ARCHAUTODIR)
  1881.   ');
  1882.       if ($armaybe ne ':'){
  1883.       $ldfrom = "tmp.a";
  1884. --- 1478,1484 ----
  1885.   ARMAYBE = '.$armaybe.'
  1886.   OTHERLDFLAGS = '.$otherldflags.'
  1887.   
  1888. ! $(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) $(INST_ARCHAUTODIR)/.exists
  1889.   ');
  1890.       if ($armaybe ne ':'){
  1891.       $ldfrom = "tmp.a";
  1892. ***************
  1893. *** 1442,1447 ****
  1894. --- 1488,1495 ----
  1895.       $ldfrom = "-all $ldfrom -none" if ($osname eq 'dec_osf');
  1896.       push(@m,'    $(LD) -o $@ $(LDDLFLAGS) '.$ldfrom.
  1897.               ' $(OTHERLDFLAGS) $(MYEXTLIB) $(LDLOADLIBS)'."\n");
  1898. +     push @m, MM->dir_target('$(INST_ARCHAUTODIR)');
  1899.       join('',@m);
  1900.   }
  1901.   
  1902. ***************
  1903. *** 1460,1467 ****
  1904.   sub static_lib{
  1905.       my(@m);
  1906.       push(@m, <<'END');
  1907. ! $(INST_STATIC): $(OBJECT) $(MYEXTLIB)
  1908. !     @ $(MKPATH) $(INST_ARCHAUTODIR)
  1909.   END
  1910.       # If this extension has it's own library (eg SDBM_File)
  1911.       # then copy that to $(INST_STATIC) and add $(OBJECT) into it.
  1912. --- 1508,1514 ----
  1913.   sub static_lib{
  1914.       my(@m);
  1915.       push(@m, <<'END');
  1916. ! $(INST_STATIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)/.exists
  1917.   END
  1918.       # If this extension has it's own library (eg SDBM_File)
  1919.       # then copy that to $(INST_STATIC) and add $(OBJECT) into it.
  1920. ***************
  1921. *** 1477,1482 ****
  1922. --- 1524,1530 ----
  1923.       push(@m, <<'END') if $att{PERL_SRC};
  1924.       @ echo "$(EXTRALIBS)" >> $(PERL_SRC)/ext.libs
  1925.   END
  1926. +     push @m, MM->dir_target('$(INST_ARCHAUTODIR)');
  1927.       join('', "\n",@m);
  1928.   }
  1929.   
  1930. ***************
  1931. *** 1506,1521 ****
  1932.       my($instdir) = $inst =~ m|(.*)/|;
  1933.       my(@m);
  1934.       push(@m,"
  1935. ! $inst: $dist Makefile
  1936.   ".'    @ '.$att{RM_F}.' $@
  1937. -     @ $(MKPATH) '.$instdir.'
  1938.       '."$att{CP} $dist".' $@
  1939.   ');
  1940.       push(@m, "\t\@\$(AUTOSPLITFILE) \$@ $splitlib/auto\n")
  1941.       if ($splitlib and $inst =~ m/\.pm$/);
  1942.       join('', @m);
  1943.   }
  1944.   
  1945.   sub installbin {
  1946.       return "" unless $att{EXE_FILES} && ref $att{EXE_FILES} eq "ARRAY";
  1947.       my(@m, $from, $to, %fromto, @to);
  1948. --- 1554,1584 ----
  1949.       my($instdir) = $inst =~ m|(.*)/|;
  1950.       my(@m);
  1951.       push(@m,"
  1952. ! $inst: $dist Makefile $instdir/.exists
  1953.   ".'    @ '.$att{RM_F}.' $@
  1954.       '."$att{CP} $dist".' $@
  1955.   ');
  1956.       push(@m, "\t\@\$(AUTOSPLITFILE) \$@ $splitlib/auto\n")
  1957.       if ($splitlib and $inst =~ m/\.pm$/);
  1958. +     push @m, MM->dir_target($instdir);
  1959.       join('', @m);
  1960.   }
  1961.   
  1962. + sub processPL {
  1963. +     return "" unless $att{PL_FILES};
  1964. +     my(@m, $plfile);
  1965. +     foreach $plfile (sort keys %{$att{PL_FILES}}) {
  1966. +     push @m, "
  1967. + all :: $att{PL_FILES}->{$plfile}
  1968. + $att{PL_FILES}->{$plfile} :: $plfile
  1969. +     \$(PERL) -I\$(INST_ARCHLIB) -I\$(INST_LIB) -I\$(PERL_ARCHLIB) -I\$(PERL_LIB) $plfile
  1970. + ";
  1971. +     }
  1972. +     join "", @m;
  1973. + }
  1974.   sub installbin {
  1975.       return "" unless $att{EXE_FILES} && ref $att{EXE_FILES} eq "ARRAY";
  1976.       my(@m, $from, $to, %fromto, @to);
  1977. ***************
  1978. *** 1589,1608 ****
  1979.       # MY::subdir_x() method to override this one.
  1980.       qq{
  1981.   config :: $subdir/$att{MAKEFILE}
  1982. !     cd $subdir ; \$(MAKE) config INST_LIB=\$(INST_LIB) INST_ARCHLIB=\$(INST_ARCHLIB)  \\
  1983. !         INST_EXE=\$(INST_EXE) LINKTYPE=\$(LINKTYPE) LIBPERL_A=\$(LIBPERL_A) \$(SUBDIR_MAKEFILE_PL_ARGS)
  1984.   
  1985.   $subdir/$att{MAKEFILE}: $subdir/Makefile.PL \$(CONFIGDEP)
  1986.   }.'    @echo "Rebuilding $@ ..."
  1987.       $(PERL) $(I_PERL_LIBS) \\
  1988.           -e "use ExtUtils::MakeMaker; MM->runsubdirpl(qw('.$subdir.'))" \\
  1989. !         INST_LIB=$(INST_LIB) INST_ARCHLIB=$(INST_ARCHLIB) \\
  1990. !         INST_EXE=$(INST_EXE) LINKTYPE=\$(LINKTYPE) LIBPERL_A=$(LIBPERL_A) $(SUBDIR_MAKEFILE_PL_ARGS)
  1991.       @echo "Rebuild of $@ complete."
  1992.   '.qq{
  1993.   
  1994.   subdirs ::
  1995. !     cd $subdir ; \$(MAKE) all LINKTYPE=\$(LINKTYPE)
  1996.   
  1997.   };
  1998.   }
  1999. --- 1652,1669 ----
  2000.       # MY::subdir_x() method to override this one.
  2001.       qq{
  2002.   config :: $subdir/$att{MAKEFILE}
  2003. !     cd $subdir && \$(MAKE) config \$(PASTHRU1) \$(SUBDIR_MAKEFILE_PL_ARGS)
  2004.   
  2005.   $subdir/$att{MAKEFILE}: $subdir/Makefile.PL \$(CONFIGDEP)
  2006.   }.'    @echo "Rebuilding $@ ..."
  2007.       $(PERL) $(I_PERL_LIBS) \\
  2008.           -e "use ExtUtils::MakeMaker; MM->runsubdirpl(qw('.$subdir.'))" \\
  2009. !         $(PASTHRU1) $(SUBDIR_MAKEFILE_PL_ARGS)
  2010.       @echo "Rebuild of $@ complete."
  2011.   '.qq{
  2012.   
  2013.   subdirs ::
  2014. !     cd $subdir && \$(MAKE) all \$(PASTHRU1)
  2015.   
  2016.   };
  2017.   }
  2018. ***************
  2019. *** 1640,1646 ****
  2020.   realclean purge ::  clean
  2021.   ');
  2022.       # realclean subdirectories first (already cleaned)
  2023. !     $sub = "\t-cd %s && test -f %s && \$(MAKE) %s realclean\n";
  2024.       foreach(@{$att{DIR}}){
  2025.       push(@m, sprintf($sub,$_,"$att{MAKEFILE}.old","-f $att{MAKEFILE}.old"));
  2026.       push(@m, sprintf($sub,$_,"$att{MAKEFILE}",''));
  2027. --- 1701,1707 ----
  2028.   realclean purge ::  clean
  2029.   ');
  2030.       # realclean subdirectories first (already cleaned)
  2031. !     my $sub = "\t-cd %s && test -f %s && \$(MAKE) %s realclean\n";
  2032.       foreach(@{$att{DIR}}){
  2033.       push(@m, sprintf($sub,$_,"$att{MAKEFILE}.old","-f $att{MAKEFILE}.old"));
  2034.       push(@m, sprintf($sub,$_,"$att{MAKEFILE}",''));
  2035. ***************
  2036. *** 1670,1677 ****
  2037.   distclean:     clean
  2038.       $preop
  2039.       $att{RM_F} $mkfiles
  2040. !     cd ..; tar $tarflags $tarname.tar \$(BASEEXT)
  2041. !     cd ..; $compress $tarname.tar
  2042.       $postop
  2043.   ";
  2044.   }
  2045. --- 1731,1738 ----
  2046.   distclean:     clean
  2047.       $preop
  2048.       $att{RM_F} $mkfiles
  2049. !     cd .. && tar $tarflags $tarname.tar \$(BASEEXT)
  2050. !     cd .. && $compress $tarname.tar
  2051.       $postop
  2052.   ";
  2053.   }
  2054. ***************
  2055. *** 1694,1700 ****
  2056.       push(@m, <<'END') if -f "test.pl";
  2057.       $(FULLPERL) -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB) test.pl
  2058.   END
  2059. !     push(@m, map("\tcd $_ && test -f $att{MAKEFILE} && \$(MAKE) test LINKTYPE=\$(LINKTYPE)\n",
  2060.            @{$att{DIR}}));
  2061.       push(@m, "\t\@echo 'No tests defined for \$(NAME) extension.'\n") unless @m > 1;
  2062.       join("", @m);
  2063. --- 1755,1761 ----
  2064.       push(@m, <<'END') if -f "test.pl";
  2065.       $(FULLPERL) -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB) test.pl
  2066.   END
  2067. !     push(@m, map("\tcd $_ && test -f $att{MAKEFILE} && \$(MAKE) test \$(PASTHRU)\n",
  2068.            @{$att{DIR}}));
  2069.       push(@m, "\t\@echo 'No tests defined for \$(NAME) extension.'\n") unless @m > 1;
  2070.       join("", @m);
  2071. ***************
  2072. *** 1707,1714 ****
  2073.       push @m, q{
  2074.   doc_install ::
  2075.       @ $(PERL) -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB)  \\
  2076. !         -e 'use ExtUtils::MakeMaker; MM->writedoc("Module", "$(NAME)", \\
  2077. !         "LINKTYPE=$(LINKTYPE)", "VERSION=$(VERSION)", "EXE_FILES=$(EXE_FILES)")'
  2078.   };
  2079.   
  2080.       push(@m, "
  2081. --- 1768,1775 ----
  2082.       push @m, q{
  2083.   doc_install ::
  2084.       @ $(PERL) -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB)  \\
  2085. !         -e "use ExtUtils::MakeMaker; MM->writedoc('Module', '$(NAME)', \\
  2086. !         'LINKTYPE=$(LINKTYPE)', 'VERSION=$(VERSION)', 'EXE_FILES=$(EXE_FILES)')"
  2087.   };
  2088.   
  2089.       push(@m, "
  2090. ***************
  2091. *** 1761,1767 ****
  2092.   
  2093.   $(PERL_ARCHLIB)/Config.pm: $(PERL_SRC)/config.sh
  2094.       @echo "Warning: $(PERL_ARCHLIB)/Config.pm may be out of date with $(PERL_SRC)/config.sh"
  2095. !     cd $(PERL_SRC); $(MAKE) lib/Config.pm
  2096.   ') if $att{PERL_SRC};
  2097.   
  2098.       push(@m, join(" ", values %{$att{XS}})." : \$(XSUBPPDEPS)\n")
  2099. --- 1822,1828 ----
  2100.   
  2101.   $(PERL_ARCHLIB)/Config.pm: $(PERL_SRC)/config.sh
  2102.       @echo "Warning: $(PERL_ARCHLIB)/Config.pm may be out of date with $(PERL_SRC)/config.sh"
  2103. !     cd $(PERL_SRC) && $(MAKE) lib/Config.pm
  2104.   ') if $att{PERL_SRC};
  2105.   
  2106.       push(@m, join(" ", values %{$att{XS}})." : \$(XSUBPPDEPS)\n")
  2107. ***************
  2108. *** 1784,1799 ****
  2109.       @echo "Cleaning current config before rebuilding Makefile..."
  2110.       -@mv '."$att{MAKEFILE} $att{MAKEFILE}.old".'
  2111.       -$(MAKE) -f '.$att{MAKEFILE}.'.old clean >/dev/null 2>&1 || true
  2112. !     $(PERL) $(I_PERL_LIBS) Makefile.PL
  2113.       @echo "Now you must rerun make."; false
  2114.   ';
  2115.   }
  2116.   
  2117.   sub postamble{
  2118.       "";
  2119.   }
  2120.   
  2121.   # --- Make-A-Perl section ---
  2122.   
  2123.   sub staticmake {
  2124. --- 1845,1883 ----
  2125.       @echo "Cleaning current config before rebuilding Makefile..."
  2126.       -@mv '."$att{MAKEFILE} $att{MAKEFILE}.old".'
  2127.       -$(MAKE) -f '.$att{MAKEFILE}.'.old clean >/dev/null 2>&1 || true
  2128. !     $(PERL) $(I_PERL_LIBS) Makefile.PL '."@ARGV".'
  2129.       @echo "Now you must rerun make."; false
  2130.   ';
  2131.   }
  2132.   
  2133.   sub postamble{
  2134.       "";
  2135.   }
  2136.   
  2137. + # --- Make-Directories section (internal method) ---
  2138. + # dir_target(@array) returns a Makefile entry for the file .exists in each
  2139. + # named directory. Returns nothing, if the entry has already been processed.
  2140. + # We're helpless though, if the same directory comes as $(FOO) _and_ as "bar".
  2141. + # Both of them get an entry, that's why we use "::". I chose '$(PERL)' as the 
  2142. + # prerequisite, because there has to be one, something that doesn't change 
  2143. + # too often :)
  2144. + %Dir_Target = (); # package global
  2145. + sub dir_target {
  2146. +     my($self,@dirs)=@_;
  2147. +     my(@m,$dir);
  2148. +     foreach $dir (@dirs) {
  2149. +     next if $Dir_Target{$dir};
  2150. +     push @m, "
  2151. + $dir/.exists :: \$(PERL)
  2152. +     \@ \$(MKPATH) $dir
  2153. +     \@ \$(TOUCH) $dir/.exists
  2154. + ";
  2155. +     $Dir_Target{$dir}++;
  2156. +     }
  2157. +     join "", @m;
  2158. + }
  2159.   # --- Make-A-Perl section ---
  2160.   
  2161.   sub staticmake {
  2162. ***************
  2163. *** 1838,1843 ****
  2164. --- 1922,1929 ----
  2165.       File::Find::find(sub {
  2166.       return unless m/\.a$/;
  2167.       return if m/^libperl/;
  2168. +     # don't include the installed version of this extension
  2169. +     return if $File::Find::name =~ m:auto/$att{FULLEXT}/$att{BASEEXT}.a$:;
  2170.       $static{fastcwd() . "/" . $_}++;
  2171.       }, grep( -d $_, @{$searchdirs || []}) );
  2172.   
  2173. ***************
  2174. *** 1868,1886 ****
  2175.   MAP_EXTRA     = @{$extra}
  2176.   MAP_PRELIBS   = $Config{'libs'} $Config{'cryptlib'}
  2177.   ";
  2178. !     if ($libperl) {
  2179. !     unless (-f $libperl || -f ($libperl = "$Config{'installarchlib'}/CORE/$libperl")){
  2180. !         print STDOUT "Warning: $libperl not found";
  2181. !         undef $libperl;
  2182. !     }
  2183. !     }
  2184. !     unless ($libperl) {
  2185. !     if (defined $att{PERL_SRC}) {
  2186. !         $libperl = "$att{PERL_SRC}/libperl.a";
  2187. !     } elsif ( -f ( $libperl = "$Config{'installarchlib'}/CORE/libperl.a" )) {
  2188. !     } else {
  2189. !         print STDOUT "Warning: $libperl not found";
  2190. !     }
  2191.       }
  2192.   
  2193.       push @m, "
  2194. --- 1954,1967 ----
  2195.   MAP_EXTRA     = @{$extra}
  2196.   MAP_PRELIBS   = $Config{'libs'} $Config{'cryptlib'}
  2197.   ";
  2198. !     unless ($libperl && -f $libperl) {
  2199. !     my $dir = (defined $att{PERL_SRC}) ? $att{PERL_SRC}
  2200. !                        : "$Config{'installarchlib'}/CORE";
  2201. !     $libperl = "libperl.a" unless $libperl;
  2202. !     $libperl = "$dir/$libperl";
  2203. !     print STDOUT "Warning: $libperl not found"
  2204. !         unless (-f $libperl || defined($att{PERL_SRC}));
  2205.       }
  2206.   
  2207.       push @m, "
  2208. ***************
  2209. *** 1910,1918 ****
  2210.   # We write MAP_EXTRA outside the perl program to have it eval'd by the shell
  2211.       push @m, q{
  2212.   doc_inst_perl:
  2213. !     @ $(FULLPERL) -e 'use ExtUtils::MakeMaker; MM->writedoc("Perl binary", \\
  2214. !         "$(MAP_TARGET)", "MAP_STATIC=$(MAP_STATIC)", \\
  2215. !         "MAP_EXTRA=@ARGV", "MAP_LIBPERL=$(MAP_LIBPERL)")' -- $(MAP_EXTRA)
  2216.   };
  2217.   
  2218.       push @m, qq{
  2219. --- 1991,1999 ----
  2220.   # We write MAP_EXTRA outside the perl program to have it eval'd by the shell
  2221.       push @m, q{
  2222.   doc_inst_perl:
  2223. !     @ $(FULLPERL) -e 'use ExtUtils::MakeMaker; MM->writedoc("Perl binary",' \\
  2224. !         -e '"$(MAP_TARGET)", "MAP_STATIC=$(MAP_STATIC)",' \\
  2225. !         -e '"MAP_EXTRA=@ARGV", "MAP_LIBPERL=$(MAP_LIBPERL)")' -- $(MAP_EXTRA)
  2226.   };
  2227.   
  2228.       push @m, qq{
  2229. ***************
  2230. *** 2140,2145 ****
  2231. --- 2221,2227 ----
  2232.   
  2233.   sub mksymlists {
  2234.       my($self) = shift;
  2235. +     my($pkg);
  2236.   
  2237.       # only AIX requires a symbol list at this point
  2238.       # (so does VMS, but that's handled by the MM_VMS package)
  2239. ***************
  2240. *** 2157,2162 ****
  2241. --- 2239,2245 ----
  2242.       print EXP join("\n",@{$att{DL_VARS}}) if $att{DL_VARS};
  2243.       foreach $pkg (keys %{$att{DL_FUNCS}}) {
  2244.           (my($prefix) = $pkg) =~ s/\W/_/g;
  2245. +     my $func;
  2246.           foreach $func (@{$att{DL_FUNCS}->{$pkg}}) {
  2247.               $func = "XS_${prefix}_$func" unless $func =~ /^boot_/;
  2248.               print EXP "$func\n";
  2249. ***************
  2250. *** 2199,2204 ****
  2251. --- 2282,2288 ----
  2252.       close POD;
  2253.   }
  2254.   
  2255.   =head1 AUTHORS
  2256.   
  2257.   Andy Dougherty F<E<lt>doughera@lafcol.lafayette.eduE<gt>>, Andreas
  2258. ***************
  2259. *** 2229,2241 ****
  2260.   v4.04 Februeary 5th 1995 By Andreas Koenig
  2261.   v4.05 February 8th 1995 By Andreas Koenig
  2262.   v4.06 February 10th 1995 By Andreas Koenig
  2263. - Cleaning up the new interface. Suggestion to freeze now until 5.001.
  2264.   v4.061 February 12th 1995 By Andreas Koenig
  2265. - Fixes of some my() declarations and of @extra computing in makeaperl().
  2266.   v4.08 - 4.085  February 14th-21st 1995 by Andreas Koenig
  2267.   
  2268.   Introduces EXE_FILES and INST_EXE for installing executable scripts 
  2269. --- 2313,2319 ----
  2270. ***************
  2271. *** 2272,2277 ****
  2272. --- 2350,2397 ----
  2273.   v4.086 March 9 1995 by Andy Dougherty
  2274.   
  2275.   Fixed some AIX buglets.  Fixed DLD support for Linux with gcc 2.6.2.
  2276. + v4.09 March 31 1995 by Andreas Koenig
  2277. + Patches from Tim (/usr/local/lib/perl5/hpux/CORE/libperl.a not found
  2278. + message eliminated, and a small makeaperl patch).
  2279. + blib now is a relative directory (./blib).
  2280. + Documentation bug fixed.
  2281. + Chdir in the Makefile always followed by "&&", not by ";".
  2282. + The output of cflags is no longer directed to /dev/null, but the shell
  2283. + version of cflags is now only called once.
  2284. + The result of MakeMaker's cflags takes precedence over
  2285. + shell-cflags.
  2286. + Introduced a $(PASTHRU) variable, that doesn't have much effect yet,
  2287. + but now it's easier to add variables that have to be passed to
  2288. + recursive makes.
  2289. + 'make config' will now always reapply the original arguments to the
  2290. + 'perl Makefile.PL'.
  2291. + MKPATH will be called only once for any directory (should speed up Tk
  2292. + building and installation considerably).
  2293. + "Subroutine mkbootstrap redefined" message eliminated. It was
  2294. + necessary to move &mkbootstrap and &mksymlists from @EXPORT to
  2295. + @EXPORT_OK.
  2296. + C<*.PL> files will be processed by C<$(PERL)>.
  2297. + Turned some globals into my() variables, where it was obvious to be an
  2298. + oversight.
  2299. + Changed some continuation lines so that they work on Solaris and Unicos.
  2300. + v4.091 April 3 1995 by Andy Dougherty
  2301. + Another attempt to fix writedoc() from Dean Roehrich.
  2302.   
  2303.   =head1 NOTES
  2304.   
  2305. Index: myconfig
  2306. *** perl5.001b/myconfig    Tue Oct 18 12:21:05 1994
  2307. --- perl5.001c/myconfig    Tue Apr  4 12:13:21 1995
  2308. ***************
  2309. *** 22,28 ****
  2310.       uname='$myuname'
  2311.       hint=$hint
  2312.     Compiler:
  2313. !     cc='$cc', optimize='$optimize'
  2314.       cppflags='$cppflags'
  2315.       ccflags ='$ccflags'
  2316.       ldflags ='$ldflags'
  2317. --- 22,28 ----
  2318.       uname='$myuname'
  2319.       hint=$hint
  2320.     Compiler:
  2321. !     cc='$cc', optimize='$optimize', ld='$ld'
  2322.       cppflags='$cppflags'
  2323.       ccflags ='$ccflags'
  2324.       ldflags ='$ldflags'
  2325. Index: perl.c
  2326. *** perl5.001b/perl.c    Sun Mar 12 03:14:11 1995
  2327. --- perl5.001c/perl.c    Fri Apr  7 07:55:27 1995
  2328. ***************
  2329. *** 833,842 ****
  2330.   
  2331.   #if defined(DOSISH)
  2332.   #    define PERLLIB_SEP ';'
  2333. - #elif defined(VMS)
  2334. - #    define PERLLIB_SEP '|'
  2335.   #else
  2336.   #    define PERLLIB_SEP ':'
  2337.   #endif
  2338.   
  2339.   static void
  2340. --- 833,844 ----
  2341.   
  2342.   #if defined(DOSISH)
  2343.   #    define PERLLIB_SEP ';'
  2344.   #else
  2345. + #  if defined(VMS)
  2346. + #    define PERLLIB_SEP '|'
  2347. + #  else
  2348.   #    define PERLLIB_SEP ':'
  2349. + #  endif
  2350.   #endif
  2351.   
  2352.   static void
  2353. Index: perl.h
  2354. *** perl5.001b/perl.h    Sun Mar 12 03:14:13 1995
  2355. --- perl5.001c/perl.h    Wed Apr  5 16:43:59 1995
  2356. ***************
  2357. *** 639,647 ****
  2358.   #define U_L(what) ((U32)(what))
  2359.   #else
  2360.   U32 cast_ulong _((double));
  2361. ! #define U_S(what) ((U16)cast_ulong(what))
  2362. ! #define U_I(what) ((unsigned int)cast_ulong(what))
  2363. ! #define U_L(what) (cast_ulong(what))
  2364.   #endif
  2365.   
  2366.   #ifdef CASTI32
  2367. --- 639,647 ----
  2368.   #define U_L(what) ((U32)(what))
  2369.   #else
  2370.   U32 cast_ulong _((double));
  2371. ! #define U_S(what) ((U16)cast_ulong((double)(what)))
  2372. ! #define U_I(what) ((unsigned int)cast_ulong((double)(what)))
  2373. ! #define U_L(what) (cast_ulong((double)(what)))
  2374.   #endif
  2375.   
  2376.   #ifdef CASTI32
  2377. ***************
  2378. *** 649,657 ****
  2379.   #define I_V(what) ((IV)(what))
  2380.   #else
  2381.   I32 cast_i32 _((double));
  2382. ! #define I_32(what) (cast_i32(what))
  2383.   IV cast_iv _((double));
  2384. ! #define I_V(what) (cast_iv(what))
  2385.   #endif
  2386.   
  2387.   struct Outrec {
  2388. --- 649,657 ----
  2389.   #define I_V(what) ((IV)(what))
  2390.   #else
  2391.   I32 cast_i32 _((double));
  2392. ! #define I_32(what) (cast_i32((double)(what)))
  2393.   IV cast_iv _((double));
  2394. ! #define I_V(what) (cast_iv((double)(what)))
  2395.   #endif
  2396.   
  2397.   struct Outrec {
  2398. ***************
  2399. *** 758,764 ****
  2400.       extern "C" {
  2401.   #   endif
  2402.           double exp _((double));
  2403. -         double fmod _((double,double));
  2404.           double log _((double));
  2405.           double sqrt _((double));
  2406.           double modf _((double,double*));
  2407. --- 758,763 ----
  2408. ***************
  2409. *** 768,782 ****
  2410.           double pow _((double,double));
  2411.   #   ifdef __cplusplus
  2412.       };
  2413. - #   endif
  2414. - #endif
  2415. - #ifndef HAS_FMOD
  2416. - #   ifdef HAS_DREM
  2417. - #    define fmod(x,y) drem((x),(y))
  2418. - #   else
  2419. - #    define USE_MY_FMOD
  2420. - #    define fmod(x,y) my_fmod(x,y)
  2421.   #   endif
  2422.   #endif
  2423.   
  2424. --- 767,772 ----
  2425. Index: proto.h
  2426. *** perl5.001b/proto.h    Mon Feb 13 21:49:25 1995
  2427. --- perl5.001c/proto.h    Wed Apr  5 14:50:41 1995
  2428. ***************
  2429. *** 211,219 ****
  2430.   char*    my_bzero _((char* loc, I32 len));
  2431.   #endif
  2432.   void    my_exit _((U32 status)) __attribute__((noreturn));
  2433. - #ifdef    USE_MY_FMOD
  2434. - double    my_fmod _((double x, double y));
  2435. - #endif
  2436.   I32    my_lstat _((void));
  2437.   #ifndef HAS_MEMCMP
  2438.   I32    my_memcmp _((unsigned char* s1, unsigned char* s2, I32 len));
  2439. --- 211,216 ----
  2440. Index: sv.h
  2441. *** perl5.001b/sv.h    Wed Feb 15 19:06:11 1995
  2442. --- perl5.001c/sv.h    Tue Apr  4 12:14:06 1995
  2443. ***************
  2444. *** 45,51 ****
  2445.   };
  2446.   
  2447.   struct cv {
  2448. !     XPVGV*    sv_any;        /* pointer to something */
  2449.       U32        sv_refcnt;    /* how many references to us */
  2450.       U32        sv_flags;    /* what we are */
  2451.   };
  2452. --- 45,51 ----
  2453.   };
  2454.   
  2455.   struct cv {
  2456. !     XPVCV*    sv_any;        /* pointer to something */
  2457.       U32        sv_refcnt;    /* how many references to us */
  2458.       U32        sv_flags;    /* what we are */
  2459.   };
  2460. Index: util.c
  2461. *** perl5.001b/util.c    Sun Mar 12 02:36:14 1995
  2462. --- perl5.001c/util.c    Wed Apr  5 15:52:50 1995
  2463. ***************
  2464. *** 1579,1590 ****
  2465.   cast_i32(f)
  2466.   double f;
  2467.   {
  2468. ! #   define BIGDOUBLE 2147483648.0        /* Assume 32 bit int's ! */
  2469.   #   define BIGNEGDOUBLE (-2147483648.0)
  2470.       if (f >= BIGDOUBLE)
  2471. !     return (I32)fmod(f, BIGDOUBLE);
  2472.       if (f <= BIGNEGDOUBLE)
  2473. !     return (I32)fmod(f, BIGNEGDOUBLE);
  2474.       return (I32) f;
  2475.   }
  2476.   # undef BIGDOUBLE
  2477. --- 1579,1590 ----
  2478.   cast_i32(f)
  2479.   double f;
  2480.   {
  2481. ! #   define BIGDOUBLE 2147483647.0        /* Assume 32 bit int's ! */
  2482.   #   define BIGNEGDOUBLE (-2147483648.0)
  2483.       if (f >= BIGDOUBLE)
  2484. !     return (I32) BIGDOUBLE;
  2485.       if (f <= BIGNEGDOUBLE)
  2486. !     return (I32) BIGNEGDOUBLE;
  2487.       return (I32) f;
  2488.   }
  2489.   # undef BIGDOUBLE
  2490. ***************
  2491. *** 1595,1606 ****
  2492.   double f;
  2493.   {
  2494.       /* XXX  This should be fixed.  It assumes 32 bit IV's. */
  2495. ! #   define BIGDOUBLE 2147483648.0        /* Assume 32 bit IV's ! */
  2496.   #   define BIGNEGDOUBLE (-2147483648.0)
  2497.       if (f >= BIGDOUBLE)
  2498. !     return (IV)fmod(f, BIGDOUBLE);
  2499.       if (f <= BIGNEGDOUBLE)
  2500. !     return (IV)fmod(f, BIGNEGDOUBLE);
  2501.       return (IV) f;
  2502.   }
  2503.   # undef BIGDOUBLE
  2504. --- 1595,1606 ----
  2505.   double f;
  2506.   {
  2507.       /* XXX  This should be fixed.  It assumes 32 bit IV's. */
  2508. ! #   define BIGDOUBLE 2147483647.0        /* Assume 32 bit IV's ! */
  2509.   #   define BIGNEGDOUBLE (-2147483648.0)
  2510.       if (f >= BIGDOUBLE)
  2511. !     return (IV) BIGDOUBLE;
  2512.       if (f <= BIGNEGDOUBLE)
  2513. !     return (IV) BIGNEGDOUBLE;
  2514.       return (IV) f;
  2515.   }
  2516.   # undef BIGDOUBLE
  2517. ***************
  2518. *** 1687,1714 ****
  2519.       *retlen = s - start;
  2520.       return retval;
  2521.   }
  2522. - /* Amazingly enough, some systems (e.g. Dynix 3) don't have fmod.
  2523. -    This is a slow, stupid, but working emulation.  (AD)
  2524. - */
  2525. - #ifdef USE_MY_FMOD
  2526. - double
  2527. - my_fmod(x, y)
  2528. - double x, y;
  2529. - {
  2530. -     double i = 0.0;   /* Can't use int because it can overflow */
  2531. -     if ((x == 0) || (y == 0))
  2532. -        return 0;
  2533. -     /* The sign of fmod is the same as the sign of x.  */
  2534. -     if ( (x < 0 && y > 0) || (x > 0 && y < 0) )
  2535. -     y = -y;
  2536. -     if (x > 0) {
  2537. -     while (x - i*y > y)
  2538. -         i++;
  2539. -     } else {
  2540. -     while (x - i*y < y)
  2541. -         i++;
  2542. -     }
  2543. -     return x - i * y;
  2544. - }
  2545. - #endif
  2546. --- 1687,1689 ----
  2547. Index: vms/config.vms
  2548. *** perl5.001b/vms/config.vms    Sun Mar 12 03:14:20 1995
  2549. --- perl5.001c/vms/config.vms    Thu Apr  6 11:08:53 1995
  2550. ***************
  2551. *** 1311,1329 ****
  2552.   #undef SETUID_SCRIPTS_ARE_SECURE_NOW    /**/
  2553.   #undef DOSUID        /**/
  2554.   
  2555. - /* HAS_DREM:
  2556. -  *    This symbol, if defined, indicates that the drem routine is
  2557. -  *    available.  This is a Pyramid routine that is the same as
  2558. -  *    fmod.
  2559. -  */
  2560. - #undef HAS_DREM        /**/
  2561. - /* HAS_FMOD:
  2562. -  *    This symbol, if defined, indicates that the fmod routine is
  2563. -  *    available.
  2564. -  */
  2565. - #define HAS_FMOD        /**/
  2566.   /* Gconvert:
  2567.    *    This preprocessor macro is defined to convert a floating point
  2568.    *    number to a string without a trailing decimal point.  This
  2569. --- 1311,1316 ----
  2570. Index: x2p/Makefile.SH
  2571. *** perl5.001b/x2p/Makefile.SH    Fri Apr  7 07:58:29 1995
  2572. --- perl5.001c/x2p/Makefile.SH    Wed Mar 15 14:28:39 1995
  2573. ***************
  2574. *** 76,82 ****
  2575.   # used only if you force byacc to run by saying
  2576.   # make  run_byacc
  2577.   
  2578. ! run_byacc:
  2579.       @ echo Expect many shift/reduce and reduce/reduce conflicts
  2580.       $(BYACC) a2p.y
  2581.       mv y.tab.c a2p.c
  2582. --- 76,82 ----
  2583.   # used only if you force byacc to run by saying
  2584.   # make  run_byacc
  2585.   
  2586. ! run_byacc:    FORCE
  2587.       @ echo Expect many shift/reduce and reduce/reduce conflicts
  2588.       $(BYACC) a2p.y
  2589.       mv y.tab.c a2p.c
  2590. ***************
  2591. *** 84,90 ****
  2592.   # We don't want to regenerate a2p.c, but it might appear out-of-date
  2593.   # after a patch is applied or a new distribution is made.
  2594.   a2p.c: a2p.y
  2595. !     - touch a2p.c
  2596.   
  2597.   a2p.o: a2p.c a2py.c a2p.h EXTERN.h util.h INTERN.h handy.h ../config.h str.h hash.h
  2598.       $(CCCMD) $(LARGE) a2p.c
  2599. --- 84,90 ----
  2600.   # We don't want to regenerate a2p.c, but it might appear out-of-date
  2601.   # after a patch is applied or a new distribution is made.
  2602.   a2p.c: a2p.y
  2603. !     -@touch a2p.c
  2604.   
  2605.   a2p.o: a2p.c a2py.c a2p.h EXTERN.h util.h INTERN.h handy.h ../config.h str.h hash.h
  2606.       $(CCCMD) $(LARGE) a2p.c
  2607.  
  2608.  
  2609. End of patch.
  2610.