First steps of making builds outside the source
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Sun Jul 25 14:54:07 EET DST 1999 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
25
26 cat >/tmp/c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >/tmp/c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112         if test X`/usr/bin/uname -s` = XOSF1; then
113                 avoidksh="to avoid Digital UNIX' ksh"
114                 newsh=/bin/sh
115                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116         fi
117 fi
118 case "$inksh/$needksh" in
119 /[a-z]*)
120                 ENV=''
121                 changesh=true
122                 reason="$needksh"
123         ;;
124 esac
125 case "$inksh/$avoidksh" in
126 true/[a-z]*)
127         changesh=true
128         reason="$avoidksh"
129         ;;
130 esac
131 case "$inksh/$needksh-$avoidksh-" in
132 true/--)
133                 cat <<EOM
134 (I see you are using the Korn shell.  Some ksh's blow up on $me,
135 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
136 EOM
137         ;;
138 esac
139 case "$changesh" in
140 true)
141         echo "(Feeding myself to $newsh $reason.)"
142         case "$0" in
143         Configure|*/Configure) exec $newsh $0 "$@";;
144         *) exec $newsh Configure "$@";;
145         esac
146         ;;
147 esac
148
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
151 case "$CDPATH" in
152 '')     ;;
153 *)      case "$SHELL" in
154         *bash*) CDPATH='.' ;;
155         *)              CDPATH='' ;;
156         esac
157         ;;
158 esac
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
161 cd UU && rm -f ./*
162
163 ccsymbols=''
164 cppccsymbols=''
165 cppsymbols=''
166 dynamic_ext=''
167 extensions=''
168 known_extensions=''
169 nonxs_ext=''
170 static_ext=''
171 useopcode=''
172 useposix=''
173 d_bsd=''
174 d_eunice=''
175 d_xenix=''
176 eunicefix=''
177 Mcc=''
178 ar=''
179 awk=''
180 bash=''
181 bison=''
182 byacc=''
183 cat=''
184 chgrp=''
185 chmod=''
186 chown=''
187 comm=''
188 compress=''
189 cp=''
190 cpio=''
191 cpp=''
192 csh=''
193 date=''
194 echo=''
195 egrep=''
196 emacs=''
197 expr=''
198 find=''
199 flex=''
200 grep=''
201 gzip=''
202 inews=''
203 ksh=''
204 less=''
205 line=''
206 lint=''
207 ln=''
208 lp=''
209 lpr=''
210 ls=''
211 mail=''
212 mailx=''
213 make=''
214 mkdir=''
215 more=''
216 mv=''
217 nm=''
218 nroff=''
219 perl=''
220 pg=''
221 pmake=''
222 pr=''
223 rm=''
224 rmail=''
225 sed=''
226 sendmail=''
227 shar=''
228 sleep=''
229 smail=''
230 sort=''
231 submit=''
232 tail=''
233 tar=''
234 tbl=''
235 tee=''
236 test=''
237 touch=''
238 tr=''
239 troff=''
240 uname=''
241 uniq=''
242 uuname=''
243 vi=''
244 zcat=''
245 zip=''
246 full_ar=''
247 full_sed=''
248 libswanted=''
249 hint=''
250 myuname=''
251 osname=''
252 osvers=''
253 Author=''
254 Date=''
255 Header=''
256 Id=''
257 Locker=''
258 Log=''
259 RCSfile=''
260 Revision=''
261 Source=''
262 State=''
263 _a=''
264 _exe=''
265 _o=''
266 archobjs=''
267 exe_ext=''
268 firstmakefile=''
269 lib_ext=''
270 obj_ext=''
271 path_sep=''
272 afs=''
273 alignbytes=''
274 ansi2knr=''
275 archlib=''
276 archlibexp=''
277 d_archlib=''
278 installarchlib=''
279 archname=''
280 myarchname=''
281 baserev=''
282 bin=''
283 binexp=''
284 installbin=''
285 byteorder=''
286 cc=''
287 gccversion=''
288 ccflags=''
289 cppflags=''
290 ldflags=''
291 lkflags=''
292 locincpth=''
293 optimize=''
294 cf_email=''
295 cf_by=''
296 cf_time=''
297 contains=''
298 cpp_stuff=''
299 cpplast=''
300 cppminus=''
301 cpprun=''
302 cppstdin=''
303 crosscompile=''
304 d_access=''
305 d_accessx=''
306 d_alarm=''
307 d_attribut=''
308 d_bcmp=''
309 d_bcopy=''
310 d_bzero=''
311 d_casti32=''
312 castflags=''
313 d_castneg=''
314 d_chown=''
315 d_chroot=''
316 d_chsize=''
317 d_closedir=''
318 d_void_closedir=''
319 d_const=''
320 cryptlib=''
321 d_crypt=''
322 d_csh=''
323 full_csh=''
324 d_cuserid=''
325 d_dbl_dig=''
326 d_difftime=''
327 d_dlerror=''
328 d_dlopen=''
329 d_dlsymun=''
330 d_dosuid=''
331 d_suidsafe=''
332 d_drand48proto=''
333 d_dup2=''
334 d_eaccess=''
335 d_endgrent=''
336 d_endhent=''
337 d_endnent=''
338 d_endpent=''
339 d_endpwent=''
340 d_endsent=''
341 d_endspent=''
342 d_fchmod=''
343 d_fchown=''
344 d_fcntl=''
345 d_fd_macros=''
346 d_fd_set=''
347 d_fds_bits=''
348 d_fgetpos=''
349 d_flexfnam=''
350 d_flock=''
351 d_fork=''
352 d_fseeko=''
353 d_fsetpos=''
354 d_ftello=''
355 d_ftime=''
356 d_gettimeod=''
357 d_Gconvert=''
358 d_getgrent=''
359 d_getgrps=''
360 d_gethbyaddr=''
361 d_gethbyname=''
362 d_gethent=''
363 aphostname=''
364 d_gethname=''
365 d_phostname=''
366 d_uname=''
367 d_gethostprotos=''
368 d_getlogin=''
369 d_getmntent=''
370 d_getnbyaddr=''
371 d_getnbyname=''
372 d_getnent=''
373 d_getnetprotos=''
374 d_getpent=''
375 d_getpgid=''
376 d_getpgrp2=''
377 d_bsdgetpgrp=''
378 d_getpgrp=''
379 d_getppid=''
380 d_getprior=''
381 d_getpbyname=''
382 d_getpbynumber=''
383 d_getprotoprotos=''
384 d_getpwent=''
385 d_getsent=''
386 d_getservprotos=''
387 d_getspent=''
388 d_getspnam=''
389 d_getsbyname=''
390 d_getsbyport=''
391 d_gnulibc=''
392 d_hasmntopt=''
393 d_htonl=''
394 d_inetaton=''
395 d_isascii=''
396 d_killpg=''
397 d_lchown=''
398 d_link=''
399 d_locconv=''
400 d_lockf=''
401 d_longdbl=''
402 longdblsize=''
403 d_longlong=''
404 longlongsize=''
405 d_lstat=''
406 d_madvise=''
407 d_mblen=''
408 d_mbstowcs=''
409 d_mbtowc=''
410 d_memchr=''
411 d_memcmp=''
412 d_memcpy=''
413 d_memmove=''
414 d_memset=''
415 d_mkdir=''
416 d_mkfifo=''
417 d_mktime=''
418 d_mmap=''
419 mmaptype=''
420 d_mprotect=''
421 d_msg=''
422 d_msgctl=''
423 d_msgget=''
424 d_msgrcv=''
425 d_msgsnd=''
426 d_msync=''
427 d_munmap=''
428 d_nice=''
429 d_open3=''
430 d_fpathconf=''
431 d_pathconf=''
432 d_pause=''
433 d_pipe=''
434 d_poll=''
435 d_portable=''
436 d_old_pthread_create_joinable=''
437 old_pthread_create_joinable=''
438 d_pthread_yield=''
439 d_sched_yield=''
440 sched_yield=''
441 d_readdir=''
442 d_rewinddir=''
443 d_seekdir=''
444 d_telldir=''
445 d_readlink=''
446 d_readv=''
447 d_rename=''
448 d_rmdir=''
449 d_safebcpy=''
450 d_safemcpy=''
451 d_sanemcmp=''
452 d_select=''
453 d_sem=''
454 d_semctl=''
455 d_semget=''
456 d_semop=''
457 d_setegid=''
458 d_seteuid=''
459 d_setgrent=''
460 d_setgrps=''
461 d_sethent=''
462 d_setlinebuf=''
463 d_setlocale=''
464 d_setnent=''
465 d_setpent=''
466 d_setpgid=''
467 d_setpgrp2=''
468 d_bsdsetpgrp=''
469 d_setpgrp=''
470 d_setprior=''
471 d_setpwent=''
472 d_setregid=''
473 d_setresgid=''
474 d_setresuid=''
475 d_setreuid=''
476 d_setrgid=''
477 d_setruid=''
478 d_setsent=''
479 d_setsid=''
480 d_setspent=''
481 d_setvbuf=''
482 d_sfio=''
483 usesfio=''
484 d_shm=''
485 d_shmat=''
486 d_shmatprototype=''
487 shmattype=''
488 d_shmctl=''
489 d_shmdt=''
490 d_shmget=''
491 d_sigaction=''
492 d_sigsetjmp=''
493 d_cmsghdr_s=''
494 d_msg_ctrunc=''
495 d_msg_dontroute=''
496 d_msg_oob=''
497 d_msg_peek=''
498 d_msg_proxy=''
499 d_msghdr_s=''
500 d_oldsock=''
501 d_recvmsg=''
502 d_scm_rights=''
503 d_sendmsg=''
504 d_socket=''
505 d_sockpair=''
506 sockethdr=''
507 socketlib=''
508 d_statblks=''
509 d_fstatfs=''
510 d_statfs=''
511 d_statfsflags=''
512 d_fstatvfs=''
513 d_statvfs=''
514 d_stdio_cnt_lval=''
515 d_stdio_ptr_lval=''
516 d_stdiobase=''
517 d_stdstdio=''
518 stdio_base=''
519 stdio_bufsiz=''
520 stdio_cnt=''
521 stdio_filbuf=''
522 stdio_ptr=''
523 d_index=''
524 d_strchr=''
525 d_strcoll=''
526 d_strctcpy=''
527 d_strerrm=''
528 d_strerror=''
529 d_sysernlst=''
530 d_syserrlst=''
531 d_strtod=''
532 d_strtol=''
533 d_strtoul=''
534 d_strxfrm=''
535 d_symlink=''
536 d_syscall=''
537 d_sysconf=''
538 d_system=''
539 d_tcgetpgrp=''
540 d_tcsetpgrp=''
541 d_telldirproto=''
542 d_time=''
543 timetype=''
544 clocktype=''
545 d_times=''
546 d_truncate=''
547 d_tzname=''
548 d_umask=''
549 d_semctl_semid_ds=''
550 d_semctl_semun=''
551 d_union_semun=''
552 d_vfork=''
553 usevfork=''
554 d_voidsig=''
555 signal_t=''
556 d_volatile=''
557 d_charvspr=''
558 d_vprintf=''
559 d_wait4=''
560 d_waitpid=''
561 d_wcstombs=''
562 d_wctomb=''
563 d_writev=''
564 d_dbmclose64=''
565 d_dbminit64=''
566 d_delete64=''
567 d_fetch64=''
568 d_firstkey64=''
569 d_nextkey64=''
570 d_store64=''
571 dlext=''
572 cccdlflags=''
573 ccdlflags=''
574 dlsrc=''
575 ld=''
576 lddlflags=''
577 usedl=''
578 doublesize=''
579 ebcdic=''
580 fflushNULL=''
581 fflushall=''
582 fpostype=''
583 gidtype=''
584 groupstype=''
585 h_fcntl=''
586 h_sysfile=''
587 i_arpainet=''
588 db_hashtype=''
589 db_prefixtype=''
590 i_db=''
591 i_dbm=''
592 i_rpcsvcdbm=''
593 d_dirnamlen=''
594 direntrytype=''
595 i_dirent=''
596 i_dld=''
597 i_dlfcn=''
598 i_fcntl=''
599 i_float=''
600 i_gdbm=''
601 d_grpasswd=''
602 i_grp=''
603 d_int64t=''
604 i_inttypes=''
605 i_limits=''
606 i_locale=''
607 i_machcthr=''
608 i_malloc=''
609 i_math=''
610 i_memory=''
611 i_mntent=''
612 i_ndbm=''
613 i_netdb=''
614 i_neterrno=''
615 i_netinettcp=''
616 i_niin=''
617 i_sysin=''
618 i_poll=''
619 i_pthread=''
620 d_pwage=''
621 d_pwchange=''
622 d_pwclass=''
623 d_pwcomment=''
624 d_pwexpire=''
625 d_pwgecos=''
626 d_pwpasswd=''
627 d_pwquota=''
628 i_pwd=''
629 i_sfio=''
630 i_shadow=''
631 i_socks=''
632 i_stddef=''
633 i_stdlib=''
634 i_string=''
635 strings=''
636 i_sysaccess=''
637 i_sysdir=''
638 i_sysfile=''
639 d_voidtty=''
640 i_bsdioctl=''
641 i_sysfilio=''
642 i_sysioctl=''
643 i_syssockio=''
644 i_sysmman=''
645 i_sysmount=''
646 i_sysndir=''
647 i_sysparam=''
648 i_sysresrc=''
649 i_syssecrt=''
650 i_sysselct=''
651 i_sysstat=''
652 i_sysstatvfs=''
653 i_systimes=''
654 i_systypes=''
655 d_iovec_s=''
656 i_sysuio=''
657 i_sysun=''
658 i_syswait=''
659 i_sgtty=''
660 i_termio=''
661 i_termios=''
662 i_systime=''
663 i_systimek=''
664 i_time=''
665 timeincl=''
666 i_unistd=''
667 i_utime=''
668 i_values=''
669 i_stdarg=''
670 i_varargs=''
671 i_varhdr=''
672 i_vfork=''
673 installprefix=''
674 installprefixexp=''
675 installstyle=''
676 installusrbinperl=''
677 intsize=''
678 longsize=''
679 shortsize=''
680 d_dirent64_s=''
681 d_flock64_s=''
682 d_fstat64=''
683 d_ftruncate64=''
684 d_ino64_t=''
685 d_llseek=''
686 d_lockf64=''
687 d_lseek64=''
688 d_lstat64=''
689 d_off64_t=''
690 d_offset_t=''
691 d_open64=''
692 d_opendir64=''
693 d_readdir64=''
694 d_seekdir64=''
695 d_stat64=''
696 d_telldir64=''
697 d_truncate64=''
698 libc=''
699 ldlibpthname=''
700 libperl=''
701 shrpenv=''
702 useshrplib=''
703 glibpth=''
704 libpth=''
705 loclibpth=''
706 plibpth=''
707 xlibpth=''
708 ignore_versioned_solibs=''
709 libs=''
710 lns=''
711 lseeksize=''
712 lseektype=''
713 make_set_make=''
714 d_mymalloc=''
715 freetype=''
716 mallocobj=''
717 mallocsrc=''
718 malloctype=''
719 usemymalloc=''
720 installman1dir=''
721 man1dir=''
722 man1direxp=''
723 man1ext=''
724 installman3dir=''
725 man3dir=''
726 man3direxp=''
727 man3ext=''
728 huge=''
729 large=''
730 medium=''
731 models=''
732 small=''
733 split=''
734 modetype=''
735 multiarch=''
736 mydomain=''
737 myhostname=''
738 phostname=''
739 c=''
740 n=''
741 d_eofnblk=''
742 eagain=''
743 o_nonblock=''
744 rd_nodata=''
745 netdb_hlen_type=''
746 netdb_host_type=''
747 netdb_name_type=''
748 netdb_net_type=''
749 groupcat=''
750 hostcat=''
751 passcat=''
752 orderlib=''
753 ranlib=''
754 package=''
755 spackage=''
756 pager=''
757 apiversion=''
758 patchlevel=''
759 subversion=''
760 version=''
761 perladmin=''
762 perlpath=''
763 pidtype=''
764 prefix=''
765 prefixexp=''
766 installprivlib=''
767 privlib=''
768 privlibexp=''
769 prototype=''
770 ptrsize=''
771 drand01=''
772 randbits=''
773 randfunc=''
774 randseedtype=''
775 seedfunc=''
776 installscript=''
777 scriptdir=''
778 scriptdirexp=''
779 selectminbits=''
780 selecttype=''
781 sh=''
782 sig_count=''
783 sig_name=''
784 sig_name_init=''
785 sig_num=''
786 sig_num_init=''
787 installsitearch=''
788 sitearch=''
789 sitearchexp=''
790 installsitelib=''
791 sitelib=''
792 sitelibexp=''
793 siteprefix=''
794 siteprefixexp=''
795 sizetype=''
796 so=''
797 sharpbang=''
798 shsharp=''
799 spitshell=''
800 src=''
801 ssizetype=''
802 startperl=''
803 startsh=''
804 stdchar=''
805 d_fgetpos64=''
806 d_fopen64=''
807 d_freopen64=''
808 d_fseek64=''
809 d_fseeko64=''
810 d_fsetpos64=''
811 d_ftell64=''
812 d_ftello64=''
813 d_tmpfile64=''
814 d_stdio_stream_array=''
815 stdio_stream_array=''
816 sysman=''
817 trnl=''
818 uidtype=''
819 archname64=''
820 use64bits=''
821 usemultiplicity=''
822 nm_opt=''
823 nm_so_opt=''
824 runnm=''
825 usenm=''
826 useperlio=''
827 usesocks=''
828 d_oldpthreads=''
829 usethreads=''
830 incpath=''
831 mips=''
832 mips_type=''
833 usrinc=''
834 defvoidused=''
835 voidflags=''
836 CONFIG=''
837
838 define='define'
839 undef='undef'
840 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
841 rmlist=''
842
843 : We must find out about Eunice early
844 eunicefix=':'
845 if test -f /etc/unixtovms; then
846         eunicefix=/etc/unixtovms
847 fi
848 if test -f /etc/unixtovms.exe; then
849         eunicefix=/etc/unixtovms.exe
850 fi
851
852 i_whoami=''
853 : Possible local include directories to search.
854 : Set locincpth to "" in a hint file to defeat local include searches.
855 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
856 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
857 :
858 : no include file wanted by default
859 inclwanted=''
860
861 : list of known cpp symbols, sorted alphabetically
862 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
863 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
864 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
865 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
866 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
867 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
868 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
869 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
870 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
871 al="$al VMS Xenix286"
872 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
873 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
874 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
875 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
876 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
877 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
878 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
879 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
880 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
881 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
882 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
883 al="$al __SVR4_2__ __UMAXV__"
884 al="$al ____386BSD____ __alpha __alpha__ __amiga"
885 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
886 al="$al __host_mips__"
887 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
888 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
889 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
890 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
891 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
892 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
893 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
894 al="$al __mc88100 __mc88100__ __mips __mips__"
895 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
896 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
897 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
898 al="$al _host_mips _mips _unix"
899 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
900 al="$al apollo ardent att386 att3b"
901 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
902 al="$al cadmus clipper concurrent convex cray ctix"
903 al="$al dmert encore gcos gcx gimpel gould"
904 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
905 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
906 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
907 al="$al i186 i286 i386 i486 i8086"
908 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
909 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
910 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
911 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
912 al="$al mc88000 mc88100 merlin mert mips mvs n16"
913 al="$al ncl_el ncl_mr"
914 al="$al news1500 news1700 news1800 news1900 news3700"
915 al="$al news700 news800 news900 ns16000 ns32000"
916 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
917 al="$al parisc pc532 pdp11 plexus posix pyr"
918 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
919 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
920 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
921 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
922 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
923 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
924 al="$al xenix z8000"
925
926 : Trailing extension.  Override this in a hint file, if needed.
927 _exe=''
928 : Extra object files, if any, needed on this platform.
929 archobjs=''
930 groupstype=''
931 : change the next line if compiling for Xenix/286 on Xenix/386
932 xlibpth='/usr/lib/386 /lib/386'
933
934 : Possible local library directories to search.
935 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
936 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
937
938 : general looking path for locating libraries
939 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
940 glibpth="$glibpth /lib /usr/lib $xlibpth"
941 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
942 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
943
944 : Private path used by Configure to find libraries.  Its value
945 : is prepended to libpth. This variable takes care of special
946 : machines, like the mips.  Usually, it should be empty.
947 plibpth=''
948
949 : default library list
950 libswanted=''
951 : some systems want to use only the non-versioned libso:s
952 ignore_versioned_solibs=''
953 : full support for void wanted by default
954 defvoidused=15
955
956 : set useposix=false in your hint file to disable the POSIX extension.
957 useposix=true
958 : set useopcode=false in your hint file to disable the Opcode extension.
959 useopcode=true
960 : set usemultiplicity on the Configure command line to enable multiplicity.
961 : set usesocks on the Configure command line to enable socks.
962 : set usethreads on the Configure command line to enable threads.
963 : List of libraries we want.
964 : If anyone needs -lnet, put it in a hint file.
965 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
966 libswanted="$libswanted dld ld sun m rt c cposix posix"
967 libswanted="$libswanted ndir dir crypt sec"
968 libswanted="$libswanted ucb bsd BSD PW x"
969 : We probably want to search /usr/shlib before most other libraries.
970 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
971 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
972 glibpth="/usr/shlib $glibpth"
973 : Do not use vfork unless overridden by a hint file.
974 usevfork=false
975
976 : Find the basic shell for Bourne shell scripts
977 case "$sh" in
978 '')
979         case "$SYSTYPE" in
980         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
981         *) xxx='/bin/sh';;
982         esac
983         if test -f "$xxx"; then
984                 sh="$xxx"
985         else
986                 : Build up a list and do a single loop so we can 'break' out.
987                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
988                 for xxx in sh bash ksh pdksh ash; do
989                         for p in $pth; do
990                                 try="$try ${p}/${xxx}"
991                         done
992                 done
993                 for xxx in $try; do
994                         if test -f "$xxx"; then
995                                 sh="$xxx";
996                                 break
997                         elif test -f "$xxx.exe"; then
998                                 sh="$xxx";
999                                 break
1000                         fi
1001                 done
1002         fi
1003         ;;
1004 esac
1005
1006 case "$sh" in
1007 '')     cat <<EOM >&2
1008 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1009
1010 Usually it's in /bin/sh.  How did you even get this far?
1011 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1012 we'll try to straighten this all out.
1013 EOM
1014         exit 1
1015         ;;
1016 esac
1017
1018 : see if sh knows # comments
1019 if `$sh -c '#' >/dev/null 2>&1`; then
1020         shsharp=true
1021         spitshell=cat
1022         xcat=/bin/cat
1023         test -f $xcat || xcat=/usr/bin/cat
1024         echo "#!$xcat" >try
1025         $eunicefix try
1026         chmod +x try
1027         ./try > today
1028         if test -s today; then
1029                 sharpbang='#!'
1030         else
1031                 echo "#! $xcat" > try
1032                 $eunicefix try
1033                 chmod +x try
1034                 ./try > today
1035                 if test -s today; then
1036                         sharpbang='#! '
1037                 else
1038                         sharpbang=': use '
1039                 fi
1040         fi
1041 else
1042         echo " "
1043         echo "Your $sh doesn't grok # comments--I will strip them later on."
1044         shsharp=false
1045         cd ..
1046         echo "exec grep -v '^[  ]*#'" >spitshell
1047         chmod +x spitshell
1048         $eunicefix spitshell
1049         spitshell=`pwd`/spitshell
1050         cd UU
1051         echo "I presume that if # doesn't work, #! won't work either!"
1052         sharpbang=': use '
1053 fi
1054 rm -f try today
1055
1056 : figure out how to guarantee sh startup
1057 case "$startsh" in
1058 '') startsh=${sharpbang}${sh} ;;
1059 *)
1060 esac
1061 cat >try <<EOSS
1062 $startsh
1063 set abc
1064 test "$?abc" != 1
1065 EOSS
1066
1067 chmod +x try
1068 $eunicefix try
1069 if ./try; then
1070         : echo "Yup, it does."
1071 else
1072         echo "Hmm... '$startsh' does not guarantee sh startup..."
1073         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1074 fi
1075 rm -f try
1076
1077
1078 : Save command line options in file UU/cmdline.opt for later use in
1079 : generating config.sh.
1080 cat > cmdline.opt <<EOSH
1081 # Configure command line arguments.
1082 config_arg0='$0'
1083 config_args='$*'
1084 config_argc=$#
1085 EOSH
1086 argn=1
1087 for arg in "$@"; do
1088         cat >>cmdline.opt <<EOSH
1089 config_arg$argn='$arg'
1090 EOSH
1091         argn=`expr $argn + 1`
1092 done
1093
1094 : produce awk script to parse command line options
1095 cat >options.awk <<'EOF'
1096 BEGIN {
1097         optstr = "dD:eEf:hKOrsSU:V";    # getopt-style specification
1098
1099         len = length(optstr);
1100         for (i = 1; i <= len; i++) {
1101                 c = substr(optstr, i, 1);
1102                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1103                 if (a == ":") {
1104                         arg[c] = 1;
1105                         i++;
1106                 }
1107                 opt[c] = 1;
1108         }
1109 }
1110 {
1111         expect = 0;
1112         str = $0;
1113         if (substr(str, 1, 1) != "-") {
1114                 printf("'%s'\n", str);
1115                 next;
1116         }
1117         len = length($0);
1118         for (i = 2; i <= len; i++) {
1119                 c = substr(str, i, 1);
1120                 if (!opt[c]) {
1121                         printf("-%s\n", substr(str, i));
1122                         next;
1123                 }
1124                 printf("-%s\n", c);
1125                 if (arg[c]) {
1126                         if (i < len)
1127                                 printf("'%s'\n", substr(str, i + 1));
1128                         else
1129                                 expect = 1;
1130                         next;
1131                 }
1132         }
1133 }
1134 END {
1135         if (expect)
1136                 print "?";
1137 }
1138 EOF
1139
1140 : process the command line options
1141 set X `for arg in "$@"; do echo "X$arg"; done |
1142         sed -e s/X// | awk -f options.awk`
1143 eval "set $*"
1144 shift
1145 rm -f options.awk
1146
1147 : set up default values
1148 fastread=''
1149 reuseval=false
1150 config_sh=''
1151 alldone=''
1152 error=''
1153 silent=''
1154 extractsh=''
1155 override=''
1156 knowitall=''
1157 rm -f optdef.sh
1158 cat >optdef.sh <<EOS
1159 $startsh
1160 EOS
1161
1162
1163 : option parsing
1164 while test $# -gt 0; do
1165         case "$1" in
1166         -d) shift; fastread=yes;;
1167         -e) shift; alldone=cont;;
1168         -f)
1169                 shift
1170                 cd ..
1171                 if test -r "$1"; then
1172                         config_sh="$1"
1173                 else
1174                         echo "$me: cannot read config file $1." >&2
1175                         error=true
1176                 fi
1177                 cd UU
1178                 shift;;
1179         -h) shift; error=true;;
1180         -r) shift; reuseval=true;;
1181         -s) shift; silent=true; realsilent=true;;
1182         -E) shift; alldone=exit;;
1183         -K) shift; knowitall=true;;
1184         -O) shift; override=true;;
1185         -S) shift; silent=true; extractsh=true;;
1186         -D)
1187                 shift
1188                 case "$1" in
1189                 *=)
1190                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1191                         echo "$me: ignoring -D $1" >&2
1192                         ;;
1193                 *=*) echo "$1" | \
1194                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1195                 *) echo "$1='define'" >> optdef.sh;;
1196                 esac
1197                 shift
1198                 ;;
1199         -U)
1200                 shift
1201                 case "$1" in
1202                 *=) echo "$1" >> optdef.sh;;
1203                 *=*)
1204                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1205                         echo "$me: ignoring -U $1" >&2
1206                         ;;
1207                 *) echo "$1='undef'" >> optdef.sh;;
1208                 esac
1209                 shift
1210                 ;;
1211         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1212                 exit 0;;
1213         --) break;;
1214         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1215         *) break;;
1216         esac
1217 done
1218
1219 case "$error" in
1220 true)
1221         cat >&2 <<EOM
1222 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1223                  [-U symbol] [-U symbol=]
1224   -d : use defaults for all answers.
1225   -e : go on without questioning past the production of config.sh.
1226   -f : specify an alternate default configuration file.
1227   -h : print this help message and exit (with an error status).
1228   -r : reuse C symbols value if possible (skips costly nm extraction).
1229   -s : silent mode, only echoes questions and essential information.
1230   -D : define symbol to have some value:
1231          -D symbol         symbol gets the value 'define'
1232          -D symbol=value   symbol gets the value 'value'
1233   -E : stop at the end of questions, after having produced config.sh.
1234   -K : do not use unless you know what you are doing.
1235   -O : let -D and -U override definitions from loaded configuration file.
1236   -S : perform variable substitutions on all .SH files (can mix with -f)
1237   -U : undefine symbol:
1238          -U symbol    symbol gets the value 'undef'
1239          -U symbol=   symbol gets completely empty
1240   -V : print version number and exit (with a zero status).
1241 EOM
1242         exit 1
1243         ;;
1244 esac
1245
1246 : Sanity checks
1247 case "$fastread$alldone" in
1248 yescont|yesexit) ;;
1249 *)
1250         if test ! -t 0; then
1251                 echo "Say 'sh Configure', not 'sh <Configure'"
1252                 exit 1
1253         fi
1254         ;;
1255 esac
1256
1257 exec 4>&1
1258 case "$silent" in
1259 true) exec 1>/dev/null;;
1260 esac
1261
1262 : run the defines and the undefines, if any, but leave the file out there...
1263 touch optdef.sh
1264 . ./optdef.sh
1265
1266 : set package name
1267 package=perl5
1268 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1269 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1270 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1271 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1272 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1273 esac
1274
1275 : Some greps do not return status, grrr.
1276 echo "grimblepritz" >grimble
1277 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1278         contains=contains
1279 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1280         contains=grep
1281 else
1282         contains=contains
1283 fi
1284 rm -f grimble
1285 : the following should work in any shell
1286 case "$contains" in
1287 contains*)
1288         echo " "
1289         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1290         cat >contains <<'EOSS'
1291 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1292 EOSS
1293 chmod +x contains
1294 esac
1295
1296 : Find the path to the source tree
1297 case "$src" in
1298 '') case "$0" in
1299     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1300          case "$src" in
1301          /*)    ;;
1302          *)     src=`cd ../$src && pwd` ;;
1303          esac
1304          ;;
1305     *)   src='.';;
1306     esac;;
1307 esac
1308 case "$src" in
1309 '')     src=/
1310         rsrc=/
1311         ;;
1312 /*) rsrc="$src";;
1313 *) rsrc="../$src";;
1314 esac
1315 if test -f $rsrc/Configure && \
1316         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1317 then
1318    : found it, so we are ok.
1319 else
1320         rsrc=''
1321         for src in . .. ../.. ../../.. ../../../..; do
1322                 if test -f ../$src/Configure && \
1323                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1324                 then
1325                         rsrc=../$src
1326                         break
1327                 fi
1328         done
1329 fi
1330 case "$rsrc" in
1331 '')
1332         cat <<EOM >&4
1333
1334 Sorry, I can't seem to locate the source dir for $package.  Please start
1335 Configure with an explicit path -- i.e. /some/path/Configure.
1336
1337 EOM
1338         exit 1
1339         ;;
1340 ../.)   rsrc='..';;
1341 *)
1342         echo " "
1343         echo "Sources for $package found in \"$src\"." >&4
1344         ;;
1345 esac
1346
1347 : script used to extract .SH files with variable substitutions
1348 cat >extract <<'EOS'
1349 CONFIGDOTSH=true
1350 echo "Doing variable substitutions on .SH files..."
1351 if test -f $src/MANIFEST; then
1352         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1353 else
1354         echo "(Looking for .SH files under the source directory.)"
1355         set x `(cd $src; find . -name "*.SH" -print)`
1356 fi
1357 shift
1358 case $# in
1359 0) set x `(cd $src; echo *.SH)`; shift;;
1360 esac
1361 if test ! -f $src/$1; then
1362         shift
1363 fi
1364 mkdir_p='
1365 name=$1;
1366 create="";
1367 while test $name; do
1368         if test ! -d "$name"; then
1369                 create="$name $create";
1370                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1371                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1372         else
1373                 name="";
1374         fi;
1375 done;
1376 for file in $create; do
1377         mkdir $file;
1378 done
1379 '
1380 for file in $*; do
1381         case "$src" in
1382         ".")
1383                 case "$file" in
1384                 */*)
1385                         dir=`expr X$file : 'X\(.*\)/'`
1386                         file=`expr X$file : 'X.*/\(.*\)'`
1387                         (cd $dir && . ./$file)
1388                         ;;
1389                 *)
1390                         . ./$file
1391                         ;;
1392                 esac
1393                 ;;
1394         *)
1395                 case "$file" in
1396                 */*)
1397                         dir=`expr X$file : 'X\(.*\)/'`
1398                         file=`expr X$file : 'X.*/\(.*\)'`
1399                         (set x $dir; shift; eval $mkdir_p)
1400                         sh <$src/$dir/$file
1401                         ;;
1402                 *)
1403                         sh <$src/$file
1404                         ;;
1405                 esac
1406                 ;;
1407         esac
1408 done
1409 if test -f $src/config_h.SH; then
1410         if test ! -f config.h; then
1411         : oops, they left it out of MANIFEST, probably, so do it anyway.
1412         . $src/config_h.SH
1413         fi
1414 fi
1415 EOS
1416
1417 : extract files and exit if asked to do so
1418 case "$extractsh" in
1419 true)
1420         case "$realsilent" in
1421         true) ;;
1422         *) exec 1>&4;;
1423         esac
1424         case "$config_sh" in
1425         '') config_sh='config.sh';;
1426         esac
1427         echo " "
1428         echo "Fetching answers from $config_sh..."
1429         cd ..
1430         . $config_sh
1431         test "$override" && . ./optdef.sh
1432         echo " "
1433         . UU/extract
1434         rm -rf UU
1435         echo "Done."
1436         exit 0
1437         ;;
1438 esac
1439
1440 : Eunice requires " " instead of "", can you believe it
1441 echo " "
1442 : Here we go...
1443 echo "Beginning of configuration questions for $package."
1444
1445 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1446
1447 : first determine how to suppress newline on echo command
1448 echo " "
1449 echo "Checking echo to see how to suppress newlines..."
1450 (echo "hi there\c" ; echo " ") >.echotmp
1451 if $contains c .echotmp >/dev/null 2>&1 ; then
1452         echo "...using -n."
1453         n='-n'
1454         c=''
1455 else
1456         cat <<'EOM'
1457 ...using \c
1458 EOM
1459         n=''
1460         c='\c'
1461 fi
1462 echo $n "The star should be here-->$c"
1463 echo '*'
1464 rm -f .echotmp
1465
1466 : Now test for existence of everything in MANIFEST
1467 echo " "
1468 if test -f $rsrc/MANIFEST; then
1469         echo "First let's make sure your kit is complete.  Checking..." >&4
1470         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1471         rm -f missing
1472         tmppwd=`pwd`
1473         for filelist in x??; do
1474                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1475         done
1476         if test -s missing; then
1477                 cat missing >&4
1478                 cat >&4 <<'EOM'
1479
1480 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1481
1482 You have the option of continuing the configuration process, despite the
1483 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1484 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1485 and contact the author (perlbug@perl.com).
1486
1487 EOM
1488                 echo $n "Continue? [n] $c" >&4
1489                 read ans
1490                 case "$ans" in
1491                 y*)
1492                         echo "Continuing..." >&4
1493                         rm -f missing
1494                         ;;
1495                 *)
1496                         echo "ABORTING..." >&4
1497                         kill $$
1498                         ;;
1499                 esac
1500         else
1501                 echo "Looks good..."
1502         fi
1503 else
1504         echo "There is no MANIFEST file.  I hope your kit is complete !"
1505 fi
1506 rm -f missing x??
1507
1508 echo " "
1509 : Find the appropriate value for a newline for tr
1510 if test -n "$DJGPP"; then
1511        trnl='\012'
1512 fi
1513 if test X"$trnl" = X; then
1514         case "`echo foo|tr '\n' x 2>/dev/null`" in
1515         foox) trnl='\n' ;;
1516         esac
1517 fi
1518 if test X"$trnl" = X; then
1519         case "`echo foo|tr '\012' x 2>/dev/null`" in
1520         foox) trnl='\012' ;;
1521         esac
1522 fi
1523 if test X"$trnl" = X; then
1524         cat <<EOM >&2
1525
1526 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1527
1528 EOM
1529         exit 1
1530 fi
1531
1532 : compute the number of columns on the terminal for proper question formatting
1533 case "$COLUMNS" in
1534 '') COLUMNS='80';;
1535 esac
1536
1537 : set up the echo used in my read
1538 myecho="case \"\$xxxm\" in
1539 '') echo $n \"\$rp $c\" >&4;;
1540 *) case \"\$rp\" in
1541         '') echo $n \"[\$xxxm] $c\";;
1542         *)
1543                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1544                         echo \"\$rp\" >&4
1545                         echo $n \"[\$xxxm] $c\" >&4
1546                 else
1547                         echo $n \"\$rp [\$xxxm] $c\" >&4
1548                 fi
1549                 ;;
1550         esac;;
1551 esac"
1552
1553 : now set up to do reads with possible shell escape and default assignment
1554 cat <<EOSC >myread
1555 $startsh
1556 xxxm=\$dflt
1557 $myecho
1558 ans='!'
1559 case "\$fastread" in
1560 yes) case "\$dflt" in
1561         '') ;;
1562         *) ans='';
1563                 case "\$silent-\$rp" in
1564                 true-) ;;
1565                 *) echo " " >&4;;
1566                 esac;;
1567         esac;;
1568 *) case "\$silent" in
1569         true) case "\$rp" in
1570                 '') ans='';;
1571                 esac;;
1572         esac;;
1573 esac
1574 while expr "X\$ans" : "X!" >/dev/null; do
1575         read answ
1576         set x \$xxxm
1577         shift
1578         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1579         case  "\$answ" in
1580         "!")
1581                 sh 1>&4
1582                 echo " "
1583                 $myecho
1584                 ;;
1585         !*)
1586                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1587                 shift
1588                 sh 1>&4 -c "\$*"
1589                 echo " "
1590                 $myecho
1591                 ;;
1592         "\$ans")
1593                 case "\$ans" in
1594                 \\&*)
1595                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1596                         shift
1597                         case "\$1" in
1598                         -d)
1599                                 fastread=yes
1600                                 echo "(OK, I'll run with -d after this question.)" >&4
1601                                 ;;
1602                         -*)
1603                                 echo "*** Sorry, \$1 not supported yet." >&4
1604                                 ;;
1605                         esac
1606                         $myecho
1607                         ans=!
1608                         ;;
1609                 esac;;
1610         *)
1611                 case "\$aok" in
1612                 y)
1613                         echo "*** Substitution done -- please confirm."
1614                         xxxm="\$ans"
1615                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1616                         xxxm="\$ans"
1617                         ans=!
1618                         ;;
1619                 *)
1620                         echo "*** Error -- try again."
1621                         ans=!
1622                         ;;
1623                 esac
1624                 $myecho
1625                 ;;
1626         esac
1627         case "\$ans\$xxxm\$nostick" in
1628         '')
1629                 ans=!
1630                 $myecho
1631                 ;;
1632         esac
1633 done
1634 case "\$ans" in
1635 '') ans="\$xxxm";;
1636 esac
1637 EOSC
1638
1639 : create .config dir to save info across Configure sessions
1640 test -d ../.config || mkdir ../.config
1641 cat >../.config/README <<EOF
1642 This directory created by Configure to save information that should
1643 persist across sessions for $package.
1644
1645 You may safely delete it if you wish.
1646 EOF
1647
1648 : general instructions
1649 needman=true
1650 firsttime=true
1651 user=`(logname) 2>/dev/null`
1652 case "$user" in
1653 '') user=`whoami 2>&1`;;
1654 esac
1655 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1656         firsttime=false
1657         echo " "
1658         rp='Would you like to see the instructions?'
1659         dflt=n
1660         . ./myread
1661         case "$ans" in
1662         [yY]*) ;;
1663         *) needman=false;;
1664         esac
1665 fi
1666 if $needman; then
1667         cat <<EOH
1668
1669 This installation shell script will examine your system and ask you questions
1670 to determine how the perl5 package should be installed. If you get
1671 stuck on a question, you may use a ! shell escape to start a subshell or
1672 execute a command.  Many of the questions will have default answers in square
1673 brackets; typing carriage return will give you the default.
1674
1675 On some of the questions which ask for file or directory names you are allowed
1676 to use the ~name construct to specify the login directory belonging to "name",
1677 even if you don't have a shell which knows about that.  Questions where this is
1678 allowed will be marked "(~name ok)".
1679
1680 EOH
1681         rp=''
1682         dflt='Type carriage return to continue'
1683         . ./myread
1684         cat <<'EOH'
1685
1686 The prompter used in this script allows you to use shell variables and
1687 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1688 in the default answer, as if the default line was a set of arguments given to a
1689 script shell.  This means you may also use $* to repeat the whole default line,
1690 so you do not have to re-type everything to add something to the default.
1691
1692 Everytime there is a substitution, you will have to confirm.  If there is an
1693 error (e.g. an unmatched backtick), the default answer will remain unchanged
1694 and you will be prompted again.
1695
1696 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1697 the questions and use the computed defaults (or the previous answers if there
1698 was already a config.sh file). Type 'Configure -h' for a list of options.
1699 You may also start interactively and then answer '& -d' at any prompt to turn
1700 on the non-interactive behaviour for the remainder of the execution.
1701
1702 EOH
1703         . ./myread
1704         cat <<EOH
1705
1706 Much effort has been expended to ensure that this shell script will run on any
1707 Unix system.  If despite that it blows up on yours, your best bet is to edit
1708 Configure and run it again.  If you can't run Configure for some reason,
1709 you'll have to generate a config.sh file by hand.  Whatever problems you
1710 have, let me (perlbug@perl.com) know how I blew it.
1711
1712 This installation script affects things in two ways:
1713
1714 1) it may do direct variable substitutions on some of the files included
1715    in this kit.
1716 2) it builds a config.h file for inclusion in C programs.  You may edit
1717    any of these files as the need arises after running this script.
1718
1719 If you make a mistake on a question, there is no easy way to back up to it
1720 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1721 files.  Configure will offer to let you do this before it runs the SH files.
1722
1723 EOH
1724         dflt='Type carriage return to continue'
1725         . ./myread
1726         case "$firsttime" in
1727         true) echo $user >>../.config/instruct;;
1728         esac
1729 fi
1730
1731 : find out where common programs are
1732 echo " "
1733 echo "Locating common programs..." >&4
1734 cat <<EOSC >loc
1735 $startsh
1736 case \$# in
1737 0) exit 1;;
1738 esac
1739 thing=\$1
1740 shift
1741 dflt=\$1
1742 shift
1743 for dir in \$*; do
1744         case "\$thing" in
1745         .)
1746         if test -d \$dir/\$thing; then
1747                 echo \$dir
1748                 exit 0
1749         fi
1750         ;;
1751         *)
1752         for thisthing in \$dir/\$thing; do
1753                 : just loop through to pick last item
1754         done
1755         if test -f \$thisthing; then
1756                 echo \$thisthing
1757                 exit 0
1758         elif test -f \$dir/\$thing.exe; then
1759                 if test -n "$DJGPP"; then
1760                         echo \$dir/\$thing.exe
1761                 else
1762                         : on Eunice apparently
1763                         echo \$dir/\$thing
1764                 fi
1765                 exit 0
1766         fi
1767         ;;
1768         esac
1769 done
1770 echo \$dflt
1771 exit 1
1772 EOSC
1773 chmod +x loc
1774 $eunicefix loc
1775 loclist="
1776 awk
1777 cat
1778 comm
1779 cp
1780 echo
1781 expr
1782 grep
1783 ls
1784 make
1785 mkdir
1786 rm
1787 sed
1788 sort
1789 touch
1790 tr
1791 uniq
1792 "
1793 trylist="
1794 Mcc
1795 ar
1796 byacc
1797 cpp
1798 csh
1799 date
1800 egrep
1801 gzip
1802 less
1803 ln
1804 more
1805 nm
1806 nroff
1807 pg
1808 test
1809 uname
1810 zip
1811 "
1812 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1813 pth="$pth /lib /usr/lib"
1814 for file in $loclist; do
1815         eval xxx=\$$file
1816         case "$xxx" in
1817         /*|?:[\\/]*)
1818                 if test -f "$xxx"; then
1819                         : ok
1820                 else
1821                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1822                         xxx=`./loc $file $file $pth`
1823                 fi
1824                 ;;
1825         '') xxx=`./loc $file $file $pth`;;
1826         *) xxx=`./loc $xxx $xxx $pth`;;
1827         esac
1828         eval $file=$xxx
1829         eval _$file=$xxx
1830         case "$xxx" in
1831         /*)
1832                 echo $file is in $xxx.
1833                 ;;
1834         ?:[\\/]*)
1835                 echo $file is in $xxx.
1836                 ;;
1837         *)
1838                 echo "I don't know where '$file' is, and my life depends on it." >&4
1839                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1840                 exit 1
1841                 ;;
1842         esac
1843 done
1844 echo " "
1845 echo "Don't worry if any of the following aren't found..."
1846 say=offhand
1847 for file in $trylist; do
1848         eval xxx=\$$file
1849         case "$xxx" in
1850         /*|?:[\\/]*)
1851                 if test -f "$xxx"; then
1852                         : ok
1853                 else
1854                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1855                         xxx=`./loc $file $file $pth`
1856                 fi
1857                 ;;
1858         '') xxx=`./loc $file $file $pth`;;
1859         *) xxx=`./loc $xxx $xxx $pth`;;
1860         esac
1861         eval $file=$xxx
1862         eval _$file=$xxx
1863         case "$xxx" in
1864         /*)
1865                 echo $file is in $xxx.
1866                 ;;
1867         ?:[\\/]*)
1868                 echo $file is in $xxx.
1869                 ;;
1870         *)
1871                 echo "I don't see $file out there, $say."
1872                 say=either
1873                 ;;
1874         esac
1875 done
1876 case "$egrep" in
1877 egrep)
1878         echo "Substituting grep for egrep."
1879         egrep=$grep
1880         ;;
1881 esac
1882 case "$ln" in
1883 ln)
1884         echo "Substituting cp for ln."
1885         ln=$cp
1886         ;;
1887 esac
1888 case "$test" in
1889 test)
1890         echo "Hopefully test is built into your sh."
1891         ;;
1892 *)
1893         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1894                 echo "Using the test built into your sh."
1895                 test=test
1896                 _test=test
1897         fi
1898         ;;
1899 esac
1900 case "$echo" in
1901 echo)
1902         echo "Hopefully echo is built into your sh."
1903         ;;
1904 '') ;;
1905 *)
1906         echo " "
1907 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1908         $echo $n "hi there$c" >foo1
1909         echo $n "hi there$c" >foo2
1910         if cmp foo1 foo2 >/dev/null 2>&1; then
1911                 echo "They are compatible.  In fact, they may be identical."
1912         else
1913                 case "$n" in
1914                 '-n') n='' c='\c';;
1915                 *) n='-n' c='';;
1916                 esac
1917                 cat <<FOO
1918 They are not compatible!  You are probably running ksh on a non-USG system.
1919 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1920 have echo built in and we may have to run some Bourne shell scripts.  That
1921 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1922
1923 FOO
1924                 $echo $n "The star should be here-->$c"
1925                 $echo "*"
1926         fi
1927         $rm -f foo1 foo2
1928         ;;
1929 esac
1930
1931 : determine whether symbolic links are supported
1932 echo " "
1933 $touch blurfl
1934 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1935         echo "Symbolic links are supported." >&4
1936         lns="$ln -s"
1937 else
1938         echo "Symbolic links are NOT supported." >&4
1939         lns="$ln"
1940 fi
1941 $rm -f blurfl sym
1942
1943 : see whether [:lower:] and [:upper:] are supported character classes
1944 echo " "
1945 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1946 ABYZ)
1947         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1948         up='[:upper:]'
1949         low='[:lower:]'
1950         ;;
1951 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
1952         # (0xc9 and 0xd1), therefore that is a nice testing point.
1953         if test "X$up" = X -o "X$low" = X; then
1954             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
1955             ij) up='[A-Z]'
1956                 low='[a-z]'
1957                 ;;
1958             esac
1959         fi
1960         if test "X$up" = X -o "X$low" = X; then
1961             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
1962             ij) up='A-Z'
1963                 low='a-z'
1964                 ;;
1965             esac
1966         fi
1967         if test "X$up" = X -o "X$low" = X; then
1968             case "`echo IJ | od -x 2>/dev/null`" in
1969             *C9D1*|*c9d1*)
1970                 echo "Hey, this might be EBCDIC." >&4
1971                 if test "X$up" = X -o "X$low" = X; then
1972                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
1973                     ij) up='[A-IJ-RS-Z]'
1974                         low='[a-ij-rs-z]'
1975                         ;;
1976                     esac
1977                 fi
1978                 if test "X$up" = X -o "X$low" = X; then
1979                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
1980                     ij) up='A-IJ-RS-Z'
1981                         low='a-ij-rs-z'
1982                         ;;
1983                     esac
1984                 fi
1985                 ;;
1986             esac
1987         fi
1988 esac
1989 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
1990 ij)
1991     echo "Using $up and $low to convert case." >&4
1992     ;;
1993 *)
1994     echo "I don't know how to translate letters from upper to lower case." >&4
1995     echo "Your tr is not acting any way I know of." >&4
1996     exit 1
1997     ;;
1998 esac
1999 : set up the translation script tr, must be called with ./tr of course
2000 cat >tr <<EOSC
2001 $startsh
2002 case "\$1\$2" in
2003 '[A-Z][a-z]') exec $tr '$up' '$low';;
2004 '[a-z][A-Z]') exec $tr '$low' '$up';;
2005 esac
2006 exec $tr "\$@"
2007 EOSC
2008 chmod +x tr
2009 $eunicefix tr
2010
2011 : Try to determine whether config.sh was made on this system
2012 case "$config_sh" in
2013 '')
2014 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
2015 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2016 # because the A-Z/a-z are not consecutive.
2017 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2018         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2019 newmyuname="$myuname"
2020 dflt=n
2021 case "$knowitall" in
2022 '')
2023         if test -f ../config.sh; then
2024                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2025                         eval "`grep myuname= ../config.sh`"
2026                 fi
2027                 if test "X$myuname" = "X$newmyuname"; then
2028                         dflt=y
2029                 fi
2030         fi
2031         ;;
2032 *) dflt=y;;
2033 esac
2034
2035 : Get old answers from old config file if Configure was run on the
2036 : same system, otherwise use the hints.
2037 hint=default
2038 cd ..
2039 if test -f config.sh; then
2040         echo " "
2041         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2042         . UU/myread
2043         case "$ans" in
2044         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2045         *)  echo "Fetching default answers from your old config.sh file..." >&4
2046                 tmp_n="$n"
2047                 tmp_c="$c"
2048                 tmp_sh="$sh"
2049                 . ./config.sh
2050                 cp config.sh UU
2051                 n="$tmp_n"
2052                 c="$tmp_c"
2053                 : Older versions did not always set $sh.  Catch re-use of such
2054                 : an old config.sh.
2055                 case "$sh" in
2056                 '') sh="$tmp_sh" ;;
2057                 esac
2058                 hint=previous
2059                 ;;
2060         esac
2061 fi
2062 if test ! -f config.sh; then
2063         $cat <<EOM
2064
2065 First time through, eh?  I have some defaults handy for some systems
2066 that need some extra help getting the Configure answers right:
2067
2068 EOM
2069         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2070         dflt=''
2071         : Half the following guesses are probably wrong... If you have better
2072         : tests or hints, please send them to perlbug@perl.com
2073         : The metaconfig authors would also appreciate a copy...
2074         $test -f /irix && osname=irix
2075         $test -f /xenix && osname=sco_xenix
2076         $test -f /dynix && osname=dynix
2077         $test -f /dnix && osname=dnix
2078         $test -f /lynx.os && osname=lynxos
2079         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2080         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2081         $test -f /bin/mips && /bin/mips && osname=mips
2082         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2083                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2084         $test -d /usr/apollo/bin && osname=apollo
2085         $test -f /etc/saf/_sactab && osname=svr4
2086         $test -d /usr/include/minix && osname=minix
2087         if $test -d /MachTen -o -d /MachTen_Folder; then
2088                 osname=machten
2089                 if $test -x /sbin/version; then
2090                         osvers=`/sbin/version | $awk '{print $2}' |
2091                         $sed -e 's/[A-Za-z]$//'`
2092                 elif $test -x /usr/etc/version; then
2093                         osvers=`/usr/etc/version | $awk '{print $2}' |
2094                         $sed -e 's/[A-Za-z]$//'`
2095                 else
2096                         osvers="$2.$3"
2097                 fi
2098         fi
2099        $test -f /sys/posix.dll &&
2100                $test -f /usr/bin/what &&
2101                set X `/usr/bin/what /sys/posix.dll` &&
2102                $test "$3" = UWIN &&
2103                osname=uwin &&
2104                osvers="$5"
2105         if $test -f $uname; then
2106                 set X $myuname
2107                 shift
2108
2109                 case "$5" in
2110                 fps*) osname=fps ;;
2111                 mips*)
2112                         case "$4" in
2113                         umips) osname=umips ;;
2114                         *) osname=mips ;;
2115                         esac;;
2116                 [23]100) osname=mips ;;
2117                 next*) osname=next ;;
2118                 i386*)
2119                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2120                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2121                                 osname='sco'
2122                                 osvers=$tmp
2123                         elif $test -f /etc/kconfig; then
2124                                 osname=isc
2125                                 if test "$lns" = "$ln -s"; then
2126                                         osvers=4
2127                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2128                                         osvers=3
2129                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2130                                         osvers=2
2131                                 fi
2132                         fi
2133                         tmp=''
2134                         ;;
2135                 pc*)
2136                         if test -n "$DJGPP"; then
2137                                 osname=dos
2138                                 osvers=djgpp
2139                         fi
2140                         ;;
2141                 esac
2142
2143                 case "$1" in
2144                 aix) osname=aix
2145                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2146                         case "$tmp" in
2147                         'not found') osvers="$4"."$3" ;;
2148                         '<3240'|'<>3240') osvers=3.2.0 ;;
2149                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2150                         '=3250'|'>3250') osvers=3.2.5 ;;
2151                         *) osvers=$tmp;;
2152                         esac
2153                         ;;
2154                 *dc.osx) osname=dcosx
2155                         osvers="$3"
2156                         ;;
2157                 dnix) osname=dnix
2158                         osvers="$3"
2159                         ;;
2160                 domainos) osname=apollo
2161                         osvers="$3"
2162                         ;;
2163                 dgux) osname=dgux 
2164                         osvers="$3"
2165                         ;;
2166                 dynixptx*) osname=dynixptx
2167                         osvers=`echo "$4"|sed 's/^v//'`
2168                         ;;
2169                 freebsd) osname=freebsd 
2170                         osvers="$3" ;;
2171                 genix) osname=genix ;;
2172                 hp*) osname=hpux 
2173                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2174                         ;;
2175                 irix*) osname=irix
2176                         case "$3" in
2177                         4*) osvers=4 ;;
2178                         5*) osvers=5 ;;
2179                         *)      osvers="$3" ;;
2180                         esac
2181                         ;;
2182                 linux) osname=linux
2183                         case "$3" in
2184                         *)      osvers="$3" ;;
2185                         esac
2186                         ;;
2187                 MiNT) osname=mint
2188                         ;;
2189                 netbsd*) osname=netbsd
2190                         osvers="$3"
2191                         ;;
2192                 news-os) osvers="$3"
2193                         case "$3" in
2194                         4*) osname=newsos4 ;;
2195                         *) osname=newsos ;;
2196                         esac
2197                         ;;
2198                 bsd386) osname=bsd386
2199                         osvers=`$uname -r`
2200                         ;;
2201                 POSIX-BC | posix-bc ) osname=posix-bc
2202                         osvers="$3"
2203                         ;;
2204                 powerux | power_ux | powermax_os | powermaxos | \
2205                 powerunix | power_unix) osname=powerux
2206                         osvers="$3"
2207                         ;;
2208                 next*) osname=next ;;
2209                 solaris) osname=solaris
2210                         case "$3" in
2211                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2212                         *)      osvers="$3" ;;
2213                         esac
2214                         ;;
2215                 sunos) osname=sunos
2216                         case "$3" in
2217                         5*) osname=solaris
2218                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2219                         *)      osvers="$3" ;;
2220                         esac
2221                         ;;
2222                 titanos) osname=titanos
2223                         case "$3" in
2224                         1*) osvers=1 ;;
2225                         2*) osvers=2 ;;
2226                         3*) osvers=3 ;;
2227                         4*) osvers=4 ;;
2228                         *)      osvers="$3" ;;
2229                         esac
2230                         ;;
2231                 ultrix) osname=ultrix
2232                         osvers="$3"
2233                         ;;
2234                 osf1|mls+)      case "$5" in
2235                                 alpha)
2236                                         osname=dec_osf
2237                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2238                                         ;;
2239                         hp*)    osname=hp_osf1  ;;
2240                         mips)   osname=mips_osf1 ;;
2241                         esac
2242                         ;;
2243                 uts) osname=uts 
2244                         osvers="$3"
2245                         ;;
2246                 qnx) osname=qnx
2247                         osvers="$4"
2248                         ;;
2249                 $2) case "$osname" in
2250                         *isc*) ;;
2251                         *freebsd*) ;;
2252                         svr*)
2253                                 : svr4.x or possibly later
2254                                 case "svr$3" in 
2255                                 ${osname}*)
2256                                         osname=svr$3
2257                                         osvers=$4
2258                                         ;;
2259                                 esac
2260                                 case "$osname" in
2261                                 svr4.0)
2262                                         : Check for ESIX
2263                                         if test -f /stand/boot ; then
2264                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2265                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2266                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2267                                                         if test -n "$isesix"; then
2268                                                                 osname=esix4
2269                                                         fi
2270                                                 fi
2271                                         fi
2272                                         ;;
2273                                 esac
2274                                 ;;
2275                         *)      if test -f /etc/systemid; then
2276                                         osname=sco
2277                                         set `echo $3 | $sed 's/\./ /g'` $4
2278                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2279                                                 osvers=$1.$2.$3
2280                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2281                                                 osvers=$1.$2
2282                                         elif $test -f $src/hints/sco_$1.sh; then
2283                                                 osvers=$1
2284                                         fi
2285                                 else
2286                                         case "$osname" in
2287                                         '') : Still unknown.  Probably a generic Sys V.
2288                                                 osname="sysv"
2289                                                 osvers="$3"
2290                                                 ;;
2291                                         esac
2292                                 fi
2293                                 ;;
2294                         esac
2295                         ;;
2296                 *)      case "$osname" in
2297                         '') : Still unknown.  Probably a generic BSD.
2298                                 osname="$1"
2299                                 osvers="$3"
2300                                 ;;
2301                         esac
2302                         ;;
2303                 esac
2304         else
2305                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2306                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2307                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2308                                 osname=news_os
2309                         fi
2310                         $rm -f UU/kernel.what
2311                 elif test -d c:/.; then
2312                         set X $myuname
2313                         osname=os2
2314                         osvers="$5"
2315                 fi
2316         fi
2317         
2318         : Now look for a hint file osname_osvers, unless one has been
2319         : specified already.
2320         case "$hintfile" in
2321         ''|' ')
2322                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2323                 : Also try without trailing minor version numbers.
2324                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2325                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2326                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2327                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2328                 case "$file" in
2329                 '') dflt=none ;;
2330                 *)  case "$osvers" in
2331                         '') dflt=$file
2332                                 ;;
2333                         *)  if $test -f $src/hints/$file.sh ; then
2334                                         dflt=$file
2335                                 elif $test -f $src/hints/$xfile.sh ; then
2336                                         dflt=$xfile
2337                                 elif $test -f $src/hints/$xxfile.sh ; then
2338                                         dflt=$xxfile
2339                                 elif $test -f $src/hints/$xxxfile.sh ; then
2340                                         dflt=$xxxfile
2341                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2342                                         dflt=$xxxxfile
2343                                 elif $test -f "$src/hints/${osname}.sh" ; then
2344                                         dflt="${osname}"
2345                                 else
2346                                         dflt=none
2347                                 fi
2348                                 ;;
2349                         esac
2350                         ;;
2351                 esac
2352                 if $test -f Policy.sh ; then
2353                         case "$dflt" in
2354                         *Policy*) ;;
2355                         none) dflt="Policy" ;;
2356                         *) dflt="Policy $dflt" ;;
2357                         esac
2358                 fi
2359                 ;;
2360         *)
2361                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2362                 ;;
2363         esac
2364
2365         if $test -f Policy.sh ; then
2366                 $cat <<EOM
2367
2368 There's also a Policy hint file available, which should make the
2369 site-specific (policy) questions easier to answer.
2370 EOM
2371
2372         fi
2373
2374         $cat <<EOM
2375
2376 You may give one or more space-separated answers, or "none" if appropriate.
2377 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2378 is a good thing.  DO NOT give a wrong version.
2379
2380 EOM
2381
2382         rp="Which of these apply, if any?"
2383         . UU/myread
2384         tans=$ans
2385         for file in $tans; do
2386                 if $test X$file = XPolicy -a -f Policy.sh; then
2387                         . Policy.sh
2388                         $cat Policy.sh >> UU/config.sh
2389                 elif $test -f $src/hints/$file.sh; then
2390                         . $src/hints/$file.sh
2391                         $cat $src/hints/$file.sh >> UU/config.sh
2392                 elif $test X$tans = X -o X$tans = Xnone ; then
2393                         : nothing
2394                 else
2395                         : Give one chance to correct a possible typo.
2396                         echo "$file.sh does not exist"
2397                         dflt=$file
2398                         rp="hint to use instead?"
2399                         . UU/myread
2400                         for file in $ans; do
2401                                 if $test -f "$src/hints/$file.sh"; then
2402                                         . $src/hints/$file.sh
2403                                         $cat $src/hints/$file.sh >> UU/config.sh
2404                                 elif $test X$ans = X -o X$ans = Xnone ; then
2405                                         : nothing
2406                                 else
2407                                         echo "$file.sh does not exist -- ignored."
2408                                 fi
2409                         done
2410                 fi
2411         done
2412
2413         hint=recommended
2414         : Remember our hint file for later.
2415         if $test -f "$src/hints/$file.sh" ; then
2416                 hintfile="$file"
2417         else
2418                 hintfile=''
2419         fi
2420 fi
2421 cd UU
2422 ;;
2423 *)
2424         echo " "
2425         echo "Fetching default answers from $config_sh..." >&4
2426         tmp_n="$n"
2427         tmp_c="$c"
2428         cd ..
2429         cp $config_sh config.sh 2>/dev/null
2430         chmod +w config.sh
2431         . ./config.sh
2432         cd UU
2433         cp ../config.sh .
2434         n="$tmp_n"
2435         c="$tmp_c"
2436         hint=previous
2437         ;;
2438 esac
2439 test "$override" && . ./optdef.sh
2440 myuname="$newmyuname"
2441
2442 : Restore computed paths
2443 for file in $loclist $trylist; do
2444         eval $file="\$_$file"
2445 done
2446
2447 cat << EOM
2448
2449 Configure uses the operating system name and version to set some defaults.
2450 The default value is probably right if the name rings a bell. Otherwise,
2451 since spelling matters for me, either accept the default or answer "none"
2452 to leave it blank.
2453
2454 EOM
2455 case "$osname" in
2456         ''|' ')
2457                 case "$hintfile" in
2458                 ''|' '|none) dflt=none ;;
2459                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2460                 esac
2461                 ;;
2462         *) dflt="$osname" ;;
2463 esac
2464 rp="Operating system name?"
2465 . ./myread
2466 case "$ans" in
2467 none)  osname='' ;;
2468 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2469 esac
2470 echo " "
2471 case "$osvers" in
2472         ''|' ')
2473                 case "$hintfile" in
2474                 ''|' '|none) dflt=none ;;
2475                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2476                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2477                         case "$dflt" in
2478                         ''|' ') dflt=none ;;
2479                         esac
2480                         ;;
2481                 esac
2482                 ;;
2483         *) dflt="$osvers" ;;
2484 esac
2485 rp="Operating system version?"
2486 . ./myread
2487 case "$ans" in
2488 none)  osvers='' ;;
2489 *) osvers="$ans" ;;
2490 esac
2491
2492 : who configured the system
2493 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2494 cf_by=`(logname) 2>/dev/null`
2495 case "$cf_by" in
2496 "")
2497         cf_by=`(whoami) 2>/dev/null`
2498         case "$cf_by" in
2499         "") cf_by=unknown ;;
2500         esac ;;
2501 esac
2502
2503 : set up the script used to warn in case of inconsistency
2504 cat <<EOS >whoa
2505 $startsh
2506 EOS
2507 cat <<'EOSC' >>whoa
2508 dflt=y
2509 echo " "
2510 echo "*** WHOA THERE!!! ***" >&4
2511 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2512 rp="    Keep the $hint value?"
2513 . ./myread
2514 case "$ans" in
2515 y) td=$was; tu=$was;;
2516 esac
2517 EOSC
2518
2519 : function used to set $1 to $val
2520 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2521 case "$val$was" in
2522 $define$undef) . ./whoa; eval "$var=\$td";;
2523 $undef$define) . ./whoa; eval "$var=\$tu";;
2524 *) eval "$var=$val";;
2525 esac'
2526
2527 cat <<EOM
2528
2529 Perl can be built to take advantage of threads, on some systems.
2530 To do so, Configure must be run with -Dusethreads.
2531
2532 Note that threading is a highly experimental feature, and
2533 some known race conditions still remain.  If you choose to try
2534 it, be very sure to not actually deploy it for production
2535 purposes.  README.threads has more details, and is required
2536 reading if you enable threads.
2537 EOM
2538 case "$usethreads" in
2539 $define|true|[yY]*)     dflt='y';;
2540 *) dflt='n';;
2541 esac
2542 rp='Build a threading Perl?'
2543 . ./myread
2544 case "$ans" in
2545 y|Y)    val="$define" ;;     
2546 *)      val="$undef" ;;
2547 esac
2548 set usethreads
2549 eval $setvar 
2550
2551 case "$d_oldpthreads" in
2552 '')     : Configure tests would be welcome here.  For now, assume undef.
2553         val="$undef" ;;
2554 *)      val="$d_oldpthreads" ;;
2555 esac
2556 set d_oldpthreads
2557 eval $setvar
2558
2559
2560 case "$usethreads" in
2561 "$define"|true|[yY]*)
2562 : Look for a hint-file generated 'call-back-unit'.  If the
2563 : user has specified that a threading perl is to be built,
2564 : we may need to set or change some other defaults.
2565         if $test -f usethreads.cbu; then
2566                 . ./usethreads.cbu
2567         fi
2568         case "$osname" in
2569         aix|dec_osf|dos_djgpp|freebsd|hpux|irix|linux|next|openbsd|os2|solaris|vmesa)
2570                 # Known thread-capable platforms.
2571                 ;;
2572         *)
2573                 cat >&4 <<EOM
2574 $osname is not known to support threads.
2575 Please let perlbug@perl.com know how to do that.
2576
2577 Cannot continue, aborting.
2578 EOM
2579                 exit 1
2580         ;;
2581         esac # $osname
2582     ;;
2583 esac # $usethreads
2584
2585 cat <<EOM
2586
2587 Perl can be built so that multiple Perl interpreters can coexist
2588 within the same Perl executable.  To do so, Configure must be run with
2589 -Dusemultiplicity.
2590
2591 Normally you do not need this and you should answer no.
2592
2593 EOM
2594 case "$usemultiplicity" in
2595 $define|true|[yY]*)     dflt='y';;
2596 *) dflt='n';;
2597 esac
2598 rp='Build Perl for multiplicity?'
2599 . ./myread
2600 case "$ans" in
2601 y|Y)    val="$define" ;;     
2602 *)      val="$undef" ;;
2603 esac
2604 set usemultiplicity
2605 eval $setvar 
2606
2607 cat <<EOM
2608
2609 Perl can be built to take advantage of explicit 64-bit interfaces,
2610 on some systems.  To do so, Configure must be run with -Duse64bits.
2611
2612 If this doesn't make any sense to you, just accept the default 'n'.
2613 EOM
2614 case "$use64bits" in
2615 $define|true|[yY]*)     dflt='y';;
2616 *) dflt='n';;
2617 esac
2618 rp='Try to use explicit 64-bit interfaces, if available?'
2619 . ./myread
2620 case "$ans" in
2621 y|Y) 
2622         val="$define"
2623         ;;     
2624 *)      
2625         val="$undef"
2626         ;;
2627 esac
2628 set use64bits
2629 eval $setvar
2630
2631 case "$archname64" in
2632 '') archname64='' ;;    # not a typo
2633 esac
2634
2635 case "$use64bits" in
2636 "$define"|true|[yY]*)
2637 : Look for a hint-file generated 'call-back-unit'.  If the
2638 : user has specified that a 64 bit perl is to be built,
2639 : we may need to set or change some other defaults.
2640         if $test -f use64bits.cbu; then
2641                 . ./use64bits.cbu
2642         fi
2643         case "$osname" in
2644         aix|dec_osf|hpux|irix|solaris|unicos)
2645                 # Known 64-bit capable platforms.
2646                 ;;
2647         *)
2648                 cat >&4 <<EOM
2649 $osname is not known to support 64-bit interfaces.
2650 Please let perlbug@perl.com know how to do that.
2651
2652 Cannot continue, aborting.
2653 EOM
2654                 exit 1
2655                 ;;
2656         esac
2657         ;;
2658 esac
2659
2660 : determine the architecture name
2661 echo " "
2662 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2663         tarch=`arch`"-$osname"
2664 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2665         if uname -m > tmparch 2>&1 ; then
2666                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2667                         -e 's/$/'"-$osname/" tmparch`
2668         else
2669                 tarch="$osname"
2670         fi
2671         $rm -f tmparch
2672 else
2673         tarch="$osname"
2674 fi
2675 case "$myarchname" in
2676 ''|"$tarch") ;;
2677 *)
2678         echo "(Your architecture name used to be $myarchname.)"
2679         archname=''
2680         ;;
2681 esac
2682 myarchname="$tarch"
2683 case "$archname" in
2684 '') dflt="$tarch";;
2685 *) dflt="$archname";;
2686 esac
2687 rp='What is your architecture name'
2688 . ./myread
2689 archname="$ans"
2690 case "$usethreads" in
2691 $define)
2692         echo "Threads selected." >&4
2693         case "$archname" in
2694         *-thread*) echo "...and architecture name already has -thread." >&4
2695                 ;;
2696         *)      archname="$archname-thread"
2697                 echo "...setting architecture name to $archname." >&4
2698                 ;;
2699         esac
2700         ;;
2701 esac
2702 case "$usemultiplicity" in
2703 $define)
2704         echo "Multiplicity selected." >&4
2705         case "$archname" in
2706         *-multi*) echo "...and architecture name already has -multi." >&4
2707                 ;;
2708         *)      archname="$archname-multi"
2709                 echo "...setting architecture name to $archname." >&4
2710                 ;;
2711         esac
2712         ;;
2713 esac
2714 case "$use64bits" in
2715 $define)
2716         echo "Explicit 64-bitness selected." >&4
2717         case "$archname64" in
2718         '')
2719                 ;;
2720         *)
2721                 case "$archname" in
2722                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2723                         ;;
2724                 *)      archname="$archname-$archname64"
2725                         echo "...setting architecture name to $archname." >&4
2726                         ;;
2727                 esac
2728                 ;;
2729         esac
2730 esac
2731
2732 : decide how portable to be.  Allow command line overrides.
2733 case "$d_portable" in
2734 "$undef") ;;
2735 *)      d_portable="$define" ;;
2736 esac
2737
2738 : set up shell script to do ~ expansion
2739 cat >filexp <<EOSS
2740 $startsh
2741 : expand filename
2742 case "\$1" in
2743  ~/*|~)
2744         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2745         ;;
2746  ~*)
2747         if $test -f /bin/csh; then
2748                 /bin/csh -f -c "glob \$1"
2749                 failed=\$?
2750                 echo ""
2751                 exit \$failed
2752         else
2753                 name=\`$expr x\$1 : '..\([^/]*\)'\`
2754                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2755                 if $test ! -d "\$dir"; then
2756                         me=\`basename \$0\`
2757                         echo "\$me: can't locate home directory for: \$name" >&2
2758                         exit 1
2759                 fi
2760                 case "\$1" in
2761                 */*)
2762                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2763                         ;;
2764                 *)
2765                         echo \$dir
2766                         ;;
2767                 esac
2768         fi
2769         ;;
2770 *)
2771         echo \$1
2772         ;;
2773 esac
2774 EOSS
2775 chmod +x filexp
2776 $eunicefix filexp
2777
2778 : now set up to get a file name
2779 cat <<EOS >getfile
2780 $startsh
2781 EOS
2782 cat <<'EOSC' >>getfile
2783 tilde=''
2784 fullpath=''
2785 already=''
2786 skip=''
2787 none_ok=''
2788 exp_file=''
2789 nopath_ok=''
2790 orig_rp="$rp"
2791 orig_dflt="$dflt"
2792 case "$gfpth" in
2793 '') gfpth='.' ;;
2794 esac
2795
2796 case "$fn" in
2797 *\(*)
2798         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
2799         fn=`echo $fn | sed 's/(.*)//'`
2800         ;;
2801 esac
2802
2803 case "$fn" in
2804 *:*)
2805         loc_file=`expr $fn : '.*:\(.*\)'`
2806         fn=`expr $fn : '\(.*\):.*'`
2807         ;;
2808 esac
2809
2810 case "$fn" in
2811 *~*) tilde=true;;
2812 esac
2813 case "$fn" in
2814 */*) fullpath=true;;
2815 esac
2816 case "$fn" in
2817 *+*) skip=true;;
2818 esac
2819 case "$fn" in
2820 *n*) none_ok=true;;
2821 esac
2822 case "$fn" in
2823 *e*) exp_file=true;;
2824 esac
2825 case "$fn" in
2826 *p*) nopath_ok=true;;
2827 esac
2828
2829 case "$fn" in
2830 *f*) type='File';;
2831 *d*) type='Directory';;
2832 *l*) type='Locate';;
2833 esac
2834
2835 what="$type"
2836 case "$what" in
2837 Locate) what='File';;
2838 esac
2839
2840 case "$exp_file" in
2841 '')
2842         case "$d_portable" in
2843         "$define") ;;
2844         *) exp_file=true;;
2845         esac
2846         ;;
2847 esac
2848
2849 cd ..
2850 while test "$type"; do
2851         redo=''
2852         rp="$orig_rp"
2853         dflt="$orig_dflt"
2854         case "$tilde" in
2855         true) rp="$rp (~name ok)";;
2856         esac
2857         . UU/myread
2858         if test -f UU/getfile.ok && \
2859                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2860         then
2861                 value="$ans"
2862                 ansexp="$ans"
2863                 break
2864         fi
2865         case "$ans" in
2866         none)
2867                 value=''
2868                 ansexp=''
2869                 case "$none_ok" in
2870                 true) type='';;
2871                 esac
2872                 ;;
2873         *)
2874                 case "$tilde" in
2875                 '') value="$ans"
2876                         ansexp="$ans";;
2877                 *)
2878                         value=`UU/filexp $ans`
2879                         case $? in
2880                         0)
2881                                 if test "$ans" != "$value"; then
2882                                         echo "(That expands to $value on this system.)"
2883                                 fi
2884                                 ;;
2885                         *) value="$ans";;
2886                         esac
2887                         ansexp="$value"
2888                         case "$exp_file" in
2889                         '') value="$ans";;
2890                         esac
2891                         ;;
2892                 esac
2893                 case "$fullpath" in
2894                 true)
2895                         case "$ansexp" in
2896                         /*) value="$ansexp" ;;
2897                         *)
2898                                 redo=true
2899                                 case "$already" in
2900                                 true)
2901                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
2902                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
2903                                         ;;
2904                                 *)
2905                                 echo "Please give a full path name, starting with slash." >&4
2906                                         case "$tilde" in
2907                                         true)
2908                                 echo "Note that using ~name is ok provided it expands well." >&4
2909                                                 already=true
2910                                                 ;;
2911                                         esac
2912                                 esac
2913                                 ;;
2914                         esac
2915                         ;;
2916                 esac
2917                 case "$redo" in
2918                 '')
2919                         case "$type" in
2920                         File)
2921                                 for fp in $gfpth; do
2922                                         if test "X$fp" = X.; then
2923                                             pf="$ansexp"
2924                                         else    
2925                                             pf="$fp/$ansexp"
2926                                         fi
2927                                         if test -f "$pf"; then
2928                                                 type=''
2929                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
2930                                         then
2931                                                 echo "($value is not a plain file, but that's ok.)"
2932                                                 type=''
2933                                         fi
2934                                         if test X"$type" = X; then
2935                                             value="$pf"
2936                                             break
2937                                         fi
2938                                 done
2939                                 ;;
2940                         Directory)
2941                                 for fp in $gfpth; do
2942                                         if test "X$fp" = X.; then
2943                                             pf="$ansexp"
2944                                         else    
2945                                             pf="$fp/$ansexp"
2946                                         fi
2947                                         if test -d "$pf"; then
2948                                                 type=''
2949                                                 value="$pf"
2950                                                 break
2951                                         fi
2952                                 done
2953                                 ;;
2954                         Locate)
2955                                 if test -d "$ansexp"; then
2956                                         echo "(Looking for $loc_file in directory $value.)"
2957                                         value="$value/$loc_file"
2958                                         ansexp="$ansexp/$loc_file"
2959                                 fi
2960                                 if test -f "$ansexp"; then
2961                                         type=''
2962                                 fi
2963                                 case "$nopath_ok" in
2964                                 true)   case "$value" in
2965                                         */*) ;;
2966                                         *)      echo "Assuming $value will be in people's path."
2967                                                 type=''
2968                                                 ;;
2969                                         esac
2970                                         ;;
2971                                 esac
2972                                 ;;
2973                         esac
2974
2975                         case "$skip" in
2976                         true) type='';
2977                         esac
2978
2979                         case "$type" in
2980                         '') ;;
2981                         *)
2982                                 if test "$fastread" = yes; then
2983                                         dflt=y
2984                                 else
2985                                         dflt=n
2986                                 fi
2987                                 rp="$what $value doesn't exist.  Use that name anyway?"
2988                                 . UU/myread
2989                                 dflt=''
2990                                 case "$ans" in
2991                                 y*) type='';;
2992                                 *) echo " ";;
2993                                 esac
2994                                 ;;
2995                         esac
2996                         ;;
2997                 esac
2998                 ;;
2999         esac
3000 done
3001 cd UU
3002 ans="$value"
3003 rp="$orig_rp"
3004 dflt="$orig_dflt"
3005 rm -f getfile.ok
3006 test "X$gfpthkeep" != Xy && gfpth=""
3007 EOSC
3008
3009 : determine root of directory hierarchy where package will be installed.
3010 case "$prefix" in
3011 '')
3012         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3013         ;;
3014 *)
3015         dflt="$prefix"
3016         ;;
3017 esac
3018 $cat <<EOM
3019
3020 By default, $package will be installed in $dflt/bin, manual pages
3021 under $dflt/man, etc..., i.e. with $dflt as prefix for all
3022 installation directories. Typically this is something like /usr/local.
3023 If you wish to have binaries under /usr/bin but other parts of the
3024 installation under /usr/local, that's ok: you will be prompted
3025 separately for each of the installation directories, the prefix being
3026 only used to set the defaults.
3027
3028 EOM
3029 fn=d~
3030 rp='Installation prefix to use?'
3031 . ./getfile
3032 oldprefix=''
3033 case "$prefix" in
3034 '') ;;
3035 *)
3036         case "$ans" in
3037         "$prefix") ;;
3038         *) oldprefix="$prefix";;
3039         esac
3040         ;;
3041 esac
3042 prefix="$ans"
3043 prefixexp="$ansexp"
3044
3045 : is AFS running?
3046 echo " "
3047 case "$afs" in
3048 $define|true)   afs=true ;;
3049 $undef|false)   afs=false ;;
3050 *)      if test -d /afs; then
3051                 afs=true
3052         else
3053                 afs=false
3054         fi
3055         ;;
3056 esac
3057 if $afs; then
3058         echo "AFS may be running... I'll be extra cautious then..." >&4
3059 else
3060         echo "AFS does not seem to be running..." >&4
3061 fi
3062
3063 : determine installation prefix for where package is to be installed.
3064 if $afs; then 
3065 $cat <<EOM
3066
3067 Since you are running AFS, I need to distinguish the directory in which
3068 files will reside from the directory in which they are installed (and from
3069 which they are presumably copied to the former directory by occult means).
3070
3071 EOM
3072         case "$installprefix" in
3073         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
3074         *) dflt="$installprefix";;
3075         esac
3076 else
3077 $cat <<EOM
3078
3079 In some special cases, particularly when building $package for distribution,
3080 it is convenient to distinguish between the directory in which files should 
3081 be installed from the directory ($prefix) in which they 
3082 will eventually reside.  For most users, these two directories are the same.
3083
3084 EOM
3085         case "$installprefix" in
3086         '') dflt=$prefix ;;
3087         *) dflt=$installprefix;;
3088         esac
3089 fi
3090 fn=d~
3091 rp='What installation prefix should I use for installing files?'
3092 . ./getfile
3093 installprefix="$ans"
3094 installprefixexp="$ansexp"
3095
3096 : set the prefixit variable, to compute a suitable default value
3097 prefixit='case "$3" in
3098 ""|none)
3099         case "$oldprefix" in
3100         "") eval "$1=\"\$$2\"";;
3101         *)
3102                 case "$3" in
3103                 "") eval "$1=";;
3104                 none)
3105                         eval "tp=\"\$$2\"";
3106                         case "$tp" in
3107                         ""|" ") eval "$1=\"\$$2\"";;
3108                         *) eval "$1=";;
3109                         esac;;
3110                 esac;;
3111         esac;;
3112 *)
3113         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
3114         case "$tp" in
3115         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
3116         /*-$oldprefix/*|\~*-$oldprefix/*)
3117                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3118         *) eval "$1=\"\$$2\"";;
3119         esac;;
3120 esac'
3121
3122 : set the base revision
3123 baserev=5.0
3124
3125 : get the patchlevel
3126 echo " "
3127 echo "Getting the current patchlevel..." >&4
3128 if $test -r $rsrc/patchlevel.h;then
3129         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
3130         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3131 else
3132         patchlevel=0
3133         subversion=0
3134 fi
3135 $echo $n "(You have $package" $c
3136 case "$package" in
3137 "*$baserev")    ;;
3138 *)              $echo $n " $baserev" $c ;;
3139 esac
3140 $echo $n " patchlevel $patchlevel" $c
3141 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3142 echo ".)"
3143
3144 if test 0 -eq "$subversion"; then
3145         version=`LC_ALL=C; export LC_ALL; \
3146                  echo $baserev $patchlevel | \
3147                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3148 else
3149         version=`LC_ALL=C; export LC_ALL; \
3150                  echo $baserev $patchlevel $subversion | \
3151                  $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3152 fi
3153 : Figure out perl API version.  Perhaps this should be in patchlevel.h
3154 if test "$subversion" -lt 50; then
3155         apiversion=`LC_ALL=C; export LC_ALL; \
3156                  LANGUAGE=C; export LANGUAGE; \
3157                  echo $baserev $patchlevel | \
3158                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3159 else
3160         apiversion="$version"
3161 fi
3162
3163 : determine installation style
3164 : For now, try to deduce it from prefix unless it is already set.
3165 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
3166 case "$installstyle" in
3167 '')     case "$prefix" in
3168                 *perl*) dflt='lib';;
3169                 *) dflt='lib/perl5' ;;
3170         esac
3171         ;;
3172 *)      dflt='lib/perl5' ;;
3173 esac
3174 : Probably not worth prompting for this since we prompt for all
3175 : the directories individually, and the prompt would be too long and
3176 : confusing anyway.
3177 installstyle=$dflt
3178
3179 : determine where private library files go
3180 : Usual default is /usr/local/lib/perl5/$version.
3181 : Also allow things like /opt/perl/lib/$version, since 
3182 : /opt/perl/lib/perl5... would be redundant.
3183 : The default "style" setting is made in installstyle.U
3184 case "$installstyle" in
3185 *lib/perl5*) set dflt privlib lib/$package/$version ;;
3186 *)       set dflt privlib lib/$version ;;
3187 esac
3188 eval $prefixit
3189 $cat <<EOM
3190
3191 There are some auxiliary files for $package that need to be put into a
3192 private library directory that is accessible by everyone.
3193
3194 EOM
3195 fn=d~+
3196 rp='Pathname where the private library files will reside?'
3197 . ./getfile
3198 privlib="$ans"
3199 privlibexp="$ansexp"
3200 : Change installation prefix, if necessary.
3201 if $test X"$prefix" != X"$installprefix"; then
3202         installprivlib=`echo $privlibexp | sed 's#^$prefix#$installprefix#'`
3203 else
3204         installprivlib="$privlibexp"
3205 fi
3206
3207 : set the prefixup variable, to restore leading tilda escape
3208 prefixup='case "$prefixexp" in
3209 "$prefix") ;;
3210 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3211 esac'
3212
3213 : determine where public architecture dependent libraries go
3214 set archlib archlib
3215 eval $prefixit
3216 : privlib default is /usr/local/lib/$package/$version
3217 : archlib default is /usr/local/lib/$package/$version/$archname
3218 : privlib may have an optional trailing /share.
3219 tdflt=`echo $privlib | $sed 's,/share$,,'`
3220 tdflt=$tdflt/$archname
3221 case "$archlib" in
3222 '')     dflt=$tdflt
3223         ;;
3224 *)      dflt="$archlib"
3225     ;;
3226 esac
3227 $cat <<EOM
3228
3229 $spackage contains architecture-dependent library files.  If you are
3230 sharing libraries in a heterogeneous environment, you might store
3231 these files in a separate location.  Otherwise, you can just include
3232 them with the rest of the public library files.
3233
3234 EOM
3235 fn=d+~
3236 rp='Where do you want to put the public architecture-dependent libraries?'
3237 . ./getfile
3238 archlib="$ans"
3239 archlibexp="$ansexp"
3240 if $test X"$archlib" = X"$privlib"; then
3241         d_archlib="$undef"
3242 else
3243         d_archlib="$define"
3244 fi
3245 : Change installation prefix, if necessary.
3246 if $test X"$prefix" != X"$installprefix"; then
3247         installarchlib=`echo $archlibexp | sed 's#^$prefix#$installprefix#'`
3248 else
3249         installarchlib="$archlibexp"
3250 fi
3251
3252 : make some quick guesses about what we are up against
3253 echo " "
3254 $echo $n "Hmm...  $c"
3255 echo exit 1 >bsd
3256 echo exit 1 >usg
3257 echo exit 1 >v7
3258 echo exit 1 >osf1
3259 echo exit 1 >eunice
3260 echo exit 1 >xenix
3261 echo exit 1 >venix
3262 echo exit 1 >os2
3263 d_bsd="$undef"
3264 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3265 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3266 then
3267         echo "Looks kind of like an OSF/1 system, but we'll see..."
3268         echo exit 0 >osf1
3269 elif test `echo abc | tr a-z A-Z` = Abc ; then
3270         xxx=`./loc addbib blurfl $pth`
3271         if $test -f $xxx; then
3272         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3273                 echo exit 0 >bsd
3274                 echo exit 0 >usg
3275         else
3276                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3277                         echo "Looks kind of like an extended USG system, but we'll see..."
3278                 else
3279                         echo "Looks kind of like a USG system, but we'll see..."
3280                 fi
3281                 echo exit 0 >usg
3282         fi
3283 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3284         echo "Looks kind of like a BSD system, but we'll see..."
3285         d_bsd="$define"
3286         echo exit 0 >bsd
3287 else
3288         echo "Looks kind of like a Version 7 system, but we'll see..."
3289         echo exit 0 >v7
3290 fi
3291 case "$eunicefix" in
3292 *unixtovms*)
3293         $cat <<'EOI'
3294 There is, however, a strange, musty smell in the air that reminds me of
3295 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3296 EOI
3297         echo exit 0 >eunice
3298         d_eunice="$define"
3299 : it so happens the Eunice I know will not run shell scripts in Unix format
3300         ;;
3301 *)
3302         echo " "
3303         echo "Congratulations.  You aren't running Eunice."
3304         d_eunice="$undef"
3305         ;;
3306 esac
3307 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3308 case "$p_" in
3309 :) ;;
3310 *)
3311         $cat <<'EOI'
3312 I have the feeling something is not exactly right, however...don't tell me...
3313 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3314 EOI
3315         echo exit 0 >os2
3316         ;;
3317 esac
3318 if test -f /xenix; then
3319         echo "Actually, this looks more like a XENIX system..."
3320         echo exit 0 >xenix
3321         d_xenix="$define"
3322 else
3323         echo " "
3324         echo "It's not Xenix..."
3325         d_xenix="$undef"
3326 fi
3327 chmod +x xenix
3328 $eunicefix xenix
3329 if test -f /venix; then
3330         echo "Actually, this looks more like a VENIX system..."
3331         echo exit 0 >venix
3332 else
3333         echo " "
3334         if ./xenix; then
3335                 : null
3336         else
3337                 echo "Nor is it Venix..."
3338         fi
3339 fi
3340 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3341 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3342 $rm -f foo
3343
3344 : see if setuid scripts can be secure
3345 $cat <<EOM
3346
3347 Some kernels have a bug that prevents setuid #! scripts from being
3348 secure.  Some sites have disabled setuid #! scripts because of this.
3349
3350 First let's decide if your kernel supports secure setuid #! scripts.
3351 (If setuid #! scripts would be secure but have been disabled anyway,
3352 don't say that they are secure if asked.)
3353
3354 EOM
3355
3356 val="$undef"
3357 if $test -d /dev/fd; then
3358         echo "#!$ls" >reflect
3359         chmod +x,u+s reflect
3360         ./reflect >flect 2>&1
3361         if $contains "/dev/fd" flect >/dev/null; then
3362                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3363                 val="$define"
3364         else
3365                 $cat <<EOM
3366 If you are not sure if they are secure, I can check but I'll need a
3367 username and password different from the one you are using right now.
3368 If you don't have such a username or don't want me to test, simply
3369 enter 'none'.
3370
3371 EOM
3372                 rp='Other username to test security of setuid scripts with?'
3373                 dflt='none'
3374                 . ./myread
3375                 case "$ans" in
3376                 n|none)
3377                         case "$d_suidsafe" in
3378                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
3379                                 dflt=n;;
3380                         "$undef")
3381                                 echo "Well, the $hint value is *not* secure." >&4
3382                                 dflt=n;;
3383                         *)      echo "Well, the $hint value *is* secure." >&4
3384                                 dflt=y;;
3385                         esac
3386                         ;;
3387                 *)
3388                         $rm -f reflect flect
3389                         echo "#!$ls" >reflect
3390                         chmod +x,u+s reflect
3391                         echo >flect
3392                         chmod a+w flect
3393                         echo '"su" will (probably) prompt you for '"$ans's password."
3394                         su $ans -c './reflect >flect'
3395                         if $contains "/dev/fd" flect >/dev/null; then
3396                                 echo "Okay, it looks like setuid scripts are secure." >&4
3397                                 dflt=y
3398                         else
3399                                 echo "I don't think setuid scripts are secure." >&4
3400                                 dflt=n
3401                         fi
3402                         ;;
3403                 esac
3404                 rp='Does your kernel have *secure* setuid scripts?'
3405                 . ./myread
3406                 case "$ans" in
3407                 [yY]*)  val="$define";;
3408                 *)      val="$undef";;
3409                 esac
3410         fi
3411 else
3412         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3413         echo "(That's for file descriptors, not floppy disks.)"
3414         val="$undef"
3415 fi
3416 set d_suidsafe
3417 eval $setvar
3418
3419 $rm -f reflect flect
3420
3421 : now see if they want to do setuid emulation
3422 echo " "
3423 val="$undef"
3424 case "$d_suidsafe" in
3425 "$define")
3426         val="$undef"
3427         echo "No need to emulate SUID scripts since they are secure here." >& 4
3428         ;;
3429 *)
3430         $cat <<EOM
3431 Some systems have disabled setuid scripts, especially systems where
3432 setuid scripts cannot be secure.  On systems where setuid scripts have
3433 been disabled, the setuid/setgid bits on scripts are currently
3434 useless.  It is possible for $package to detect those bits and emulate
3435 setuid/setgid in a secure fashion.  This emulation will only work if
3436 setuid scripts have been disabled in your kernel.
3437
3438 EOM
3439         case "$d_dosuid" in
3440         "$define") dflt=y ;;
3441         *) dflt=n ;;
3442         esac
3443         rp="Do you want to do setuid/setgid emulation?"
3444         . ./myread
3445         case "$ans" in
3446         [yY]*)  val="$define";;
3447         *)      val="$undef";;
3448         esac
3449         ;;
3450 esac
3451 set d_dosuid
3452 eval $setvar
3453
3454 : determine where manual pages are on this system
3455 echo " "
3456 case "$sysman" in
3457 '') 
3458         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3459         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3460         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3461         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3462         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3463         sysman=`./loc . /usr/man/man1 $syspath`
3464         ;;
3465 esac
3466 if $test -d "$sysman"; then
3467         echo "System manual is in $sysman." >&4
3468 else
3469         echo "Could not find manual pages in source form." >&4
3470 fi
3471
3472 : see what memory models we can support
3473 case "$models" in
3474 '')
3475         $cat >pdp11.c <<'EOP'
3476 int main() {
3477 #ifdef pdp11
3478         exit(0);
3479 #else
3480         exit(1);
3481 #endif
3482 }
3483 EOP
3484         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3485         if $test -f pdp11 && ./pdp11 2>/dev/null; then
3486                 dflt='unsplit split'
3487         else
3488                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3489                 case "$tans" in
3490                 X) dflt='none';;
3491                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3492                                 dflt='small'
3493                         else
3494                                 dflt=''
3495                         fi
3496                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
3497                                 dflt="$dflt medium"
3498                         fi
3499                         if $test -d /lib/large || $test -d /usr/lib/large; then
3500                                 dflt="$dflt large"
3501                         fi
3502                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
3503                                 dflt="$dflt huge"
3504                         fi
3505                 esac
3506         fi;;
3507 *) dflt="$models";;
3508 esac
3509 $cat <<EOM
3510  
3511 Some systems have different model sizes.  On most systems they are called
3512 small, medium, large, and huge.  On the PDP11 they are called unsplit and
3513 split.  If your system doesn't support different memory models, say "none".
3514 If you wish to force everything to one memory model, say "none" here and
3515 put the appropriate flags later when it asks you for other cc and ld flags.
3516 Venix systems may wish to put "none" and let the compiler figure things out.
3517 (In the following question multiple model names should be space separated.)
3518
3519 The default for most systems is "none".
3520
3521 EOM
3522 rp="Which memory models are supported?"
3523 . ./myread
3524 models="$ans"
3525
3526 case "$models" in
3527 none)
3528         small=''
3529         medium=''
3530         large=''
3531         huge=''
3532         unsplit=''
3533         split=''
3534         ;;
3535 *split)
3536         case "$split" in
3537         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3538                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3539                         dflt='-i'
3540                 else
3541                         dflt='none'
3542                 fi;;
3543         *) dflt="$split";;
3544         esac
3545         rp="What flag indicates separate I and D space?"
3546         . ./myread
3547         tans="$ans"
3548         case "$tans" in
3549         none) tans='';;
3550         esac
3551         split="$tans"
3552         unsplit='';;
3553 *large*|*small*|*medium*|*huge*)
3554         case "$models" in
3555         *large*)
3556                 case "$large" in
3557                 '') dflt='-Ml';;
3558                 *) dflt="$large";;
3559                 esac
3560         rp="What flag indicates large model?"
3561         . ./myread
3562         tans="$ans"
3563         case "$tans" in
3564         none) tans='';
3565         esac
3566         large="$tans";;
3567         *) large='';;
3568         esac
3569         case "$models" in
3570         *huge*) case "$huge" in
3571                 '') dflt='-Mh';;
3572                 *) dflt="$huge";;
3573                 esac
3574                 rp="What flag indicates huge model?"
3575                 . ./myread
3576                 tans="$ans"
3577                 case "$tans" in
3578                 none) tans='';
3579                 esac
3580                 huge="$tans";;
3581         *) huge="$large";;
3582         esac
3583         case "$models" in
3584         *medium*) case "$medium" in
3585                 '') dflt='-Mm';;
3586                 *) dflt="$medium";;
3587                 esac
3588                 rp="What flag indicates medium model?"
3589                 . ./myread
3590                 tans="$ans"
3591                 case "$tans" in
3592                 none) tans='';
3593                 esac
3594                 medium="$tans";;
3595         *) medium="$large";;
3596         esac
3597         case "$models" in
3598         *small*) case "$small" in
3599                 '') dflt='none';;
3600                 *) dflt="$small";;
3601                 esac
3602                 rp="What flag indicates small model?"
3603                 . ./myread
3604                 tans="$ans"
3605                 case "$tans" in
3606                 none) tans='';
3607                 esac
3608                 small="$tans";;
3609         *) small='';;
3610         esac
3611         ;;
3612 *)
3613         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3614         ;;
3615 esac
3616 $rm -f pdp11.* pdp11
3617
3618 : see if we need a special compiler
3619 echo " "
3620 if ./usg; then
3621         case "$cc" in
3622         '') case "$Mcc" in
3623                 /*) dflt='Mcc';;
3624                 *) case "$large" in
3625                         -M*) dflt='cc';;
3626                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3627                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3628                                                 dflt='cc'
3629                                         else
3630                                                 dflt='cc -M'
3631                                         fi
3632                                 else
3633                                         dflt='cc'
3634                                 fi;;
3635                         esac;;
3636                 esac;;
3637         *)  dflt="$cc";;
3638         esac
3639         case "$dflt" in
3640         *M*)    $cat <<'EOM'
3641 On some older systems the default C compiler will not resolve multiple global
3642 references that happen to have the same name.  On some such systems the "Mcc"
3643 command may be used to force these to be resolved.  On other systems a "cc -M"
3644 command is required.  (Note that the -M flag on other systems indicates a
3645 memory model to use!) If you have the Gnu C compiler, you might wish to use
3646 that instead.
3647
3648 EOM
3649         ;;
3650         esac
3651         rp="Use which C compiler?"
3652         . ./myread
3653         cc="$ans"
3654 else
3655         case "$cc" in
3656         '') dflt=cc;;
3657         *) dflt="$cc";;
3658         esac
3659         rp="Use which C compiler?"
3660         . ./myread
3661         cc="$ans"
3662 fi
3663 : Look for a hint-file generated 'call-back-unit'.  Now that the
3664 : user has specified the compiler, we may need to set or change some
3665 : other defaults.
3666 if $test -f cc.cbu; then
3667     . ./cc.cbu
3668 fi
3669 echo " "
3670 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3671 $cat >gccvers.c <<EOM
3672 #include <stdio.h>
3673 int main() {
3674 #ifdef __GNUC__
3675 #ifdef __VERSION__
3676         printf("%s\n", __VERSION__);
3677 #else
3678         printf("%s\n", "1");
3679 #endif
3680 #endif
3681         exit(0);
3682 }
3683 EOM
3684 if $cc -o gccvers gccvers.c; then
3685         gccversion=`./gccvers`
3686         case "$gccversion" in
3687         '') echo "You are not using GNU cc." ;;
3688         *)  echo "You are using GNU cc $gccversion." ;;
3689         esac
3690 else
3691         echo " "
3692         echo "*** WHOA THERE!!! ***" >&4
3693         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3694         case "$knowitall" in
3695         '')
3696         echo "    You'd better start hunting for one and let me know about it." >&4
3697                 exit 1
3698                 ;;
3699         esac
3700 fi
3701 $rm -f gccvers*
3702 case "$gccversion" in
3703 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3704 esac
3705
3706 : What should the include directory be ?
3707 echo " "
3708 $echo $n "Hmm...  $c"
3709 dflt='/usr/include'
3710 incpath=''
3711 mips_type=''
3712 if $test -f /bin/mips && /bin/mips; then
3713         echo "Looks like a MIPS system..."
3714         $cat >usr.c <<'EOCP'
3715 #ifdef SYSTYPE_BSD43
3716 /bsd43
3717 #endif
3718 EOCP
3719         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3720                 dflt='/bsd43/usr/include'
3721                 incpath='/bsd43'
3722                 mips_type='BSD 4.3'
3723         else
3724                 mips_type='System V'
3725         fi
3726         $rm -f usr.c usr.out
3727         echo "and you're compiling with the $mips_type compiler and libraries."
3728         xxx_prompt=y
3729         echo "exit 0" >mips
3730 else
3731         echo "Doesn't look like a MIPS system."
3732         xxx_prompt=n
3733         echo "exit 1" >mips
3734 fi
3735 chmod +x mips
3736 $eunicefix mips
3737 case "$usrinc" in
3738 '') ;;
3739 *) dflt="$usrinc";;
3740 esac
3741 case "$xxx_prompt" in
3742 y)      fn=d/
3743         echo " "
3744         rp='Where are the include files you want to use?'
3745         . ./getfile
3746         usrinc="$ans"
3747         ;;
3748 *)      usrinc="$dflt"
3749         ;;
3750 esac
3751
3752 : see how we invoke the C preprocessor
3753 echo " "
3754 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3755 cat <<'EOT' >testcpp.c
3756 #define ABC abc
3757 #define XYZ xyz
3758 ABC.XYZ
3759 EOT
3760 cd ..
3761 if test ! -f cppstdin; then
3762         echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3763 else
3764         echo "Keeping your $hint cppstdin wrapper."
3765 fi
3766 chmod 755 cppstdin
3767 wrapper=`pwd`/cppstdin
3768 ok='false'
3769 cd UU
3770
3771 if $test "X$cppstdin" != "X" && \
3772         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3773         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3774 then
3775         echo "You used to use $cppstdin $cppminus so we'll use that again."
3776         case "$cpprun" in
3777         '') echo "But let's see if we can live without a wrapper..." ;;
3778         *)
3779                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3780                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3781                 then
3782                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3783                         ok='true'
3784                 else
3785                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3786                 fi
3787                 ;;
3788         esac
3789 else
3790         case "$cppstdin" in
3791         '') ;;
3792         *)
3793                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3794                 ;;
3795         esac
3796 fi
3797
3798 if $ok; then
3799         : nothing
3800 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3801         $cc -E <testcpp.c >testcpp.out 2>&1; \
3802         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3803         echo "Yup, it does."
3804         x_cpp="$cc -E"
3805         x_minus='';
3806 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3807         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3808         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3809         echo "Yup, it does."
3810         x_cpp="$cc -E"
3811         x_minus='-';
3812 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3813         $cc -P <testcpp.c >testcpp.out 2>&1; \
3814         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3815         echo "Yipee, that works!"
3816         x_cpp="$cc -P"
3817         x_minus='';
3818 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3819         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3820         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3821         echo "At long last!"
3822         x_cpp="$cc -P"
3823         x_minus='-';
3824 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3825         $cpp <testcpp.c >testcpp.out 2>&1; \
3826         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3827         echo "It works!"
3828         x_cpp="$cpp"
3829         x_minus='';
3830 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3831         $cpp - <testcpp.c >testcpp.out 2>&1; \
3832         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3833         echo "Hooray, it works!  I was beginning to wonder."
3834         x_cpp="$cpp"
3835         x_minus='-';
3836 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3837         $wrapper <testcpp.c >testcpp.out 2>&1; \
3838         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3839         x_cpp="$wrapper"
3840         x_minus=''
3841         echo "Eureka!"
3842 else
3843         dflt=''
3844         rp="No dice.  I can't find a C preprocessor.  Name one:"
3845         . ./myread
3846         x_cpp="$ans"
3847         x_minus=''
3848         $x_cpp <testcpp.c >testcpp.out 2>&1
3849         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3850                 echo "OK, that will do." >&4
3851         else
3852 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3853                 exit 1
3854         fi
3855 fi
3856
3857 case "$ok" in
3858 false)
3859         cppstdin="$x_cpp"
3860         cppminus="$x_minus"
3861         cpprun="$x_cpp"
3862         cpplast="$x_minus"
3863         set X $x_cpp
3864         shift
3865         case "$1" in
3866         "$cpp")
3867                 echo "Perhaps can we force $cc -E using a wrapper..."
3868                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3869                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3870                 then
3871                         echo "Yup, we can."
3872                         cppstdin="$wrapper"
3873                         cppminus='';
3874                 else
3875                         echo "Nope, we'll have to live without it..."
3876                 fi
3877                 ;;
3878         esac
3879         case "$cpprun" in
3880         "$wrapper")
3881                 cpprun=''
3882                 cpplast=''
3883                 ;;
3884         esac
3885         ;;
3886 esac
3887
3888 case "$cppstdin" in
3889 "$wrapper"|'cppstdin') ;;
3890 *) $rm -f $wrapper;;
3891 esac
3892 $rm -f testcpp.c testcpp.out
3893
3894 : Set private lib path
3895 case "$plibpth" in
3896 '') if ./mips; then
3897                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3898         fi;;
3899 esac
3900 case "$libpth" in
3901 ' ') dlist='';;
3902 '') dlist="$loclibpth $plibpth $glibpth";;
3903 *) dlist="$libpth";;
3904 esac
3905
3906 : Now check and see which directories actually exist, avoiding duplicates
3907 libpth=''
3908 for xxx in $dlist
3909 do
3910     if $test -d $xxx; then
3911                 case " $libpth " in
3912                 *" $xxx "*) ;;
3913                 *) libpth="$libpth $xxx";;
3914                 esac
3915     fi
3916 done
3917 $cat <<'EOM'
3918
3919 Some systems have incompatible or broken versions of libraries.  Among
3920 the directories listed in the question below, please remove any you
3921 know not to be holding relevant libraries, and add any that are needed.
3922 Say "none" for none.
3923
3924 EOM
3925 case "$libpth" in
3926 '') dflt='none';;
3927 *)
3928         set X $libpth
3929         shift
3930         dflt=${1+"$@"}
3931         ;;
3932 esac
3933 rp="Directories to use for library searches?"
3934 . ./myread
3935 case "$ans" in
3936 none) libpth=' ';;
3937 *) libpth="$ans";;
3938 esac
3939
3940 : compute shared library extension
3941 case "$so" in
3942 '')
3943         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3944                 dflt='sl'
3945         else
3946                 dflt='so'
3947         fi
3948         ;;
3949 *) dflt="$so";;
3950 esac
3951 $cat <<EOM
3952
3953 On some systems, shared libraries may be available.  Answer 'none' if
3954 you want to suppress searching of shared libraries for the remaining
3955 of this configuration.
3956
3957 EOM
3958 rp='What is the file extension used for shared libraries?'
3959 . ./myread
3960 so="$ans"
3961
3962 : Define several unixisms.
3963 : Hints files or command line option can be used to override them.
3964 : The convoluted testing is in case hints files set either the old
3965 : or the new name.
3966 case "$_exe" in
3967 '')     case "$exe_ext" in
3968     '') ;;
3969         *)      _exe="$exe_ext" ;;
3970         esac
3971         ;;
3972 esac
3973 case "$_a" in
3974 '')     case "$lib_ext" in
3975     '') _a='.a';;
3976         *)      _a="$lib_ext" ;;
3977         esac
3978         ;;
3979 esac
3980 case "$_o" in
3981 '') case "$obj_ext" in
3982         '')     _o='.o';;
3983         *)      _o="$obj_ext";;
3984         esac
3985         ;;
3986 esac
3987 case "$p_" in
3988 '') case "$path_sep" in
3989         '')     p_=':';;
3990         *)      p_="$path_sep";;
3991         esac
3992         ;;
3993 esac
3994 exe_ext=$_exe
3995 lib_ext=$_a
3996 obj_ext=$_o
3997 path_sep=$p_
3998
3999 : Which makefile gets called first.  This is used by make depend.
4000 case "$firstmakefile" in
4001 '') firstmakefile='makefile';;
4002 esac
4003
4004 cat <<EOM
4005
4006 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4007 Configure must be run with -Dusesocks.
4008
4009 Normally you do not need this and you should answer no.
4010
4011 EOM
4012 case "$usesocks" in
4013 $define|true|[yY]*)     dflt='y';;
4014 *) dflt='n';;
4015 esac
4016 rp='Build Perl for SOCKS?'
4017 . ./myread
4018 case "$ans" in
4019 y|Y)    val="$define" ;;     
4020 *)      val="$undef" ;;
4021 esac
4022 set usesocks
4023 eval $setvar
4024
4025 : Looking for optional libraries
4026 echo " "
4027 echo "Checking for optional libraries..." >&4
4028 case "$libs" in
4029 ' '|'') dflt='';;
4030 *) dflt="$libs";;
4031 esac
4032 case "$libswanted" in
4033 '') libswanted='c_s';;
4034 esac
4035 case "$usesocks" in
4036 $define)
4037         libswanted="$libswanted socks5 socks5_sh"
4038         ;;
4039 esac
4040 for thislib in $libswanted; do
4041         
4042         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
4043                 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4044                 echo "Found -l$thislib (shared)."
4045                 case " $dflt " in
4046                 *"-l$thislib "*);;
4047                 *) dflt="$dflt -l$thislib";;
4048                 esac
4049         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
4050                 echo "Found -l$thislib (shared)."
4051                 case " $dflt " in
4052                 *"-l$thislib "*);;
4053                 *) dflt="$dflt -l$thislib";;
4054                 esac
4055         elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
4056                 echo "Found -l$thislib."
4057                 case " $dflt " in
4058                 *"-l$thislib "*);;
4059                 *) dflt="$dflt -l$thislib";;
4060                 esac
4061         elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
4062                 echo "Found -l$thislib."
4063                 case " $dflt " in
4064                 *"-l$thislib "*);;
4065                 *) dflt="$dflt -l$thislib";;
4066                 esac
4067         elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
4068                 echo "Found -l${thislib}_s."
4069                 case " $dflt " in
4070                 *"-l$thislib "*);;
4071                 *) dflt="$dflt -l${thislib}_s";;
4072                 esac
4073         elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
4074                 echo "Found -l$thislib."
4075                 case " $dflt " in
4076                 *"-l$thislib "*);;
4077                 *) dflt="$dflt -l$thislib";;
4078                 esac
4079         else
4080                 echo "No -l$thislib."
4081         fi
4082 done
4083 set X $dflt
4084 shift
4085 dflt="$*"
4086 case "$libs" in
4087 '') dflt="$dflt";;
4088 *) dflt="$libs";;
4089 esac
4090 case "$dflt" in
4091 ' '|'') dflt='none';;
4092 esac
4093
4094 $cat <<EOM
4095
4096 In order to compile $package on your machine, a number of libraries
4097 are usually needed.  Include any other special libraries here as well.
4098 Say "none" for none.  The default list is almost always right.
4099 EOM
4100
4101 echo " "
4102 rp="What libraries to use?"
4103 . ./myread
4104 case "$ans" in
4105 none) libs=' ';;
4106 *) libs="$ans";;
4107 esac
4108
4109 : determine optimize, if desired, or use for debug flag also
4110 case "$optimize" in
4111 ' '|$undef) dflt='none';;
4112 '') dflt='-O';;
4113 *) dflt="$optimize";;
4114 esac
4115 $cat <<EOH
4116
4117 Some C compilers have problems with their optimizers.  By default, $package
4118 compiles with the -O flag to use the optimizer.  Alternately, you might want
4119 to use the symbolic debugger, which uses the -g flag (on traditional Unix
4120 systems).  Either flag can be specified here.  To use neither flag, specify
4121 the word "none".
4122
4123 EOH
4124 rp="What optimizer/debugger flag should be used?"
4125 . ./myread
4126 optimize="$ans"
4127 case "$optimize" in
4128 'none') optimize=" ";;
4129 esac
4130
4131 dflt=''
4132 : We will not override a previous value, but we might want to
4133 : augment a hint file
4134 case "$hint" in
4135 none|recommended)
4136         case "$gccversion" in
4137         1*) dflt='-fpcc-struct-return' ;;
4138         esac
4139         case "$optimize" in
4140         *-g*) dflt="$dflt -DDEBUGGING";;
4141         esac
4142         case "$gccversion" in
4143         2*) if test -d /etc/conf/kconfig.d &&
4144                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4145                 then
4146                         dflt="$dflt -posix"
4147                 fi
4148                 ;;
4149         esac
4150         ;;
4151 esac
4152
4153 case "$mips_type" in
4154 *BSD*|'') inclwanted="$locincpth $usrinc";;
4155 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4156 esac
4157 for thisincl in $inclwanted; do
4158         if $test -d $thisincl; then
4159                 if $test x$thisincl != x$usrinc; then
4160                         case "$dflt" in
4161                         *$thisincl*);;
4162                         *) dflt="$dflt -I$thisincl";;
4163                         esac
4164                 fi
4165         fi
4166 done
4167
4168 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4169         xxx=true;
4170 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4171         xxx=true;
4172 else
4173         xxx=false;
4174 fi;
4175 if $xxx; then
4176         case "$dflt" in
4177         *$2*);;
4178         *) dflt="$dflt -D$2";;
4179         esac;
4180 fi'
4181
4182 set signal.h LANGUAGE_C; eval $inctest
4183
4184 case "$usesocks" in
4185 $define)
4186         ccflags="$ccflags -DSOCKS"
4187         ;;
4188 esac
4189
4190 case "$hint" in
4191 none|recommended) dflt="$ccflags $dflt" ;;
4192 *) dflt="$ccflags";;
4193 esac
4194
4195 case "$dflt" in
4196 ''|' ') dflt=none;;
4197 esac
4198 $cat <<EOH
4199
4200 Your C compiler may want other flags.  For this question you should include
4201 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4202 but you should NOT include libraries or ld flags like -lwhatever.  If you
4203 want $package to honor its debug switch, you should include -DDEBUGGING here.
4204 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4205
4206 To use no flags, specify the word "none".
4207
4208 EOH
4209 set X $dflt
4210 shift
4211 dflt=${1+"$@"}
4212 rp="Any additional cc flags?"
4213 . ./myread
4214 case "$ans" in
4215 none) ccflags='';;
4216 *) ccflags="$ans";;
4217 esac
4218
4219 : the following weeds options from ccflags that are of no interest to cpp
4220 cppflags="$ccflags"
4221 case "$gccversion" in
4222 1*) cppflags="$cppflags -D__GNUC__"
4223 esac
4224 case "$mips_type" in
4225 '');;
4226 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4227 esac
4228 case "$cppflags" in
4229 '');;
4230 *)
4231         echo " "
4232         echo "Let me guess what the preprocessor flags are..." >&4
4233         set X $cppflags
4234         shift
4235         cppflags=''
4236         $cat >cpp.c <<'EOM'
4237 #define BLURFL foo
4238
4239 BLURFL xx LFRULB
4240 EOM
4241         previous=''
4242         for flag in $*
4243         do
4244                 case "$flag" in
4245                 -*) ftry="$flag";;
4246                 *) ftry="$previous $flag";;
4247                 esac
4248                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4249                         >cpp1.out 2>/dev/null && \
4250                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4251                         >cpp2.out 2>/dev/null && \
4252                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4253                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4254                 then
4255                         cppflags="$cppflags $ftry"
4256                         previous=''
4257                 else
4258                         previous="$flag"
4259                 fi
4260         done
4261         set X $cppflags
4262         shift
4263         cppflags=${1+"$@"}
4264         case "$cppflags" in
4265         *-*)  echo "They appear to be: $cppflags";;
4266         esac
4267         $rm -f cpp.c cpp?.out
4268         ;;
4269 esac
4270
4271 : flags used in final linking phase
4272 case "$ldflags" in
4273 '') if ./venix; then
4274                 dflt='-i -z'
4275         else
4276                 dflt=''
4277         fi
4278         case "$ccflags" in
4279         *-posix*) dflt="$dflt -posix" ;;
4280         esac
4281         ;;
4282 *) dflt="$ldflags";;
4283 esac
4284
4285 : Try to guess additional flags to pick up local libraries.
4286 for thislibdir in $libpth; do
4287         case " $loclibpth " in
4288         *" $thislibdir "*)
4289                 case "$dflt " in 
4290                 *"-L$thislibdir "*) ;;
4291                 *)  dflt="$dflt -L$thislibdir" ;;
4292                 esac
4293                 ;;
4294         esac
4295 done
4296
4297 case "$dflt" in
4298 '') dflt='none' ;;
4299 esac
4300
4301 $cat <<EOH
4302
4303 Your C linker may need flags.  For this question you should
4304 include -L/whatever and any other flags used by the C linker, but you
4305 should NOT include libraries like -lwhatever.
4306
4307 Make sure you include the appropriate -L/path flags if your C linker
4308 does not normally search all of the directories you specified above,
4309 namely
4310         $libpth
4311 To use no flags, specify the word "none".
4312
4313 EOH
4314
4315 rp="Any additional ld flags (NOT including libraries)?"
4316 . ./myread
4317 case "$ans" in
4318 none) ldflags='';;
4319 *) ldflags="$ans";;
4320 esac
4321 rmlist="$rmlist pdp11"
4322
4323 : coherency check
4324 echo " "
4325 echo "Checking your choice of C compiler and flags for coherency..." >&4
4326 $cat > try.c <<'EOF'
4327 #include <stdio.h>
4328 int main() { printf("Ok\n"); exit(0); }
4329 EOF
4330 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4331 shift
4332 $cat >try.msg <<'EOM'
4333 I've tried to compile and run the following simple program:
4334
4335 EOM
4336 $cat try.c >> try.msg
4337
4338 $cat >> try.msg <<EOM
4339
4340 I used the command:
4341
4342         $*
4343         ./try
4344
4345 and I got the following output:
4346
4347 EOM
4348 dflt=y
4349 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4350         if sh -c './try' >>try.msg 2>&1; then
4351                 xxx=`./try`
4352                 case "$xxx" in
4353                 "Ok") dflt=n ;;
4354                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4355                         case " $libs " in
4356                         *" -lsfio "*)
4357                                 cat >> try.msg <<'EOQS'
4358 If $libs contains -lsfio, and sfio is mis-configured, then it
4359 sometimes (apparently) runs and exits with a 0 status, but with no
4360 output!  It may have to do with sfio's use of _exit vs. exit.
4361
4362 EOQS
4363                                 rp="You have a big problem.  Shall I abort Configure"
4364                                 dflt=y
4365                                 ;;
4366                         esac
4367                         ;;
4368                 esac
4369         else
4370                 echo "The program compiled OK, but exited with status $?." >>try.msg
4371                 rp="You have a problem.  Shall I abort Configure"
4372                 dflt=y
4373         fi
4374 else
4375         echo "I can't compile the test program." >>try.msg
4376         rp="You have a BIG problem.  Shall I abort Configure"
4377         dflt=y
4378 fi
4379 case "$dflt" in
4380 y)
4381         $cat try.msg >&4
4382         case "$knowitall" in
4383         '')
4384                 echo "(The supplied flags or libraries might be incorrect.)"
4385                 ;;
4386         *) dflt=n;;
4387         esac
4388         echo " "
4389         . ./myread
4390         case "$ans" in
4391         n*|N*) ;;
4392         *)      echo "Ok.  Stopping Configure." >&4
4393                 exit 1
4394                 ;;
4395         esac
4396         ;;
4397 n) echo "OK, that should do.";;
4398 esac
4399 $rm -f try try.* core
4400
4401 : determine filename position in cpp output
4402 echo " "
4403 echo "Computing filename position in cpp output for #include directives..." >&4
4404 echo '#include <stdio.h>' > foo.c
4405 $cat >fieldn <<EOF
4406 $startsh
4407 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4408 $grep '^[       ]*#.*stdio\.h' | \
4409 while read cline; do
4410         pos=1
4411         set \$cline
4412         while $test \$# -gt 0; do
4413                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4414                         echo "\$pos"
4415                         exit 0
4416                 fi
4417                 shift
4418                 pos=\`expr \$pos + 1\`
4419         done
4420 done
4421 EOF
4422 chmod +x fieldn
4423 fieldn=`./fieldn`
4424 $rm -f foo.c fieldn
4425 case $fieldn in
4426 '') pos='???';;
4427 1) pos=first;;
4428 2) pos=second;;
4429 3) pos=third;;
4430 *) pos="${fieldn}th";;
4431 esac
4432 echo "Your cpp writes the filename in the $pos field of the line."
4433
4434 : locate header file
4435 $cat >findhdr <<EOF
4436 $startsh
4437 wanted=\$1
4438 name=''
4439 for usrincdir in $usrinc
4440 do
4441         if test -f \$usrincdir/\$wanted; then
4442                 echo "\$usrincdir/\$wanted"
4443                 exit 0
4444         fi
4445 done
4446 awkprg='{ print \$$fieldn }'
4447 echo "#include <\$wanted>" > foo\$\$.c
4448 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4449 $grep "^[       ]*#.*\$wanted" | \
4450 while read cline; do
4451         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4452         case "\$name" in
4453         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4454         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4455         *) exit 2;;
4456         esac;
4457 done;
4458 #
4459 # status = 0: grep returned 0 lines, case statement not executed
4460 # status = 1: headerfile found
4461 # status = 2: while loop executed, no headerfile found
4462 #
4463 status=\$?
4464 $rm -f foo\$\$.c;
4465 if test \$status -eq 1; then
4466         exit 0;
4467 fi
4468 exit 1
4469 EOF
4470 chmod +x findhdr
4471
4472 : define an alternate in-header-list? function
4473 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4474 cont=true; xxf="echo \"<\$1> found.\" >&4";
4475 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4476 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4477 esac;
4478 case $# in 4) instead=instead;; *) instead="at last";; esac;
4479 while $test "$cont"; do
4480         xxx=`./findhdr $1`
4481         var=$2; eval "was=\$$2";
4482         if $test "$xxx" && $test -r "$xxx";
4483         then eval $xxf;
4484         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4485                 cont="";
4486         else eval $xxnf;
4487         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4488         set $yyy; shift; shift; yyy=$@;
4489         case $# in 0) cont="";;
4490         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4491                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4492         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4493                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4494         esac;
4495 done;
4496 while $test "$yyy";
4497 do set $yyy; var=$2; eval "was=\$$2";
4498         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4499         set $yyy; shift; shift; yyy=$@;
4500 done'
4501
4502 : see if this is a malloc.h system
4503 set malloc.h i_malloc
4504 eval $inhdr
4505
4506 : see if stdlib is available
4507 set stdlib.h i_stdlib
4508 eval $inhdr
4509
4510 : determine which malloc to compile in
4511 echo " "
4512 case "$usemymalloc" in
4513 ''|[yY]*|true|$define)  dflt='y' ;;
4514 *)      dflt='n' ;;
4515 esac
4516 rp="Do you wish to attempt to use the malloc that comes with $package?"
4517 . ./myread
4518 usemymalloc="$ans"
4519 case "$ans" in
4520 y*|true)
4521         usemymalloc='y'
4522         mallocsrc='malloc.c'
4523         mallocobj="malloc$_o"
4524         d_mymalloc="$define"
4525         case "$libs" in
4526         *-lmalloc*)
4527                 : Remove malloc from list of libraries to use
4528                 echo "Removing unneeded -lmalloc from library list" >&4
4529                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4530                 shift
4531                 libs="$*"
4532                 echo "libs = $libs" >&4
4533                 ;;
4534         esac
4535         ;;
4536 *)
4537         usemymalloc='n'
4538         mallocsrc=''
4539         mallocobj=''
4540         d_mymalloc="$undef"
4541         ;;
4542 esac
4543
4544 : compute the return types of malloc and free
4545 echo " "
4546 $cat >malloc.c <<END
4547 #$i_malloc I_MALLOC
4548 #$i_stdlib I_STDLIB
4549 #include <stdio.h>
4550 #include <sys/types.h>
4551 #ifdef I_MALLOC
4552 #include <malloc.h>
4553 #endif
4554 #ifdef I_STDLIB
4555 #include <stdlib.h>
4556 #endif
4557 #ifdef TRY_MALLOC
4558 void *malloc();
4559 #endif
4560 #ifdef TRY_FREE
4561 void free();
4562 #endif
4563 END
4564 case "$malloctype" in
4565 '')
4566         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4567                 malloctype='void *'
4568         else
4569                 malloctype='char *'
4570         fi
4571         ;;
4572 esac
4573 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4574
4575 case "$freetype" in
4576 '')
4577         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4578                 freetype='void'
4579         else
4580                 freetype='int'
4581         fi
4582         ;;
4583 esac
4584 echo "Your system uses $freetype free(), it would seem." >&4
4585 $rm -f malloc.[co]
4586 : Cruising for prototypes
4587 echo " "
4588 echo "Checking out function prototypes..." >&4
4589 $cat >prototype.c <<'EOCP'
4590 int main(int argc, char *argv[]) {
4591         exit(0);}
4592 EOCP
4593 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4594         echo "Your C compiler appears to support function prototypes."
4595         val="$define"
4596 else
4597         echo "Your C compiler doesn't seem to understand function prototypes."
4598         val="$undef"
4599 fi
4600 set prototype
4601 eval $setvar
4602 $rm -f prototype*
4603
4604 case "$prototype" in
4605 "$define") ;;
4606 *)      ansi2knr='ansi2knr'
4607         echo " "
4608         cat <<EOM >&4
4609
4610 $me:  FATAL ERROR:
4611 This version of $package can only be compiled by a compiler that 
4612 understands function prototypes.  Unfortunately, your C compiler 
4613         $cc $ccflags
4614 doesn't seem to understand them.  Sorry about that.
4615
4616 If GNU cc is available for your system, perhaps you could try that instead.  
4617
4618 Eventually, we hope to support building Perl with pre-ANSI compilers.
4619 If you would like to help in that effort, please contact <perlbug@perl.org>.
4620
4621 Aborting Configure now.
4622 EOM
4623         exit 2
4624         ;;
4625 esac
4626
4627 : determine where public executables go
4628 echo " "
4629 set dflt bin bin
4630 eval $prefixit
4631 fn=d~
4632 rp='Pathname where the public executables will reside?'
4633 . ./getfile
4634 if $test "X$ansexp" != "X$binexp"; then
4635         installbin=''
4636 fi
4637 bin="$ans"
4638 binexp="$ansexp"
4639 : Change installation prefix, if necessary.
4640 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
4641 if $test X"$prefix" != X"$installprefix"; then
4642         installbin=`echo $binexp | sed 's#^$prefix#$installprefix#'`
4643 else
4644         installbin="$binexp"
4645 fi
4646
4647 : determine whether to install perl also as /usr/bin/perl
4648
4649 echo " "
4650 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
4651         $cat <<EOM
4652 Many scripts expect to perl to be installed as /usr/bin/perl.
4653 I can install the perl you are about to compile also as /usr/bin/perl
4654 (in addition to $installbin/perl).
4655 EOM
4656         case "$installusrbinperl" in
4657         "$undef"|[nN]*) dflt='n';;
4658         *)              dflt='y';;
4659         esac
4660         rp="Do you want to install perl as /usr/bin/perl?"
4661         . ./myread
4662         case "$ans" in
4663         [yY]*)  val="$define";;
4664         *)      val="$undef" ;;
4665         esac
4666 else
4667         val="$undef"
4668 fi
4669 set installusrbinperl
4670 eval $setvar
4671
4672 : define a shorthand compile call
4673 compile='
4674 mc_file=$1;
4675 shift;
4676 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4677 : define a shorthand compile call for compilations that should be ok.
4678 compile_ok='
4679 mc_file=$1;
4680 shift;
4681 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4682
4683 echo " "
4684 echo "Checking for GNU C Library..." >&4
4685 cat >gnulibc.c <<EOM
4686 #include <stdio.h>
4687 int main()
4688 {
4689 #ifdef __GLIBC__
4690     exit(0);
4691 #else
4692     exit(1);
4693 #endif
4694 }
4695 EOM
4696 set gnulibc
4697 if eval $compile_ok && ./gnulibc; then
4698         val="$define"
4699         echo "You are using the GNU C Library"
4700 else
4701         val="$undef"
4702         echo "You are not using the GNU C Library"
4703 fi
4704 $rm -f gnulibc*
4705 set d_gnulibc
4706 eval $setvar
4707
4708 : see if nm is to be used to determine whether a symbol is defined or not
4709 case "$usenm" in
4710 '')
4711         dflt=''
4712         case "$d_gnulibc" in
4713         "$define")
4714                 echo " "
4715                 echo "nm probably won't work on the GNU C Library." >&4
4716                 dflt=n
4717                 ;;
4718         esac
4719         case "$dflt" in
4720         '') 
4721                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4722                         echo " "
4723                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4724                         echo "'nm' won't be sufficient on this sytem." >&4
4725                         dflt=n
4726                 fi
4727                 ;;
4728         esac
4729         case "$dflt" in
4730         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4731                 if $test $dflt -gt 20; then
4732                         dflt=y
4733                 else
4734                         dflt=n
4735                 fi
4736                 ;;
4737         esac
4738         ;;
4739 *)
4740         case "$usenm" in
4741         true|$define) dflt=y;;
4742         *) dflt=n;;
4743         esac
4744         ;;
4745 esac
4746 $cat <<EOM
4747
4748 I can use $nm to extract the symbols from your C libraries. This
4749 is a time consuming task which may generate huge output on the disk (up
4750 to 3 megabytes) but that should make the symbols extraction faster. The
4751 alternative is to skip the 'nm' extraction part and to compile a small
4752 test program instead to determine whether each symbol is present. If
4753 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4754 this may be the best solution.
4755
4756 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4757
4758 EOM
4759 rp="Shall I use $nm to extract C symbols from the libraries?"
4760 . ./myread
4761 case "$ans" in
4762 [Nn]*) usenm=false;;
4763 *) usenm=true;;
4764 esac
4765
4766 runnm=$usenm
4767 case "$reuseval" in
4768 true) runnm=false;;
4769 esac
4770
4771 : nm options which may be necessary
4772 case "$nm_opt" in
4773 '') if $test -f /mach_boot; then
4774                 nm_opt=''       # Mach
4775         elif $test -d /usr/ccs/lib; then
4776                 nm_opt='-p'     # Solaris (and SunOS?)
4777         elif $test -f /dgux; then
4778                 nm_opt='-p'     # DG-UX
4779         elif $test -f /lib64/rld; then
4780                 nm_opt='-p'     # 64-bit Irix
4781         else
4782                 nm_opt=''
4783         fi;;
4784 esac
4785
4786 : nm options which may be necessary for shared libraries but illegal
4787 : for archive libraries.  Thank you, Linux.
4788 case "$nm_so_opt" in
4789 '')     case "$myuname" in
4790         *linux*)
4791                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4792                         nm_so_opt='--dynamic'
4793                 fi
4794                 ;;
4795         esac
4796         ;;
4797 esac
4798
4799 case "$runnm" in
4800 true)
4801 : get list of predefined functions in a handy place
4802 echo " "
4803 case "$libc" in
4804 '') libc=unknown
4805         case "$libs" in
4806         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4807         esac
4808         ;;
4809 esac
4810 libnames='';
4811 case "$libs" in
4812 '') ;;
4813 *)  for thislib in $libs; do
4814         case "$thislib" in
4815         -lc|-lc_s)
4816                 : Handle C library specially below.
4817                 ;;
4818         -l*)
4819                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4820                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4821                         :
4822                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4823                         :
4824                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4825                         :
4826                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4827                         :
4828                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4829                         :
4830                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4831                         :
4832                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4833                         :
4834                 else
4835                         try=''
4836                 fi
4837                 libnames="$libnames $try"
4838                 ;;
4839         *) libnames="$libnames $thislib" ;;
4840         esac
4841         done
4842         ;;
4843 esac
4844 xxx=normal
4845 case "$libc" in
4846 unknown)
4847         set /lib/libc.$so
4848         for xxx in $libpth; do
4849                 $test -r $1 || set $xxx/libc.$so
4850                 : The messy sed command sorts on library version numbers.
4851                 $test -r $1 || \
4852                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4853                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4854                                 h
4855                                 s/[0-9][0-9]*/0000&/g
4856                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4857                                 G
4858                                 s/\n/ /' | \
4859                          sort | $sed -e 's/^.* //'`
4860                 eval set \$$#
4861         done
4862         $test -r $1 || set /usr/ccs/lib/libc.$so
4863         $test -r $1 || set /lib/libsys_s$_a
4864         ;;
4865 *)
4866         set blurfl
4867         ;;
4868 esac
4869 if $test -r "$1"; then
4870         echo "Your (shared) C library seems to be in $1."
4871         libc="$1"
4872 elif $test -r /lib/libc && $test -r /lib/clib; then
4873         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4874         xxx=apollo
4875         libc='/lib/clib /lib/libc'
4876         if $test -r /lib/syslib; then
4877                 echo "(Your math library is in /lib/syslib.)"
4878                 libc="$libc /lib/syslib"
4879         fi
4880 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4881         echo "Your C library seems to be in $libc, as you said before."
4882 elif $test -r $incpath/usr/lib/libc$_a; then
4883         libc=$incpath/usr/lib/libc$_a;
4884         echo "Your C library seems to be in $libc.  That's fine."
4885 elif $test -r /lib/libc$_a; then
4886         libc=/lib/libc$_a;
4887         echo "Your C library seems to be in $libc.  You're normal."
4888 else
4889         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4890                 :
4891         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4892                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4893         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4894                 :
4895         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4896                 :
4897         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4898                 :
4899         else
4900                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4901         fi
4902         if $test -r "$tans"; then
4903                 echo "Your C library seems to be in $tans, of all places."
4904                 libc=$tans
4905         else
4906                 libc='blurfl'
4907         fi
4908 fi
4909 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4910         dflt="$libc"
4911         cat <<EOM
4912
4913 If the guess above is wrong (which it might be if you're using a strange
4914 compiler, or your machine supports multiple models), you can override it here.
4915
4916 EOM
4917 else
4918         dflt=''
4919         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4920         cat >&4 <<EOM
4921 I can't seem to find your C library.  I've looked in the following places:
4922
4923 EOM
4924         $sed 's/^/      /' libpath
4925         cat <<EOM
4926
4927 None of these seems to contain your C library. I need to get its name...
4928
4929 EOM
4930 fi
4931 fn=f
4932 rp='Where is your C library?'
4933 . ./getfile
4934 libc="$ans"
4935
4936 echo " "
4937 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4938 set X `cat libnames`
4939 shift
4940 xxx=files
4941 case $# in 1) xxx=file; esac
4942 echo "Extracting names from the following $xxx for later perusal:" >&4
4943 echo " "
4944 $sed 's/^/      /' libnames >&4
4945 echo " "
4946 $echo $n "This may take a while...$c" >&4
4947
4948 for file in $*; do
4949         case $file in
4950         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4951         *) $nm $nm_opt $file 2>/dev/null;;
4952         esac
4953 done >libc.tmp
4954
4955 $echo $n ".$c"
4956 $grep fprintf libc.tmp > libc.ptf
4957 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4958 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4959 xxx='[ADTSIW]'
4960 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4961         eval $xscan;\
4962         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4963                 eval $xrun
4964 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4965         eval $xscan;\
4966         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4967                 eval $xrun
4968 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4969         eval $xscan;\
4970         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4971                 eval $xrun
4972 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4973         eval $xscan;\
4974         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4975                 eval $xrun
4976 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4977         eval $xscan;\
4978         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4979                 eval $xrun
4980 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4981         eval $xscan;\
4982         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4983                 eval $xrun
4984 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4985                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
4986         eval $xscan;\
4987         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4988                 eval $xrun
4989 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4990         eval $xscan;\
4991         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4992                 eval $xrun
4993 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4994         eval $xscan;\
4995         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4996                 eval $xrun
4997 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4998         eval $xscan;\
4999         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5000                 eval $xrun
5001 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5002         eval $xscan;\
5003         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5004                 eval $xrun
5005 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5006         eval $xscan;\
5007         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5008                 eval $xrun
5009 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5010         eval $xscan;\
5011         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5012                 eval $xrun
5013 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5014         eval $xscan;\
5015         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5016                 eval $xrun
5017 else
5018         $nm -p $* 2>/dev/null >libc.tmp
5019         $grep fprintf libc.tmp > libc.ptf
5020         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5021                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5022         then
5023                 nm_opt='-p'
5024                 eval $xrun
5025         else
5026                 echo " "
5027                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5028                 com=''
5029                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5030                         for thisname in $libnames $libc; do
5031                                 $ar t $thisname >>libc.tmp
5032                         done
5033                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5034                         echo "Ok." >&4
5035                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5036                         # Repeat libc to extract forwarders to DLL entries too
5037                         for thisname in $libnames $libc; do
5038                                 $ar tv $thisname >>libc.tmp
5039                                 # Revision 50 of EMX has bug in $ar.
5040                                 # it will not extract forwarders to DLL entries
5041                                 # Use emximp which will extract exactly them.
5042                                 emximp -o tmp.imp $thisname \
5043                                     2>/dev/null && \
5044                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5045                                     < tmp.imp >>libc.tmp
5046                                 $rm tmp.imp
5047                         done
5048                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5049                         echo "Ok." >&4
5050                 else
5051                         echo "$ar didn't seem to work right." >&4
5052                         echo "Maybe this is a Cray...trying bld instead..." >&4
5053                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5054                         then
5055                                 for thisname in $libnames; do
5056                                         bld t $libnames | \
5057                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5058                                         $ar t $thisname >>libc.tmp
5059                                 done
5060                                 echo "Ok." >&4
5061                         else
5062                                 echo "That didn't work either.  Giving up." >&4
5063                                 exit 1
5064                         fi
5065                 fi
5066         fi
5067 fi
5068 nm_extract="$com"
5069 if $test -f /lib/syscalls.exp; then
5070         echo " "
5071         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5072         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5073 fi
5074 ;;
5075 esac
5076 $rm -f libnames libpath
5077
5078 : see if dld is available
5079 set dld.h i_dld
5080 eval $inhdr
5081
5082 : is a C symbol defined?
5083 csym='tlook=$1;
5084 case "$3" in
5085 -v) tf=libc.tmp; tc=""; tdc="";;
5086 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5087 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5088 esac;
5089 tx=yes;
5090 case "$reuseval-$4" in
5091 true-) ;;
5092 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5093 esac;
5094 case "$tx" in
5095 yes)
5096         case "$runnm" in
5097         true)
5098                 if $contains $tlook $tf >/dev/null 2>&1;
5099                 then tval=true;
5100                 else tval=false;
5101                 fi;;
5102         *)
5103                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5104                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5105                 then tval=true;
5106                 else tval=false;
5107                 fi;
5108                 $rm -f t t.c;;
5109         esac;;
5110 *)
5111         case "$tval" in
5112         $define) tval=true;;
5113         *) tval=false;;
5114         esac;;
5115 esac;
5116 eval "$2=$tval"'
5117
5118 : define an is-in-libc? function
5119 inlibc='echo " "; td=$define; tu=$undef;
5120 sym=$1; var=$2; eval "was=\$$2";
5121 tx=yes;
5122 case "$reuseval$was" in
5123 true) ;;
5124 true*) tx=no;;
5125 esac;
5126 case "$tx" in
5127 yes)
5128         set $sym tres -f;
5129         eval $csym;
5130         case "$tres" in
5131         true)
5132                 echo "$sym() found." >&4;
5133                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5134         *)
5135                 echo "$sym() NOT found." >&4;
5136                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5137         esac;;
5138 *)
5139         case "$was" in
5140         $define) echo "$sym() found." >&4;;
5141         *) echo "$sym() NOT found." >&4;;
5142         esac;;
5143 esac'
5144
5145 : see if dlopen exists
5146 xxx_runnm="$runnm"
5147 runnm=false
5148 set dlopen d_dlopen
5149 eval $inlibc
5150 runnm="$xxx_runnm"
5151
5152 : determine which dynamic loading, if any, to compile in
5153 echo " "
5154 dldir="ext/DynaLoader"
5155 case "$usedl" in
5156 $define|y|true)
5157         dflt='y'
5158         usedl="$define"
5159         ;;
5160 $undef|n|false)
5161         dflt='n'
5162         usedl="$undef"
5163         ;;
5164 *) 
5165         dflt='n'
5166         case "$d_dlopen" in
5167             $define) dflt='y' ;;
5168         esac
5169         case "$i_dld" in
5170             $define) dflt='y' ;;
5171         esac
5172         : Does a dl_xxx.xs file exist for this operating system
5173         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5174         ;;
5175 esac
5176 rp="Do you wish to use dynamic loading?"
5177 . ./myread
5178 usedl="$ans"
5179 case "$ans" in
5180 y*) usedl="$define"
5181         case "$dlsrc" in
5182         '')
5183                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5184                         dflt="$dldir/dl_${osname}.xs"
5185                 elif $test "$d_dlopen" = "$define" ; then
5186                         dflt="$dldir/dl_dlopen.xs"
5187                 elif $test "$i_dld" = "$define" ; then
5188                         dflt="$dldir/dl_dld.xs"
5189                 else
5190                         dflt=''
5191                 fi
5192                 ;;
5193         *)      dflt="$dldir/$dlsrc"
5194                 ;;
5195         esac
5196     echo "The following dynamic loading files are available:"
5197         : Can not go over to $dldir because getfile has path hard-coded in.
5198         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5199         rp="Source file to use for dynamic loading"
5200         fn="fne"
5201         gfpth="$src"
5202         . ./getfile
5203         usedl="$define"
5204         : emulate basename
5205         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5206
5207         $cat << EOM
5208
5209 Some systems may require passing special flags to $cc -c to
5210 compile modules that will be used to create a shared library.
5211 To use no flags, say "none".
5212
5213 EOM
5214     case "$cccdlflags" in
5215     '') case "$gccversion" in
5216                 '') case "$osname" in
5217                         hpux)   dflt='+z' ;;
5218                         next)   dflt='none' ;;
5219                         irix*)  dflt='-KPIC' ;;
5220                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5221                         sunos)  dflt='-pic' ;;
5222                         *)      dflt='none' ;;
5223                     esac
5224                         ;;
5225                 *)  case "$osname" in
5226                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5227                         *)      dflt='-fpic' ;;
5228                     esac ;;
5229             esac ;;
5230         ' ') dflt='none' ;;
5231     *)  dflt="$cccdlflags" ;;
5232     esac
5233     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5234     . ./myread
5235     case "$ans" in
5236     none) cccdlflags=' ' ;;
5237     *) cccdlflags="$ans" ;;
5238     esac
5239
5240     cat << EOM
5241
5242 Some systems use ld to create libraries that can be dynamically loaded,
5243 while other systems (such as those using ELF) use $cc.
5244
5245 EOM
5246         case "$ld" in
5247         '')     $cat >try.c <<'EOM'
5248 /* Test for whether ELF binaries are produced */
5249 #include <fcntl.h>
5250 #include <stdlib.h>
5251 int main() {
5252         char b[4];
5253         int i = open("a.out",O_RDONLY);
5254         if(i == -1) 
5255                 exit(1); /* fail */
5256         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5257                 exit(0); /* succeed (yes, it's ELF) */
5258         else
5259                 exit(1); /* fail */
5260 }
5261 EOM
5262                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5263                         cat <<EOM
5264 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
5265 EOM
5266                         dflt="$cc"
5267                 else
5268                         echo "I'll use ld to build dynamic libraries."
5269                         dflt='ld'
5270                 fi
5271                 rm -f try.c a.out
5272                 ;;
5273         *)      dflt="$ld"
5274                 ;;
5275         esac
5276
5277     rp="What command should be used to create dynamic libraries?"
5278     . ./myread
5279         ld="$ans"
5280
5281     cat << EOM
5282
5283 Some systems may require passing special flags to $ld to create a
5284 library that can be dynamically loaded.  If your ld flags include
5285 -L/other/path options to locate libraries outside your loader's normal
5286 search path, you may need to specify those -L options here as well.  To
5287 use no flags, say "none".
5288
5289 EOM
5290     case "$lddlflags" in
5291     '') case "$osname" in
5292                         beos) dflt='-nostart' ;;
5293                         hpux)  dflt='-b' ;;
5294                         linux|irix*)    dflt='-shared' ;;
5295                         next)  dflt='none' ;;
5296                         solaris) dflt='-G' ;;
5297                         sunos) dflt='-assert nodefinitions' ;;
5298                         svr4*|esix*) dflt="-G $ldflags" ;;
5299                 *)     dflt='none' ;;
5300                         esac
5301                         ;;
5302     *) dflt="$lddlflags" ;;
5303     esac
5304
5305         : Try to guess additional flags to pick up local libraries.
5306         : Be careful not to append to a plain 'none'
5307         case "$dflt" in
5308         none) dflt='' ;;
5309         esac
5310         for thisflag in $ldflags; do
5311                 case "$thisflag" in
5312                 -L*)
5313                         case " $dflt " in
5314                         *" $thisflag "*) ;;
5315                         *) dflt="$dflt $thisflag" ;;
5316                         esac
5317                         ;;
5318                 esac
5319         done
5320
5321         case "$dflt" in
5322         ''|' ') dflt='none' ;;
5323         esac
5324
5325     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5326     . ./myread
5327     case "$ans" in
5328     none) lddlflags=' ' ;;
5329     *) lddlflags="$ans" ;;
5330     esac
5331
5332         cat <<EOM
5333
5334 Some systems may require passing special flags to $cc to indicate that
5335 the resulting executable will use dynamic linking.  To use no flags,
5336 say "none".
5337
5338 EOM
5339     case "$ccdlflags" in
5340     '') case "$osname" in
5341                 hpux)   dflt='-Wl,-E' ;;
5342                 linux)  dflt='-rdynamic' ;;
5343                 next)   dflt='none' ;;
5344                 sunos)  dflt='none' ;;
5345                 *)      dflt='none' ;;
5346             esac ;;
5347     ' ')  dflt='none' ;;
5348     *)  dflt="$ccdlflags" ;;
5349     esac
5350     rp="Any special flags to pass to $cc to use dynamic loading?"
5351     . ./myread
5352     case "$ans" in
5353     none) ccdlflags=' ' ;;
5354     *) ccdlflags="$ans" ;;
5355     esac
5356     ;;
5357 *)  usedl="$undef"
5358         ld='ld'
5359     dlsrc='dl_none.xs'
5360     lddlflags=''
5361     ccdlflags=''
5362     ;;
5363 esac
5364
5365 also=''
5366 case "$usedl" in
5367 $undef)
5368         # No dynamic loading being used, so don't bother even to prompt.
5369         useshrplib='false'
5370         ;;
5371 *)      case "$useshrplib" in
5372         '')     case "$osname" in
5373                 svr4*|dgux|dynixptx|esix|powerux|beos)
5374                         dflt=y
5375                         also='Building a shared libperl is required for dynamic loading to work on your system.'
5376                         ;;
5377                 next*)
5378                         case "$osvers" in
5379                         4*)     dflt=y
5380                                 also='Building a shared libperl is needed for MAB support.'
5381                                 ;;
5382                         *)      dflt=n
5383                                 ;;
5384                         esac
5385                         ;;
5386                 *)      dflt=n
5387                         ;;
5388                 esac
5389                 ;;
5390         $define|true|[Yy]*)
5391                 dflt=y
5392                 ;;
5393         *)      dflt=n
5394                 ;;
5395         esac
5396         $cat << EOM
5397
5398 The perl executable is normally obtained by linking perlmain.c with
5399 libperl${_a}, any static extensions (usually just DynaLoader), and
5400 any other libraries needed on this system (such as -lm, etc.).  Since
5401 your system supports dynamic loading, it is probably possible to build
5402 a shared libperl.$so.  If you will have more than one executable linked
5403 to libperl.$so, this will significantly reduce the size of each
5404 executable, but it may have a noticeable affect on performance.  The
5405 default is probably sensible for your system.
5406 $also
5407
5408 EOM
5409         rp="Build a shared libperl.$so (y/n)"
5410         . ./myread
5411         case "$ans" in
5412         true|$define|[Yy]*)
5413                 useshrplib='true'  ;;
5414         *)      useshrplib='false' ;;
5415         esac
5416         ;;
5417 esac
5418
5419 case "$useshrplib" in
5420 true)
5421         case "$libperl" in
5422         '')
5423                 # Figure out a good name for libperl.so.  Since it gets stored in
5424                 # a version-specific architecture-dependent library, the version
5425                 # number isn't really that important, except for making cc/ld happy.
5426                 #
5427                 # A name such as libperl.so.3.1
5428                 majmin="libperl.$so.$patchlevel.$subversion"
5429                 # A name such as libperl.so.301
5430                 majonly=`echo $patchlevel $subversion |
5431                         $awk '{printf "%d%02d", $1, $2}'`
5432                 majonly=libperl.$so.$majonly
5433                 # I'd prefer to keep the os-specific stuff here to a minimum, and
5434                 # rely on figuring it out from the naming of libc.
5435                 case "${osname}${osvers}" in
5436                 next4*)
5437                         dflt=libperl.5.$so
5438                         # XXX How handle the --version stuff for MAB?
5439                         ;;
5440                 linux*)  # ld won't link with a bare -lperl otherwise.
5441                         dflt=libperl.$so
5442                         ;;
5443                 *)      # Try to guess based on whether libc has major.minor.
5444                         case "$libc" in
5445                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5446                         *libc.$so.[0-9]*) dflt=$majonly ;;
5447                         *)      dflt=libperl.$so ;;
5448                         esac
5449                         ;;
5450                 esac
5451                 ;;
5452         *)      dflt=$libperl
5453                 ;;
5454         esac
5455         cat << EOM
5456
5457 I need to select a good name for the shared libperl.  If your system uses
5458 library names with major and minor numbers, then you might want something
5459 like $majmin.  Alternatively, if your system uses a single version
5460 number for shared libraries, then you might want to use $majonly.
5461 Or, your system might be quite happy with a simple libperl.$so.
5462
5463 Since the shared libperl will get installed into a version-specific
5464 architecture-dependent directory, the version number of the shared perl
5465 library probably isn't important, so the default should be o.k.
5466
5467 EOM
5468         rp='What name do you want to give to the shared libperl?'
5469         . ./myread
5470         libperl=$ans
5471         echo "Ok, I'll use $libperl"
5472         ;;
5473 *)
5474         libperl="libperl${_a}"
5475         ;;
5476 esac
5477
5478 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5479 case "$shrpdir" in
5480 '') ;;
5481 *)      $cat >&4 <<EOM
5482 WARNING:  Use of the shrpdir variable for the installation location of
5483 the shared $libperl is not supported.  It was never documented and
5484 will not work in this version.  Let me (perlbug@perl.com)
5485 know of any problems this may cause.
5486
5487 EOM
5488         case "$shrpdir" in
5489         "$archlibexp/CORE")
5490                 $cat >&4 <<EOM
5491 But your current setting of $shrpdir is
5492 the default anyway, so it's harmless.
5493 EOM
5494                 ;;
5495         *)
5496                 $cat >&4 <<EOM
5497 Further, your current attempted setting of $shrpdir
5498 conflicts with the value of $archlibexp/CORE
5499 that installperl will use.
5500 EOM
5501                 ;;
5502         esac
5503         ;;
5504 esac
5505
5506 # How will the perl executable find the installed shared $libperl?
5507 # Add $xxx to ccdlflags.
5508 # If we can't figure out a command-line option, use $shrpenv to
5509 # set env LD_RUN_PATH.  The main perl makefile uses this.
5510 shrpdir=$archlibexp/CORE
5511 xxx=''
5512 tmp_shrpenv=''
5513 if "$useshrplib"; then
5514     case "$osname" in 
5515         aix)
5516                 # We'll set it in Makefile.SH...
5517                 ;;
5518         solaris|netbsd)
5519                 xxx="-R $shrpdir"
5520                 ;;
5521         freebsd)
5522                 xxx="-Wl,-R$shrpdir"
5523                 ;;
5524         linux|irix*|dec_osf)
5525                 xxx="-Wl,-rpath,$shrpdir"
5526                 ;;
5527         next)
5528                 # next doesn't like the default...
5529                 ;;
5530         beos)
5531                 # beos doesn't like the default, either.
5532                 ;;
5533         hpux*)
5534                 # hpux doesn't like the default, either.
5535                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
5536                 ;;
5537         *)
5538                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5539                 ;;
5540         esac
5541         case "$xxx" in
5542         '') ;;
5543         *)      
5544                 # Only add $xxx if it isn't already in ccdlflags.
5545                 case " $ccdlflags " in
5546                 *" $xxx "*)     ;;
5547                 *)      ccdlflags="$ccdlflags $xxx"
5548                         cat <<EOM >&4
5549
5550 Adding $xxx to the flags
5551 passed to $ld so that the perl executable will find the 
5552 installed shared $libperl.
5553
5554 EOM
5555                         ;;
5556                 esac
5557                 ;;
5558         esac
5559 fi
5560 # Fix ccdlflags in AIX for building external extensions.
5561 # (For building Perl itself bare -bE:perl.exp is needed,
5562 #  Makefile.SH takes care of this.)
5563 case "$osname" in
5564 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
5565 esac
5566 # Respect a hint or command-line value.
5567 case "$shrpenv" in
5568 '') shrpenv="$tmp_shrpenv" ;;
5569 esac
5570 case "$ldlibpthname" in
5571 '')     ldlibpthname=LD_LIBRARY_PATH ;;
5572 none)   ldlibpthname='' ;;
5573 esac
5574
5575 : determine where manual pages go
5576 set man1dir man1dir none
5577 eval $prefixit
5578 $cat <<EOM
5579
5580 $spackage has manual pages available in source form.
5581 EOM
5582 case "$nroff" in
5583 nroff)
5584         echo "However, you don't have nroff, so they're probably useless to you."
5585         case "$man1dir" in
5586         '') man1dir="none";;
5587         esac;;
5588 esac
5589 echo "If you don't want the manual sources installed, answer 'none'."
5590 case "$man1dir" in
5591 ' ') dflt=none
5592         ;;
5593 '')
5594         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5595         lookpath="$lookpath $prefixexp/man/p_man/man1"
5596         lookpath="$lookpath $prefixexp/man/u_man/man1"
5597         lookpath="$lookpath $prefixexp/man/man.1"
5598         case "$sysman" in
5599         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5600         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5601         esac
5602         set dflt
5603         eval $prefixup
5604         ;;
5605 *)  dflt="$man1dir"
5606         ;;
5607 esac
5608 echo " "
5609 fn=dn+~
5610 rp="Where do the main $spackage manual pages (source) go?"
5611 . ./getfile
5612 if $test "X$man1direxp" != "X$ansexp"; then
5613         installman1dir=''
5614 fi
5615 man1dir="$ans"
5616 man1direxp="$ansexp"
5617 case "$man1dir" in
5618 '')     man1dir=' '
5619         installman1dir='';;
5620 esac
5621
5622 : Change installation prefix, if necessary.
5623 if $test X"$prefix" != X"$installprefix"; then
5624         installman1dir=`echo $man1direxp | $sed 's#^$prefix#$installprefix#'`
5625 else
5626         installman1dir="$man1direxp"
5627 fi
5628
5629 : What suffix to use on installed man pages
5630
5631 case "$man1dir" in
5632 ' ')
5633         man1ext='0'
5634         ;;
5635 *)
5636         rp="What suffix should be used for the main $spackage man pages?"
5637         case "$man1ext" in
5638         '')     case "$man1dir" in
5639                 *1)  dflt=1 ;;
5640                 *1p) dflt=1p ;;
5641                 *1pm) dflt=1pm ;;
5642                 *l) dflt=l;;
5643                 *n) dflt=n;;
5644                 *o) dflt=o;;
5645                 *p) dflt=p;;
5646                 *C) dflt=C;;
5647                 *L) dflt=L;;
5648                 *L1) dflt=L1;;
5649                 *) dflt=1;;
5650                 esac
5651                 ;;
5652         *)      dflt="$man1ext";;
5653         esac
5654         . ./myread
5655         man1ext="$ans"
5656         ;;
5657 esac
5658
5659 : see if we can have long filenames
5660 echo " "
5661 rmlist="$rmlist /tmp/cf$$"
5662 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5663 first=123456789abcdef
5664 second=/tmp/cf$$/$first
5665 $rm -f $first $second
5666 if (echo hi >$first) 2>/dev/null; then
5667         if $test -f 123456789abcde; then
5668                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
5669                 val="$undef"
5670         else
5671                 if (echo hi >$second) 2>/dev/null; then
5672                         if $test -f /tmp/cf$$/123456789abcde; then
5673                                 $cat <<'EOM'
5674 That's peculiar... You can have filenames longer than 14 characters, but only
5675 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
5676 I shall consider your system cannot support long filenames at all.
5677 EOM
5678                                 val="$undef"
5679                         else
5680                                 echo 'You can have filenames longer than 14 characters.' >&4
5681                                 val="$define"
5682                         fi
5683                 else
5684                         $cat <<'EOM'
5685 How confusing! Some of your filesystems are sane enough to allow filenames
5686 longer than 14 characters but some others like /tmp can't even think about them.
5687 So, for now on, I shall assume your kernel does not allow them at all.
5688 EOM
5689                         val="$undef"
5690                 fi
5691         fi
5692 else
5693         $cat <<'EOM'
5694 You can't have filenames longer than 14 chars.  You can't even think about them!
5695 EOM
5696         val="$undef"
5697 fi 
5698 set d_flexfnam
5699 eval $setvar
5700 $rm -rf /tmp/cf$$ 123456789abcde*
5701
5702 : determine where library module manual pages go
5703 set man3dir man3dir none
5704 eval $prefixit
5705 $cat <<EOM
5706
5707 $spackage has manual pages for many of the library modules.
5708 EOM
5709
5710 case "$nroff" in
5711 nroff)
5712         $cat <<'EOM'
5713 However, you don't have nroff, so they're probably useless to you.
5714 EOM
5715         case "$man3dir" in
5716         '') man3dir="none";;
5717         esac;;
5718 esac
5719
5720 case "$d_flexfnam" in
5721 undef)
5722         $cat <<'EOM'
5723 However, your system can't handle the long file names like File::Basename.3. 
5724 EOM
5725         case "$man3dir" in
5726         '') man3dir="none";;
5727         esac;;
5728 esac
5729
5730 echo "If you don't want the manual sources installed, answer 'none'."
5731 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5732 case "$man3dir" in
5733 '')     dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
5734         if $test -d "$privlib/man/man3"; then
5735                 cat <<EOM >&4
5736
5737 WARNING:  Previous versions of perl installed man3 pages into
5738 $privlib/man/man3.  This version will suggest a 
5739 new default of $dflt.  
5740 EOM
5741                 tdflt=$dflt
5742                 dflt='n'
5743                 rp='Do you wish to preserve the old behavior?(y/n)'
5744                 . ./myread
5745                 case "$ans" in
5746                 y*) dflt="$privlib/man/man3" ;;
5747                 *)  dflt=$tdflt ;;
5748                 esac
5749     fi
5750         ;;
5751 ' ') dflt=none;;
5752 *)      dflt="$man3dir" ;;
5753 esac
5754 echo " "
5755 fn=dn+~
5756 rp="Where do the $package library man pages (source) go?"
5757 . ./getfile
5758 man3dir="$ans"
5759 man3direxp="$ansexp"
5760 case "$man1dir" in
5761 '')     man3dir=' '
5762         installman3dir='';;
5763 esac
5764
5765 : Change installation prefix, if necessary.
5766 if $test X"$prefix" != X"$installprefix"; then
5767         installman3dir=`echo $man3direxp | $sed 's#^$prefix#$installprefix#'`
5768 else
5769         installman3dir="$man3direxp"
5770 fi
5771
5772 : What suffix to use on installed man pages
5773 case "$man3dir" in
5774 ' ')
5775         man3ext='0'
5776         ;;
5777 *)
5778         rp="What suffix should be used for the $package library man pages?"
5779         case "$man3ext" in
5780         '')     case "$man3dir" in
5781                 *3)  dflt=3 ;;
5782                 *3p) dflt=3p ;;
5783                 *3pm) dflt=3pm ;;
5784                 *l) dflt=l;;
5785                 *n) dflt=n;;
5786                 *o) dflt=o;;
5787                 *p) dflt=p;;
5788                 *C) dflt=C;;
5789                 *L) dflt=L;;
5790                 *L3) dflt=L3;;
5791                 *) dflt=3;;
5792                 esac
5793                 ;;
5794         *)      dflt="$man3ext";;
5795         esac
5796         . ./myread
5797         man3ext="$ans"
5798         ;;
5799 esac
5800
5801 : see if we have to deal with yellow pages, now NIS.
5802 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5803         if $test -f /usr/etc/nibindd; then
5804                 echo " "
5805                 echo "I'm fairly confident you're on a NeXT."
5806                 echo " "
5807                 rp='Do you get the hosts file via NetInfo?'
5808                 dflt=y
5809                 case "$hostcat" in
5810                 nidump*) ;;
5811                 '') ;;
5812                 *) dflt=n;;
5813                 esac
5814                 . ./myread
5815                 case "$ans" in
5816                 y*) hostcat='nidump hosts .';;
5817                 *)      case "$hostcat" in
5818                         nidump*) hostcat='';;
5819                         esac
5820                         ;;
5821                 esac
5822         fi
5823         case "$hostcat" in
5824         nidump*) ;;
5825         *)
5826                 case "$hostcat" in
5827                 *ypcat*) dflt=y;;
5828                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5829                                 dflt=y
5830                         else
5831                                 dflt=n
5832                         fi;;
5833                 *) dflt=n;;
5834                 esac
5835                 echo " "
5836                 rp='Are you getting the hosts file via yellow pages?'
5837                 . ./myread
5838                 case "$ans" in
5839                 y*) hostcat='ypcat hosts';;
5840                 *) hostcat='cat /etc/hosts';;
5841                 esac
5842                 ;;
5843         esac
5844 fi
5845 case "$hostcat" in
5846 '') hostcat='cat /etc/hosts';;
5847 esac
5848 case "$groupcat" in
5849 '') groupcat='cat /etc/group';;
5850 esac
5851 case "$passcat" in
5852 '') passcat='cat /etc/passwd';;
5853 esac
5854
5855 : now get the host name
5856 echo " "
5857 echo "Figuring out host name..." >&4
5858 case "$myhostname" in
5859 '') cont=true
5860         echo 'Maybe "hostname" will work...'
5861         if tans=`sh -c hostname 2>&1` ; then
5862                 myhostname=$tans
5863                 phostname=hostname
5864                 cont=''
5865         fi
5866         ;;
5867 *) cont='';;
5868 esac
5869 if $test "$cont"; then
5870         if ./xenix; then
5871                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
5872                 if tans=`cat /etc/systemid 2>&1` ; then
5873                         myhostname=$tans
5874                         phostname='cat /etc/systemid'
5875                         echo "Whadyaknow.  Xenix always was a bit strange..."
5876                         cont=''
5877                 fi
5878         elif $test -r /etc/systemid; then
5879                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5880         fi
5881 fi
5882 if $test "$cont"; then
5883         echo 'No, maybe "uuname -l" will work...'
5884         if tans=`sh -c 'uuname -l' 2>&1` ; then
5885                 myhostname=$tans
5886                 phostname='uuname -l'
5887         else
5888                 echo 'Strange.  Maybe "uname -n" will work...'
5889                 if tans=`sh -c 'uname -n' 2>&1` ; then
5890                         myhostname=$tans
5891                         phostname='uname -n'
5892                 else
5893                         echo 'Oh well, maybe I can mine it out of whoami.h...'
5894                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5895                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5896                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5897                         else
5898                                 case "$myhostname" in
5899                                 '') echo "Does this machine have an identity crisis or something?"
5900                                         phostname='';;
5901                                 *)
5902                                         echo "Well, you said $myhostname before..."
5903                                         phostname='echo $myhostname';;
5904                                 esac
5905                         fi
5906                 fi
5907         fi
5908 fi
5909 : you do not want to know about this
5910 set $myhostname
5911 myhostname=$1
5912
5913 : verify guess
5914 if $test "$myhostname" ; then
5915         dflt=y
5916         rp='Your host name appears to be "'$myhostname'".'" Right?"
5917         . ./myread
5918         case "$ans" in
5919         y*) ;;
5920         *) myhostname='';;
5921         esac
5922 fi
5923
5924 : bad guess or no guess
5925 while $test "X$myhostname" = X ; do
5926         dflt=''
5927         rp="Please type the (one word) name of your host:"
5928         . ./myread
5929         myhostname="$ans"
5930 done
5931
5932 : translate upper to lower if necessary
5933 case "$myhostname" in
5934 *[A-Z]*)
5935         echo "(Normalizing case in your host name)"
5936         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5937         ;;
5938 esac
5939
5940 case "$myhostname" in
5941 *.*)
5942         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5943         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5944         echo "(Trimming domain name from host name--host name is now $myhostname)"
5945         ;;
5946 *) case "$mydomain" in
5947         '')
5948                 {
5949                         test "X$hostcat" = "Xypcat hosts" &&
5950                         ypmatch "$myhostname" hosts 2>/dev/null |\
5951                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
5952                         $test -s hosts
5953                 } || {
5954                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
5955                                         /[       ]$myhostname[  . ]/p" > hosts
5956                 }
5957                 tmp_re="[       . ]"
5958                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
5959                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
5960                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5961                         hosts | $sort | $uniq | \
5962                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5963                 case `$echo X$dflt` in
5964                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
5965                         dflt=.
5966                         ;;
5967                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5968                         ;;
5969                 esac
5970                 case "$dflt" in
5971                 .)
5972                         tans=`./loc resolv.conf X /etc /usr/etc`
5973                         if $test -f "$tans"; then
5974                                 echo "(Attempting domain name extraction from $tans)"
5975                                 dflt=.`$sed -n -e 's/   / /g' \
5976                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
5977                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5978                                 case "$dflt" in
5979                                 .) dflt=.`$sed -n -e 's/        / /g' \
5980                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
5981                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5982                                         ;;
5983                                 esac
5984                         fi
5985                         ;;
5986                 esac
5987                 case "$dflt" in
5988                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5989                         dflt=.`sh -c domainname 2>/dev/null`
5990                         case "$dflt" in
5991                         '') dflt='.';;
5992                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5993                         esac
5994                         ;;
5995                 esac
5996                 case "$dflt" in
5997                 .) echo "(Lost all hope -- silly guess then)"
5998                         dflt='.uucp'
5999                         ;;
6000                 esac
6001                 $rm -f hosts
6002                 ;;
6003         *) dflt="$mydomain";;
6004         esac;;
6005 esac
6006 echo " "
6007 rp="What is your domain name?"
6008 . ./myread
6009 tans="$ans"
6010 case "$ans" in
6011 '') ;;
6012 .*) ;;
6013 *) tans=".$tans";;
6014 esac
6015 mydomain="$tans"
6016
6017 : translate upper to lower if necessary
6018 case "$mydomain" in
6019 *[A-Z]*)
6020         echo "(Normalizing case in your domain name)"
6021         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6022         ;;
6023 esac
6024
6025 : a little sanity check here
6026 case "$phostname" in
6027 '') ;;
6028 *)
6029         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6030         $myhostname$mydomain|$myhostname) ;;
6031         *)
6032                 case "$phostname" in
6033                 sed*)
6034                         echo "(That doesn't agree with your whoami.h file, by the way.)"
6035                         ;;
6036                 *)
6037                         echo "(That doesn't agree with your $phostname command, by the way.)"
6038                         ;;
6039                 esac
6040         ;;
6041         esac
6042         ;;
6043 esac
6044
6045 $cat <<EOM
6046
6047 I need to get your e-mail address in Internet format if possible, i.e.
6048 something like user@host.domain. Please answer accurately since I have
6049 no easy means to double check it. The default value provided below
6050 is most probably close to the reality but may not be valid from outside
6051 your organization...
6052
6053 EOM
6054 cont=x
6055 while test "$cont"; do
6056         case "$cf_email" in
6057         '') dflt="$cf_by@$myhostname$mydomain";;
6058         *) dflt="$cf_email";;
6059         esac
6060         rp='What is your e-mail address?'
6061         . ./myread
6062         cf_email="$ans"
6063         case "$cf_email" in
6064         *@*.*) cont='' ;;
6065         *)
6066                 rp='Address does not look like an Internet one.  Use it anyway?'
6067                 case "$fastread" in
6068                 yes) dflt=y ;;
6069                 *) dflt=n ;;
6070                 esac
6071                 . ./myread
6072                 case "$ans" in
6073                 y*) cont='' ;;
6074                 *) echo " " ;;
6075                 esac
6076                 ;;
6077         esac
6078 done
6079
6080 $cat <<EOM
6081
6082 If you or somebody else will be maintaining perl at your site, please
6083 fill in the correct e-mail address here so that they may be contacted
6084 if necessary. Currently, the "perlbug" program included with perl
6085 will send mail to this address in addition to perlbug@perl.com. You may
6086 enter "none" for no administrator.
6087
6088 EOM
6089 case "$perladmin" in
6090 '') dflt="$cf_email";;
6091 *) dflt="$perladmin";;
6092 esac
6093 rp='Perl administrator e-mail address'
6094 . ./myread
6095 perladmin="$ans"
6096
6097 : figure out how to guarantee perl startup
6098 case "$startperl" in
6099 '')
6100         case "$sharpbang" in
6101         *!)
6102                 $cat <<EOH
6103
6104 I can use the #! construct to start perl on your system. This will
6105 make startup of perl scripts faster, but may cause problems if you
6106 want to share those scripts and perl is not in a standard place
6107 ($binexp/perl) on all your platforms. The alternative is to force
6108 a shell by starting the script with a single ':' character.
6109
6110 EOH
6111                 dflt="$binexp/perl"
6112                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6113                 . ./myread
6114                 case "$ans" in
6115                 none)   startperl=": # use perl";;
6116                 *)      startperl="#!$ans"
6117                         if $test 30 -lt `echo "$ans" | wc -c`; then
6118                                 $cat >&4 <<EOM
6119
6120 WARNING:  Some systems limit the #! command to 32 characters.
6121 If you experience difficulty running Perl scripts with #!, try
6122 installing Perl in a directory with a shorter pathname.
6123
6124 EOM
6125                         fi ;;
6126                 esac
6127                 ;;
6128         *) startperl=": # use perl"
6129                 ;;
6130         esac
6131         ;;
6132 esac
6133 echo "I'll use $startperl to start perl scripts."
6134
6135 : figure best path for perl in scripts
6136 case "$perlpath" in
6137 '')
6138         perlpath="$binexp/perl"
6139         case "$startperl" in
6140         *!*) ;;
6141         *)
6142                 $cat <<EOH
6143
6144 I will use the "eval 'exec'" idiom to start Perl on your system.
6145 I can use the full path of your Perl binary for this purpose, but
6146 doing so may cause problems if you want to share those scripts and
6147 Perl is not always in a standard place ($binexp/perl).
6148
6149 EOH
6150                 dflt="$binexp/perl"
6151                 rp="What path shall I use in \"eval 'exec'\"?"
6152                 . ./myread
6153                 perlpath="$ans"
6154                 ;;
6155         esac
6156         ;;
6157 esac
6158 case "$startperl" in
6159 *!*)    ;;
6160 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6161 esac
6162
6163 : determine where public executable scripts go
6164 set scriptdir scriptdir
6165 eval $prefixit
6166 case "$scriptdir" in
6167 '')
6168         dflt="$bin"
6169         : guess some guesses
6170         $test -d /usr/share/scripts && dflt=/usr/share/scripts
6171         $test -d /usr/share/bin     && dflt=/usr/share/bin
6172         $test -d /usr/local/script  && dflt=/usr/local/script
6173         $test -d /usr/local/scripts && dflt=/usr/local/scripts
6174         $test -d $prefixexp/script  && dflt=$prefixexp/script
6175         set dflt
6176         eval $prefixup
6177         ;;
6178 *)  dflt="$scriptdir"
6179         ;;
6180 esac
6181 $cat <<EOM
6182  
6183 Some installations have a separate directory just for executable scripts so
6184 that they can mount it across multiple architectures but keep the scripts in
6185 one spot.  You might, for example, have a subdirectory of /usr/share for this.
6186 Or you might just lump your scripts in with all your other executables.
6187  
6188 EOM
6189 fn=d~
6190 rp='Where do you keep publicly executable scripts?'
6191 . ./getfile
6192 if $test "X$ansexp" != "X$scriptdirexp"; then
6193         installscript=''
6194 fi
6195 scriptdir="$ans"
6196 scriptdirexp="$ansexp"
6197 : Change installation prefix, if necessary.
6198 if $test X"$prefix" != X"$installprefix"; then
6199         installscript=`echo $scriptdirexp | sed 's#^$prefix#$installprefix#'`
6200 else
6201         installscript="$scriptdirexp"
6202 fi
6203
6204 $cat <<EOM
6205
6206 After $package is installed, you may wish to install various
6207 add-on modules and utilities.  Typically, these add-ons will
6208 be installed under $prefix with the rest
6209 of this package.  However, you may wish to install such add-ons
6210 elsewhere under a different prefix.
6211
6212 If you do not wish to put everything under a single prefix, that's
6213 ok.  You will be prompted for the individual locations; this siteprefix
6214 is only used to suggest the defaults.
6215
6216 The default should be fine for most people.
6217
6218 EOM
6219 fn=d~+
6220 rp='Installation prefix to use for add-on modules and utilities?'
6221 : XXX Here might be another good place for an installstyle setting.
6222 case "$siteprefix" in
6223 '') dflt=$prefix ;;
6224 *)  dflt=$siteprefix ;;
6225 esac
6226 . ./getfile
6227 oldsiteprefix=''
6228 case "$siteprefix" in
6229 '') ;;
6230 *)
6231         case "$ans" in
6232         "$prefix") ;;
6233         *) oldsiteprefix="$prefix";;
6234         esac
6235         ;;
6236 esac
6237 siteprefix="$ans"
6238 siteprefixexp="$ansexp"
6239
6240 : determine where site specific libraries go.
6241 : Usual default is /usr/local/lib/perl5/site_perl
6242 : The default "style" setting is made in installstyle.U
6243 : XXX No longer works with Prefixit stuff.
6244 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6245 case "$installstyle" in
6246 *lib/perl5*) dflt=$siteprefix/lib/site_$prog/ ;;
6247 *)       dflt=$siteprefix/lib/site_$prog ;;
6248 esac
6249 $cat <<EOM
6250
6251 The installation process will create a directory for
6252 site-specific extensions and modules.  Most users find it convenient
6253 to place all site-specific files in this directory rather than in the
6254 main distribution directory.
6255
6256 EOM
6257 fn=d~+
6258 rp='Pathname for the site-specific library files?'
6259 . ./getfile
6260 sitelib="$ans"
6261 sitelibexp="$ansexp"
6262 : Change installation prefix, if necessary.
6263 if $test X"$prefix" != X"$installprefix"; then
6264         installsitelib=`echo $sitelibexp | sed 's#^$prefix#$installprefix#'`
6265 else
6266         installsitelib="$sitelibexp"
6267 fi
6268
6269 : determine where site specific architecture-dependent libraries go.
6270 : sitelib  default is /usr/local/lib/perl5/site_perl/
6271 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6272 : sitelib may have an optional trailing /share.
6273 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6274 tdflt="$tdflt/$apiversion/$archname"
6275 set sitearch sitearch none
6276 eval $prefixit
6277 case "$sitearch" in
6278 '')     dflt="$tdflt" ;;
6279 *)      dflt="$sitearch" ;;
6280 esac
6281 $cat <<EOM
6282
6283 The installation process will also create a directory for
6284 architecture-dependent site-specific extensions and modules.
6285
6286 EOM
6287 fn=nd~+
6288 rp='Pathname for the site-specific architecture-dependent library files?'
6289 . ./getfile
6290 sitearch="$ans"
6291 sitearchexp="$ansexp"
6292 : Change installation prefix, if necessary.
6293 if $test X"$prefix" != X"$installprefix"; then
6294         installsitearch=`echo $sitearchexp | sed 's#^$prefix#$installprefix#'`
6295 else
6296         installsitearch="$sitearchexp"
6297 fi
6298
6299 cat <<EOM
6300
6301 Previous version of $package used the standard IO mechanisms as defined
6302 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
6303 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6304 the default.  This abstraction layer can use AT&T's sfio (if you already
6305 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
6306 problems with some extension modules.  Using PerlIO with stdio is safe,
6307 but it is slower than plain stdio and therefore is not the default.
6308
6309 If this doesn't make any sense to you, just accept the default 'n'.
6310 EOM
6311 case "$useperlio" in
6312 $define|true|[yY]*)     dflt='y';;
6313 *) dflt='n';;
6314 esac
6315 rp='Use the experimental PerlIO abstraction layer?'
6316 . ./myread
6317 case "$ans" in
6318 y|Y) 
6319         val="$define"
6320         ;;     
6321 *)      
6322         echo "Ok, doing things the stdio way"
6323         val="$undef"
6324         ;;
6325 esac
6326 set useperlio
6327 eval $setvar 
6328
6329 : Check how to convert floats to strings.
6330 if test "X$d_Gconvert" = X; then
6331         echo " "
6332         echo "Checking for an efficient way to convert floats to strings."
6333         $cat >try.c <<'EOP'
6334 #ifdef TRY_gconvert
6335 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6336 char *myname = "gconvert";
6337 #endif
6338 #ifdef TRY_gcvt
6339 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6340 char *myname = "gcvt";
6341 #endif
6342 #ifdef TRY_sprintf
6343 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6344 char *myname = "sprintf";
6345 #endif
6346
6347 #include <stdio.h>
6348
6349 int
6350 checkit(expect, got)
6351 char *expect;
6352 char *got;
6353 {
6354     if (strcmp(expect, got)) {
6355                 printf("%s oddity:  Expected %s, got %s\n",
6356                         myname, expect, got);
6357                 exit(1);
6358         }
6359 }
6360
6361 int main()
6362
6363         char buf[64]; 
6364         buf[63] = '\0';
6365
6366         /* This must be 1st test on (which?) platform */
6367         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6368         Gconvert(0.1, 8, 0, buf);
6369         checkit("0.1", buf);
6370
6371         Gconvert(1.0, 8, 0, buf); 
6372         checkit("1", buf);
6373
6374         Gconvert(0.0, 8, 0, buf); 
6375         checkit("0", buf);
6376
6377         Gconvert(-1.0, 8, 0, buf); 
6378         checkit("-1", buf);
6379
6380         /* Some Linux gcvt's give 1.e+5 here. */
6381         Gconvert(100000.0, 8, 0, buf); 
6382         checkit("100000", buf);
6383         
6384         /* Some Linux gcvt's give -1.e+5 here. */
6385         Gconvert(-100000.0, 8, 0, buf); 
6386         checkit("-100000", buf);
6387
6388         exit(0);
6389 }
6390 EOP
6391         case "$d_Gconvert" in
6392         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6393         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6394         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6395         *) xxx_list='gconvert gcvt sprintf' ;;
6396         esac
6397
6398         for xxx_convert in $xxx_list; do
6399                 echo "Trying $xxx_convert"
6400                 $rm -f try try$_o
6401                 set try -DTRY_$xxx_convert
6402                 if eval $compile; then
6403                         echo "$xxx_convert" found. >&4
6404                         if ./try; then
6405                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
6406                                 break;
6407                         else
6408                                 echo "...But $xxx_convert didn't work as I expected."
6409                         fi
6410                 else
6411                         echo "$xxx_convert NOT found." >&4
6412                 fi
6413         done
6414                 
6415         case "$xxx_convert" in
6416         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6417         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6418         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6419         esac
6420 fi
6421
6422 : Initialize h_fcntl
6423 h_fcntl=false
6424
6425 : Initialize h_sysfile
6426 h_sysfile=false
6427
6428 : access call always available on UNIX
6429 set access d_access
6430 eval $inlibc
6431
6432 : locate the flags for 'access()'
6433 case "$d_access" in
6434 "$define")
6435         echo " "
6436         $cat >access.c <<'EOCP'
6437 #include <sys/types.h>
6438 #ifdef I_FCNTL
6439 #include <fcntl.h>
6440 #endif
6441 #ifdef I_SYS_FILE
6442 #include <sys/file.h>
6443 #endif
6444 #ifdef I_UNISTD
6445 #include <unistd.h>
6446 #endif
6447 int main() {
6448         exit(R_OK);
6449 }
6450 EOCP
6451         : check sys/file.h first, no particular reason here
6452         if $test `./findhdr sys/file.h` && \
6453                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6454                 h_sysfile=true;
6455                 echo "<sys/file.h> defines the *_OK access constants." >&4
6456         elif $test `./findhdr fcntl.h` && \
6457                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6458                 h_fcntl=true;
6459                 echo "<fcntl.h> defines the *_OK access constants." >&4
6460         elif $test `./findhdr unistd.h` && \
6461                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6462                 echo "<unistd.h> defines the *_OK access constants." >&4
6463         else
6464                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6465         fi
6466         ;;
6467 esac
6468 $rm -f access*
6469
6470 : see if accessx exists
6471 set accessx d_accessx
6472 eval $inlibc
6473
6474 : see if alarm exists
6475 set alarm d_alarm
6476 eval $inlibc
6477
6478 : Look for GNU-cc style attribute checking
6479 echo " "
6480 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6481 $cat >attrib.c <<'EOCP'
6482 #include <stdio.h>
6483 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6484 EOCP
6485 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6486         if $contains 'warning' attrib.out >/dev/null 2>&1; then
6487                 echo "Your C compiler doesn't fully support __attribute__."
6488                 val="$undef"
6489         else
6490                 echo "Your C compiler supports __attribute__."
6491                 val="$define"
6492         fi
6493 else
6494         echo "Your C compiler doesn't seem to understand __attribute__ at all."
6495         val="$undef"
6496 fi
6497 set d_attribut
6498 eval $setvar
6499 $rm -f attrib*
6500
6501 : see if bcmp exists
6502 set bcmp d_bcmp
6503 eval $inlibc
6504
6505 : see if bcopy exists
6506 set bcopy d_bcopy
6507 eval $inlibc
6508
6509 : see if this is a unistd.h system
6510 set unistd.h i_unistd
6511 eval $inhdr
6512
6513 : see if getpgrp exists
6514 set getpgrp d_getpgrp
6515 eval $inlibc
6516
6517 case "$d_getpgrp" in
6518 "$define")
6519         echo " "
6520         echo "Checking to see which flavor of getpgrp is in use..."
6521         $cat >set.c <<EOP
6522 #$i_unistd I_UNISTD
6523 #include <sys/types.h>
6524 #ifdef I_UNISTD
6525 #  include <unistd.h>
6526 #endif
6527 int main()
6528 {
6529         if (getuid() == 0) {
6530                 printf("(I see you are running Configure as super-user...)\n");
6531                 setuid(1);
6532         }
6533 #ifdef TRY_BSD_PGRP
6534         if (getpgrp(1) == 0)
6535                 exit(0);
6536 #else
6537         if (getpgrp() > 0)
6538                 exit(0);
6539 #endif
6540         exit(1);
6541 }
6542 EOP
6543         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6544                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6545                 val="$define"
6546         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6547                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6548                 val="$undef"
6549         else
6550                 echo "I can't seem to compile and run the test program."
6551                 if ./usg; then
6552                         xxx="a USG one, i.e. you use getpgrp()."
6553                 else
6554                         # SVR4 systems can appear rather BSD-ish.
6555                         case "$i_unistd" in
6556                         $undef)
6557                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
6558                                 val="$define"
6559                                 ;;
6560                         $define)
6561                                 xxx="probably a USG one, i.e. you use getpgrp()."
6562                                 val="$undef"
6563                                 ;;
6564                         esac
6565                 fi
6566                 echo "Assuming your getpgrp is $xxx" >&4
6567         fi
6568         ;;
6569 *) val="$undef";;
6570 esac
6571 set d_bsdgetpgrp
6572 eval $setvar
6573 $rm -f set set.c
6574
6575 : see if setpgrp exists
6576 set setpgrp d_setpgrp
6577 eval $inlibc
6578
6579 case "$d_setpgrp" in
6580 "$define")
6581         echo " "
6582         echo "Checking to see which flavor of setpgrp is in use..."
6583         $cat >set.c <<EOP
6584 #$i_unistd I_UNISTD
6585 #include <sys/types.h>
6586 #ifdef I_UNISTD
6587 #  include <unistd.h>
6588 #endif
6589 int main()
6590 {
6591         if (getuid() == 0) {
6592                 printf("(I see you are running Configure as super-user...)\n");
6593                 setuid(1);
6594         }
6595 #ifdef TRY_BSD_PGRP
6596         if (-1 == setpgrp(1, 1))
6597                 exit(0);
6598 #else
6599         if (setpgrp() != -1)
6600                 exit(0);
6601 #endif
6602         exit(1);
6603 }
6604 EOP
6605         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6606                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6607                 val="$define"
6608         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6609                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6610                 val="$undef"
6611         else
6612                 echo "(I can't seem to compile and run the test program.)"
6613                 if ./usg; then
6614                         xxx="a USG one, i.e. you use setpgrp()."
6615                 else
6616                         # SVR4 systems can appear rather BSD-ish.
6617                         case "$i_unistd" in
6618                         $undef)
6619                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6620                                 val="$define"
6621                                 ;;
6622                         $define)
6623                                 xxx="probably a USG one, i.e. you use setpgrp()."
6624                                 val="$undef"
6625                                 ;;
6626                         esac
6627                 fi
6628                 echo "Assuming your setpgrp is $xxx" >&4
6629         fi
6630         ;;
6631 *) val="$undef";;
6632 esac
6633 set d_bsdsetpgrp
6634 eval $setvar
6635 $rm -f set set.c
6636 : see if bzero exists
6637 set bzero d_bzero
6638 eval $inlibc
6639
6640 : check for lengths of integral types
6641 echo " "
6642 case "$intsize" in
6643 '')
6644         echo "Checking to see how big your integers are..." >&4
6645         $cat >intsize.c <<'EOCP'
6646 #include <stdio.h>
6647 int main()
6648 {
6649         printf("intsize=%d;\n", sizeof(int));
6650         printf("longsize=%d;\n", sizeof(long));
6651         printf("shortsize=%d;\n", sizeof(short));
6652         exit(0);
6653 }
6654 EOCP
6655         set intsize
6656         if eval $compile_ok && ./intsize > /dev/null; then
6657                 eval `./intsize`
6658                 echo "Your integers are $intsize bytes long."
6659                 echo "Your long integers are $longsize bytes long."
6660                 echo "Your short integers are $shortsize bytes long."
6661         else
6662                 $cat >&4 <<EOM
6663 !
6664 Help! I can't compile and run the intsize test program: please enlighten me!
6665 (This is probably a misconfiguration in your system or libraries, and
6666 you really ought to fix it.  Still, I'll try anyway.)
6667 !
6668 EOM
6669                 dflt=4
6670                 rp="What is the size of an integer (in bytes)?"
6671                 . ./myread
6672                 intsize="$ans"
6673                 dflt=$intsize
6674                 rp="What is the size of a long integer (in bytes)?"
6675                 . ./myread
6676                 longsize="$ans"
6677                 dflt=2
6678                 rp="What is the size of a short integer (in bytes)?"
6679                 . ./myread
6680                 shortsize="$ans"
6681         fi
6682         ;;
6683 esac
6684 $rm -f intsize intsize.*
6685
6686 : see if signal is declared as pointer to function returning int or void
6687 echo " "
6688 xxx=`./findhdr signal.h`
6689 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6690 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
6691         echo "You have int (*signal())() instead of void." >&4
6692         val="$undef"
6693 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
6694         echo "You have void (*signal())()." >&4
6695         val="$define"
6696 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6697         echo "You have int (*signal())() instead of void." >&4
6698         val="$undef"
6699 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6700         echo "You have void (*signal())()." >&4
6701         val="$define"
6702 else
6703         case "$d_voidsig" in
6704         '')
6705         echo "I can't determine whether signal handler returns void or int..." >&4
6706                 dflt=void
6707                 rp="What type does your signal handler return?"
6708                 . ./myread
6709                 case "$ans" in
6710                 v*) val="$define";;
6711                 *) val="$undef";;
6712                 esac;;
6713         "$define")
6714                 echo "As you already told me, signal handler returns void." >&4
6715                 val="$define"
6716                 ;;
6717         *)      echo "As you already told me, signal handler returns int." >&4
6718                 val="$undef"
6719                 ;;
6720         esac
6721 fi
6722 set d_voidsig
6723 eval $setvar
6724 case "$d_voidsig" in
6725 "$define") signal_t="void";;
6726 *) signal_t="int";;
6727 esac
6728 $rm -f $$.tmp
6729
6730 : check for ability to cast large floats to 32-bit ints.
6731 echo " "
6732 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6733 if $test "$intsize" -ge 4; then
6734         xxx=int
6735 else
6736         xxx=long
6737 fi
6738 $cat >try.c <<EOCP
6739 #include <stdio.h>
6740 #include <sys/types.h>
6741 #include <signal.h>
6742 $signal_t blech(s) int s; { exit(3); }
6743 int main()
6744 {
6745         $xxx i32;
6746         double f, g;
6747         int result = 0;
6748         char str[16];
6749         signal(SIGFPE, blech);
6750
6751         /* Don't let compiler optimize the test away.  Store the number 
6752            in a writable string for gcc to pass to sscanf under HP/UX.
6753         */
6754         sprintf(str, "2147483647");
6755         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6756         g = 10 * f;
6757         i32  = ($xxx) g;
6758
6759         /* x86 processors will probably give 0x8000 0000, which is a
6760        sign change.  We don't want that.  We want to mimic SPARC
6761            behavior here, which is to preserve the sign and give
6762            back 0x7fff ffff.
6763         */
6764         if (i32 != ($xxx) f)
6765                 result |= 1;
6766         exit(result);
6767 }
6768 EOCP
6769 set try
6770 if eval $compile_ok; then
6771         ./try
6772         yyy=$?
6773 else
6774         echo "(I can't seem to compile the test program--assuming it can't)"
6775         yyy=1
6776 fi
6777 case "$yyy" in
6778 0)      val="$define"
6779         echo "Yup, it can."
6780         ;;
6781 *)      val="$undef"
6782         echo "Nope, it can't."
6783         ;;
6784 esac
6785 set d_casti32
6786 eval $setvar
6787 $rm -f try try.*
6788
6789 : check for ability to cast negative floats to unsigned
6790 echo " "
6791 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6792 $cat >try.c <<EOCP
6793 #include <stdio.h>
6794 #include <sys/types.h>
6795 #include <signal.h>
6796 $signal_t blech(s) int s; { exit(7); }
6797 $signal_t blech_in_list(s) int s; { exit(4); }
6798 unsigned long dummy_long(p) unsigned long p; { return p; }
6799 unsigned int dummy_int(p) unsigned int p; { return p; }
6800 unsigned short dummy_short(p) unsigned short p; { return p; }
6801 int main()
6802 {
6803         double f;
6804         unsigned long along;
6805         unsigned int aint;
6806         unsigned short ashort;
6807         int result = 0;
6808         char str[16];
6809         
6810         /* Frustrate gcc-2.7.2's optimizer which failed this test with
6811            a direct f = -123. assignment.  gcc-2.8.0 reportedly
6812            optimized the whole file away
6813         */
6814         /* Store the number in a writable string for gcc to pass to 
6815            sscanf under HP/UX.
6816         */
6817         sprintf(str, "-123");
6818         sscanf(str, "%lf", &f);  /* f = -123.; */
6819
6820         signal(SIGFPE, blech);
6821         along = (unsigned long)f;
6822         aint = (unsigned int)f;
6823         ashort = (unsigned short)f;
6824         if (along != (unsigned long)-123)
6825                 result |= 1;
6826         if (aint != (unsigned int)-123)
6827                 result |= 1;
6828         if (ashort != (unsigned short)-123)
6829                 result |= 1;
6830         sprintf(str, "1073741824.");
6831         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6832         f = f + f;
6833         along = 0;
6834         along = (unsigned long)f;
6835         if (along != 0x80000000)
6836                 result |= 2;
6837         f -= 1.;
6838         along = 0;
6839         along = (unsigned long)f;
6840         if (along != 0x7fffffff)
6841                 result |= 1;
6842         f += 2.;
6843         along = 0;
6844         along = (unsigned long)f;
6845         if (along != 0x80000001)
6846                 result |= 2;
6847         if (result)
6848                 exit(result);
6849         signal(SIGFPE, blech_in_list);
6850         sprintf(str, "123.");
6851         sscanf(str, "%lf", &f);  /* f = 123.; */
6852         along = dummy_long((unsigned long)f);
6853         aint = dummy_int((unsigned int)f);
6854         ashort = dummy_short((unsigned short)f);
6855         if (along != (unsigned long)123)
6856                 result |= 4;
6857         if (aint != (unsigned int)123)
6858                 result |= 4;
6859         if (ashort != (unsigned short)123)
6860                 result |= 4;
6861         exit(result);
6862
6863 }
6864 EOCP
6865 set try
6866 if eval $compile_ok; then
6867         ./try
6868         castflags=$?
6869 else
6870         echo "(I can't seem to compile the test program--assuming it can't)"
6871         castflags=7
6872 fi
6873 case "$castflags" in
6874 0)      val="$define"
6875         echo "Yup, it can."
6876         ;;
6877 *)      val="$undef"
6878         echo "Nope, it can't."
6879         ;;
6880 esac
6881 set d_castneg
6882 eval $setvar
6883 $rm -f try.*
6884
6885 : see if vprintf exists
6886 echo " "
6887 if set vprintf val -f d_vprintf; eval $csym; $val; then
6888         echo 'vprintf() found.' >&4
6889         val="$define"
6890         $cat >vprintf.c <<'EOF'
6891 #include <varargs.h>
6892
6893 int main() { xxx("foo"); }
6894
6895 xxx(va_alist)
6896 va_dcl
6897 {
6898         va_list args;
6899         char buf[10];
6900
6901         va_start(args);
6902         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6903 }
6904 EOF
6905         set vprintf
6906         if eval $compile && ./vprintf; then
6907                 echo "Your vsprintf() returns (int)." >&4
6908                 val2="$undef"
6909         else
6910                 echo "Your vsprintf() returns (char*)." >&4
6911                 val2="$define"
6912         fi
6913 else
6914         echo 'vprintf() NOT found.' >&4
6915                 val="$undef"
6916                 val2="$undef"
6917 fi
6918 set d_vprintf
6919 eval $setvar
6920 val=$val2
6921 set d_charvspr
6922 eval $setvar
6923
6924 : see if chown exists
6925 set chown d_chown
6926 eval $inlibc
6927
6928 : see if chroot exists
6929 set chroot d_chroot
6930 eval $inlibc
6931
6932 : see if chsize exists
6933 set chsize d_chsize
6934 eval $inlibc
6935
6936 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6937 while $test $# -ge 2; do
6938         case "$1" in
6939         $define) echo "#include <$2>";;
6940         esac ;
6941     shift 2;
6942 done > try.c;
6943 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6944 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6945         val="$define";
6946 else
6947         val="$undef";
6948 fi;
6949 set $varname;
6950 eval $setvar;
6951 $rm -f try.c try.o'
6952
6953 : see if this is a sys/uio.h system
6954 set sys/uio.h i_sysuio
6955 eval $inhdr
6956
6957 echo "Checking to see if your system supports struct iovec..." >&4
6958 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6959 eval $hasfield
6960 case "$d_iovec_s" in
6961 "$define")      echo "Yup, it does." >&4
6962                 ;;
6963 *)              echo "Nope, it doesn't." >&4
6964                 ;;
6965 esac
6966
6967 socketlib=''
6968 sockethdr=''
6969 : see whether socket exists
6970 echo " "
6971 $echo $n "Hmm... $c" >&4
6972 if set socket val -f d_socket; eval $csym; $val; then
6973         echo "Looks like you have Berkeley networking support." >&4
6974         d_socket="$define"
6975         if set setsockopt val -f; eval $csym; $val; then
6976                 d_oldsock="$undef"
6977         else
6978                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6979                 d_oldsock="$define"
6980         fi
6981 else
6982         if $contains socklib libc.list >/dev/null 2>&1; then
6983                 echo "Looks like you have Berkeley networking support." >&4
6984                 d_socket="$define"
6985                 : we will have to assume that it supports the 4.2 BSD interface
6986                 d_oldsock="$undef"
6987         else
6988                 echo "You don't have Berkeley networking in libc$_a..." >&4
6989                 if test "X$d_socket" = "X$define"; then
6990                    echo "...but you seem to believe that you have sockets." >&4
6991                 else
6992                         for net in net socket
6993                         do
6994                                 if test -f /usr/lib/lib$net$_a; then
6995                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
6996                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6997                                         if $contains socket libc.list >/dev/null 2>&1; then
6998                                                 d_socket="$define"
6999                                                 socketlib="-l$net"
7000                                                 case "$net" in
7001                                                 net)
7002                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
7003                                                         sockethdr="-I/usr/netinclude"
7004                                                         ;;
7005                                                 esac
7006                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
7007                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
7008                                                         d_oldsock="$undef"
7009                                                 else
7010                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
7011                                                         d_oldsock="$define"
7012                                                 fi
7013                                                 break
7014                                         fi
7015                                 fi
7016                         done
7017                         if test "X$d_socket" != "X$define"; then
7018                            echo "or anywhere else I see." >&4
7019                            d_socket="$undef"
7020                            d_oldsock="$undef"
7021                         fi
7022                 fi
7023         fi
7024 fi
7025
7026 : see if socketpair exists
7027 set socketpair d_sockpair
7028 eval $inlibc
7029
7030
7031 echo " "
7032 echo "Checking the availability of certain socket constants..." >& 4
7033 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
7034         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
7035         $cat >try.c <<EOF
7036 #include <sys/types.h>
7037 #include <sys/socket.h>
7038 int main() {
7039     int i = $ENUM;
7040 }
7041 EOF
7042         val="$undef"
7043         set try; if eval $compile; then
7044                 val="$define"
7045         fi
7046         set d_${enum}; eval $setvar
7047         $rm -f try.c try
7048 done
7049
7050 set sendmsg d_sendmsg
7051 eval $inlibc
7052
7053 set recvmsg d_recvmsg
7054 eval $inlibc
7055
7056 echo " "
7057 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
7058 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
7059 eval $hasfield
7060 case "$d_msghdr_s" in
7061 "$define")      echo "Yup, it does." >&4
7062                 ;;
7063 *)              echo "Nope, it doesn't." >&4
7064                 ;;
7065 esac
7066
7067 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
7068 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
7069 eval $hasfield
7070 case "$d_cmsghdr_s" in
7071 "$define")      echo "Yup, it does." >&4
7072                 ;;
7073 *)              echo "Nope, it doesn't." >&4
7074                 ;;
7075 esac
7076
7077 : check for const keyword
7078 echo " "
7079 echo 'Checking to see if your C compiler knows about "const"...' >&4
7080 $cat >const.c <<'EOCP'
7081 typedef struct spug { int drokk; } spug;
7082 int main()
7083 {
7084         const char *foo;
7085         const spug y;
7086 }
7087 EOCP
7088 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7089         val="$define"
7090         echo "Yup, it does."
7091 else
7092         val="$undef"
7093         echo "Nope, it doesn't."
7094 fi
7095 set d_const
7096 eval $setvar
7097
7098 : see if crypt exists
7099 echo " "
7100 if set crypt val -f d_crypt; eval $csym; $val; then
7101         echo 'crypt() found.' >&4
7102         val="$define"
7103         cryptlib=''
7104 else
7105         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7106         if $test -z "$cryptlib"; then
7107                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7108         else
7109                 cryptlib=-lcrypt
7110         fi
7111         if $test -z "$cryptlib"; then
7112                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7113         else
7114                 cryptlib=-lcrypt
7115         fi
7116         if $test -z "$cryptlib"; then
7117                 cryptlib=`./loc libcrypt$_a "" $libpth`
7118         else
7119                 cryptlib=-lcrypt
7120         fi
7121         if $test -z "$cryptlib"; then
7122                 echo 'crypt() NOT found.' >&4
7123                 val="$undef"
7124         else
7125                 val="$define"
7126         fi
7127 fi
7128 set d_crypt
7129 eval $setvar
7130
7131 : get csh whereabouts
7132 case "$csh" in
7133 'csh') val="$undef" ;;
7134 *) val="$define" ;;
7135 esac
7136 set d_csh
7137 eval $setvar
7138 : Respect a hint or command line value for full_csh.
7139 case "$full_csh" in
7140 '') full_csh=$csh ;;
7141 esac
7142
7143 : see if cuserid exists
7144 set cuserid d_cuserid
7145 eval $inlibc
7146
7147 : see if this is a limits.h system
7148 set limits.h i_limits
7149 eval $inhdr
7150
7151 : see if this is a float.h system
7152 set float.h i_float
7153 eval $inhdr
7154
7155 : See if number of significant digits in a double precision number is known
7156 echo " "
7157 $cat >dbl_dig.c <<EOM
7158 #$i_limits I_LIMITS
7159 #$i_float I_FLOAT
7160 #ifdef I_LIMITS
7161 #include <limits.h>
7162 #endif
7163 #ifdef I_FLOAT
7164 #include <float.h>
7165 #endif
7166 #ifdef DBL_DIG
7167 printf("Contains DBL_DIG");
7168 #endif
7169 EOM
7170 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7171 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7172         echo "DBL_DIG found." >&4
7173         val="$define"
7174 else
7175         echo "DBL_DIG NOT found." >&4
7176         val="$undef"
7177 fi
7178 $rm -f dbl_dig.?
7179 set d_dbl_dig
7180 eval $setvar
7181
7182
7183 if $test X"$use64bits" = X"$define"; then
7184         : see if dbminit64 exists
7185         set dbminit64 d_dbminit64
7186         eval $inlibc
7187
7188         : see if dbmclose64 exists
7189         set dbmclose64 d_dbmclose64
7190         eval $inlibc
7191
7192         : see if fetch64 exists
7193         set fetch64 d_fetch64
7194         eval $inlibc
7195
7196         : see if store64 exists
7197         set store64 d_store64
7198         eval $inlibc
7199
7200         : see if delete64 exists
7201         set delete64 d_delete64
7202         eval $inlibc
7203
7204         : see if firstkey64 exists
7205         set firstkey64 d_firstkey64
7206         eval $inlibc
7207
7208         : see if nextkey64 exists
7209         set nextkey64 d_nextkey64
7210         eval $inlibc
7211 else
7212         val="$undef"
7213         for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7214         do
7215                 set $xxx
7216                 eval $setvar
7217         done
7218 fi
7219
7220 : see if difftime exists
7221 set difftime d_difftime
7222 eval $inlibc
7223
7224 : see if sys/stat.h is available
7225 set sys/stat.h i_sysstat
7226 eval $inhdr
7227
7228 : see if this is a dirent system
7229 echo " "
7230 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7231         val="$define"
7232         echo "<dirent.h> found." >&4
7233 else
7234         val="$undef"
7235         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7236                 echo "<sys/dir.h> found." >&4
7237                 echo " "
7238         else
7239                 xinc=`./findhdr sys/ndir.h`
7240         fi
7241         echo "<dirent.h> NOT found." >&4
7242 fi
7243 set i_dirent
7244 eval $setvar
7245
7246 : Look for type of directory structure.
7247 echo " "
7248 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7249
7250 case "$direntrytype" in
7251 ''|' ')
7252         case "$i_dirent" in
7253         $define) guess1='struct dirent' ;;
7254         *) guess1='struct direct'  ;;
7255         esac
7256         ;;
7257 *)      guess1="$direntrytype"
7258         ;;
7259 esac
7260
7261 case "$guess1" in
7262 'struct dirent') guess2='struct direct' ;;
7263 *) guess2='struct dirent' ;;
7264 esac
7265                 
7266 if $contains "$guess1" try.c >/dev/null 2>&1; then
7267         direntrytype="$guess1"
7268         echo "Your directory entries are $direntrytype." >&4
7269 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7270         direntrytype="$guess2"
7271         echo "Your directory entries seem to be $direntrytype." >&4
7272 else
7273         echo "I don't recognize your system's directory entries." >&4
7274         rp="What type is used for directory entries on this system?"
7275         dflt="$guess1"
7276         . ./myread
7277         direntrytype="$ans"
7278 fi
7279 $rm -f try.c
7280
7281
7282 : see if the directory entry stores field length
7283 echo " "
7284 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7285 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7286         echo "Good, your directory entry keeps length information in d_namlen." >&4
7287         val="$define"
7288 else
7289         echo "Your directory entry does not know about the d_namlen field." >&4
7290         val="$undef"
7291 fi
7292 set d_dirnamlen
7293 eval $setvar
7294 $rm -f try.c
7295
7296
7297 if $test X"$use64bits" = X"$define"; then
7298         : see if fstat64 exists
7299         set fstat64 d_fstat64
7300         eval $inlibc
7301
7302         : see if ftruncate64 exists
7303         set ftruncate64 d_ftruncate64
7304         eval $inlibc
7305
7306         : see if lockf64 exists
7307         set lockf64 d_lockf64
7308         eval $inlibc
7309
7310         : see if llseek exists
7311         set llseek d_llseek
7312         eval $inlibc
7313
7314         : see if lseek64 exists
7315         set lseek64 d_lseek64
7316         eval $inlibc
7317
7318         : see if lstat64 exists
7319         set lstat64 d_lstat64
7320         eval $inlibc
7321
7322         : see if open64 exists
7323         set open64 d_open64
7324         eval $inlibc
7325
7326         : see if opendir64 exists
7327         set opendir64 d_opendir64
7328         eval $inlibc
7329
7330         : see if readdir64 exists
7331         set readdir64 d_readdir64
7332         eval $inlibc
7333
7334         : see if seekdir64 exists
7335         set seekdir64 d_seekdir64
7336         eval $inlibc
7337
7338         : see if stat64 exists
7339         set stat64 d_stat64
7340         eval $inlibc
7341
7342         : see if telldir64 exists
7343         set telldir64 d_telldir64
7344         eval $inlibc
7345
7346         : see if truncate64 exists
7347         set truncate64 d_truncate64
7348         eval $inlibc
7349
7350         : check for off64_t
7351         echo " "
7352         echo $n "Checking to see if your system supports off64_t...$c" >&4
7353         $cat >try.c <<EOCP
7354 #include <sys/types.h>
7355 #include <unistd.h>
7356 off64_t foo() { off64_t x; x = 7; return x; }'
7357 EOCP
7358         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7359                 val="$define"
7360                 echo " Yup, it does." >&4
7361         else
7362                 val="$undef"
7363                 echo " Nope, it doesn't." >&4
7364         fi
7365         $rm -f try.*
7366         set d_off64_t
7367         eval $setvar
7368
7369         : check for offset_t
7370         echo " "
7371         echo $n "Checking to see if your system supports offset_t...$c" >&4
7372         $cat >try.c <<EOCP
7373 #include <sys/types.h>
7374 #include <unistd.h>
7375 offset_t foo() { offset_t x; x = 7; return x; }'
7376 EOCP
7377         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7378                 val="$define"
7379                 echo " Yup, it does." >&4
7380         else
7381                 val="$undef"
7382                 echo " Nope, it doesn't." >&4
7383         fi
7384         $rm -f try.*
7385         set d_offset_t
7386         eval $setvar
7387
7388         : check for ino64_t
7389         echo " "
7390         echo $n "Checking to see if your system supports ino64_t...$c" >&4
7391         val="$undef"
7392         case "$i_sysstat" in
7393         "$define" )
7394                 $cat >try.c <<EOCP
7395 #include <sys/types.h>
7396 #include <sys/stat.h>
7397 ino64_t foo() { ino64_t x; x = 7; return x; }'
7398 EOCP
7399                 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7400                         val="$define"
7401                 fi
7402                 $rm -f try.*
7403                 ;;
7404         esac
7405         if $test "X$val" = X"$define"; then
7406                 echo " Yup, it does." >&4
7407         else
7408                 echo " Nope, it doesn't." >&4
7409         fi
7410         set d_ino64_t
7411         eval $setvar
7412
7413         : check for struct flock64
7414         echo " "
7415         echo "Checking to see if your system supports struct flock64..." >&4
7416         if $h_fcntl; then
7417                 set d_flock64_s flock64 l_len define fcntl.h
7418                 eval $hasfield
7419         else
7420                 val="$undef"
7421                 set d_flock64_s
7422                 eval $setvar
7423         fi
7424         case "$d_flock64_s" in
7425         "$define")      echo "Yup, it does." >&4
7426                         ;;
7427         *)              echo "Nope, it doesn't." >&4
7428                         ;;
7429         esac
7430
7431         : check for struct dirent64
7432         echo " "
7433         echo "Checking to see if your system supports struct dirent64..." >&4
7434         set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7435         eval $hasfield
7436         case "$d_dirent64_s" in
7437         "$define")      echo "Yup, it does." >&4
7438                         ;;
7439         *)              echo "Nope, it doesn't." >&4
7440                         ;;
7441         esac
7442
7443 else
7444         val="$undef"
7445         for xxx in d_fstat64 d_ftruncate64 d_lockf64 d_lseek64 d_lstat64 d_open64 d_opendir64 d_readdir64 d_seekdir64 d_stat64 d_telldir64 d_truncate64 d_off64_t d_offset_t d_ino64_t d_flock64_s d_dirent64_s
7446         do
7447                 set $xxx
7448                 eval $setvar
7449         done
7450 fi
7451
7452 : see if dlerror exists
7453 xxx_runnm="$runnm"
7454 runnm=false
7455 set dlerror d_dlerror
7456 eval $inlibc
7457 runnm="$xxx_runnm"
7458
7459 : see if dlfcn is available
7460 set dlfcn.h i_dlfcn
7461 eval $inhdr
7462
7463 case "$usedl" in
7464 $define|y|true)
7465         $cat << EOM
7466
7467 On a few systems, the dynamically loaded modules that perl generates and uses
7468 will need a different extension than shared libs. The default will probably
7469 be appropriate.
7470
7471 EOM
7472         case "$dlext" in
7473         '')     dflt="$so" ;;
7474         *)      dflt="$dlext" ;;
7475         esac
7476         rp='What is the extension of dynamically loaded modules'
7477         . ./myread
7478         dlext="$ans"
7479         ;;
7480 *)
7481         dlext="none"
7482         ;;
7483 esac
7484
7485 : Check if dlsym need a leading underscore
7486 echo " "
7487 val="$undef"
7488
7489 case "$dlsrc" in
7490 dl_dlopen.xs)
7491         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7492         $cat >dyna.c <<'EOM'
7493 fred () { }
7494 EOM
7495
7496 $cat >fred.c<<EOM
7497
7498 #include <stdio.h>
7499 #$i_dlfcn I_DLFCN
7500 #ifdef I_DLFCN
7501 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
7502 #else
7503 #include <sys/types.h>
7504 #include <nlist.h>
7505 #include <link.h>
7506 #endif
7507
7508 extern int fred() ;
7509
7510 int main()
7511 {
7512     void * handle ;
7513     void * symbol ;
7514 #ifndef RTLD_LAZY
7515     int mode = 1 ;
7516 #else
7517     int mode = RTLD_LAZY ;
7518 #endif
7519     handle = dlopen("./dyna.$dlext", mode) ;
7520     if (handle == NULL) {
7521         printf ("1\n") ;
7522         fflush (stdout) ;
7523         exit(0);
7524     }
7525     symbol = dlsym(handle, "fred") ;
7526     if (symbol == NULL) {
7527         /* try putting a leading underscore */
7528         symbol = dlsym(handle, "_fred") ;
7529         if (symbol == NULL) {
7530             printf ("2\n") ;
7531             fflush (stdout) ;
7532             exit(0);
7533         }
7534         printf ("3\n") ;
7535     }
7536     else
7537         printf ("4\n") ;
7538     fflush (stdout) ;
7539     exit(0);
7540 }
7541 EOM
7542         : Call the object file tmp-dyna.o in case dlext=o.
7543         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
7544                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
7545                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
7546                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7547                 xxx=`./fred`
7548                 case $xxx in
7549                 1)      echo "Test program failed using dlopen." >&4
7550                         echo "Perhaps you should not use dynamic loading." >&4;;
7551                 2)      echo "Test program failed using dlsym." >&4
7552                         echo "Perhaps you should not use dynamic loading." >&4;;
7553                 3)      echo "dlsym needs a leading underscore" >&4
7554                         val="$define" ;;
7555                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
7556                 esac
7557         else
7558                 echo "I can't compile and run the test program." >&4
7559         fi
7560         ;;
7561 esac
7562                 
7563 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7564
7565 set d_dlsymun
7566 eval $setvar
7567
7568 hasproto='varname=$1; func=$2; shift; shift;
7569 while $test $# -ge 2; do
7570         case "$1" in
7571         $define) echo "#include <$2>";;
7572         esac ;
7573     shift 2;
7574 done > try.c;
7575 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7576 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7577         echo "$func() prototype found.";
7578         val="$define";
7579 else
7580         echo "$func() prototype NOT found.";
7581         val="$undef";
7582 fi;
7583 set $varname;
7584 eval $setvar;
7585 $rm -f try.c tryout.c'
7586
7587 : see if prototype for drand48 is available
7588 echo " "
7589 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7590 eval $hasproto
7591
7592 : see if dup2 exists
7593 set dup2 d_dup2
7594 eval $inlibc
7595
7596 : see if eaccess exists
7597 set eaccess d_eaccess
7598 eval $inlibc
7599
7600 : see if endgrent exists
7601 set endgrent d_endgrent
7602 eval $inlibc
7603
7604 : see if endhostent exists
7605 set endhostent d_endhent
7606 eval $inlibc
7607
7608 : see if endnetent exists
7609 set endnetent d_endnent
7610 eval $inlibc
7611
7612 : see if endprotoent exists
7613 set endprotoent d_endpent
7614 eval $inlibc
7615
7616 : see if endpwent exists
7617 set endpwent d_endpwent
7618 eval $inlibc
7619
7620 : see if endservent exists
7621 set endservent d_endsent
7622 eval $inlibc
7623
7624 : see if endspent exists
7625 set endspent d_endspent
7626 eval $inlibc
7627
7628 : Locate the flags for 'open()'
7629 echo " "
7630 $cat >open3.c <<'EOCP'
7631 #include <sys/types.h>
7632 #ifdef I_FCNTL
7633 #include <fcntl.h>
7634 #endif
7635 #ifdef I_SYS_FILE
7636 #include <sys/file.h>
7637 #endif
7638 int main() {
7639         if(O_RDONLY);
7640 #ifdef O_TRUNC
7641         exit(0);
7642 #else
7643         exit(1);
7644 #endif
7645 }
7646 EOCP
7647 : check sys/file.h first to get FREAD on Sun
7648 if $test `./findhdr sys/file.h` && \
7649                 set open3 -DI_SYS_FILE && eval $compile; then
7650         h_sysfile=true;
7651         echo "<sys/file.h> defines the O_* constants..." >&4
7652         if ./open3; then
7653                 echo "and you have the 3 argument form of open()." >&4
7654                 val="$define"
7655         else
7656                 echo "but not the 3 argument form of open().  Oh, well." >&4
7657                 val="$undef"
7658         fi
7659 elif $test `./findhdr fcntl.h` && \
7660                 set open3 -DI_FCNTL && eval $compile; then
7661         h_fcntl=true;
7662         echo "<fcntl.h> defines the O_* constants..." >&4
7663         if ./open3; then
7664                 echo "and you have the 3 argument form of open()." >&4
7665                 val="$define"
7666         else
7667                 echo "but not the 3 argument form of open().  Oh, well." >&4
7668                 val="$undef"
7669         fi
7670 else
7671         val="$undef"
7672         echo "I can't find the O_* constant definitions!  You got problems." >&4
7673 fi
7674 set d_open3
7675 eval $setvar
7676 $rm -f open3*
7677
7678 : check for non-blocking I/O stuff
7679 case "$h_sysfile" in
7680 true) echo "#include <sys/file.h>" > head.c;;
7681 *)
7682         case "$h_fcntl" in
7683         true) echo "#include <fcntl.h>" > head.c;;
7684         *) echo "#include <sys/fcntl.h>" > head.c;;
7685         esac
7686         ;;
7687 esac
7688 echo " "
7689 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7690 case "$o_nonblock" in
7691 '')
7692         $cat head.c > try.c
7693         $cat >>try.c <<'EOCP'
7694 int main() {
7695 #ifdef O_NONBLOCK
7696         printf("O_NONBLOCK\n");
7697         exit(0);
7698 #endif
7699 #ifdef O_NDELAY
7700         printf("O_NDELAY\n");
7701         exit(0);
7702 #endif
7703 #ifdef FNDELAY
7704         printf("FNDELAY\n");
7705         exit(0);
7706 #endif
7707         exit(0);
7708 }
7709 EOCP
7710         set try
7711         if eval $compile_ok; then
7712                 o_nonblock=`./try`
7713                 case "$o_nonblock" in
7714                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7715                 *) echo "Seems like we can use $o_nonblock.";;
7716                 esac
7717         else
7718                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7719         fi
7720         ;;
7721 *) echo "Using $hint value $o_nonblock.";;
7722 esac
7723 $rm -f try try.* .out core
7724
7725 echo " "
7726 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7727 case "$eagain" in
7728 '')
7729         $cat head.c > try.c
7730         $cat >>try.c <<EOCP
7731 #include <errno.h>
7732 #include <sys/types.h>
7733 #include <signal.h>
7734 #define MY_O_NONBLOCK $o_nonblock
7735 #ifndef errno  /* XXX need better Configure test */
7736 extern int errno;
7737 #endif
7738 $signal_t blech(x) int x; { exit(3); }
7739 EOCP
7740         $cat >> try.c <<'EOCP'
7741 int main()
7742 {
7743         int pd[2];
7744         int pu[2];
7745         char buf[1];
7746         char string[100];
7747
7748         pipe(pd);       /* Down: child -> parent */
7749         pipe(pu);       /* Up: parent -> child */
7750         if (0 != fork()) {
7751                 int ret;
7752                 close(pd[1]);   /* Parent reads from pd[0] */
7753                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
7754                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7755                         exit(1);
7756                 signal(SIGALRM, blech);
7757                 alarm(5);
7758                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
7759                         exit(2);
7760                 sprintf(string, "%d\n", ret);
7761                 write(2, string, strlen(string));
7762                 alarm(0);
7763 #ifdef EAGAIN
7764                 if (errno == EAGAIN) {
7765                         printf("EAGAIN\n");
7766                         goto ok;
7767                 }
7768 #endif
7769 #ifdef EWOULDBLOCK
7770                 if (errno == EWOULDBLOCK)
7771                         printf("EWOULDBLOCK\n");
7772 #endif
7773         ok:
7774                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
7775                 sleep(2);                               /* Give it time to close our pipe */
7776                 alarm(5);
7777                 ret = read(pd[0], buf, 1);      /* Should read EOF */
7778                 alarm(0);
7779                 sprintf(string, "%d\n", ret);
7780                 write(3, string, strlen(string));
7781                 exit(0);
7782         }
7783
7784         close(pd[0]);                   /* We write to pd[1] */
7785         close(pu[1]);                   /* We read from pu[0] */
7786         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
7787         close(pd[1]);                   /* Pipe pd is now fully closed! */
7788         exit(0);                                /* Bye bye, thank you for playing! */
7789 }
7790 EOCP
7791         set try
7792         if eval $compile_ok; then
7793                 echo "$startsh" >mtry
7794                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7795                 chmod +x mtry
7796                 ./mtry >/dev/null 2>&1
7797                 case $? in
7798                 0) eagain=`$cat try.out`;;
7799                 1) echo "Could not perform non-blocking setting!";;
7800                 2) echo "I did a successful read() for something that was not there!";;
7801                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7802                 *) echo "Something terribly wrong happened during testing.";;
7803                 esac
7804                 rd_nodata=`$cat try.ret`
7805                 echo "A read() system call with no data present returns $rd_nodata."
7806                 case "$rd_nodata" in
7807                 0|-1) ;;
7808                 *)
7809                         echo "(That's peculiar, fixing that to be -1.)"
7810                         rd_nodata=-1
7811                         ;;
7812                 esac
7813                 case "$eagain" in
7814                 '')
7815                         echo "Forcing errno EAGAIN on read() with no data available."
7816                         eagain=EAGAIN
7817                         ;;
7818                 *)
7819                         echo "Your read() sets errno to $eagain when no data is available."
7820                         ;;
7821                 esac
7822                 status=`$cat try.err`
7823                 case "$status" in
7824                 0) echo "And it correctly returns 0 to signal EOF.";;
7825                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7826                 *) echo "However, your read() returns '$status' on EOF??";;
7827                 esac
7828                 val="$define"
7829                 if test "$status" = "$rd_nodata"; then
7830                         echo "WARNING: you can't distinguish between EOF and no data!"
7831                         val="$undef"
7832                 fi
7833         else
7834                 echo "I can't compile the test program--assuming errno EAGAIN will do."
7835                 eagain=EAGAIN
7836         fi
7837         set d_eofnblk
7838         eval $setvar
7839         ;;
7840 *)
7841         echo "Using $hint value $eagain."
7842         echo "Your read() returns $rd_nodata when no data is present."
7843         case "$d_eofnblk" in
7844         "$define") echo "And you can see EOF because read() returns 0.";;
7845         "$undef") echo "But you can't see EOF status from read() returned value.";;
7846         *)
7847                 echo "(Assuming you can't see EOF status from read anyway.)"
7848                 d_eofnblk=$undef
7849                 ;;
7850         esac
7851         ;;
7852 esac
7853 $rm -f try try.* .out core head.c mtry
7854
7855 : see if fchmod exists
7856 set fchmod d_fchmod
7857 eval $inlibc
7858
7859 : see if fchown exists
7860 set fchown d_fchown
7861 eval $inlibc
7862
7863 : see if this is an fcntl system
7864 set fcntl d_fcntl
7865 eval $inlibc
7866
7867 : see if sys/select.h has to be included
7868 set sys/select.h i_sysselct
7869 eval $inhdr
7870
7871 : see if we should include time.h, sys/time.h, or both
7872 echo " "
7873 if test "X$timeincl" = X; then
7874         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7875         $echo $n "I'm now running the test program...$c"
7876         $cat >try.c <<'EOCP'
7877 #include <sys/types.h>
7878 #ifdef I_TIME
7879 #include <time.h>
7880 #endif
7881 #ifdef I_SYSTIME
7882 #ifdef SYSTIMEKERNEL
7883 #define KERNEL
7884 #endif
7885 #include <sys/time.h>
7886 #endif
7887 #ifdef I_SYSSELECT
7888 #include <sys/select.h>
7889 #endif
7890 int main()
7891 {
7892         struct tm foo;
7893 #ifdef S_TIMEVAL
7894         struct timeval bar;
7895 #endif
7896 #ifdef S_TIMEZONE
7897         struct timezone tzp;
7898 #endif
7899         if (foo.tm_sec == foo.tm_sec)
7900                 exit(0);
7901 #ifdef S_TIMEVAL
7902         if (bar.tv_sec == bar.tv_sec)
7903                 exit(0);
7904 #endif
7905         exit(1);
7906 }
7907 EOCP
7908         flags=''
7909         for s_timezone in '-DS_TIMEZONE' ''; do
7910         sysselect=''
7911         for s_timeval in '-DS_TIMEVAL' ''; do
7912         for i_systimek in '' '-DSYSTIMEKERNEL'; do
7913         for i_time in '' '-DI_TIME'; do
7914         for i_systime in '-DI_SYSTIME' ''; do
7915                 case "$flags" in
7916                 '') $echo $n ".$c"
7917                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7918                         if eval $compile; then
7919                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7920                                 shift
7921                                 flags="$*"
7922                                 echo " "
7923                                 $echo $n "Succeeded with $flags$c"
7924                         fi
7925                         ;;
7926                 esac
7927         done
7928         done
7929         done
7930         done
7931         done
7932         timeincl=''
7933         echo " "
7934         case "$flags" in
7935         *SYSTIMEKERNEL*) i_systimek="$define"
7936                 timeincl=`./findhdr sys/time.h`
7937                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7938         *) i_systimek="$undef";;
7939         esac
7940         case "$flags" in
7941         *I_TIME*) i_time="$define"
7942                 timeincl=`./findhdr time.h`" $timeincl"
7943                 echo "We'll include <time.h>." >&4;;
7944         *) i_time="$undef";;
7945         esac
7946         case "$flags" in
7947         *I_SYSTIME*) i_systime="$define"
7948                 timeincl=`./findhdr sys/time.h`" $timeincl"
7949                 echo "We'll include <sys/time.h>." >&4;;
7950         *) i_systime="$undef";;
7951         esac
7952         $rm -f try.c try
7953 fi
7954
7955 : check for fd_set items
7956 $cat <<EOM
7957
7958 Checking to see how well your C compiler handles fd_set and friends ...
7959 EOM
7960 $cat >fd_set.c <<EOCP
7961 #$i_systime I_SYS_TIME
7962 #$i_sysselct I_SYS_SELECT
7963 #$d_socket HAS_SOCKET
7964 #include <sys/types.h>
7965 #ifdef HAS_SOCKET
7966 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7967 #endif
7968 #ifdef I_SYS_TIME
7969 #include <sys/time.h>
7970 #endif
7971 #ifdef I_SYS_SELECT
7972 #include <sys/select.h>
7973 #endif
7974 int main() {
7975         fd_set fds;
7976
7977 #ifdef TRYBITS
7978         if(fds.fds_bits);
7979 #endif
7980
7981 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7982         exit(0);
7983 #else
7984         exit(1);
7985 #endif
7986 }
7987 EOCP
7988 set fd_set -DTRYBITS
7989 if eval $compile; then
7990         d_fds_bits="$define"
7991         d_fd_set="$define"
7992         echo "Well, your system knows about the normal fd_set typedef..." >&4
7993         if ./fd_set; then
7994                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7995                 d_fd_macros="$define"
7996         else
7997                 $cat >&4 <<'EOM'
7998 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
7999 EOM
8000                 d_fd_macros="$undef"
8001         fi
8002 else
8003         $cat <<'EOM'
8004 Hmm, your compiler has some difficulty with fd_set.  Checking further...
8005 EOM
8006         set fd_set
8007         if eval $compile; then
8008                 d_fds_bits="$undef"
8009                 d_fd_set="$define"
8010                 echo "Well, your system has some sort of fd_set available..." >&4
8011                 if ./fd_set; then
8012                         echo "and you have the normal fd_set macros." >&4
8013                         d_fd_macros="$define"
8014                 else
8015                         $cat <<'EOM'
8016 but not the normal fd_set macros!  Gross!  More work for me...
8017 EOM
8018                         d_fd_macros="$undef"
8019                 fi
8020         else
8021         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
8022                 d_fd_set="$undef"
8023                 d_fds_bits="$undef"
8024                 d_fd_macros="$undef"
8025         fi
8026 fi
8027 $rm -f fd_set*
8028
8029 : see if fgetpos exists
8030 set fgetpos d_fgetpos
8031 eval $inlibc
8032
8033
8034 if $test X"$use64bits" = X"$define"; then
8035         : see if fgetpos64 exists
8036         set fgetpos64 d_fgetpos64
8037         eval $inlibc
8038
8039         : see if fopen64 exists
8040         set freopen64 d_fopen64
8041         eval $inlibc
8042
8043         : see if freopen64 exists
8044         set freopen64 d_freopen64
8045         eval $inlibc
8046
8047         : see if fseek64 exists
8048         set fseek64 d_fseek64
8049         eval $inlibc
8050
8051         : see if fseeko64 exists
8052         set fseeko64 d_fseeko64
8053         eval $inlibc
8054
8055         : see if fsetpos64 exists
8056         set fsetpos64 d_fsetpos64
8057         eval $inlibc
8058
8059         : see if ftell64 exists
8060         set ftell64 d_ftell64
8061         eval $inlibc
8062
8063         : see if ftello64 exists
8064         set ftello64 d_ftello64
8065         eval $inlibc
8066
8067         : see if tmpfile64 exists
8068         set tmpfile64 d_tmpfile64
8069         eval $inlibc
8070 else
8071         val="$undef"
8072         for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
8073         do
8074                 set $xxx
8075                 eval $setvar
8076         done
8077 fi
8078
8079 : see if flock exists
8080 set flock d_flock
8081 eval $inlibc
8082
8083 : see if fork exists
8084 set fork d_fork
8085 eval $inlibc
8086
8087 : see if pathconf exists
8088 set pathconf d_pathconf
8089 eval $inlibc
8090
8091 : see if fpathconf exists
8092 set fpathconf d_fpathconf
8093 eval $inlibc
8094
8095 : see if fseeko exists
8096 set fseeko d_fseeko
8097 eval $inlibc
8098
8099 : see if fsetpos exists
8100 set fsetpos d_fsetpos
8101 eval $inlibc
8102
8103 : see if this is a sys/param system
8104 set sys/param.h i_sysparam
8105 eval $inhdr
8106
8107 : see if this is a sys/mount.h system
8108 set sys/mount.h i_sysmount
8109 eval $inhdr
8110
8111
8112 : see if statfs exists
8113 set statfs d_statfs
8114 eval $inlibc
8115
8116 : see if fstatfs exists
8117 set fstatfs d_fstatfs
8118 eval $inlibc
8119
8120 : see if statfs knows about mount flags
8121 set d_statfsflags statfs f_flags $i_sysparam sys/param.h $i_sysmount sys/mount.h
8122 eval $hasfield
8123
8124
8125 : see if statvfs exists
8126 set statvfs d_statvfs
8127 eval $inlibc
8128
8129 : see if fstatvfs exists
8130 set fstatvfs d_fstatvfs
8131 eval $inlibc
8132
8133
8134 : see if ftello exists
8135 set ftello d_ftello
8136 eval $inlibc
8137
8138 : see if getgrent exists
8139 set getgrent d_getgrent
8140 eval $inlibc
8141
8142 : see if gethostbyaddr exists
8143 set gethostbyaddr d_gethbyaddr
8144 eval $inlibc
8145
8146 : see if gethostbyname exists
8147 set gethostbyname d_gethbyname
8148 eval $inlibc
8149
8150 : see if gethostent exists
8151 set gethostent d_gethent
8152 eval $inlibc
8153
8154 : see how we will look up host name
8155 echo " "
8156 call=''
8157 if set gethostname val -f d_gethname; eval $csym; $val; then
8158         echo 'gethostname() found.' >&4
8159         d_gethname="$define"
8160         call=gethostname
8161 fi
8162 if set uname val -f d_uname; eval $csym; $val; then
8163         if ./xenix; then
8164                 $cat <<'EOM'
8165 uname() was found, but you're running xenix, and older versions of xenix
8166 have a broken uname(). If you don't really know whether your xenix is old
8167 enough to have a broken system call, use the default answer.
8168
8169 EOM
8170                 dflt=y
8171                 case "$d_uname" in
8172                 "$define") dflt=n;;
8173                 esac
8174                 rp='Is your uname() broken?'
8175                 . ./myread
8176                 case "$ans" in
8177                 n*) d_uname="$define"; call=uname;;
8178                 esac
8179         else
8180                 echo 'uname() found.' >&4
8181                 d_uname="$define"
8182                 case "$call" in
8183                 '') call=uname ;;
8184                 esac
8185         fi
8186 fi
8187 case "$d_gethname" in
8188 '') d_gethname="$undef";;
8189 esac
8190 case "$d_uname" in
8191 '') d_uname="$undef";;
8192 esac
8193 case "$d_uname$d_gethname" in
8194 *define*)
8195         dflt=n
8196         cat <<EOM
8197  
8198 Every now and then someone has a $call() that lies about the hostname
8199 but can't be fixed for political or economic reasons.  If you wish, I can
8200 pretend $call() isn't there and maybe compute hostname at run-time
8201 thanks to the '$phostname' command.
8202
8203 EOM
8204         rp="Shall I ignore $call() from now on?"
8205         . ./myread
8206         case "$ans" in
8207         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8208         esac;;
8209 esac
8210 case "$phostname" in
8211 '') aphostname='';;
8212 *) case "$aphostname" in
8213         /*) ;;
8214         *) set X $phostname
8215                 shift
8216                 file=$1
8217                 shift
8218                 file=`./loc $file $file $pth`
8219                 aphostname=`echo $file $*`
8220                 ;;
8221         esac
8222         ;;
8223 esac
8224 case "$d_uname$d_gethname" in
8225 *define*) ;;
8226 *)
8227         case "$phostname" in
8228         '')
8229                 echo "There will be no way for $package to get your hostname." >&4;;
8230         *)
8231         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8232                 ;;
8233         esac;;
8234 esac
8235 case "$d_phostname" in
8236 '') d_phostname="$undef";;
8237 esac
8238
8239 : see if this is a netdb.h system
8240 set netdb.h i_netdb
8241 eval $inhdr
8242
8243 : see if prototypes for various gethostxxx netdb.h functions are available
8244 echo " "
8245 set d_gethostprotos gethostent $i_netdb netdb.h
8246 eval $hasproto
8247
8248 : see if getlogin exists
8249 set getlogin d_getlogin
8250 eval $inlibc
8251
8252 : see if getmntent exists
8253 set getmntent d_getmntent
8254 eval $inlibc
8255
8256 : see if getnetbyaddr exists
8257 set getnetbyaddr d_getnbyaddr
8258 eval $inlibc
8259
8260 : see if getnetbyname exists
8261 set getnetbyname d_getnbyname
8262 eval $inlibc
8263
8264 : see if getnetent exists
8265 set getnetent d_getnent
8266 eval $inlibc
8267
8268 : see if prototypes for various getnetxxx netdb.h functions are available
8269 echo " "
8270 set d_getnetprotos getnetent $i_netdb netdb.h
8271 eval $hasproto
8272
8273
8274 : see if getprotobyname exists
8275 set getprotobyname d_getpbyname
8276 eval $inlibc
8277
8278 : see if getprotobynumber exists
8279 set getprotobynumber d_getpbynumber
8280 eval $inlibc
8281
8282 : see if getprotoent exists
8283 set getprotoent d_getpent
8284 eval $inlibc
8285
8286 : see if getpgid exists
8287 set getpgid d_getpgid
8288 eval $inlibc
8289
8290 : see if getpgrp2 exists
8291 set getpgrp2 d_getpgrp2
8292 eval $inlibc
8293
8294 : see if getppid exists
8295 set getppid d_getppid
8296 eval $inlibc
8297
8298 : see if getpriority exists
8299 set getpriority d_getprior
8300 eval $inlibc
8301
8302 : see if prototypes for various getprotoxxx netdb.h functions are available
8303 echo " "
8304 set d_getprotoprotos getprotoent $i_netdb netdb.h
8305 eval $hasproto
8306
8307 : see if getpwent exists
8308 set getpwent d_getpwent
8309 eval $inlibc
8310
8311
8312 : see if getservbyname exists
8313 set getservbyname d_getsbyname
8314 eval $inlibc
8315
8316 : see if getservbyport exists
8317 set getservbyport d_getsbyport
8318 eval $inlibc
8319
8320 : see if getservent exists
8321 set getservent d_getsent
8322 eval $inlibc
8323
8324 : see if prototypes for various getservxxx netdb.h functions are available
8325 echo " "
8326 set d_getservprotos getservent $i_netdb netdb.h
8327 eval $hasproto
8328
8329 : see if getspent exists
8330 set getspent d_getspent
8331 eval $inlibc
8332
8333 : see if getspnam exists
8334 set getspnam d_getspnam
8335 eval $inlibc
8336
8337 : see if gettimeofday or ftime exists
8338 set gettimeofday d_gettimeod
8339 eval $inlibc
8340 case "$d_gettimeod" in
8341 "$undef")
8342         set ftime d_ftime 
8343         eval $inlibc
8344         ;;
8345 *)
8346         val="$undef"; set d_ftime; eval $setvar
8347         ;;
8348 esac
8349 case "$d_gettimeod$d_ftime" in
8350 "$undef$undef")
8351         echo " "
8352         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8353         ;;
8354 esac
8355
8356 : see if this is an grp system
8357 set grp.h i_grp
8358 eval $inhdr
8359
8360 case "$i_grp" in
8361 $define)
8362         xxx=`./findhdr grp.h`
8363         $cppstdin $cppflags $cppminus < $xxx >$$.h
8364
8365         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8366                 val="$define"
8367         else
8368                 val="$undef"
8369         fi
8370         set d_grpasswd
8371         eval $setvar
8372
8373         $rm -f $$.h
8374         ;;
8375 *)
8376         val="$undef";
8377         set d_grpasswd; eval $setvar
8378         ;;
8379 esac
8380
8381 : see if hasmntopt exists
8382 set hasmntopt d_hasmntopt
8383 eval $inlibc
8384
8385 : see if this is a netinet/in.h or sys/in.h system
8386 set netinet/in.h i_niin sys/in.h i_sysin
8387 eval $inhdr
8388
8389 : see if arpa/inet.h has to be included
8390 set arpa/inet.h i_arpainet
8391 eval $inhdr
8392
8393 : see if htonl --and friends-- exists
8394 val=''
8395 set htonl val
8396 eval $inlibc
8397
8398 : Maybe they are macros.
8399 case "$val" in
8400 $undef)
8401         $cat >htonl.c <<EOM
8402 #include <stdio.h>
8403 #include <sys/types.h>
8404 #$i_niin I_NETINET_IN
8405 #$i_sysin I_SYS_IN
8406 #$i_arpainet I_ARPA_INET
8407 #ifdef I_NETINET_IN
8408 #include <netinet/in.h>
8409 #endif
8410 #ifdef I_SYS_IN
8411 #include <sys/in.h>
8412 #endif
8413 #ifdef I_ARPA_INET
8414 #include <arpa/inet.h>
8415 #endif
8416 #ifdef htonl
8417 printf("Defined as a macro.");
8418 #endif
8419 EOM
8420         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8421         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8422                 val="$define"
8423                 echo "But it seems to be defined as a macro." >&4
8424         fi
8425         $rm -f htonl.?
8426         ;;
8427 esac
8428 set d_htonl
8429 eval $setvar
8430
8431 : see which of string.h or strings.h is needed
8432 echo " "
8433 strings=`./findhdr string.h`
8434 if $test "$strings" && $test -r "$strings"; then
8435         echo "Using <string.h> instead of <strings.h>." >&4
8436         val="$define"
8437 else
8438         val="$undef"
8439         strings=`./findhdr strings.h`
8440         if $test "$strings" && $test -r "$strings"; then
8441                 echo "Using <strings.h> instead of <string.h>." >&4
8442         else
8443                 echo "No string header found -- You'll surely have problems." >&4
8444         fi
8445 fi
8446 set i_string
8447 eval $setvar
8448 case "$i_string" in
8449 "$undef") strings=`./findhdr strings.h`;;
8450 *)        strings=`./findhdr string.h`;;
8451 esac
8452
8453 : index or strchr
8454 echo " "
8455 if set index val -f; eval $csym; $val; then
8456         if set strchr val -f d_strchr; eval $csym; $val; then
8457                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8458                         val="$define"
8459                         vali="$undef"
8460                         echo "strchr() found." >&4
8461                 else
8462                         val="$undef"
8463                         vali="$define"
8464                         echo "index() found." >&4
8465                 fi
8466         else
8467                 val="$undef"
8468                 vali="$define"
8469                 echo "index() found." >&4
8470         fi
8471 else
8472         if set strchr val -f d_strchr; eval $csym; $val; then
8473                 val="$define"
8474                 vali="$undef"
8475                 echo "strchr() found." >&4
8476         else
8477                 echo "No index() or strchr() found!" >&4
8478                 val="$undef"
8479                 vali="$undef"
8480         fi
8481 fi
8482 set d_strchr; eval $setvar
8483 val="$vali"
8484 set d_index; eval $setvar
8485
8486 : check whether inet_aton exists
8487 set inet_aton d_inetaton
8488 eval $inlibc
8489
8490 : see if inttypes.h is available
8491 : we want a real compile instead of Inhdr because some systems
8492 : have an inttypes.h which includes non-existent headers
8493 echo " "
8494 $cat >try.c <<EOCP
8495 #include <inttypes.h>
8496 int main() {
8497         static int32_t foo32 = 0x12345678;
8498 }
8499 EOCP
8500 set try
8501 if eval $compile; then
8502         echo "<inttypes.h> found." >&4
8503         val="$define"
8504 else
8505         echo "<inttypes.h> NOT found." >&4
8506         val="$undef"
8507 fi
8508 $rm -f try.c try
8509 set i_inttypes
8510 eval $setvar
8511
8512 : check for int64_t
8513 case "$use64bits" in
8514 "$define" )
8515         echo " "
8516         echo $n "Checking to see if your system supports int64_t...$c" >&4
8517         $cat >try.c <<EOCP
8518 #include <sys/types.h>
8519 #$i_inttypes I_INTTYPES
8520 #ifdef I_INTTYPES
8521 #include <inttypes.h>
8522 #endif
8523 int64_t foo() { int64_t x; x = 7; return x; }
8524 EOCP
8525         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8526                 val="$define"
8527                 echo " Yup, it does." >&4
8528         else
8529                 val="$undef"
8530                 echo " Nope, it doesn't." >&4
8531         fi
8532         $rm -f try.*
8533         ;;
8534 *)      val="$undef"
8535         ;;
8536 esac
8537 set d_int64t
8538 eval $setvar
8539
8540
8541 : Look for isascii
8542 echo " "
8543 $cat >isascii.c <<'EOCP'
8544 #include <stdio.h>
8545 #include <ctype.h>
8546 int main() {
8547         int c = 'A';
8548         if (isascii(c))
8549                 exit(0);
8550         else
8551                 exit(1);
8552 }
8553 EOCP
8554 set isascii
8555 if eval $compile; then
8556         echo "isascii() found." >&4
8557         val="$define"
8558 else
8559         echo "isascii() NOT found." >&4
8560         val="$undef"
8561 fi
8562 set d_isascii
8563 eval $setvar
8564 $rm -f isascii*
8565
8566 : see if killpg exists
8567 set killpg d_killpg
8568 eval $inlibc
8569
8570 : see if lchown exists
8571 echo " "
8572 $cat > try.c <<'EOCP'
8573 /* System header to define __stub macros and hopefully few prototypes,
8574     which can conflict with char lchown(); below.  */
8575 #include <assert.h>
8576 /* Override any gcc2 internal prototype to avoid an error.  */
8577 /* We use char because int might match the return type of a gcc2
8578    builtin and then its argument prototype would still apply.  */
8579 char lchown();
8580 int main() {
8581     /*  The GNU C library defines this for functions which it implements
8582         to always fail with ENOSYS.  Some functions are actually named
8583         something starting with __ and the normal name is an alias.  */
8584 #if defined (__stub_lchown) || defined (__stub___lchown)
8585 choke me
8586 #else
8587 lchown();
8588 #endif
8589 ; return 0; }
8590 EOCP
8591 set try
8592 if eval $compile; then
8593     $echo "lchown() found." >&4
8594     val="$define"
8595 else
8596     $echo "lchown() NOT found." >&4
8597     val="$undef"
8598 fi
8599 set d_lchown
8600 eval $setvar
8601
8602 : see if link exists
8603 set link d_link
8604 eval $inlibc
8605
8606 : see if localeconv exists
8607 set localeconv d_locconv
8608 eval $inlibc
8609
8610 : see if lockf exists
8611 set lockf d_lockf
8612 eval $inlibc
8613
8614 : check for length of double
8615 echo " "
8616 case "$doublesize" in
8617 '')
8618         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8619         $cat >try.c <<'EOCP'
8620 #include <stdio.h>
8621 int main()
8622 {
8623         printf("%d\n", sizeof(double));
8624 }
8625 EOCP
8626         set try
8627         if eval $compile_ok; then
8628                 doublesize=`./try`
8629                 $echo " $doublesize bytes." >&4
8630         else
8631                 dflt='8'
8632                 echo "(I can't seem to compile the test program.  Guessing...)"
8633                 rp="What is the size of a double precision number (in bytes)?"
8634                 . ./myread
8635                 doublesize="$ans"
8636         fi
8637         ;;
8638 esac
8639 $rm -f try.c try
8640
8641 : check for long doubles
8642 echo " "
8643 echo $n "Checking to see if your system supports long doubles...$c" >&4
8644 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8645 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8646         val="$define"
8647         echo " Yup, it does." >&4
8648 else
8649         val="$undef"
8650         echo " Nope, it doesn't." >&4
8651 fi
8652 $rm try.*
8653 set d_longdbl
8654 eval $setvar
8655
8656 : check for length of long double
8657 case "${d_longdbl}${longdblsize}" in
8658 $define)
8659         echo " "
8660         $echo $n "Checking to see how big your long doubles are...$c" >&4
8661         $cat >try.c <<'EOCP'
8662 #include <stdio.h>
8663 int main()
8664 {
8665         printf("%d\n", sizeof(long double));
8666 }
8667 EOCP
8668         set try
8669         if eval $compile; then
8670                 longdblsize=`./try`
8671                 $echo " $longdblsize bytes." >&4
8672         else
8673                 dflt='8'
8674                 echo " "
8675                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
8676                 rp="What is the size of a long double (in bytes)?"
8677                 . ./myread
8678                 longdblsize="$ans"
8679         fi
8680         if $test "X$doublesize" = "X$longdblsize"; then
8681                 echo "(That isn't any different from an ordinary double.)"
8682         fi      
8683         ;;
8684 esac
8685 $rm -f try.c try
8686
8687 : check for long long
8688 echo " "
8689 echo $n "Checking to see if your system supports long long...$c" >&4
8690 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8691 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8692         val="$define"
8693         echo " Yup, it does." >&4
8694 else
8695         val="$undef"
8696         echo " Nope, it doesn't." >&4
8697 fi
8698 $rm try.*
8699 set d_longlong
8700 eval $setvar
8701
8702 : check for length of long long
8703 case "${d_longlong}${longlongsize}" in
8704 $define)
8705         echo " "
8706         $echo $n "Checking to see how big your long longs are...$c" >&4
8707         $cat >try.c <<'EOCP'
8708 #include <stdio.h>
8709 int main()
8710 {
8711         printf("%d\n", sizeof(long long));
8712 }
8713 EOCP
8714         set try
8715         if eval $compile_ok; then
8716                 longlongsize=`./try`
8717                 $echo " $longlongsize bytes." >&4
8718         else
8719                 dflt='8'
8720                 echo " "
8721                 echo "(I can't seem to compile the test program.  Guessing...)"
8722                 rp="What is the size of a long long (in bytes)?"
8723                 . ./myread
8724                 longlongsize="$ans"
8725         fi
8726         if $test "X$longsize" = "X$longlongsize"; then
8727                 echo "(That isn't any different from an ordinary long.)"
8728         fi      
8729         ;;
8730 esac
8731 $rm -f try.c try
8732
8733 : see if lstat exists
8734 set lstat d_lstat
8735 eval $inlibc
8736
8737 : see if madvise exists
8738 set madvise d_madvise
8739 eval $inlibc
8740
8741 : see if mblen exists
8742 set mblen d_mblen
8743 eval $inlibc
8744
8745 : see if mbstowcs exists
8746 set mbstowcs d_mbstowcs
8747 eval $inlibc
8748
8749 : see if mbtowc exists
8750 set mbtowc d_mbtowc
8751 eval $inlibc
8752
8753 : see if memchr exists
8754 set memchr d_memchr
8755 eval $inlibc
8756
8757 : see if memcmp exists
8758 set memcmp d_memcmp
8759 eval $inlibc
8760
8761 : see if memcpy exists
8762 set memcpy d_memcpy
8763 eval $inlibc
8764
8765 : see if memmove exists
8766 set memmove d_memmove
8767 eval $inlibc
8768
8769 : see if memset exists
8770 set memset d_memset
8771 eval $inlibc
8772
8773 : see if mkdir exists
8774 set mkdir d_mkdir
8775 eval $inlibc
8776
8777 : see if mkfifo exists
8778 set mkfifo d_mkfifo
8779 eval $inlibc
8780
8781 : see if mktime exists
8782 set mktime d_mktime
8783 eval $inlibc
8784
8785 : see if this is a sys/mman.h system
8786 set sys/mman.h i_sysmman
8787 eval $inhdr
8788
8789 : see if mmap exists
8790 set mmap d_mmap
8791 eval $inlibc
8792 : see what shmat returns
8793 : default to something harmless
8794 mmaptype='void *'
8795 case "$i_sysmman$d_mmap" in
8796 "$define$define")
8797         $cat >mmap.c <<'END'
8798 #include <sys/mman.h>
8799 void *mmap();
8800 END
8801         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
8802                 mmaptype='void *'
8803         else
8804                 mmaptype='caddr_t'
8805         fi
8806         echo "and it returns ($mmaptype)." >&4
8807         ;;
8808 esac
8809
8810
8811
8812 : see if mprotect exists
8813 set mprotect d_mprotect
8814 eval $inlibc
8815
8816 : see if msgctl exists
8817 set msgctl d_msgctl
8818 eval $inlibc
8819
8820 : see if msgget exists
8821 set msgget d_msgget
8822 eval $inlibc
8823
8824 : see if msgsnd exists
8825 set msgsnd d_msgsnd
8826 eval $inlibc
8827
8828 : see if msgrcv exists
8829 set msgrcv d_msgrcv
8830 eval $inlibc
8831
8832 : see how much of the 'msg*(2)' library is present.
8833 h_msg=true
8834 echo " "
8835 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8836 *"$undef"*) h_msg=false;;
8837 esac
8838 case "$osname" in
8839 freebsd)
8840     case "`ipcs 2>&1`" in
8841     "SVID messages"*"not configured"*)
8842         echo "Your $osname does not have the msg*(2) configured." >&4
8843         h_msg=false
8844         val="$undef"
8845         set msgctl d_msgctl
8846         eval $setvar
8847         set msgget d_msgget
8848         eval $setvar
8849         set msgsnd d_msgsnd
8850         eval $setvar
8851         set msgrcv d_msgrcv
8852         eval $setvar
8853         ;;
8854     esac
8855     ;;
8856 esac
8857 : we could also check for sys/ipc.h ...
8858 if $h_msg && $test `./findhdr sys/msg.h`; then
8859         echo "You have the full msg*(2) library." >&4
8860         val="$define"
8861 else
8862         echo "You don't have the full msg*(2) library." >&4
8863         val="$undef"
8864 fi
8865 set d_msg
8866 eval $setvar
8867
8868 : see if msync exists
8869 set msync d_msync
8870 eval $inlibc
8871
8872 : see if munmap exists
8873 set munmap d_munmap
8874 eval $inlibc
8875
8876 : see if nice exists
8877 set nice d_nice
8878 eval $inlibc
8879
8880 : see if POSIX threads are available
8881 if test "X$usethreads" = "X$define"; then
8882         set pthread.h i_pthread
8883         eval $inhdr
8884 else
8885         i_pthread="$undef"
8886 fi
8887
8888
8889
8890 : how to create joinable pthreads
8891 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
8892         echo " "
8893         echo "Checking what constant to use for creating joinable pthreads..." >&4 
8894         $cat >try.c <<'EOCP'
8895 #include <pthread.h>
8896 int main() {
8897     int detachstate = JOINABLE;
8898 }
8899 EOCP
8900         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8901         if eval $compile; then
8902                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
8903                 val="$undef" # Yes, undef.
8904                 set d_old_pthread_create_joinable
8905                 eval $setvar
8906                 val=""
8907                 set old_pthread_create_joinable
8908                 eval $setvar
8909         else
8910                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8911                 if eval $compile; then
8912                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
8913                         val="$define"
8914                         set d_old_pthread_create_joinable
8915                         eval $setvar
8916                         val=PTHREAD_CREATE_UNDETACHED
8917                         set old_pthread_create_joinable
8918                         eval $setvar
8919                 else            
8920                         set try -DJOINABLE=__UNDETACHED
8921                         if eval $compile; then
8922                                 echo "You seem to use __UNDETACHED." >&4
8923                                 val="$define"
8924                                 set d_old_pthread_create_joinable
8925                                 eval $setvar
8926                                 val=__UNDETACHED
8927                                 set old_pthread_create_joinable
8928                                 eval $setvar
8929                         else
8930                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
8931                                 val="$define"
8932                                 set d_old_pthread_create_joinable
8933                                 eval $setvar
8934                                 val=0
8935                                 set old_pthread_create_joinable
8936                                 eval $setvar
8937                         fi
8938                 fi
8939         fi
8940         $rm -f try try.*
8941 else
8942     d_old_pthread_create_joinable="$undef"
8943     old_pthread_create_joinable=""
8944 fi
8945
8946 : see if pause exists
8947 set pause d_pause
8948 eval $inlibc
8949
8950 : see if pipe exists
8951 set pipe d_pipe
8952 eval $inlibc
8953
8954 : see if poll exists
8955 set poll d_poll
8956 eval $inlibc
8957
8958
8959 : see whether the various POSIXish _yields exist
8960 $cat >try.c <<EOP
8961 #include <pthread.h>
8962 #include <stdio.h>
8963 int main() {
8964 #ifdef SCHED_YIELD
8965         sched_yield();
8966 #else
8967 #ifdef PTHREAD_YIELD
8968         pthread_yield();
8969 #else
8970 #ifdef PTHREAD_YIELD_NULL
8971         pthread_yield(NULL);
8972 #endif
8973 #endif
8974 #endif
8975 }
8976 EOP
8977 : see if sched_yield exists
8978 set try -DSCHED_YIELD
8979 if eval $compile; then
8980     val="$define"
8981     sched_yield='sched_yield()'
8982 else
8983     val="$undef"
8984 fi
8985 case "$usethreads" in
8986 $define)
8987         case "$val" in
8988         $define) echo 'sched_yield() found.' >&4        ;;
8989         *)       echo 'sched_yield() NOT found.' >&4    ;;
8990         esac
8991 esac
8992 set d_sched_yield
8993 eval $setvar
8994
8995 : see if pthread_yield exists
8996 set try -DPTHREAD_YIELD
8997 if eval $compile; then
8998     val="$define"
8999     case "$sched_yield" in
9000     '') sched_yield='pthread_yield()' ;;
9001     esac
9002 else
9003     set try -DPTHREAD_YIELD_NULL
9004     if eval $compile; then
9005         val="$define"
9006         case "$sched_yield" in
9007         '') sched_yield='pthread_yield(NULL)' ;;
9008         esac
9009     else
9010         val="$undef"
9011     fi
9012 fi
9013 case "$usethreads" in
9014 $define)
9015         case "$val" in
9016         $define) echo 'pthread_yield() found.' >&4      ;;
9017         *)       echo 'pthread_yield() NOT found.' >&4  ;;
9018         esac
9019         ;;
9020 esac
9021 set d_pthread_yield
9022 eval $setvar
9023
9024 case "$sched_yield" in
9025 '') sched_yield=undef ;;
9026 esac
9027
9028 $rm -f try try.*
9029
9030 : see if this is a pwd.h system
9031 set pwd.h i_pwd
9032 eval $inhdr
9033
9034 case "$i_pwd" in
9035 $define)
9036         xxx=`./findhdr pwd.h`
9037         $cppstdin $cppflags $cppminus < $xxx >$$.h
9038
9039         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
9040                 val="$define"
9041         else
9042                 val="$undef"
9043         fi
9044         set d_pwquota
9045         eval $setvar
9046
9047         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
9048                 val="$define"
9049         else
9050                 val="$undef"
9051         fi
9052         set d_pwage
9053         eval $setvar
9054
9055         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
9056                 val="$define"
9057         else
9058                 val="$undef"
9059         fi
9060         set d_pwchange
9061         eval $setvar
9062
9063         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
9064                 val="$define"
9065         else
9066                 val="$undef"
9067         fi
9068         set d_pwclass
9069         eval $setvar
9070
9071         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
9072                 val="$define"
9073         else
9074                 val="$undef"
9075         fi
9076         set d_pwexpire
9077         eval $setvar
9078
9079         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
9080                 val="$define"
9081         else
9082                 val="$undef"
9083         fi
9084         set d_pwcomment
9085         eval $setvar
9086
9087         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
9088                 val="$define"
9089         else
9090                 val="$undef"
9091         fi
9092         set d_pwgecos
9093         eval $setvar
9094
9095         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
9096                 val="$define"
9097         else
9098                 val="$undef"
9099         fi
9100         set d_pwpasswd
9101         eval $setvar
9102
9103         $rm -f $$.h
9104         ;;
9105 *)
9106         val="$undef"; 
9107         set d_pwquota; eval $setvar
9108         set d_pwage; eval $setvar
9109         set d_pwchange; eval $setvar
9110         set d_pwclass; eval $setvar
9111         set d_pwexpire; eval $setvar
9112         set d_pwcomment; eval $setvar
9113         set d_pwgecos; eval $setvar
9114         set d_pwpasswd; eval $setvar
9115         ;;
9116 esac
9117
9118 : see if readdir and friends exist
9119 set readdir d_readdir
9120 eval $inlibc
9121 set seekdir d_seekdir
9122 eval $inlibc
9123 set telldir d_telldir
9124 eval $inlibc
9125 set rewinddir d_rewinddir
9126 eval $inlibc
9127
9128 : see if readlink exists
9129 set readlink d_readlink
9130 eval $inlibc
9131
9132 : see if readv exists
9133 set readv d_readv
9134 eval $inlibc
9135
9136 : see if rename exists
9137 set rename d_rename
9138 eval $inlibc
9139
9140 : see if rmdir exists
9141 set rmdir d_rmdir
9142 eval $inlibc
9143
9144 : see if memory.h is available.
9145 val=''
9146 set memory.h val
9147 eval $inhdr
9148
9149 : See if it conflicts with string.h
9150 case "$val" in
9151 $define)
9152         case "$strings" in
9153         '') ;;
9154         *)
9155                 $cppstdin $cppflags $cppminus < $strings > mem.h
9156                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
9157                         echo " "
9158                         echo "We won't be including <memory.h>."
9159                         val="$undef"
9160                 fi
9161                 $rm -f mem.h
9162                 ;;
9163         esac
9164 esac
9165 set i_memory
9166 eval $setvar
9167
9168 : can bcopy handle overlapping blocks?
9169 val="$undef"
9170 case "$d_bcopy" in
9171 "$define")
9172         echo " "
9173         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
9174         $cat >try.c <<EOCP
9175 #$i_memory I_MEMORY
9176 #$i_stdlib I_STDLIB
9177 #$i_string I_STRING
9178 #$i_unistd I_UNISTD
9179 EOCP
9180         $cat >>try.c <<'EOCP'
9181 #include <stdio.h>
9182 #ifdef I_MEMORY
9183 #  include <memory.h>
9184 #endif
9185 #ifdef I_STDLIB
9186 #  include <stdlib.h>
9187 #endif
9188 #ifdef I_STRING
9189 #  include <string.h>
9190 #else
9191 #  include <strings.h>
9192 #endif
9193 #ifdef I_UNISTD
9194 #  include <unistd.h>  /* Needed for NetBSD */
9195 #endif
9196 int main()
9197 {
9198 char buf[128], abc[128];
9199 char *b;
9200 int len;
9201 int off;
9202 int align;
9203
9204 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9205
9206 for (align = 7; align >= 0; align--) {
9207         for (len = 36; len; len--) {
9208                 b = buf+align;
9209                 bcopy(abc, b, len);
9210                 for (off = 1; off <= len; off++) {
9211                         bcopy(b, b+off, len);
9212                         bcopy(b+off, b, len);
9213                         if (bcmp(b, abc, len))
9214                                 exit(1);
9215                 }
9216         }
9217 }
9218 exit(0);
9219 }
9220 EOCP
9221         set try
9222         if eval $compile_ok; then
9223                 if ./try 2>/dev/null; then
9224                         echo "Yes, it can."
9225                         val="$define"
9226                 else
9227                         echo "It can't, sorry."
9228                         case "$d_memmove" in
9229                         "$define") echo "But that's Ok since you have memmove()." ;;
9230                         esac
9231                 fi
9232         else
9233                 echo "(I can't compile the test program, so we'll assume not...)"
9234                 case "$d_memmove" in
9235                 "$define") echo "But that's Ok since you have memmove()." ;;
9236                 esac
9237         fi
9238         ;;
9239 esac
9240 $rm -f try.* try core
9241 set d_safebcpy
9242 eval $setvar
9243
9244 : can memcpy handle overlapping blocks?
9245 val="$undef"
9246 case "$d_memcpy" in
9247 "$define")
9248         echo " "
9249         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9250         $cat >try.c <<EOCP
9251 #$i_memory I_MEMORY
9252 #$i_stdlib I_STDLIB
9253 #$i_string I_STRING
9254 #$i_unistd I_UNISTD
9255 EOCP
9256         $cat >>try.c <<'EOCP'
9257 #include <stdio.h>
9258 #ifdef I_MEMORY
9259 #  include <memory.h>
9260 #endif
9261 #ifdef I_STDLIB
9262 #  include <stdlib.h>
9263 #endif
9264 #ifdef I_STRING
9265 #  include <string.h>
9266 #else
9267 #  include <strings.h>
9268 #endif
9269 #ifdef I_UNISTD
9270 #  include <unistd.h>  /* Needed for NetBSD */
9271 #endif
9272 int main()
9273 {
9274 char buf[128], abc[128];
9275 char *b;
9276 int len;
9277 int off;
9278 int align;
9279
9280 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9281    try to store the string in read-only memory. */
9282 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9283
9284 for (align = 7; align >= 0; align--) {
9285         for (len = 36; len; len--) {
9286                 b = buf+align;
9287                 memcpy(b, abc, len);
9288                 for (off = 1; off <= len; off++) {
9289                         memcpy(b+off, b, len);
9290                         memcpy(b, b+off, len);
9291                         if (memcmp(b, abc, len))
9292                                 exit(1);
9293                 }
9294         }
9295 }
9296 exit(0);
9297 }
9298 EOCP
9299         set try
9300         if eval $compile_ok; then
9301                 if ./try 2>/dev/null; then
9302                         echo "Yes, it can."
9303                         val="$define"
9304                 else
9305                         echo "It can't, sorry."
9306                         case "$d_memmove" in
9307                         "$define") echo "But that's Ok since you have memmove()." ;;
9308                         esac
9309                 fi
9310         else
9311                 echo "(I can't compile the test program, so we'll assume not...)"
9312                 case "$d_memmove" in
9313                 "$define") echo "But that's Ok since you have memmove()." ;;
9314                 esac
9315         fi
9316         ;;
9317 esac
9318 $rm -f try.* try core
9319 set d_safemcpy
9320 eval $setvar
9321
9322 : can memcmp be trusted to compare relative magnitude?
9323 val="$undef"
9324 case "$d_memcmp" in
9325 "$define")
9326         echo " "
9327         echo "Checking if your memcmp() can compare relative magnitude..." >&4
9328         $cat >try.c <<EOCP
9329 #$i_memory I_MEMORY
9330 #$i_stdlib I_STDLIB
9331 #$i_string I_STRING
9332 #$i_unistd I_UNISTD
9333 EOCP
9334         $cat >>try.c <<'EOCP'
9335 #include <stdio.h>
9336 #ifdef I_MEMORY
9337 #  include <memory.h>
9338 #endif
9339 #ifdef I_STDLIB
9340 #  include <stdlib.h>
9341 #endif
9342 #ifdef I_STRING
9343 #  include <string.h>
9344 #else
9345 #  include <strings.h>
9346 #endif
9347 #ifdef I_UNISTD
9348 #  include <unistd.h>  /* Needed for NetBSD */
9349 #endif
9350 int main()
9351 {
9352 char a = -1;
9353 char b = 0;
9354 if ((a < b) && memcmp(&a, &b, 1) < 0)
9355         exit(1);
9356 exit(0);
9357 }
9358 EOCP
9359         set try
9360         if eval $compile_ok; then
9361                 if ./try 2>/dev/null; then
9362                         echo "Yes, it can."
9363                         val="$define"
9364                 else
9365                         echo "No, it can't (it uses signed chars)."
9366                 fi
9367         else
9368                 echo "(I can't compile the test program, so we'll assume not...)"
9369         fi
9370         ;;
9371 esac
9372 $rm -f try.* try core
9373 set d_sanemcmp
9374 eval $setvar
9375
9376 : see if select exists
9377 set select d_select
9378 eval $inlibc
9379
9380 : see if semctl exists
9381 set semctl d_semctl
9382 eval $inlibc
9383
9384 : see if semget exists
9385 set semget d_semget
9386 eval $inlibc
9387
9388 : see if semop exists
9389 set semop d_semop
9390 eval $inlibc
9391
9392 : see how much of the 'sem*(2)' library is present.
9393 h_sem=true
9394 echo " "
9395 case "$d_semctl$d_semget$d_semop" in
9396 *"$undef"*) h_sem=false;;
9397 esac
9398 case "$osname" in
9399 freebsd)
9400     case "`ipcs 2>&1`" in
9401     "SVID messages"*"not configured"*)
9402         echo "Your $osname does not have the sem*(2) configured." >&4
9403         h_sem=false
9404         val="$undef"
9405         set semctl d_semctl
9406         eval $setvar
9407         set semget d_semget
9408         eval $setvar
9409         set semop d_semop
9410         eval $setvar
9411         ;;
9412     esac
9413     ;;
9414 esac
9415 : we could also check for sys/ipc.h ...
9416 if $h_sem && $test `./findhdr sys/sem.h`; then
9417         echo "You have the full sem*(2) library." >&4
9418         val="$define"
9419 else
9420         echo "You don't have the full sem*(2) library." >&4
9421         val="$undef"
9422 fi
9423 set d_sem
9424 eval $setvar
9425
9426 : see whether sys/sem.h defines union semun
9427 echo " "
9428 $cat > try.c <<'END'
9429 #include <sys/types.h>
9430 #include <sys/ipc.h>
9431 #include <sys/sem.h>
9432 int main () { union semun semun; semun.buf = 0; }
9433 END
9434 set try
9435 if eval $compile; then
9436     echo "You have union semun in <sys/sem.h>." >&4
9437     val="$define"
9438 else
9439     echo "You do not have union semun in <sys/sem.h>." >&4
9440     val="$undef"
9441 fi
9442 $rm -f try try.c try.h
9443 set d_union_semun
9444 eval $setvar
9445
9446 : see how to do semctl IPC_STAT
9447 case "$d_sem" in
9448 $define)
9449     : see whether semctl IPC_STAT can use union semun
9450     echo " "
9451     $cat > try.h <<END
9452 #ifndef S_IRUSR
9453 #   ifdef S_IREAD
9454 #       define S_IRUSR S_IREAD
9455 #       define S_IWUSR S_IWRITE
9456 #       define S_IXUSR S_IEXEC
9457 #   else
9458 #       define S_IRUSR 0400
9459 #       define S_IWUSR 0200
9460 #       define S_IXUSR 0100
9461 #   endif
9462 #   define S_IRGRP (S_IRUSR>>3)
9463 #   define S_IWGRP (S_IWUSR>>3)
9464 #   define S_IXGRP (S_IXUSR>>3)
9465 #   define S_IROTH (S_IRUSR>>6)
9466 #   define S_IWOTH (S_IWUSR>>6)
9467 #   define S_IXOTH (S_IXUSR>>6)
9468 #endif
9469 #ifndef S_IRWXU
9470 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9471 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9472 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9473 #endif
9474 END
9475
9476     $cat > try.c <<END
9477 #include <sys/types.h>
9478 #include <sys/ipc.h>
9479 #include <sys/sem.h>
9480 #include <sys/stat.h>
9481 #include <stdio.h>
9482 #include <errno.h>
9483 #include "try.h"
9484 #ifndef errno
9485 extern int errno;
9486 #endif
9487 #$d_union_semun HAS_UNION_SEMUN
9488 int main() {
9489     union semun
9490 #ifndef HAS_UNION_SEMUN
9491     {
9492         int val;
9493         struct semid_ds *buf;
9494         unsigned short *array;
9495     }
9496 #endif
9497     arg;
9498     int sem, st;
9499
9500 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9501     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9502     if (sem > -1) {
9503         struct semid_ds argbuf;
9504         arg.buf = &argbuf;
9505 #       ifdef IPC_STAT
9506         st = semctl(sem, 0, IPC_STAT, arg);
9507         if (st == 0)
9508             printf("semun\n");
9509         else
9510 #       endif /* IPC_STAT */
9511             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9512 #       ifdef IPC_RMID
9513         if (semctl(sem, 0, IPC_RMID, arg) != 0)
9514 #       endif /* IPC_RMID */
9515             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9516     } else
9517 #endif /* IPC_PRIVATE && ... */
9518         printf("semget failed: errno = %d\n", errno);
9519   return 0;
9520 }
9521 END
9522     val="$undef"
9523     set try
9524     if eval $compile; then
9525         xxx=`./try`
9526         case "$xxx" in
9527         semun) val="$define" ;;
9528         esac
9529     fi
9530     $rm -f try try.c
9531     set d_semctl_semun
9532     eval $setvar
9533     case "$d_semctl_semun" in
9534     $define)
9535         echo "You can use union semun for semctl IPC_STAT." >&4
9536         also='also'
9537         ;;
9538     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
9539         also=''
9540         ;;
9541     esac
9542
9543     : see whether semctl IPC_STAT can use struct semid_ds pointer
9544     $cat > try.c <<'END'
9545 #include <sys/types.h>
9546 #include <sys/ipc.h>
9547 #include <sys/sem.h>
9548 #include <sys/stat.h>
9549 #include "try.h"
9550 #include <stdio.h>
9551 #include <errno.h>
9552 #ifndef errno
9553 extern int errno;
9554 #endif
9555 int main() {
9556     struct semid_ds arg;
9557     int sem, st;
9558
9559 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
9560     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9561     if (sem > -1) {
9562 #       ifdef IPC_STAT
9563         st = semctl(sem, 0, IPC_STAT, &arg);
9564         if (st == 0)
9565             printf("semid_ds\n");
9566         else
9567 #       endif /* IPC_STAT */
9568             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9569 #       ifdef IPC_RMID
9570         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9571 #       endif /* IPC_RMID */
9572             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9573     } else
9574 #endif /* IPC_PRIVATE && ... */
9575         printf("semget failed: errno = %d\n", errno);
9576
9577     return 0;
9578 }
9579 END
9580     val="$undef"
9581     set try
9582     if eval $compile; then
9583         xxx=`./try`
9584         case "$xxx" in
9585         semid_ds) val="$define" ;;
9586         esac
9587     fi
9588     $rm -f try try.c
9589     set d_semctl_semid_ds
9590     eval $setvar
9591     case "$d_semctl_semid_ds" in
9592     $define)
9593         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9594         ;;
9595     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9596         ;;
9597     esac
9598     $rm -f try.h
9599     ;;
9600 *)  val="$undef"
9601
9602     # We do not have the full sem*(2) library, so assume we can not
9603     # use either.
9604
9605     set d_semctl_semun
9606     eval $setvar
9607
9608     set d_semctl_semid_ds
9609     eval $setvar
9610     ;;
9611 esac
9612
9613 : see if setegid exists
9614 set setegid d_setegid
9615 eval $inlibc
9616
9617 : see if seteuid exists
9618 set seteuid d_seteuid
9619 eval $inlibc
9620
9621 : see if setgrent exists
9622 set setgrent d_setgrent
9623 eval $inlibc
9624
9625 : see if sethostent exists
9626 set sethostent d_sethent
9627 eval $inlibc
9628
9629 : see if setlinebuf exists
9630 set setlinebuf d_setlinebuf
9631 eval $inlibc
9632
9633 : see if setlocale exists
9634 set setlocale d_setlocale
9635 eval $inlibc
9636
9637 : see if setnetent exists
9638 set setnetent d_setnent
9639 eval $inlibc
9640
9641 : see if setprotoent exists
9642 set setprotoent d_setpent
9643 eval $inlibc
9644
9645 : see if setpgid exists
9646 set setpgid d_setpgid
9647 eval $inlibc
9648
9649 : see if setpgrp2 exists
9650 set setpgrp2 d_setpgrp2
9651 eval $inlibc
9652
9653 : see if setpriority exists
9654 set setpriority d_setprior
9655 eval $inlibc
9656
9657 : see if setpwent exists
9658 set setpwent d_setpwent
9659 eval $inlibc
9660
9661 : see if setregid exists
9662 set setregid d_setregid
9663 eval $inlibc
9664 set setresgid d_setresgid
9665 eval $inlibc
9666
9667 : see if setreuid exists
9668 set setreuid d_setreuid
9669 eval $inlibc
9670 set setresuid d_setresuid
9671 eval $inlibc
9672
9673 : see if setrgid exists
9674 set setrgid d_setrgid
9675 eval $inlibc
9676
9677 : see if setruid exists
9678 set setruid d_setruid
9679 eval $inlibc
9680
9681 : see if setservent exists
9682 set setservent d_setsent
9683 eval $inlibc
9684
9685 : see if setsid exists
9686 set setsid d_setsid
9687 eval $inlibc
9688
9689 : see if setspent exists
9690 set setspent d_setspent
9691 eval $inlibc
9692
9693 : see if setvbuf exists
9694 set setvbuf d_setvbuf
9695 eval $inlibc
9696
9697 : see if sfio.h is available
9698 set sfio.h i_sfio
9699 eval $inhdr
9700
9701
9702 : see if sfio library is available
9703 case "$i_sfio" in
9704 $define)
9705         val=''
9706         set sfreserve val
9707         eval $inlibc
9708         ;;
9709 *)
9710         val="$undef"
9711         ;;
9712 esac
9713 : Ok, but do we want to use it.
9714 case "$val" in
9715 $define)
9716         case "$usesfio" in
9717         true|$define|[yY]*) dflt='y';;
9718         *) dflt='n';;
9719         esac
9720         echo "$package can use the sfio library, but it is experimental."
9721         rp="You seem to have sfio available, do you want to try using it?"
9722         . ./myread
9723         case "$ans" in
9724         y|Y) ;;
9725         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
9726                 val="$undef"
9727                 : Remove sfio from list of libraries to use
9728                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9729                 shift
9730                 libs="$*"
9731                 echo "libs = $libs" >&4
9732                 ;;
9733         esac
9734         ;;
9735 *)      case "$usesfio" in
9736         true|$define|[yY]*)
9737                 echo "Sorry, cannot find sfio on this machine" >&4
9738                 echo "Ignoring your setting of usesfio=$usesfio" >&4
9739                 ;;
9740         esac
9741         ;;
9742 esac
9743 set d_sfio
9744 eval $setvar
9745 case "$d_sfio" in
9746 $define) usesfio='true';;
9747 *) usesfio='false';;
9748 esac
9749
9750 : see if shmctl exists
9751 set shmctl d_shmctl
9752 eval $inlibc
9753
9754 : see if shmget exists
9755 set shmget d_shmget
9756 eval $inlibc
9757
9758 : see if shmat exists
9759 set shmat d_shmat
9760 eval $inlibc
9761 : see what shmat returns
9762 case "$d_shmat" in
9763 "$define")
9764         $cat >shmat.c <<'END'
9765 #include <sys/shm.h>
9766 void *shmat();
9767 END
9768         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9769                 shmattype='void *'
9770         else
9771                 shmattype='char *'
9772         fi
9773         echo "and it returns ($shmattype)." >&4
9774         : see if a prototype for shmat is available
9775         xxx=`./findhdr sys/shm.h`
9776         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9777         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9778                 val="$define"
9779         else
9780                 val="$undef"
9781         fi
9782         $rm -f shmat.[co]
9783         ;;
9784 *)
9785         val="$undef"
9786         ;;
9787 esac
9788 set d_shmatprototype
9789 eval $setvar
9790
9791 : see if shmdt exists
9792 set shmdt d_shmdt
9793 eval $inlibc
9794
9795 : see how much of the 'shm*(2)' library is present.
9796 h_shm=true
9797 echo " "
9798 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9799 *"$undef"*) h_shm=false;;
9800 esac
9801 case "$osname" in
9802 freebsd)
9803     case "`ipcs 2>&1`" in
9804     "SVID shared memory"*"not configured"*)
9805         echo "Your $osname does not have the shm*(2) configured." >&4
9806         h_shm=false
9807         val="$undef"
9808         set shmctl d_shmctl
9809         evat $setvar
9810         set shmget d_shmget
9811         evat $setvar
9812         set shmat d_shmat
9813         evat $setvar
9814         set shmdt d_shmdt
9815         evat $setvar
9816         ;;
9817     esac
9818     ;;
9819 esac
9820 : we could also check for sys/ipc.h ...
9821 if $h_shm && $test `./findhdr sys/shm.h`; then
9822         echo "You have the full shm*(2) library." >&4
9823         val="$define"
9824 else
9825         echo "You don't have the full shm*(2) library." >&4
9826         val="$undef"
9827 fi
9828 set d_shm
9829 eval $setvar
9830
9831 echo " "
9832 : see if we have sigaction
9833 if set sigaction val -f d_sigaction; eval $csym; $val; then
9834         echo 'sigaction() found.' >&4
9835         $cat > try.c <<'EOP'
9836 #include <stdio.h>
9837 #include <sys/types.h>
9838 #include <signal.h>
9839 int main()
9840 {
9841     struct sigaction act, oact;
9842 }
9843 EOP
9844         set try
9845         if eval $compile_ok; then
9846                 val="$define"
9847         else
9848                 echo "But you don't seem to have a useable struct sigaction." >&4
9849                 val="$undef"
9850         fi
9851 else
9852         echo 'sigaction NOT found.' >&4
9853         val="$undef"
9854 fi
9855 set d_sigaction; eval $setvar
9856 $rm -f try try$_o try.c
9857
9858 : see if sigsetjmp exists
9859 echo " "
9860 case "$d_sigsetjmp" in
9861 '')
9862         $cat >try.c <<'EOP'
9863 #include <setjmp.h>
9864 sigjmp_buf env;
9865 int set = 1;
9866 int main()
9867 {
9868         if (sigsetjmp(env,1))
9869                 exit(set);
9870         set = 0;
9871         siglongjmp(env, 1);
9872         exit(1);
9873 }
9874 EOP
9875         set try
9876         if eval $compile; then
9877                 if ./try >/dev/null 2>&1; then
9878                         echo "POSIX sigsetjmp found." >&4
9879                         val="$define"
9880                 else
9881                         $cat >&4 <<EOM
9882 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9883 I'll ignore them.
9884 EOM
9885                         val="$undef"
9886                 fi
9887         else
9888                 echo "sigsetjmp not found." >&4
9889                 val="$undef"
9890         fi
9891         ;;
9892 *) val="$d_sigsetjmp"
9893         case "$d_sigsetjmp" in
9894         $define) echo "POSIX sigsetjmp found." >&4;;
9895         $undef) echo "sigsetjmp not found." >&4;;
9896         esac
9897         ;;
9898 esac
9899 set d_sigsetjmp
9900 eval $setvar
9901 $rm -f try.c try
9902
9903 : see if stat knows about block sizes
9904 echo " "
9905 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9906 eval $hasfield
9907
9908 : see if _ptr and _cnt from stdio act std
9909 echo " "
9910 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
9911         echo "(Looks like you have stdio.h from Linux.)"
9912         case "$stdio_ptr" in
9913         '') stdio_ptr='((fp)->_IO_read_ptr)'
9914                 ptr_lval=$define
9915                 ;;
9916         *)      ptr_lval=$d_stdio_ptr_lval;;
9917         esac
9918         case "$stdio_cnt" in
9919         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9920                 cnt_lval=$undef
9921                 ;;
9922         *)      cnt_lval=$d_stdio_cnt_lval;;
9923         esac
9924         case "$stdio_base" in
9925         '') stdio_base='((fp)->_IO_read_base)';;
9926         esac
9927         case "$stdio_bufsiz" in
9928         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9929         esac
9930 else
9931         case "$stdio_ptr" in
9932         '') stdio_ptr='((fp)->_ptr)'
9933                 ptr_lval=$define
9934                 ;;
9935         *)      ptr_lval=$d_stdio_ptr_lval;;
9936         esac
9937         case "$stdio_cnt" in
9938         '') stdio_cnt='((fp)->_cnt)'
9939                 cnt_lval=$define
9940                 ;;
9941         *)      cnt_lval=$d_stdio_cnt_lval;;
9942         esac
9943         case "$stdio_base" in
9944         '') stdio_base='((fp)->_base)';;
9945         esac
9946         case "$stdio_bufsiz" in
9947         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9948         esac
9949 fi
9950 : test whether _ptr and _cnt really work
9951 echo "Checking how std your stdio is..." >&4
9952 $cat >try.c <<EOP
9953 #include <stdio.h>
9954 #define FILE_ptr(fp)    $stdio_ptr
9955 #define FILE_cnt(fp)    $stdio_cnt
9956 int main() {
9957         FILE *fp = fopen("try.c", "r");
9958         char c = getc(fp);
9959         if (
9960                 18 <= FILE_cnt(fp) &&
9961                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9962         )
9963                 exit(0);
9964         exit(1);
9965 }
9966 EOP
9967 val="$undef"
9968 set try
9969 if eval $compile; then
9970         if ./try; then
9971                 echo "Your stdio acts pretty std."
9972                 val="$define"
9973         else
9974                 echo "Your stdio isn't very std."
9975         fi
9976 else
9977         echo "Your stdio doesn't appear very std."
9978 fi
9979 $rm -f try.c try
9980 set d_stdstdio
9981 eval $setvar
9982
9983 : Can _ptr be used as an lvalue?
9984 case "$d_stdstdio$ptr_lval" in
9985 $define$define) val=$define ;;
9986 *) val=$undef ;;
9987 esac
9988 set d_stdio_ptr_lval
9989 eval $setvar
9990
9991 : Can _cnt be used as an lvalue?
9992 case "$d_stdstdio$cnt_lval" in
9993 $define$define) val=$define ;;
9994 *) val=$undef ;;
9995 esac
9996 set d_stdio_cnt_lval
9997 eval $setvar
9998
9999 : see if _base is also standard
10000 val="$undef"
10001 case "$d_stdstdio" in
10002 $define)
10003         $cat >try.c <<EOP
10004 #include <stdio.h>
10005 #define FILE_base(fp)   $stdio_base
10006 #define FILE_bufsiz(fp) $stdio_bufsiz
10007 int main() {
10008         FILE *fp = fopen("try.c", "r");
10009         char c = getc(fp);
10010         if (
10011                 19 <= FILE_bufsiz(fp) &&
10012                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
10013         )
10014                 exit(0);
10015         exit(1);
10016 }
10017 EOP
10018         set try
10019         if eval $compile; then
10020                 if ./try; then
10021                         echo "And its _base field acts std."
10022                         val="$define"
10023                 else
10024                         echo "But its _base field isn't std."
10025                 fi
10026         else
10027                 echo "However, it seems to be lacking the _base field."
10028         fi
10029         $rm -f try.c try
10030         ;;
10031 esac
10032 set d_stdiobase
10033 eval $setvar
10034
10035 $cat >&4 <<EOM
10036 Checking how to access stdio streams by file descriptor number...
10037 EOM
10038 case "$stdio_stream_array" in
10039 '')     $cat >try.c <<EOCP
10040 #include <stdio.h>
10041 int main() {
10042   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
10043     printf("yes\n");
10044 }
10045 EOCP
10046         for s in _iob __iob __sF
10047         do
10048                 set try -DSTDIO_STREAM_ARRAY=$s
10049                 if eval $compile; then
10050                         case "`./try$exe_ext`" in
10051                         yes)    stdio_stream_array=$s; break ;;
10052                         esac
10053                 fi
10054         done
10055         $rm -f try.* try$exe_ext
10056 esac
10057 case "$stdio_stream_array" in
10058 '')     $cat >&4 <<EOM
10059 I can't figure out how to access stdio streams by file descriptor number.
10060 EOM
10061         d_stdio_stream_array="$undef"
10062         ;;
10063 *)      $cat >&4 <<EOM
10064 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
10065 EOM
10066         d_stdio_stream_array="$define"
10067         ;;
10068 esac
10069
10070 : see if strcoll exists
10071 set strcoll d_strcoll
10072 eval $inlibc
10073
10074 : check for structure copying
10075 echo " "
10076 echo "Checking to see if your C compiler can copy structs..." >&4
10077 $cat >try.c <<'EOCP'
10078 int main()
10079 {
10080         struct blurfl {
10081                 int dyick;
10082         } foo, bar;
10083
10084         foo = bar;
10085 }
10086 EOCP
10087 if $cc -c try.c >/dev/null 2>&1 ; then
10088         val="$define"
10089         echo "Yup, it can."
10090 else
10091         val="$undef"
10092         echo "Nope, it can't."
10093 fi
10094 set d_strctcpy
10095 eval $setvar
10096 $rm -f try.*
10097
10098 : see if strerror and/or sys_errlist[] exist
10099 echo " "
10100 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
10101     if set strerror val -f d_strerror; eval $csym; $val; then
10102                 echo 'strerror() found.' >&4
10103                 d_strerror="$define"
10104                 d_strerrm='strerror(e)'
10105                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
10106                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
10107                         d_syserrlst="$define"
10108                 else
10109                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
10110                         d_syserrlst="$undef"
10111                 fi
10112     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
10113                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
10114                 echo 'strerror() found in string header.' >&4
10115                 d_strerror="$define"
10116                 d_strerrm='strerror(e)'
10117                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
10118                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
10119                                 d_syserrlst="$define"
10120                 else
10121                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
10122                         d_syserrlst="$undef"
10123                 fi
10124     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10125                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
10126                 d_strerror="$undef"
10127                 d_syserrlst="$define"
10128                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
10129     else
10130                 echo 'strerror() and sys_errlist[] NOT found.' >&4
10131                 d_strerror="$undef"
10132                 d_syserrlst="$undef"
10133                 d_strerrm='"unknown"'
10134     fi
10135 fi
10136
10137 : see if strtod exists
10138 set strtod d_strtod
10139 eval $inlibc
10140
10141 : see if strtol exists
10142 set strtol d_strtol
10143 eval $inlibc
10144
10145 : see if strtoul exists
10146 set strtoul d_strtoul
10147 eval $inlibc
10148
10149 : see if strxfrm exists
10150 set strxfrm d_strxfrm
10151 eval $inlibc
10152
10153 : see if symlink exists
10154 set symlink d_symlink
10155 eval $inlibc
10156
10157 : see if syscall exists
10158 set syscall d_syscall
10159 eval $inlibc
10160
10161 : see if sysconf exists
10162 set sysconf d_sysconf
10163 eval $inlibc
10164
10165 : see if system exists
10166 set system d_system
10167 eval $inlibc
10168
10169 : see if tcgetpgrp exists
10170 set tcgetpgrp d_tcgetpgrp
10171 eval $inlibc
10172
10173 : see if tcsetpgrp exists
10174 set tcsetpgrp d_tcsetpgrp
10175 eval $inlibc
10176
10177 : see if sys/types.h has to be included
10178 set sys/types.h i_systypes
10179 eval $inhdr
10180
10181 : see if prototype for telldir is available
10182 echo " "
10183 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
10184 eval $hasproto
10185
10186 : define an is-a-typedef? function
10187 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10188 case "$inclist" in
10189 "") inclist="sys/types.h";;
10190 esac;
10191 eval "varval=\$$var";
10192 case "$varval" in
10193 "")
10194         $rm -f temp.c;
10195         for inc in $inclist; do
10196                 echo "#include <$inc>" >>temp.c;
10197         done;
10198         echo "#ifdef $type" >> temp.c;
10199         echo "printf(\"We have $type\");" >> temp.c;
10200         echo "#endif" >> temp.c;
10201         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10202         if $contains $type temp.E >/dev/null 2>&1; then
10203                 eval "$var=\$type";
10204         else
10205                 eval "$var=\$def";
10206         fi;
10207         $rm -f temp.?;;
10208 *) eval "$var=\$varval";;
10209 esac'
10210
10211 : define an is-a-typedef? function that prompts if the type is not available.
10212 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10213 case "$inclist" in
10214 "") inclist="sys/types.h";;
10215 esac;
10216 eval "varval=\$$var";
10217 case "$varval" in
10218 "")
10219         $rm -f temp.c;
10220         for inc in $inclist; do
10221                 echo "#include <$inc>" >>temp.c;
10222         done;
10223         echo "#ifdef $type" >> temp.c;
10224         echo "printf(\"We have $type\");" >> temp.c;
10225         echo "#endif" >> temp.c;
10226         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10227         echo " " ;
10228         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
10229         if $contains $type temp.E >/dev/null 2>&1; then
10230                 echo "$type found." >&4;
10231                 eval "$var=\$type";
10232         else
10233                 echo "$type NOT found." >&4;
10234                 dflt="$def";
10235                 . ./myread ;
10236                 eval "$var=\$ans";
10237         fi;
10238         $rm -f temp.?;;
10239 *) eval "$var=\$varval";;
10240 esac'
10241
10242 : see if this is a sys/times.h system
10243 set sys/times.h i_systimes
10244 eval $inhdr
10245
10246 : see if times exists
10247 echo " "
10248 if set times val -f d_times; eval $csym; $val; then
10249         echo 'times() found.' >&4
10250         d_times="$define"
10251         inc=''
10252         case "$i_systimes" in
10253         "$define") inc='sys/times.h';;
10254         esac
10255         rp="What is the type returned by times() on this system?"
10256         set clock_t clocktype long stdio.h sys/types.h $inc
10257         eval $typedef_ask
10258 else
10259         echo 'times() NOT found, hope that will do.' >&4
10260         d_times="$undef"
10261         clocktype='int'
10262 fi
10263
10264 : see if truncate exists
10265 set truncate d_truncate
10266 eval $inlibc
10267
10268 : see if tzname[] exists
10269 echo " "
10270 if set tzname val -a d_tzname; eval $csym; $val; then
10271         val="$define"
10272         echo 'tzname[] found.' >&4
10273 else
10274         val="$undef"
10275         echo 'tzname[] NOT found.' >&4
10276 fi
10277 set d_tzname
10278 eval $setvar
10279
10280 : see if umask exists
10281 set umask d_umask
10282 eval $inlibc
10283
10284 : backward compatibility for d_hvfork
10285 if test X$d_hvfork != X; then
10286         d_vfork="$d_hvfork"
10287         d_hvfork=''
10288 fi
10289 : see if there is a vfork
10290 val=''
10291 set vfork val
10292 eval $inlibc
10293
10294 : Ok, but do we want to use it. vfork is reportedly unreliable in 
10295 : perl on Solaris 2.x, and probably elsewhere.
10296 case "$val" in
10297 $define)
10298         echo " "
10299         case "$usevfork" in
10300         false) dflt='n';;
10301         *) dflt='y';;
10302         esac
10303         cat <<'EOM'
10304  
10305 Perl can only use a vfork() that doesn't suffer from strict
10306 restrictions on calling functions or modifying global data in
10307 the child.  For example, glibc-2.1 contains such a vfork()
10308 that is unsuitable.  If your system provides a proper fork()
10309 call, chances are that you do NOT want perl to use vfork().
10310
10311 EOM
10312         rp="Do you still want to use vfork()?"
10313         . ./myread
10314         case "$ans" in
10315         y|Y) ;;
10316         *)
10317                 echo "Ok, we won't use vfork()."
10318                 val="$undef"
10319                 ;;
10320         esac
10321         ;;
10322 esac
10323 set d_vfork
10324 eval $setvar
10325 case "$d_vfork" in
10326 $define) usevfork='true';;
10327 *) usevfork='false';;
10328 esac
10329
10330 : see if this is an sysdir system
10331 set sys/dir.h i_sysdir
10332 eval $inhdr
10333
10334 : see if this is an sysndir system
10335 set sys/ndir.h i_sysndir
10336 eval $inhdr
10337
10338 : see if closedir exists
10339 set closedir d_closedir
10340 eval $inlibc
10341
10342 case "$d_closedir" in
10343 "$define")
10344         echo " "
10345         echo "Checking whether closedir() returns a status..." >&4
10346         cat > closedir.c <<EOM
10347 #$i_dirent I_DIRENT             /**/
10348 #$i_sysdir I_SYS_DIR            /**/
10349 #$i_sysndir I_SYS_NDIR          /**/
10350 #$i_systypes I_SYS_TYPES        /**/
10351
10352 #if defined(I_SYS_TYPES)
10353 #include <sys/types.h>
10354 #endif
10355 #if defined(I_DIRENT)
10356 #include <dirent.h>
10357 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10358 #include <sys/dir.h>
10359 #endif
10360 #else
10361 #ifdef I_SYS_NDIR
10362 #include <sys/ndir.h>
10363 #else
10364 #ifdef I_SYS_DIR
10365 #ifdef hp9000s500
10366 #include <ndir.h>       /* may be wrong in the future */
10367 #else
10368 #include <sys/dir.h>
10369 #endif
10370 #endif
10371 #endif
10372 #endif 
10373 int main() { return closedir(opendir(".")); }
10374 EOM
10375         set closedir
10376         if eval $compile_ok; then
10377                 if ./closedir > /dev/null 2>&1 ; then
10378                         echo "Yes, it does."
10379                         val="$undef"
10380                 else
10381                         echo "No, it doesn't."
10382                         val="$define"
10383                 fi
10384         else
10385                 echo "(I can't seem to compile the test program--assuming it doesn't)"
10386                 val="$define"
10387         fi
10388         ;;
10389 *)
10390         val="$undef";
10391         ;;
10392 esac
10393 set d_void_closedir
10394 eval $setvar
10395 $rm -f closedir*
10396 : check for volatile keyword
10397 echo " "
10398 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10399 $cat >try.c <<'EOCP'
10400 int main()
10401 {
10402         typedef struct _goo_struct goo_struct;
10403         goo_struct * volatile goo = ((goo_struct *)0);
10404         struct _goo_struct {
10405                 long long_int;
10406                 int reg_int;
10407                 char char_var;
10408         };
10409         typedef unsigned short foo_t;
10410         char *volatile foo;
10411         volatile int bar;
10412         volatile foo_t blech;
10413         foo = foo;
10414 }
10415 EOCP
10416 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10417         val="$define"
10418         echo "Yup, it does."
10419 else
10420         val="$undef"
10421         echo "Nope, it doesn't."
10422 fi
10423 set d_volatile
10424 eval $setvar
10425 $rm -f try.*
10426
10427 : see if there is a wait4
10428 set wait4 d_wait4
10429 eval $inlibc
10430
10431 : see if waitpid exists
10432 set waitpid d_waitpid
10433 eval $inlibc
10434
10435 : see if wcstombs exists
10436 set wcstombs d_wcstombs
10437 eval $inlibc
10438
10439 : see if wctomb exists
10440 set wctomb d_wctomb
10441 eval $inlibc
10442
10443 : see if writev exists
10444 set writev d_writev
10445 eval $inlibc
10446
10447 : preserve RCS keywords in files with variable substitution, grrr
10448 Date='$Date'
10449 Id='$Id'
10450 Log='$Log'
10451 RCSfile='$RCSfile'
10452 Revision='$Revision'
10453
10454 case "$crosscompile" in
10455 ''|[nN]*) crosscompile="$undef" ;;
10456 esac
10457
10458 case "$osname" in
10459 next|rhapsody) multiarch="$define" ;;
10460 esac
10461 case "$multiarch" in
10462 ''|[nN]*) multiarch="$undef" ;;
10463 esac
10464
10465 : check for alignment requirements
10466 echo " "
10467 case "$crosscompile$multiarch" in
10468 *$define*)
10469         $cat <<EOM
10470 You seem to be either cross-compiling or doing a multiarchitecture build,
10471 skipping the memory alignment check.
10472
10473 EOM
10474         case "$alignbytes" in
10475         '') alignbytes=8 ;;
10476         esac
10477         ;;
10478 *)
10479         case "$alignbytes" in
10480         '') echo "Checking alignment constraints..." >&4
10481                 $cat >try.c <<'EOCP'
10482 struct foobar {
10483         char foo;
10484         double bar;
10485 } try_algn;
10486 int main()
10487 {
10488         printf("%d\n", (char *)&try_algn.bar - (char *)&try_algn.foo);
10489 }
10490 EOCP
10491                 set try
10492                 if eval $compile_ok; then
10493                         dflt=`./try`
10494                 else
10495                         dflt='8'
10496                         echo "(I can't seem to compile the test program...)"
10497                 fi
10498                 ;;
10499         *) dflt="$alignbytes"
10500                 ;;
10501         esac
10502         rp="Doubles must be aligned on a how-many-byte boundary?"
10503         . ./myread
10504         alignbytes="$ans"
10505         $rm -f try.c try
10506         ;;
10507 esac
10508
10509
10510 : check for ordering of bytes in a long
10511 echo " "
10512 case "$crosscompile$multiarch" in
10513 *$define*)
10514         $cat <<EOM
10515 You seem to be either cross-compiling or doing a multiarchitecture build,
10516 skipping the byteorder check.
10517
10518 EOM
10519         byteorder=''
10520         ;;
10521 *)
10522         case "$byteorder" in
10523         '')
10524                 $cat <<'EOM'
10525 In the following, larger digits indicate more significance.  A big-endian
10526 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10527 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10528 machines may have weird orders like 3412.  A Cray will report 87654321. If
10529 the test program works the default is probably right.
10530 I'm now running the test program...
10531 EOM
10532                 $cat >try.c <<'EOCP'
10533 #include <stdio.h>
10534 int main()
10535 {
10536         int i;
10537         union {
10538                 unsigned long l;
10539                 char c[sizeof(long)];
10540         } u;
10541
10542         if (sizeof(long) > 4)
10543                 u.l = (0x08070605L << 32) | 0x04030201L;
10544         else
10545                 u.l = 0x04030201L;
10546         for (i = 0; i < sizeof(long); i++)
10547                 printf("%c", u.c[i]+'0');
10548         printf("\n");
10549         exit(0);
10550 }
10551 EOCP
10552                 xxx_prompt=y
10553                 set try
10554                 if eval $compile && ./try > /dev/null; then
10555                         dflt=`./try`
10556                         case "$dflt" in
10557                         [1-4][1-4][1-4][1-4]|12345678|87654321)
10558                                 echo "(The test program ran ok.)"
10559                                 echo "byteorder=$dflt"
10560                                 xxx_prompt=n
10561                         ;;
10562                         ????|????????) echo "(The test program ran ok.)" ;;
10563                         *) echo "(The test program didn't run right for some reason.)" ;;
10564                         esac
10565                 else
10566                         dflt='4321'
10567                         cat <<'EOM'
10568 (I can't seem to compile the test program.  Guessing big-endian...)
10569 EOM
10570                 fi
10571                 case "$xxx_prompt" in
10572                 y)
10573                         rp="What is the order of bytes in a long?"
10574                         . ./myread
10575                         byteorder="$ans"
10576                         ;;
10577                 *)      byteorder=$dflt
10578                         ;;
10579                 esac
10580                 ;;
10581         esac
10582         $rm -f try.c try
10583         ;;
10584 esac
10585
10586
10587 : how do we catenate cpp tokens here?
10588 echo " "
10589 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10590 $cat >cpp_stuff.c <<'EOCP'
10591 #define RCAT(a,b)a/**/b
10592 #define ACAT(a,b)a ## b
10593 RCAT(Rei,ser)
10594 ACAT(Cir,cus)
10595 EOCP
10596 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10597 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10598         echo "Oh!  Smells like ANSI's been here." >&4
10599         echo "We can catify or stringify, separately or together!"
10600         cpp_stuff=42
10601 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10602         echo "Ah, yes!  The good old days!" >&4
10603         echo "However, in the good old days we don't know how to stringify and"
10604         echo "catify at the same time."
10605         cpp_stuff=1
10606 else
10607         $cat >&4 <<EOM
10608 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
10609 to have to edit the values of CAT[2-5] in config.h...
10610 EOM
10611         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10612 fi
10613 $rm -f cpp_stuff.*
10614
10615 : see if this is a db.h system
10616 set db.h i_db
10617 eval $inhdr
10618
10619 case "$i_db" in
10620 $define)
10621         : Check db version.
10622         echo " "
10623         echo "Checking Berkeley DB version ..." >&4
10624         $cat >try.c <<EOCP
10625 #$d_const HASCONST
10626 #ifndef HASCONST
10627 #define const
10628 #endif
10629 #include <sys/types.h>
10630 #include <stdio.h>
10631 #include <db.h>
10632 int main()
10633 {
10634 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10635     int Major, Minor, Patch ;
10636     unsigned long Version ;
10637     (void)db_version(&Major, &Minor, &Patch) ;
10638     printf("You have Berkeley DB Version 2 or greater\n");
10639
10640     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10641                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10642     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10643                 Major, Minor, Patch) ;
10644
10645     /* check that db.h & libdb are compatible */
10646     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10647         printf("db.h and libdb are incompatible\n") ;
10648         exit(3);        
10649     }
10650
10651     printf("db.h and libdb are compatible\n") ;
10652
10653     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10654                 + DB_VERSION_PATCH ;
10655
10656     /* needs to be >= 2.3.4 */
10657     if (Version < 2003004) {
10658     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10659         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10660         exit(2);        
10661     }
10662
10663     exit(0);
10664 #else
10665 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10666     printf("You have Berkeley DB Version 1\n");
10667     exit(0);    /* DB version < 2: the coast is clear. */
10668 #else
10669     exit(1);    /* <db.h> not Berkeley DB? */
10670 #endif
10671 #endif
10672 }
10673 EOCP
10674         set try
10675         if eval $compile && ./try; then
10676                 echo 'Looks OK.' >&4
10677         else
10678                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
10679                 i_db=$undef
10680                 case " $libs " in
10681                 *"-ldb "*)
10682                         : Remove db from list of libraries to use
10683                         echo "Removing unusable -ldb from library list" >&4
10684                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10685                         shift
10686                         libs="$*"
10687                         echo "libs = $libs" >&4
10688                         ;;
10689                 esac
10690         fi
10691         $rm -f try.*
10692         ;;
10693 esac
10694
10695 case "$i_db" in
10696 define)
10697         : Check the return type needed for hash 
10698         echo " "
10699         echo "Checking return type needed for hash for Berkeley DB ..." >&4
10700         $cat >try.c <<EOCP
10701 #$d_const HASCONST
10702 #ifndef HASCONST
10703 #define const
10704 #endif
10705 #include <sys/types.h>
10706 #include <db.h>
10707
10708 #ifndef DB_VERSION_MAJOR
10709 u_int32_t hash_cb (ptr, size)
10710 const void *ptr;
10711 size_t size;
10712 {
10713 }
10714 HASHINFO info;
10715 int main()
10716 {
10717         info.hash = hash_cb;
10718 }
10719 #endif
10720 EOCP
10721         if $cc $ccflags -c try.c >try.out 2>&1 ; then
10722                 if $contains warning try.out >>/dev/null 2>&1 ; then
10723                         db_hashtype='int'
10724                 else
10725                         db_hashtype='u_int32_t'
10726                 fi
10727         else
10728                 : XXX Maybe we should just give up here.
10729                 db_hashtype=u_int32_t
10730                 $cat try.out >&4
10731                 echo "Help:  I can't seem to compile the db test program." >&4
10732                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10733         fi
10734         $rm -f try.*
10735         echo "Your version of Berkeley DB uses $db_hashtype for hash."
10736         ;;
10737 *)      db_hashtype=u_int32_t
10738         ;;
10739 esac
10740 case "$i_db" in
10741 define)
10742         : Check the return type needed for prefix 
10743         echo " "
10744         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10745         cat >try.c <<EOCP
10746 #$d_const HASCONST
10747 #ifndef HASCONST
10748 #define const
10749 #endif
10750 #include <sys/types.h>
10751 #include <db.h>
10752
10753 #ifndef DB_VERSION_MAJOR
10754 size_t prefix_cb (key1, key2)
10755 const DBT *key1;
10756 const DBT *key2;
10757 {
10758 }
10759 BTREEINFO info;
10760 int main()
10761 {
10762         info.prefix = prefix_cb;
10763 }
10764 #endif
10765 EOCP
10766         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
10767                 if $contains warning try.out >>/dev/null 2>&1 ; then
10768                         db_prefixtype='int'
10769                 else
10770                         db_prefixtype='size_t'
10771                 fi
10772         else
10773                 db_prefixtype='size_t'
10774                 : XXX Maybe we should just give up here.
10775                 $cat try.out >&4
10776                 echo "Help:  I can't seem to compile the db test program." >&4
10777                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10778         fi
10779         $rm -f try.*
10780         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10781         ;;
10782 *)      db_prefixtype='size_t'
10783         ;;
10784 esac
10785
10786 : check for void type
10787 echo " "
10788 echo "Checking to see how well your C compiler groks the void type..." >&4
10789 case "$voidflags" in
10790 '')
10791         $cat >try.c <<'EOCP'
10792 #if TRY & 1
10793 void sub() {
10794 #else
10795 sub() {
10796 #endif
10797         extern void moo();      /* function returning void */
10798         void (*goo)();          /* ptr to func returning void */
10799 #if TRY & 8
10800         void *hue;              /* generic ptr */
10801 #endif
10802 #if TRY & 2
10803         void (*foo[10])();
10804 #endif
10805
10806 #if TRY & 4
10807         if(goo == moo) {
10808                 exit(0);
10809         }
10810 #endif
10811         exit(0);
10812 }
10813 int main() { sub(); }
10814 EOCP
10815         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10816                 voidflags=$defvoidused
10817         echo "Good.  It appears to support void to the level $package wants.">&4
10818                 if $contains warning .out >/dev/null 2>&1; then
10819                         echo "However, you might get some warnings that look like this:"
10820                         $cat .out
10821                 fi
10822         else
10823 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10824                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10825                         echo "It supports 1..."
10826                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10827                                 echo "It also supports 2..."
10828                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10829                                         voidflags=7
10830                                         echo "And it supports 4 but not 8 definitely."
10831                                 else
10832                                         echo "It doesn't support 4..."
10833                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10834                                                 voidflags=11
10835                                                 echo "But it supports 8."
10836                                         else
10837                                                 voidflags=3
10838                                                 echo "Neither does it support 8."
10839                                         fi
10840                                 fi
10841                         else
10842                                 echo "It does not support 2..."
10843                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10844                                         voidflags=13
10845                                         echo "But it supports 4 and 8."
10846                                 else
10847                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10848                                                 voidflags=5
10849                                                 echo "And it supports 4 but has not heard about 8."
10850                                         else
10851                                                 echo "However it supports 8 but not 4."
10852                                         fi
10853                                 fi
10854                         fi
10855                 else
10856                         echo "There is no support at all for void."
10857                         voidflags=0
10858                 fi
10859         fi
10860 esac
10861 case "$voidflags" in
10862 "$defvoidused") ;;
10863 *)      $cat >&4 <<'EOM'
10864   Support flag bits are:
10865     1: basic void declarations.
10866     2: arrays of pointers to functions returning void.
10867     4: operations between pointers to and addresses of void functions.
10868     8: generic void pointers.
10869 EOM
10870         dflt="$voidflags";
10871         rp="Your void support flags add up to what?"
10872         . ./myread
10873         voidflags="$ans"
10874         ;;
10875 esac
10876 $rm -f try.* .out
10877
10878
10879 : How can we generate normalized random numbers ?
10880 echo " "
10881 echo "Looking for a random number function..." >&4
10882 case "$randfunc" in
10883 '')
10884         if set drand48 val -f; eval $csym; $val; then
10885                 dflt="drand48"
10886                 echo "Good, found drand48()." >&4
10887         elif set random val -f; eval $csym; $val; then
10888                 dflt="random"
10889                 echo "OK, found random()." >&4
10890         else
10891                 dflt="rand"
10892                 echo "Yick, looks like I have to use rand()." >&4
10893         fi
10894         echo " "
10895         ;;
10896 *)
10897         dflt="$randfunc"
10898         ;;
10899 esac
10900 cont=true
10901
10902 case "$ccflags" in
10903 *-Dmy_rand=*|*-Dmy_srand=*)
10904         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10905         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10906         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10907         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10908         ;;
10909 esac
10910
10911 while $test "$cont"; do
10912         rp="Use which function to generate random numbers?"
10913         . ./myread
10914         if $test "$ans" = "$dflt"; then
10915                 : null
10916         else
10917                 randbits=''
10918         fi
10919         randfunc="$ans"
10920         if set $ans val -f; eval $csym; $val; then
10921                 cont=''
10922         else
10923                 dflt=y
10924                 rp="I cannot find function $ans. Use that name anyway?"
10925                 . ./myread
10926                 dflt=rand
10927                 case "$ans" in
10928                         [yY]*) cont='';;
10929                 esac
10930         fi
10931         case "$cont" in
10932         '')
10933                 case "$randfunc" in
10934                 drand48)
10935                         drand01="drand48()"
10936                         seedfunc="srand48"
10937                         randbits=48
10938                         randseedtype=long
10939                         ;;
10940                 rand|random)
10941                         case "$randbits" in
10942                         '')
10943 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10944                                 $cat >try.c <<EOCP
10945 #$i_unistd I_UNISTD
10946 #$i_stdlib I_STDLIB
10947 #include <stdio.h>
10948 #ifdef I_UNISTD
10949 #  include <unistd.h>
10950 #endif
10951 #ifdef I_STDLIB
10952 #  include <stdlib.h>
10953 #endif
10954 int main()
10955 {
10956         register int i;
10957         register unsigned long tmp;
10958         register unsigned long max = 0L;
10959
10960         for (i = 1000; i; i--) {
10961                 tmp = (unsigned long) $randfunc();
10962                 if (tmp > max) max = tmp;
10963         }
10964         for (i = 0; max; i++)
10965                 max /= 2;
10966         printf("%d\n",i);
10967 }
10968 EOCP
10969                                 set try
10970                                 if eval $compile_ok; then
10971                                         dflt=`try`
10972                                 else
10973                                         dflt='?'
10974                                         echo "(I can't seem to compile the test program...)"
10975                                 fi
10976                                 ;;
10977                         *)
10978                                 dflt="$randbits"
10979                                 ;;
10980                         esac
10981                         rp="How many bits does your $randfunc() function produce?"
10982                         . ./myread
10983                         randbits="$ans"
10984                         $rm -f try.c try
10985                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10986                         seedfunc="s$randfunc"
10987                         randseedtype=unsigned
10988                         ;;
10989                 *)
10990                         dflt="31"
10991                         rp="How many bits does your $randfunc() function produce?"
10992                         . ./myread
10993                         randbits="$ans"
10994                         seedfunc="s$randfunc"
10995                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10996                         if set $seedfunc val -f; eval $csym; $val; then
10997                                 echo "(Using $seedfunc() to seed random generator)"
10998                         else
10999                                 echo "(Warning: no $seedfunc() to seed random generator)"
11000                                 seedfunc=rand
11001                         fi
11002                         randseedtype=unsigned
11003                         ;;
11004                 esac
11005                 ;;
11006         esac
11007 done
11008
11009 echo " "
11010 echo "Determining whether or not we are on an EBCDIC system..." >&4
11011 $cat >tebcdic.c <<'EOM'
11012 int main()
11013 {
11014   if ('M'==0xd4) return 0;
11015   return 1;
11016 }
11017 EOM
11018
11019 val=$undef
11020 set tebcdic
11021 if eval $compile_ok; then
11022         if ./tebcdic; then
11023                 echo "You have EBCDIC." >&4
11024                 val="$define"
11025         else
11026                 echo "Nope, no EBCDIC.  Assuming ASCII or some ISO Latin, or UTF." >&4
11027         fi
11028 else
11029         echo "I'm unable to compile the test program." >&4
11030         echo "I'll assume ASCII or some ISO Latin." >&4
11031 fi
11032 $rm -f tebcdic.c tebcdic
11033 set ebcdic
11034 eval $setvar
11035
11036 echo " "
11037 $cat >&4 <<EOM
11038 Checking how to flush all pending stdio output...
11039 EOM
11040 # I only know how to find the first 32 possibly open files on SunOS.
11041 # See also hints/sunos_4_1.sh and util.c  --AD
11042 case "$osname" in
11043 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
11044 esac
11045 $cat >>try.c <<EOCP
11046 #include <stdio.h>
11047 #$i_unistd I_UNISTD
11048 #ifdef I_UNISTD
11049 # include <unistd.h>
11050 #endif
11051 #$d_sysconf HAS_SYSCONF
11052 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
11053 #ifdef HAS_STDIO_STREAM_ARRAY
11054 # define STDIO_STREAM_ARRAY $stdio_stream_array
11055 #endif
11056 int main() {
11057   FILE* p = fopen("try.out", "w");
11058 #ifdef TRY_FPUTC
11059   fputc('x', p);
11060 #else
11061 # ifdef TRY_FPRINTF
11062   fprintf(p, "x");
11063 # endif
11064 #endif
11065 #ifdef TRY_FFLUSH_NULL
11066   fflush(NULL);
11067 #endif
11068 #ifdef TRY_FFLUSH_ALL
11069   {
11070     long open_max = -1;
11071 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
11072     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
11073 # else
11074 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
11075     open_max = sysconf(_SC_OPEN_MAX);
11076 #  else
11077 #   ifdef FOPEN_MAX
11078     open_max = FOPEN_MAX;
11079 #   else
11080 #    ifdef OPEN_MAX
11081     open_max = OPEN_MAX;
11082 #    else
11083 #     ifdef _NFILE
11084     open_max = _NFILE;
11085 #     endif
11086 #    endif
11087 #   endif
11088 #  endif
11089 # endif 
11090 # ifdef HAS_STDIO_STREAM_ARRAY
11091     if (open_max > 0) {
11092       long i;
11093       for (i = 0; i < open_max; i++)
11094             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
11095                 STDIO_STREAM_ARRAY[i]._file < open_max &&
11096                 STDIO_STREAM_ARRAY[i]._flag)
11097                 fflush(&STDIO_STREAM_ARRAY[i]);
11098     }   
11099   }
11100 # endif
11101 #endif
11102   _exit(42);
11103 }
11104 EOCP
11105 : first we have to find out how _not_ to flush
11106 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
11107     output=''
11108     set try -DTRY_FPUTC
11109     if eval $compile; then
11110             $rm -f try.out
11111             ./try$exe_ext 2>/dev/null
11112             if $test ! -s try.out -a "X$?" = X42; then
11113                 output=-DTRY_FPUTC
11114             fi
11115     fi
11116     case "$output" in
11117     '')
11118             set try -DTRY_FPRINTF
11119             $rm -f try.out
11120             if eval $compile; then
11121                     $rm -f try.out
11122                     ./try$exe_ext 2>/dev/null
11123                     if $test ! -s try.out -a "X$?" = X42; then
11124                         output=-DTRY_FPRINTF
11125                     fi
11126             fi
11127         ;;
11128     esac
11129 fi
11130 : check for fflush NULL behaviour
11131 case "$fflushNULL" in
11132 '')     set try -DTRY_FFLUSH_NULL $output
11133         if eval $compile; then
11134                 $rm -f try.out
11135                 ./try$exe_ext 2>/dev/null
11136                 code="$?"
11137                 if $test -s try.out -a "X$code" = X42; then
11138                         fflushNULL="`$cat try.out`"
11139                 else
11140                         if $test "X$code" != X42; then
11141                                 $cat >&4 <<EOM
11142 (If this test failed, don't worry, we'll try another method shortly.)
11143 EOM
11144                         fi
11145                 fi
11146         fi
11147         $rm -f core try.core core.try.*
11148         case "$fflushNULL" in
11149         x)      $cat >&4 <<EOM
11150 Your fflush(NULL) works okay.
11151 EOM
11152                 fflushNULL="$define"
11153                 ;;
11154         '')     $cat >&4 <<EOM
11155 Your fflush(NULL) isn't working (contrary to ANSI C).
11156 EOM
11157                 fflushNULL="$undef"
11158                 ;;
11159         *)      $cat >&4 <<EOM
11160 Cannot figure out whether your fflush(NULL) works or not.
11161 I'm assuming it doesn't (contrary to ANSI C).
11162 EOM
11163                 fflushNULL="$undef"
11164                 ;;
11165         esac
11166         ;;
11167 $define|true|[yY]*)
11168         fflushNULL="$define"
11169         ;;
11170 *)
11171         fflushNULL="$undef"
11172         ;;
11173 esac
11174 : check explicit looping only if NULL did not work
11175 case "$fflushNULL" in
11176 "$undef")
11177         : check for fflush all behaviour
11178         case "$fflushall" in
11179         '')     set try -DTRY_FFLUSH_ALL $output
11180                 if eval $compile; then
11181                         $cat >&4 <<EOM
11182 (Now testing the other method--but note that also this may fail.)
11183 EOM
11184                         $rm -f try.out
11185                         ./try$exe_ext 2>/dev/null
11186                         if $test -s try.out -a "X$?" = X42; then
11187                                 fflushall="`$cat try.out`"
11188                         fi
11189                 fi
11190                 $rm -f core try.core core.try.*
11191                 case "$fflushall" in
11192                 x)      $cat >&4 <<EOM
11193 Whew. Flushing explicitly all the stdio streams works.
11194 EOM
11195                         fflushall="$define"
11196                         ;;
11197                 '')     $cat >&4 <<EOM
11198 Sigh. Flushing explicitly all the stdio streams doesn't work.
11199 EOM
11200                         fflushall="$undef"
11201                         ;;
11202                 *)      $cat >&4 <<EOM
11203 Cannot figure out whether flushing stdio streams explicitly works or not.
11204 I'm assuming it doesn't.
11205 EOM
11206                         fflushall="$undef"
11207                         ;;
11208                 esac
11209                 ;;
11210         "$define"|true|[yY]*)
11211                 fflushall="$define"
11212                 ;;
11213         *)
11214                 fflushall="$undef"
11215                 ;;
11216         esac
11217         ;;
11218 *)      fflushall="$undef"      
11219         ;;
11220 esac
11221 case "$fflushNULL$fflushall" in
11222 undefundef)
11223         $cat <<EOM
11224 I cannot figure out how to flush pending stdio output.
11225 EOM
11226         ;;
11227 esac
11228 $rm -f try.* try$exe_ext
11229
11230 : see what type file positions are declared as in the library
11231 rp="What is the type for file position used by fsetpos()?"
11232 set fpos_t fpostype long stdio.h sys/types.h
11233 eval $typedef_ask
11234
11235 : Store the full pathname to the ar program for use in the C program
11236 : Respect a hint or command line value for full_ar.
11237 case "$full_ar" in
11238 '') full_ar=$ar ;;
11239 esac
11240
11241 : Store the full pathname to the sed program for use in the C program
11242 full_sed=$sed
11243
11244 : see what type gids are declared as in the kernel
11245 echo " "
11246 echo "Looking for the type for group ids returned by getgid()."
11247 set gid_t gidtype xxx stdio.h sys/types.h
11248 eval $typedef
11249 case "$gidtype" in
11250 xxx)
11251         xxx=`./findhdr sys/user.h`
11252         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
11253         case $1 in
11254         unsigned) dflt="$1 $2" ;;
11255         *) dflt="$1" ;;
11256         esac
11257         ;;
11258 *) dflt="$gidtype";;
11259 esac
11260 case "$gidtype" in
11261 gid_t) echo "gid_t found." ;;
11262 *)      rp="What is the type for group ids returned by getgid()?"
11263         . ./myread
11264         gidtype="$ans"
11265         ;;
11266 esac
11267
11268 : see if getgroups exists
11269 set getgroups d_getgrps
11270 eval $inlibc
11271
11272 : see if setgroups exists
11273 set setgroups d_setgrps
11274 eval $inlibc
11275
11276
11277 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
11278 echo " "
11279 case "$d_getgrps$d_setgrps" in
11280 *define*)
11281         case "$groupstype" in
11282         '') dflt="$gidtype" ;;
11283         *)  dflt="$groupstype" ;;
11284         esac
11285         $cat <<EOM
11286 What type of pointer is the second argument to getgroups() and setgroups()?
11287 Usually this is the same as group ids, $gidtype, but not always.
11288
11289 EOM
11290         rp='What type pointer is the second argument to getgroups() and setgroups()?'
11291         . ./myread
11292         groupstype="$ans"
11293         ;;
11294 *)  groupstype="$gidtype";;
11295 esac
11296
11297 : see what type lseek is declared as in the kernel
11298 rp="What is the type used for lseek's offset on this system?"
11299 set off_t lseektype long stdio.h sys/types.h
11300 eval $typedef_ask
11301
11302 echo " "
11303 $echo $n "Checking to see how big your file offsets are...$c" >&4
11304 $cat >try.c <<EOCP
11305 #include <sys/types.h>
11306 #include <stdio.h>
11307 int main()
11308 {
11309         printf("%d\n", sizeof($lseektype));
11310 }
11311 EOCP
11312 set try
11313 if eval $compile_ok; then
11314         lseeksize=`./try`
11315         $echo " $lseeksize bytes." >&4
11316 else
11317         dflt='4'
11318         echo " "
11319         echo "(I can't seem to compile the test program.  Guessing...)"
11320         rp="What is the size of your file offsets (in bytes)?"
11321         . ./myread
11322         lseeksize="$ans"
11323 fi
11324 $rm -f try.c try
11325
11326 echo " "
11327 echo "Checking if your $make program sets \$(MAKE)..." >&4
11328 case "$make_set_make" in
11329 '')
11330         $sed 's/^X //' > testmake.mak << 'EOF'
11331 Xall:
11332 X       @echo 'maketemp="$(MAKE)"'
11333 EOF
11334         case "`$make -f testmake.mak 2>/dev/null`" in
11335         *maketemp=*) make_set_make='#' ;;
11336         *)      make_set_make="MAKE=$make" ;;
11337         esac
11338         $rm -f testmake.mak
11339         ;;
11340 esac
11341 case "$make_set_make" in
11342 '#') echo "Yup, it does.";;
11343 *) echo "Nope, it doesn't.";;
11344 esac
11345
11346 : see what type is used for mode_t
11347 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
11348 set mode_t modetype int stdio.h sys/types.h
11349 eval $typedef_ask
11350
11351 : define a fucntion to check prototypes
11352 $cat > protochk <<EOSH
11353 $startsh
11354 cc="$cc"
11355 optimize="$optimize"
11356 ccflags="$ccflags"
11357 prototype="$prototype"
11358 define="$define"
11359 rm=$rm
11360 EOSH
11361
11362 $cat >> protochk <<'EOSH'
11363
11364 $rm -f try.c
11365 foo="$1"
11366 shift
11367 while test $# -ge 2; do
11368         case "$1" in
11369                 $define) echo "#include <$2>" >> try.c ;;
11370                 literal) echo "$2" >> try.c ;;
11371         esac
11372     shift 2
11373 done
11374 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
11375 cat >> try.c <<'EOCP'
11376 #ifdef CAN_PROTOTYPE
11377 #define _(args) args
11378 #else
11379 #define _(args) ()
11380 #endif
11381 EOCP
11382 echo "$foo" >> try.c
11383 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
11384 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
11385 status=$?
11386 $rm -f try.[co]
11387 exit $status
11388 EOSH
11389 chmod +x protochk
11390 $eunicefix protochk
11391
11392 : see what type is used for size_t
11393 rp="What is the type used for the length parameter for string functions?"
11394 set size_t sizetype 'unsigned int' stdio.h sys/types.h
11395 eval $typedef_ask
11396
11397 : check for type of arguments to gethostbyaddr. 
11398 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
11399         case "$d_gethbyaddr" in
11400         $define)
11401                 $cat <<EOM
11402
11403 Checking to see what type of arguments are accepted by gethostbyaddr().
11404 EOM
11405                 hdrs="$define sys/types.h
11406                         $d_socket sys/socket.h 
11407                         $i_niin netinet/in.h 
11408                         $i_netdb netdb.h
11409                         $i_unistd unistd.h"
11410                 : The first arg can 'char *' or 'void *'
11411                 : The second arg is some of integral type
11412                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
11413                         for yyy in size_t long int; do
11414                                 case "$netdb_host_type" in
11415                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
11416                                         if ./protochk "$try" $hdrs; then
11417                                                 echo "Your system accepts $xxx for the first arg."
11418                                                 echo "...and $yyy for the second arg."
11419                                                 netdb_host_type="$xxx"
11420                                                 netdb_hlen_type="$yyy"
11421                                         fi
11422                                         ;;
11423                                 esac
11424                         done
11425                 done
11426                 : In case none of those worked, prompt the user.
11427                 case "$netdb_host_type" in
11428                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
11429                         dflt='char *'
11430                         . ./myread
11431                         netdb_host_type=$ans
11432                         rp='What is the type for the 2nd argument to gethostbyaddr?'
11433                         dflt="$sizetype"
11434                         . ./myread
11435                         netdb_hlen_type=$ans
11436                         ;;
11437                 esac
11438                 ;;
11439         *)      : no gethostbyaddr, so pick harmless defaults
11440                 netdb_host_type='char *'
11441                 netdb_hlen_type="$sizetype"
11442                 ;;
11443         esac
11444         # Remove the "const" if needed. -- but then we'll have a 
11445         # prototype clash!
11446         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
11447 fi
11448
11449 : check for type of argument to gethostbyname. 
11450 if test "X$netdb_name_type" = X ; then
11451         case "$d_gethbyname" in
11452         $define)
11453                 $cat <<EOM
11454
11455 Checking to see what type of argument is accepted by gethostbyname().
11456 EOM
11457                 hdrs="$define sys/types.h
11458                         $d_socket sys/socket.h 
11459                         $i_niin netinet/in.h 
11460                         $i_netdb netdb.h
11461                         $i_unistd unistd.h"
11462                 for xxx in "const char *" "char *"; do
11463                         case "$netdb_name_type" in
11464                         '')     try="extern struct hostent *gethostbyname($xxx);"
11465                                 if ./protochk "$try" $hdrs; then
11466                                         echo "Your system accepts $xxx."
11467                                         netdb_name_type="$xxx"
11468                                 fi
11469                                 ;;
11470                         esac
11471                 done
11472                 : In case none of those worked, prompt the user.
11473                 case "$netdb_name_type" in
11474                 '')     rp='What is the type for the 1st argument to gethostbyname?'
11475                         dflt='char *'
11476                         . ./myread
11477                         netdb_name_type=$ans
11478                         ;;
11479                 esac
11480                 ;;
11481         *)      : no gethostbyname, so pick harmless default
11482                 netdb_name_type='char *'
11483                 ;;
11484         esac
11485 fi
11486
11487 : check for type of 1st argument to getnetbyaddr. 
11488 if test "X$netdb_net_type" = X ; then
11489         case "$d_getnbyaddr" in
11490         $define)
11491                 $cat <<EOM
11492
11493 Checking to see what type of 1st argument is accepted by getnetbyaddr().
11494 EOM
11495                 hdrs="$define sys/types.h
11496                         $d_socket sys/socket.h 
11497                         $i_niin netinet/in.h 
11498                         $i_netdb netdb.h
11499                         $i_unistd unistd.h"
11500                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11501                         case "$netdb_net_type" in
11502                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
11503                                 if ./protochk "$try" $hdrs; then
11504                                         echo "Your system accepts $xxx."
11505                                         netdb_net_type="$xxx"
11506                                 fi
11507                                 ;;
11508                         esac
11509                 done
11510                 : In case none of those worked, prompt the user.
11511                 case "$netdb_net_type" in
11512                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
11513                         dflt='long'
11514                         . ./myread
11515                         netdb_net_type=$ans
11516                         ;;
11517                 esac
11518                 ;;
11519         *)      : no getnetbyaddr, so pick harmless default
11520                 netdb_net_type='long'
11521                 ;;
11522         esac
11523 fi
11524 : locate the preferred pager for this system
11525 case "$pager" in
11526 '')
11527         dflt=''
11528         case "$pg" in
11529         /*) dflt=$pg;;
11530         esac
11531         case "$more" in
11532         /*) dflt=$more;;
11533         esac
11534         case "$less" in
11535         /*) dflt=$less;;
11536         esac
11537         case "$dflt" in
11538         '') dflt=/usr/ucb/more;;
11539         esac
11540         ;;
11541 *) dflt="$pager";;
11542 esac
11543 echo " "
11544 fn=f/
11545 rp='What pager is used on your system?'
11546 . ./getfile
11547 pager="$ans"
11548
11549 : see what type pids are declared as in the kernel
11550 rp="What is the type of process ids on this system?"
11551 set pid_t pidtype int stdio.h sys/types.h
11552 eval $typedef_ask
11553
11554 : check for length of pointer
11555 echo " "
11556 case "$ptrsize" in
11557 '')
11558         $echo $n "Checking to see how big your pointers are...$c" >&4
11559         if test "$voidflags" -gt 7; then
11560                 echo '#define VOID_PTR char *' > try.c
11561         else
11562                 echo '#define VOID_PTR void *' > try.c
11563         fi
11564         $cat >>try.c <<'EOCP'
11565 #include <stdio.h>
11566 int main()
11567 {
11568         printf("%d\n", sizeof(VOID_PTR));
11569         exit(0);
11570 }
11571 EOCP
11572         set try
11573         if eval $compile_ok; then
11574                 ptrsize=`./try`
11575                 $echo " $ptrsize bytes." >&4
11576         else
11577                 dflt='4'
11578                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
11579                 rp="What is the size of a pointer (in bytes)?"
11580                 . ./myread
11581                 ptrsize="$ans"
11582         fi
11583         ;;
11584 esac
11585 $rm -f try.c try
11586
11587 : see if ar generates random libraries by itself
11588 echo " "
11589 echo "Checking how to generate random libraries on your machine..." >&4
11590 echo 'int bar1() { return bar2(); }' > bar1.c
11591 echo 'int bar2() { return 2; }' > bar2.c
11592 $cat > foo.c <<'EOP'
11593 int main() { printf("%d\n", bar1()); exit(0); }
11594 EOP
11595 $cc $ccflags -c bar1.c >/dev/null 2>&1
11596 $cc $ccflags -c bar2.c >/dev/null 2>&1
11597 $cc $ccflags -c foo.c >/dev/null 2>&1
11598 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11599 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11600         ./foobar >/dev/null 2>&1; then
11601         echo "$ar appears to generate random libraries itself."
11602         orderlib=false
11603         ranlib=":"
11604 elif $ar ts bar$_a >/dev/null 2>&1 &&
11605         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11606         ./foobar >/dev/null 2>&1; then
11607                 echo "a table of contents needs to be added with '$ar ts'."
11608                 orderlib=false
11609                 ranlib="$ar ts"
11610 else
11611         case "$ranlib" in
11612         :) ranlib='';;
11613         '')
11614                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11615                 $test -f $ranlib || ranlib=''
11616                 ;;
11617         esac
11618         if $test -n "$ranlib"; then
11619                 echo "your system has '$ranlib'; we'll use that."
11620                 orderlib=false
11621         else
11622                 echo "your system doesn't seem to support random libraries"
11623                 echo "so we'll use lorder and tsort to order the libraries."
11624                 orderlib=true
11625                 ranlib=":"
11626         fi
11627 fi
11628 $rm -f foo* bar* 
11629
11630 : check for type of arguments to select. 
11631 case "$selecttype" in
11632 '') case "$d_select" in
11633         $define)
11634                 $cat <<EOM
11635 Checking to see what type of arguments are accepted by select().
11636 EOM
11637                 hdrs="$define sys/types.h
11638                         $i_systime sys/time.h 
11639                         $i_sysselct sys/select.h
11640                         $d_socket sys/socket.h"
11641                 : The first arg can be int, unsigned, or size_t
11642                 : The last arg may or may not be 'const'
11643                 val=''
11644                 : void pointer has been seen but using that
11645                 : breaks the selectminbits test
11646                 for xxx in 'fd_set *' 'int *'; do
11647                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11648                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
11649                                         case "$val" in
11650                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11651                                                 if ./protochk "$try" $hdrs; then
11652                                                         echo "Your system accepts $xxx."
11653                                                         val="$xxx"
11654                                                 fi
11655                                                 ;;
11656                                         esac
11657                                 done
11658                         done
11659                 done
11660                 case "$val" in
11661                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11662                         case "$d_fd_set" in
11663                                 $define) dflt="fd_set *" ;;
11664                                 *)              dflt="int *" ;;
11665                         esac
11666                         . ./myread
11667                         val=$ans
11668                         ;;
11669                 esac
11670                 selecttype="$val"
11671                 ;;
11672         *)      : no select, so pick a harmless default
11673                 selecttype='int *'
11674                 ;;
11675         esac
11676         ;;
11677 esac
11678
11679 : check for the select 'width'
11680 case "$selectminbits" in
11681 '') case "$d_select" in
11682         $define)
11683                 $cat <<EOM
11684
11685 Checking to see on how many bits at a time your select() operates...
11686 EOM
11687                 $cat >try.c <<EOCP
11688 #include <sys/types.h>
11689 #$i_time I_TIME
11690 #$i_systime I_SYS_TIME
11691 #$i_systimek I_SYS_TIME_KERNEL
11692 #ifdef I_TIME
11693 #   include <time.h>
11694 #endif
11695 #ifdef I_SYS_TIME
11696 #   ifdef I_SYS_TIME_KERNEL
11697 #       define KERNEL
11698 #   endif
11699 #   include <sys/time.h>
11700 #   ifdef I_SYS_TIME_KERNEL
11701 #       undef KERNEL
11702 #   endif
11703 #endif
11704 #$i_sysselct I_SYS_SELECT
11705 #ifdef I_SYS_SELECT
11706 #include <sys/select.h>
11707 #endif
11708 #$d_socket HAS_SOCKET
11709 #ifdef HAS_SOCKET
11710 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
11711 #endif
11712 #include <stdio.h>
11713 $selecttype b;
11714 #define S sizeof(*(b))
11715 #define MINBITS 64
11716 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11717 #define NBITS  (NBYTES * 8)
11718 int main() {
11719     char s[NBYTES];
11720     struct timeval t;
11721     int i;
11722     FILE* fp;
11723     int fd;
11724
11725     fclose(stdin);
11726     fp = fopen("try.c", "r");
11727     if (fp == 0)
11728       exit(1);
11729     fd = fileno(fp);
11730     if (fd < 0)
11731       exit(2);
11732     b = ($selecttype)s;
11733     for (i = 0; i < NBITS; i++)
11734         FD_SET(i, b);
11735     t.tv_sec  = 0;
11736     t.tv_usec = 0;
11737     select(fd + 1, b, 0, 0, &t);
11738     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11739     printf("%d\n", i + 1);
11740     return 0;
11741 }
11742 EOCP
11743                 set try
11744                 if eval $compile_ok; then
11745                         selectminbits=`./try`
11746                         case "$selectminbits" in
11747                         '')     cat >&4 <<EOM
11748 Cannot figure out on how many bits at a time your select() operates.
11749 I'll play safe and guess it is 32 bits.
11750 EOM
11751                                 selectminbits=32
11752                                 bits="32 bits"
11753                                 ;;
11754                         1)      bits="1 bit" ;;
11755                         *)      bits="$selectminbits bits" ;;
11756                         esac
11757                         echo "Your select() operates on $bits at a time." >&4
11758                 else
11759                         rp='What is the minimum number of bits your select() operates on?'
11760                         case "$byteorder" in
11761                         1234|12345678)  dflt=32 ;;
11762                         *)              dflt=1  ;;
11763                         esac
11764                         . ./myread
11765                         val=$ans
11766                         selectminbits="$val"
11767                 fi
11768                 $rm -f try.* try
11769                 ;;
11770         *)      : no select, so pick a harmless default
11771                 selectminbits='32'
11772                 ;;
11773         esac
11774         ;;
11775 esac
11776
11777 : Trace out the files included by signal.h, then look for SIGxxx names.
11778 : Remove SIGARRAYSIZE used by HPUX.
11779 : Remove SIGSTKSIZE used by Linux.
11780 : Remove SIGSTKSZ used by Posix.
11781 : Remove SIGTYP void lines used by OS2.
11782 xxx=`echo '#include <signal.h>' |
11783         $cppstdin $cppminus $cppflags 2>/dev/null |
11784         $grep '^[       ]*#.*include' | 
11785         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11786 : Check this list of files to be sure we have parsed the cpp output ok.
11787 : This will also avoid potentially non-existent files, such 
11788 : as ../foo/bar.h
11789 xxxfiles=''
11790 for xx in $xxx /dev/null ; do
11791         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11792 done
11793 : If we have found no files, at least try signal.h
11794 case "$xxxfiles" in
11795 '')     xxxfiles=`./findhdr signal.h` ;;
11796 esac
11797 xxx=`awk '
11798 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
11799         print substr($2, 4, 20)
11800 }
11801 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11802         print substr($3, 4, 20)
11803 }' $xxxfiles`
11804 : Append some common names just in case the awk scan failed.
11805 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11806 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11807 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11808 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11809 : generate a few handy files for later
11810 $cat > signal.c <<'EOCP'
11811 #include <sys/types.h>
11812 #include <signal.h>
11813 #include <stdio.h>
11814 int main() {
11815
11816 /* Strange style to avoid deeply-nested #if/#else/#endif */
11817 #ifndef NSIG
11818 #  ifdef _NSIG
11819 #    define NSIG (_NSIG)
11820 #  endif
11821 #endif
11822
11823 #ifndef NSIG
11824 #  ifdef SIGMAX
11825 #    define NSIG (SIGMAX+1)
11826 #  endif
11827 #endif
11828
11829 #ifndef NSIG
11830 #  ifdef SIG_MAX
11831 #    define NSIG (SIG_MAX+1)
11832 #  endif
11833 #endif
11834
11835 #ifndef NSIG
11836 #  ifdef MAXSIG
11837 #    define NSIG (MAXSIG+1)
11838 #  endif
11839 #endif
11840
11841 #ifndef NSIG
11842 #  ifdef MAX_SIG
11843 #    define NSIG (MAX_SIG+1)
11844 #  endif
11845 #endif
11846
11847 #ifndef NSIG
11848 #  ifdef SIGARRAYSIZE
11849 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11850 #  endif
11851 #endif
11852
11853 #ifndef NSIG
11854 #  ifdef _sys_nsig
11855 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
11856 #  endif
11857 #endif
11858
11859 /* Default to some arbitrary number that's big enough to get most
11860    of the common signals.
11861 */
11862 #ifndef NSIG
11863 #    define NSIG 50
11864 #endif
11865
11866 printf("NSIG %d\n", NSIG);
11867
11868 #ifndef JUST_NSIG
11869
11870 EOCP
11871
11872 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11873 {
11874         printf "#ifdef SIG"; printf $1; printf "\n"
11875         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11876         printf $1; printf ");\n"
11877         printf "#endif\n"
11878 }
11879 END {
11880         printf "#endif /* JUST_NSIG */\n";
11881         printf "}\n";
11882 }
11883 ' >>signal.c
11884 $cat >signal.awk <<'EOP'
11885 BEGIN { ndups = 0 }
11886 $1 ~ /^NSIG$/ { nsig = $2 }
11887 ($1 !~ /^NSIG$/) && (NF == 2) {
11888     if ($2 > maxsig) { maxsig = $2 }
11889     if (sig_name[$2]) {
11890         dup_name[ndups] = $1
11891         dup_num[ndups] = $2
11892         ndups++ 
11893     }
11894     else {
11895         sig_name[$2] = $1
11896         sig_num[$2] = $2
11897     }
11898 }
11899 END { 
11900     if (nsig == 0) {
11901         nsig = maxsig + 1
11902     }
11903     printf("NSIG %d\n", nsig);
11904     for (n = 1; n < nsig; n++) {
11905         if (sig_name[n]) {
11906             printf("%s %d\n", sig_name[n], sig_num[n])
11907         }
11908         else {
11909             printf("NUM%d %d\n", n, n) 
11910         }
11911     }
11912     for (n = 0; n < ndups; n++) {
11913         printf("%s %d\n", dup_name[n], dup_num[n])
11914     }
11915 }
11916 EOP
11917 $cat >signal_cmd <<EOS
11918 $startsh
11919 if $test -s signal.lst; then
11920     echo "Using your existing signal.lst file"
11921         exit 0
11922 fi
11923 xxx="$xxx"
11924 EOS
11925 $cat >>signal_cmd <<'EOS'
11926
11927 set signal
11928 if eval $compile_ok; then
11929         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11930 else
11931         echo "(I can't seem be able to compile the whole test program)" >&4
11932         echo "(I'll try it in little pieces.)" >&4
11933         set signal -DJUST_NSIG
11934         if eval $compile_ok; then
11935                 ./signal$_exe > signal.nsg
11936                 $cat signal.nsg
11937         else
11938                 echo "I can't seem to figure out how many signals you have." >&4
11939                 echo "Guessing 50." >&4
11940                 echo 'NSIG 50' > signal.nsg
11941         fi
11942         : Now look at all the signal names, one at a time.
11943         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11944                 $cat > signal.c <<EOCP
11945 #include <sys/types.h>
11946 #include <signal.h>
11947 #include <stdio.h>
11948 int main() {
11949 printf("$xx %d\n", SIG${xx});
11950 return 0;
11951 }
11952 EOCP
11953                 set signal
11954                 if eval $compile; then
11955                         echo "SIG${xx} found."
11956                         ./signal$_exe  >> signal.ls1
11957                 else
11958                         echo "SIG${xx} NOT found."
11959                 fi
11960         done
11961         if $test -s signal.ls1; then
11962                 $cat signal.nsg signal.ls1 |
11963                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11964         fi
11965
11966 fi
11967 if $test -s signal.lst; then
11968         :
11969 else
11970         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11971         echo 'kill -l' >signal
11972         set X `csh -f <signal`
11973         $rm -f signal
11974         shift
11975         case $# in
11976         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11977         esac
11978         echo $@ | $tr ' ' $trnl | \
11979             $awk '{ printf "%s %d\n", $1, ++s; }
11980                   END { printf "NSIG %d\n", ++s }' >signal.lst
11981 fi
11982 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11983 EOS
11984 chmod a+x signal_cmd
11985 $eunicefix signal_cmd
11986
11987 : generate list of signal names
11988 echo " "
11989 case "$sig_name_init" in
11990 '') doinit=yes ;;
11991 *)  case "$sig_num_init" in
11992     ''|*,*) doinit=yes ;;
11993     esac ;;
11994 esac
11995 case "$doinit" in
11996 yes)
11997         echo "Generating a list of signal names and numbers..." >&4
11998         . ./signal_cmd
11999         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
12000         sig_name=`$awk 'BEGIN { printf "ZERO " }
12001                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
12002         sig_num=`$awk  'BEGIN { printf "0 " }
12003                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
12004         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
12005                              !/^NSIG/   { printf "\"%s\", ", $1 }
12006                              END        { printf "0\n" }' signal.lst`
12007         sig_num_init=`$awk  'BEGIN      { printf "0, " }
12008                              !/^NSIG/   { printf "%d, ", $2}
12009                              END        { printf "0\n"}' signal.lst`
12010         ;;
12011 esac
12012 echo "The following $sig_count signals are available:"
12013 echo " "
12014 echo $sig_name | $awk \
12015 'BEGIN { linelen = 0 }
12016 {
12017         for (i = 1; i <= NF; i++) {
12018                 name = "SIG" $i " "
12019                 linelen = linelen + length(name)
12020                 if (linelen > 70) {
12021                         printf "\n"
12022                         linelen = length(name)
12023                 }
12024                 printf "%s", name
12025         }
12026         printf "\n"
12027 }'
12028 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
12029
12030 : see what type is used for signed size_t
12031 set ssize_t ssizetype int stdio.h sys/types.h
12032 eval $typedef
12033 dflt="$ssizetype"
12034 $cat > ssize.c <<EOM
12035 #include <stdio.h>
12036 #include <sys/types.h>
12037 #define Size_t $sizetype
12038 #define SSize_t $dflt
12039 int main()
12040 {
12041         if (sizeof(Size_t) == sizeof(SSize_t))
12042                 printf("$dflt\n");
12043         else if (sizeof(Size_t) == sizeof(int))
12044                 printf("int\n");
12045         else 
12046                 printf("long\n");
12047         exit(0);
12048 }
12049 EOM
12050 echo " "
12051 set ssize
12052 if eval $compile_ok && ./ssize > /dev/null; then
12053         ssizetype=`./ssize`
12054         echo "I'll be using $ssizetype for functions returning a byte count." >&4
12055 else
12056         $cat >&4 <<EOM
12057 Help! I can't compile and run the ssize_t test program: please enlighten me!
12058 (This is probably a misconfiguration in your system or libraries, and
12059 you really ought to fix it.  Still, I'll try anyway.)
12060
12061 I need a type that is the same size as $sizetype, but is guaranteed to
12062 be signed.  Common values are ssize_t, int and long.
12063
12064 EOM
12065         rp="What signed type is the same size as $sizetype?"
12066         . ./myread
12067         ssizetype="$ans"
12068 fi
12069 $rm -f ssize ssize.*
12070
12071 : see what type of char stdio uses.
12072 echo " "
12073 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12074         echo "Your stdio uses unsigned chars." >&4
12075         stdchar="unsigned char"
12076 else
12077         echo "Your stdio uses signed chars." >&4
12078         stdchar="char"
12079 fi
12080
12081 : see if time exists
12082 echo " "
12083 if test "X$d_time" = X -o X"$timetype" = X; then
12084     if set time val -f d_time; eval $csym; $val; then
12085                 echo 'time() found.' >&4
12086                 val="$define"
12087                 rp="What is the type returned by time() on this system?"
12088                 set time_t timetype long stdio.h sys/types.h
12089                 eval $typedef_ask
12090     else
12091                 echo 'time() not found, hope that will do.' >&4
12092                 val="$undef"
12093                 timetype='int';
12094     fi
12095     set d_time
12096     eval $setvar
12097 fi
12098
12099 : see what type uids are declared as in the kernel
12100 echo " "
12101 echo "Looking for the type for user ids returned by getuid()."
12102 set uid_t uidtype xxx stdio.h sys/types.h
12103 eval $typedef
12104 case "$uidtype" in
12105 xxx)
12106         xxx=`./findhdr sys/user.h`
12107         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
12108         case $1 in
12109         unsigned) dflt="$1 $2" ;;
12110         *) dflt="$1" ;;
12111         esac
12112         ;;
12113 *) dflt="$uidtype";;
12114 esac
12115 case "$uidtype" in
12116 uid_t)  echo "uid_t found." ;;
12117 *)      rp="What is the type for user ids returned by getuid()?"
12118         . ./myread
12119         uidtype="$ans"
12120         ;;
12121 esac
12122
12123 : see if dbm.h is available
12124 : see if dbmclose exists
12125 set dbmclose d_dbmclose
12126 eval $inlibc
12127
12128 case "$d_dbmclose" in
12129 $define)
12130         set dbm.h i_dbm
12131         eval $inhdr
12132         case "$i_dbm" in
12133         $define)
12134                 val="$undef"
12135                 set i_rpcsvcdbm
12136                 eval $setvar
12137                 ;;
12138         *)      set rpcsvc/dbm.h i_rpcsvcdbm
12139                 eval $inhdr
12140                 ;;
12141         esac
12142         ;;
12143 *)      echo "We won't be including <dbm.h>"
12144         val="$undef"
12145         set i_dbm
12146         eval $setvar
12147         val="$undef"
12148         set i_rpcsvcdbm
12149         eval $setvar
12150         ;;
12151 esac
12152
12153 : see if this is a sys/file.h system
12154 val=''
12155 set sys/file.h val
12156 eval $inhdr
12157
12158 : do we need to include sys/file.h ?
12159 case "$val" in
12160 "$define")
12161         echo " "
12162         if $h_sysfile; then
12163                 val="$define"
12164                 echo "We'll be including <sys/file.h>." >&4
12165         else
12166                 val="$undef"
12167                 echo "We won't be including <sys/file.h>." >&4
12168         fi
12169         ;;
12170 *)
12171         h_sysfile=false
12172         ;;
12173 esac
12174 set i_sysfile
12175 eval $setvar
12176
12177 : see if fcntl.h is there
12178 val=''
12179 set fcntl.h val
12180 eval $inhdr
12181
12182 : see if we can include fcntl.h
12183 case "$val" in
12184 "$define")
12185         echo " "
12186         if $h_fcntl; then
12187                 val="$define"
12188                 echo "We'll be including <fcntl.h>." >&4
12189         else
12190                 val="$undef"
12191                 if $h_sysfile; then
12192         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
12193                 else
12194                         echo "We won't be including <fcntl.h>." >&4
12195                 fi
12196         fi
12197         ;;
12198 *)
12199         h_fcntl=false
12200         val="$undef"
12201         ;;
12202 esac
12203 set i_fcntl
12204 eval $setvar
12205
12206 : see if locale.h is available
12207 set locale.h i_locale
12208 eval $inhdr
12209
12210 : see if mach cthreads are available
12211 if test "X$usethreads" = "X$define"; then
12212         set mach/cthreads.h i_machcthr
12213         eval $inhdr
12214 else
12215         i_machcthr="$undef"
12216 fi
12217
12218
12219
12220 : see if this is a math.h system
12221 set math.h i_math
12222 eval $inhdr
12223
12224 : see if this is a mntent.h system
12225 set mntent.h i_mntent
12226 eval $inhdr
12227
12228 : see if ndbm.h is available
12229 set ndbm.h t_ndbm
12230 eval $inhdr
12231 case "$t_ndbm" in
12232 $define)
12233         : see if dbm_open exists
12234         set dbm_open d_dbm_open
12235         eval $inlibc
12236         case "$d_dbm_open" in
12237         $undef)
12238                 t_ndbm="$undef"
12239                 echo "We won't be including <ndbm.h>"
12240                 ;;
12241         esac
12242         ;;
12243 esac
12244 val="$t_ndbm"
12245 set i_ndbm
12246 eval $setvar
12247
12248 : see if net/errno.h is available
12249 val=''
12250 set net/errno.h val
12251 eval $inhdr
12252
12253 : Unfortunately, it causes problems on some systems.  Arrgh.
12254 case "$val" in
12255 $define)
12256         cat > try.c <<'EOM'
12257 #include <stdio.h>
12258 #include <errno.h>
12259 #include <net/errno.h>
12260 int func()
12261 {
12262         return ENOTSOCK;
12263 }
12264 EOM
12265         if $cc $ccflags -c try.c >/dev/null 2>&1; then
12266                 echo "We'll be including <net/errno.h>." >&4
12267         else
12268                 echo "We won't be including <net/errno.h>." >&4
12269                 val="$undef"
12270         fi
12271         $rm -f try.* try
12272         ;;
12273 esac
12274 set i_neterrno
12275 eval $setvar
12276
12277 : see if netinet/tcp.h is available
12278 set netinet/tcp.h i_netinettcp
12279 eval $inhdr
12280
12281 : see if this is a poll.h system
12282 set poll.h i_poll
12283 eval $inhdr
12284
12285 : get C preprocessor symbols handy
12286 echo " "
12287 $echo $n "Hmm... $c"
12288 echo $al | $tr ' ' $trnl >Cppsym.know
12289 $cat <<EOSS >Cppsym
12290 $startsh
12291 case "\$1" in
12292 -l) list=true
12293         shift
12294         ;;
12295 esac
12296 unknown=''
12297 case "\$list\$#" in
12298 1|2)
12299         for sym do
12300                 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
12301                         exit 0
12302                 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
12303                         :
12304                 else
12305                         unknown="\$unknown \$sym"
12306                 fi
12307         done
12308         set X \$unknown
12309         shift
12310         ;;
12311 esac
12312 case \$# in
12313 0) exit 1;;
12314 esac
12315 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
12316 #ifdef \1\\
12317 exit 0; _ _ _ _\1\\      \1\\
12318 #endif\\
12319 /' >Cppsym\$\$
12320 echo "exit 1; _ _ _" >>Cppsym\$\$
12321 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _'  >Cppsym2\$\$
12322 case "\$list" in
12323 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
12324 *)
12325         sh Cppsym2\$\$
12326         status=\$?
12327         ;;
12328 esac
12329 $rm -f Cppsym\$\$ Cppsym2\$\$
12330 exit \$status
12331 EOSS
12332 chmod +x Cppsym
12333 $eunicefix Cppsym
12334 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
12335
12336 : now check the C compiler for additional symbols
12337 postprocess_cc_v=''
12338 case "$osname" in
12339 aix) postprocess_cc_v="|$tr , ' '" ;;
12340 esac
12341 $cat >ccsym <<EOS
12342 $startsh
12343 $cat >tmp.c <<EOF
12344 extern int foo;
12345 EOF
12346 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
12347 do
12348         case "\$i" in
12349         -D*) echo "\$i" | $sed 's/^-D//';;
12350         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
12351         esac
12352 done
12353 $rm -f try.c
12354 EOS
12355 postprocess_cc_v=''
12356 chmod +x ccsym
12357 $eunicefix ccsym
12358 ./ccsym > ccsym1.raw
12359 if $test -s ccsym1.raw; then
12360        $sort ccsym1.raw | $uniq >ccsym.raw
12361 else
12362        mv ccsym1.raw ccsym.raw
12363 fi
12364
12365 $awk '/\=/ { print $0; next }
12366         { print $0"=1" }' ccsym.raw >ccsym.list
12367 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
12368 $comm -13 ccsym.true ccsym.list >ccsym.own
12369 $comm -12 ccsym.true ccsym.list >ccsym.com
12370 $comm -23 ccsym.true ccsym.list >ccsym.cpp
12371 also=''
12372 if $test -z ccsym.raw; then
12373         echo "Your C compiler doesn't seem to define any symbols!" >&4
12374         echo " "
12375         echo "However, your C preprocessor defines the following symbols:"
12376         $cat Cppsym.true
12377         ccsymbols=''
12378         cppsymbols=`$cat Cppsym.true`
12379         cppsymbols=`echo $cppsymbols`
12380         cppccsymbols="$cppsymbols"
12381 else
12382         if $test -s ccsym.com; then
12383                 echo "Your C compiler and pre-processor define these symbols:"
12384                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
12385                 also='also '
12386                 symbols='ones'
12387                 cppccsymbols=`$cat ccsym.com`
12388                 cppccsymbols=`echo $cppccsymbols`
12389                 $test "$silent" || sleep 1
12390         fi
12391         if $test -s ccsym.cpp; then
12392                 $test "$also" && echo " "
12393                 echo "Your C pre-processor ${also}defines the following symbols:"
12394                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
12395                 also='further '
12396                 cppsymbols=`$cat ccsym.cpp`
12397                 cppsymbols=`echo $cppsymbols`
12398                 $test "$silent" || sleep 1
12399         fi
12400         if $test -s ccsym.own; then
12401                 $test "$also" && echo " "
12402                 echo "Your C compiler ${also}defines the following cpp symbols:"
12403                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
12404                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
12405                 ccsymbols=`$cat ccsym.own`
12406                 ccsymbols=`echo $ccsymbols`
12407                 $test "$silent" || sleep 1
12408         fi
12409 fi
12410 $rm -f ccsym*
12411
12412 : see if this is a termio system
12413 val="$undef"
12414 val2="$undef"
12415 val3="$undef"
12416 if $test `./findhdr termios.h`; then
12417         set tcsetattr i_termios
12418         eval $inlibc
12419         val3="$i_termios"
12420 fi
12421 echo " "
12422 case "$val3" in
12423 "$define") echo "You have POSIX termios.h... good!" >&4;;
12424 *) if ./Cppsym pyr; then
12425                 case "`/bin/universe`" in
12426                 ucb) if $test `./findhdr sgtty.h`; then
12427                                 val2="$define"
12428                                 echo "<sgtty.h> found." >&4
12429                         else
12430                                 echo "System is pyramid with BSD universe."
12431                                 echo "<sgtty.h> not found--you could have problems." >&4
12432                         fi;;
12433                 *) if $test `./findhdr termio.h`; then
12434                                 val="$define"
12435                                 echo "<termio.h> found." >&4
12436                         else
12437                                 echo "System is pyramid with USG universe."
12438                                 echo "<termio.h> not found--you could have problems." >&4
12439                         fi;;
12440                 esac
12441         elif ./usg; then
12442                 if $test `./findhdr termio.h`; then
12443                         echo "<termio.h> found." >&4
12444                         val="$define"
12445                 elif $test `./findhdr sgtty.h`; then
12446                         echo "<sgtty.h> found." >&4
12447                         val2="$define"
12448                 else
12449 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
12450                 fi
12451         else
12452                 if $test `./findhdr sgtty.h`; then
12453                         echo "<sgtty.h> found." >&4
12454                         val2="$define"
12455                 elif $test `./findhdr termio.h`; then
12456                         echo "<termio.h> found." >&4
12457                         val="$define"
12458                 else
12459 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
12460                 fi
12461         fi;;
12462 esac
12463 set i_termio; eval $setvar
12464 val=$val2; set i_sgtty; eval $setvar
12465 val=$val3; set i_termios; eval $setvar
12466
12467 : see if this is a shadow.h system
12468 set shadow.h i_shadow
12469 eval $inhdr
12470
12471 : see if this is a socks.h system
12472 set socks.h i_socks
12473 eval $inhdr
12474
12475 : see if stdarg is available
12476 echo " "
12477 if $test `./findhdr stdarg.h`; then
12478         echo "<stdarg.h> found." >&4
12479         valstd="$define"
12480 else
12481         echo "<stdarg.h> NOT found." >&4
12482         valstd="$undef"
12483 fi
12484
12485 : see if varags is available
12486 echo " "
12487 if $test `./findhdr varargs.h`; then
12488         echo "<varargs.h> found." >&4
12489 else
12490         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
12491 fi
12492
12493 : set up the varargs testing programs
12494 $cat > varargs.c <<EOP
12495 #ifdef I_STDARG
12496 #include <stdarg.h>
12497 #endif
12498 #ifdef I_VARARGS
12499 #include <varargs.h>
12500 #endif
12501
12502 #ifdef I_STDARG
12503 int f(char *p, ...)
12504 #else
12505 int f(va_alist)
12506 va_dcl
12507 #endif
12508 {
12509         va_list ap;
12510 #ifndef I_STDARG
12511         char *p;
12512 #endif
12513 #ifdef I_STDARG
12514         va_start(ap,p);
12515 #else
12516         va_start(ap);
12517         p = va_arg(ap, char *);
12518 #endif
12519         va_end(ap);
12520 }
12521 EOP
12522 $cat > varargs <<EOP
12523 $startsh
12524 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
12525         echo "true"
12526 else
12527         echo "false"
12528 fi
12529 $rm -f varargs$_o
12530 EOP
12531 chmod +x varargs
12532
12533 : now check which varargs header should be included
12534 echo " "
12535 i_varhdr=''
12536 case "$valstd" in
12537 "$define")
12538         if `./varargs I_STDARG`; then
12539                 val='stdarg.h'
12540         elif `./varargs I_VARARGS`; then
12541                 val='varargs.h'
12542         fi
12543         ;;
12544 *)
12545         if `./varargs I_VARARGS`; then
12546                 val='varargs.h'
12547         fi
12548         ;;
12549 esac
12550 case "$val" in
12551 '')
12552 echo "I could not find the definition for va_dcl... You have problems..." >&4
12553         val="$undef"; set i_stdarg; eval $setvar
12554         val="$undef"; set i_varargs; eval $setvar
12555         ;;
12556 *) 
12557         set i_varhdr
12558         eval $setvar
12559         case "$i_varhdr" in
12560         stdarg.h)
12561                 val="$define"; set i_stdarg; eval $setvar
12562                 val="$undef"; set i_varargs; eval $setvar
12563                 ;;
12564         varargs.h)
12565                 val="$undef"; set i_stdarg; eval $setvar
12566                 val="$define"; set i_varargs; eval $setvar
12567                 ;;
12568         esac
12569         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12570 esac
12571 $rm -f varargs*
12572
12573 : see if stddef is available
12574 set stddef.h i_stddef
12575 eval $inhdr
12576
12577 : see if sys/access.h is available
12578 set sys/access.h i_sysaccess
12579 eval $inhdr
12580
12581 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12582 set sys/filio.h i_sysfilio
12583 eval $inhdr
12584 echo " "
12585 if $test `./findhdr sys/ioctl.h`; then
12586         val="$define"
12587         echo '<sys/ioctl.h> found.' >&4
12588 else
12589         val="$undef"
12590         if $test $i_sysfilio = "$define"; then
12591             echo '<sys/ioctl.h> NOT found.' >&4
12592         else
12593                 $test $i_sgtty = "$define" && xxx="sgtty.h"
12594                 $test $i_termio = "$define" && xxx="termio.h"
12595                 $test $i_termios = "$define" && xxx="termios.h"
12596 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12597         fi
12598 fi
12599 set i_sysioctl
12600 eval $setvar
12601
12602 : see if sys/resource.h has to be included
12603 set sys/resource.h i_sysresrc
12604 eval $inhdr
12605
12606 : see if sys/security.h is available
12607 set sys/security.h i_syssecrt
12608 eval $inhdr
12609
12610 : see if this is a sys/statvfs.h system
12611 set sys/statvfs.h i_sysstatvfs
12612 eval $inhdr
12613
12614 : see if this is a sys/un.h system
12615 set sys/un.h i_sysun
12616 eval $inhdr
12617
12618 : see if this is a syswait system
12619 set sys/wait.h i_syswait
12620 eval $inhdr
12621
12622 : see if this is an utime system
12623 set utime.h i_utime
12624 eval $inhdr
12625
12626 : see if this is a values.h system
12627 set values.h i_values
12628 eval $inhdr
12629
12630 : see if this is a vfork system
12631 case "$d_vfork" in
12632 "$define")
12633         set vfork.h i_vfork
12634         eval $inhdr
12635         ;;
12636 *)
12637         i_vfork="$undef"
12638         ;;
12639 esac
12640
12641 : see if gdbm.h is available
12642 set gdbm.h t_gdbm
12643 eval $inhdr
12644 case "$t_gdbm" in
12645 $define)
12646         : see if gdbm_open exists
12647         set gdbm_open d_gdbm_open
12648         eval $inlibc
12649         case "$d_gdbm_open" in
12650         $undef)
12651                 t_gdbm="$undef"
12652                 echo "We won't be including <gdbm.h>"
12653                 ;;
12654         esac
12655         ;;
12656 esac
12657 val="$t_gdbm"
12658 set i_gdbm
12659 eval $setvar
12660
12661 echo " "
12662 echo "Looking for extensions..." >&4
12663 : If we are using the old config.sh, known_extensions may contain
12664 : old or inaccurate or duplicate values.
12665 known_extensions=''
12666 nonxs_extensions=''
12667 : We do not use find because it might not be available.
12668 : We do not just use MANIFEST because the user may have dropped
12669 : some additional extensions into the source tree and expect them
12670 : to be built.
12671
12672 : Function to recursively find available extensions, ignoring DynaLoader
12673 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
12674 find_extensions='
12675     for xxx in *; do
12676        case "$xxx" in
12677            DynaLoader|dynaload) ;;
12678            *)
12679            if $test -f $xxx/$xxx.xs; then
12680                known_extensions="$known_extensions $1$xxx";
12681            elif $test -f $xxx/Makefile.PL; then
12682                nonxs_extensions="$nonxs_extensions $1$xxx";
12683            else
12684                if $test -d $xxx -a $# -lt 10; then
12685                    set $1$xxx/ $*;
12686                    cd $xxx;
12687                    eval $find_extensions;
12688                    cd ..;
12689                    shift;
12690                fi
12691            fi
12692            ;;
12693        esac
12694     done'
12695 tdir=`pwd`
12696 cd $rsrc/ext
12697 set
12698 shift
12699 eval $find_extensions
12700 set X $nonxs_extensions
12701 shift
12702 nonxs_extensions="$*"
12703 set X $known_extensions
12704 shift
12705 known_extensions="$*"
12706 cd $tdir
12707
12708 : Now see which are supported on this system.
12709 avail_ext=''
12710 for xxx in $known_extensions ; do
12711         case "$xxx" in
12712         DB_File|db_file)
12713                 case "$i_db" in
12714                 $define) avail_ext="$avail_ext $xxx" ;;
12715                 esac
12716                 ;;
12717         GDBM_File|gdbm_fil)
12718                 case "$i_gdbm" in 
12719                 $define) avail_ext="$avail_ext $xxx" ;;
12720                 esac
12721                 ;;
12722         NDBM_File|ndbm_fil)
12723                 case "$i_ndbm" in
12724                 $define) avail_ext="$avail_ext $xxx" ;;
12725                 esac
12726                 ;;
12727         ODBM_File|odbm_fil) 
12728                 case "${i_dbm}${i_rpcsvcdbm}" in
12729                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12730                 esac
12731                 ;;
12732         POSIX|posix)
12733                 case "$useposix" in
12734                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12735                 esac
12736                 ;;
12737         Opcode|opcode)
12738                 case "$useopcode" in
12739                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12740                 esac
12741                 ;;
12742         Socket|socket)
12743                 case "$d_socket" in 
12744                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12745                 esac
12746                 ;;
12747         Thread|thread)
12748                 case "$usethreads" in 
12749                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12750                 esac
12751                 ;;
12752         IPC/SysV|ipc/sysv)
12753                 : XXX Do we need a useipcsysv variable here
12754                 case "${d_msg}${d_sem}${d_shm}" in 
12755                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12756                 esac
12757                 ;;
12758         *)      avail_ext="$avail_ext $xxx"
12759                 ;;
12760         esac
12761 done
12762
12763 set X $avail_ext
12764 shift
12765 avail_ext="$*"
12766
12767 : Now see which nonxs extensions are supported on this system.
12768 : For now assume all are.
12769 nonxs_ext=''
12770 for xxx in $nonxs_extensions ; do
12771         case "$xxx" in
12772         *)      nonxs_ext="$nonxs_ext $xxx"
12773                 ;;
12774         esac
12775 done
12776
12777 set X $nonxs_ext
12778 shift
12779 nonxs_ext="$*"
12780
12781 case $usedl in
12782 $define)
12783         $cat <<EOM
12784 A number of extensions are supplied with $package.  You may choose to
12785 compile these extensions for dynamic loading (the default), compile
12786 them into the $package executable (static loading), or not include
12787 them at all.  Answer "none" to include no extensions.
12788 Note that DynaLoader is always built and need not be mentioned here.
12789
12790 EOM
12791         case "$dynamic_ext" in
12792         '') dflt="$avail_ext" ;;
12793         *)      dflt="$dynamic_ext"
12794                 # Perhaps we are reusing an old out-of-date config.sh.
12795                 case "$hint" in
12796                 previous)
12797                         if test X"$dynamic_ext" != X"$avail_ext"; then
12798                                 $cat <<EOM
12799 NOTICE:  Your previous config.sh list may be incorrect. 
12800 The extensions now available to you are 
12801         ${avail_ext}
12802 but the default list from your previous config.sh is
12803         ${dynamic_ext} 
12804
12805 EOM
12806                         fi
12807                         ;;
12808                 esac
12809                 ;;
12810         esac
12811         case "$dflt" in
12812         '')     dflt=none;;
12813         esac
12814         rp="What extensions do you wish to load dynamically?"
12815         . ./myread
12816         case "$ans" in
12817         none) dynamic_ext=' ' ;;
12818         *) dynamic_ext="$ans" ;;
12819         esac
12820
12821         case "$static_ext" in
12822         '')
12823                 : Exclude those already listed in dynamic linking
12824                 dflt=''
12825                 for xxx in $avail_ext; do
12826                         case " $dynamic_ext " in
12827                         *" $xxx "*) ;;
12828                         *) dflt="$dflt $xxx" ;;
12829                         esac
12830                 done
12831                 set X $dflt
12832                 shift
12833                 dflt="$*"
12834                 ;;
12835         *)  dflt="$static_ext" 
12836                 ;;
12837         esac
12838
12839         case "$dflt" in
12840         '')     dflt=none;;
12841         esac
12842         rp="What extensions do you wish to load statically?"
12843         . ./myread
12844         case "$ans" in
12845         none) static_ext=' ' ;;
12846         *) static_ext="$ans" ;;
12847         esac
12848         ;;
12849 *)
12850         $cat <<EOM
12851 A number of extensions are supplied with $package.  Answer "none" 
12852 to include no extensions. 
12853 Note that DynaLoader is always built and need not be mentioned here.
12854
12855 EOM
12856         case "$static_ext" in
12857         '') dflt="$avail_ext" ;;
12858         *)      dflt="$static_ext"
12859                 # Perhaps we are reusing an old out-of-date config.sh.
12860                 case "$hint" in
12861                 previous)
12862                         if test X"$static_ext" != X"$avail_ext"; then
12863                                 $cat <<EOM
12864 NOTICE:  Your previous config.sh list may be incorrect. 
12865 The extensions now available to you are 
12866         ${avail_ext}
12867 but the default list from your previous config.sh is
12868         ${static_ext} 
12869
12870 EOM
12871                         fi
12872                         ;;
12873                 esac
12874                 ;;
12875         esac
12876         : Exclude those that are not xs extensions
12877         case "$dflt" in
12878         '')     dflt=none;;
12879         esac
12880         rp="What extensions do you wish to include?"
12881         . ./myread
12882         case "$ans" in
12883         none) static_ext=' ' ;;
12884         *) static_ext="$ans" ;;
12885         esac
12886         ;;
12887 esac
12888
12889 set X $dynamic_ext $static_ext $nonxs_ext
12890 shift
12891 extensions="$*"
12892
12893 : Remove build directory name from cppstdin so it can be used from
12894 : either the present location or the final installed location.
12895 echo " "
12896 : Get out of the UU directory to get correct path name.
12897 cd ..
12898 case "$cppstdin" in
12899 `pwd`/cppstdin)
12900         echo "Stripping down cppstdin path name"
12901         cppstdin=cppstdin
12902         ;;
12903 esac
12904 cd UU
12905
12906 : end of configuration questions
12907 echo " "
12908 echo "End of configuration questions."
12909 echo " "
12910
12911 : back to where it started
12912 if test -d ../UU; then
12913         cd ..
12914 fi
12915
12916 : configuration may be patched via a 'config.over' file
12917 if $test -f config.over; then
12918         echo " "
12919         dflt=y
12920         rp='I see a config.over file.  Do you wish to load it?'
12921         . UU/myread
12922         case "$ans" in
12923         n*) echo "OK, I'll ignore it.";;
12924         *)      . ./config.over
12925                 echo "Configuration override changes have been loaded."
12926                 ;;
12927         esac
12928 fi
12929
12930 : in case they want portability, strip down executable paths
12931 case "$d_portable" in
12932 "$define")
12933         echo " "
12934         echo "Stripping down executable paths..." >&4
12935         for file in $loclist $trylist; do
12936                 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12937                         eval $file="\$file"
12938                 fi
12939         done
12940         ;;
12941 esac
12942
12943 : create config.sh file
12944 echo " "
12945 echo "Creating config.sh..." >&4
12946 $spitshell <<EOT >config.sh
12947 $startsh
12948 #
12949 # This file was produced by running the Configure script. It holds all the
12950 # definitions figured out by Configure. Should you modify one of these values,
12951 # do not forget to propagate your changes by running "Configure -der". You may
12952 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12953 #
12954
12955 # Package name      : $package
12956 # Source directory  : $src
12957 # Configuration time: $cf_time
12958 # Configured by     : $cf_by
12959 # Target system     : $myuname
12960
12961 Author='$Author'
12962 Date='$Date'
12963 Header='$Header'
12964 Id='$Id'
12965 Locker='$Locker'
12966 Log='$Log'
12967 Mcc='$Mcc'
12968 RCSfile='$RCSfile'
12969 Revision='$Revision'
12970 Source='$Source'
12971 State='$State'
12972 _a='$_a'
12973 _exe='$_exe'
12974 _o='$_o'
12975 afs='$afs'
12976 alignbytes='$alignbytes'
12977 ansi2knr='$ansi2knr'
12978 aphostname='$aphostname'
12979 apiversion='$apiversion'
12980 ar='$ar'
12981 archlib='$archlib'
12982 archlibexp='$archlibexp'
12983 archname64='$archname64'
12984 archname='$archname'
12985 archobjs='$archobjs'
12986 awk='$awk'
12987 baserev='$baserev'
12988 bash='$bash'
12989 bin='$bin'
12990 binexp='$binexp'
12991 bison='$bison'
12992 byacc='$byacc'
12993 byteorder='$byteorder'
12994 c='$c'
12995 castflags='$castflags'
12996 cat='$cat'
12997 cc='$cc'
12998 cccdlflags='$cccdlflags'
12999 ccdlflags='$ccdlflags'
13000 ccflags='$ccflags'
13001 ccsymbols='$ccsymbols'
13002 cf_by='$cf_by'
13003 cf_email='$cf_email'
13004 cf_time='$cf_time'
13005 chgrp='$chgrp'
13006 chmod='$chmod'
13007 chown='$chown'
13008 clocktype='$clocktype'
13009 comm='$comm'
13010 compress='$compress'
13011 contains='$contains'
13012 cp='$cp'
13013 cpio='$cpio'
13014 cpp='$cpp'
13015 cpp_stuff='$cpp_stuff'
13016 cppccsymbols='$cppccsymbols'
13017 cppflags='$cppflags'
13018 cpplast='$cpplast'
13019 cppminus='$cppminus'
13020 cpprun='$cpprun'
13021 cppstdin='$cppstdin'
13022 cppsymbols='$cppsymbols'
13023 crosscompile='$crosscompile'
13024 cryptlib='$cryptlib'
13025 csh='$csh'
13026 d_Gconvert='$d_Gconvert'
13027 d_access='$d_access'
13028 d_accessx='$d_accessx'
13029 d_alarm='$d_alarm'
13030 d_archlib='$d_archlib'
13031 d_attribut='$d_attribut'
13032 d_bcmp='$d_bcmp'
13033 d_bcopy='$d_bcopy'
13034 d_bsd='$d_bsd'
13035 d_bsdgetpgrp='$d_bsdgetpgrp'
13036 d_bsdsetpgrp='$d_bsdsetpgrp'
13037 d_bzero='$d_bzero'
13038 d_casti32='$d_casti32'
13039 d_castneg='$d_castneg'
13040 d_charvspr='$d_charvspr'
13041 d_chown='$d_chown'
13042 d_chroot='$d_chroot'
13043 d_chsize='$d_chsize'
13044 d_closedir='$d_closedir'
13045 d_cmsghdr_s='$d_cmsghdr_s'
13046 d_const='$d_const'
13047 d_crypt='$d_crypt'
13048 d_csh='$d_csh'
13049 d_cuserid='$d_cuserid'
13050 d_dbl_dig='$d_dbl_dig'
13051 d_dbmclose64='$d_dbmclose64'
13052 d_dbminit64='$d_dbminit64'
13053 d_delete64='$d_delete64'
13054 d_difftime='$d_difftime'
13055 d_dirent64_s='$d_dirent64_s'
13056 d_dirnamlen='$d_dirnamlen'
13057 d_dlerror='$d_dlerror'
13058 d_dlopen='$d_dlopen'
13059 d_dlsymun='$d_dlsymun'
13060 d_dosuid='$d_dosuid'
13061 d_drand48proto='$d_drand48proto'
13062 d_dup2='$d_dup2'
13063 d_eaccess='$d_eaccess'
13064 d_endgrent='$d_endgrent'
13065 d_endhent='$d_endhent'
13066 d_endnent='$d_endnent'
13067 d_endpent='$d_endpent'
13068 d_endpwent='$d_endpwent'
13069 d_endsent='$d_endsent'
13070 d_endspent='$d_endspent'
13071 d_eofnblk='$d_eofnblk'
13072 d_eunice='$d_eunice'
13073 d_fchmod='$d_fchmod'
13074 d_fchown='$d_fchown'
13075 d_fcntl='$d_fcntl'
13076 d_fd_macros='$d_fd_macros'
13077 d_fd_set='$d_fd_set'
13078 d_fds_bits='$d_fds_bits'
13079 d_fetch64='$d_fetch64'
13080 d_fgetpos64='$d_fgetpos64'
13081 d_fgetpos='$d_fgetpos'
13082 d_firstkey64='$d_firstkey64'
13083 d_flexfnam='$d_flexfnam'
13084 d_flock64_s='$d_flock64_s'
13085 d_flock='$d_flock'
13086 d_fopen64='$d_fopen64'
13087 d_fork='$d_fork'
13088 d_fpathconf='$d_fpathconf'
13089 d_freopen64='$d_freopen64'
13090 d_fseek64='$d_fseek64'
13091 d_fseeko64='$d_fseeko64'
13092 d_fseeko='$d_fseeko'
13093 d_fsetpos64='$d_fsetpos64'
13094 d_fsetpos='$d_fsetpos'
13095 d_fstat64='$d_fstat64'
13096 d_fstatfs='$d_fstatfs'
13097 d_fstatvfs='$d_fstatvfs'
13098 d_ftell64='$d_ftell64'
13099 d_ftello64='$d_ftello64'
13100 d_ftello='$d_ftello'
13101 d_ftime='$d_ftime'
13102 d_ftruncate64='$d_ftruncate64'
13103 d_getgrent='$d_getgrent'
13104 d_getgrps='$d_getgrps'
13105 d_gethbyaddr='$d_gethbyaddr'
13106 d_gethbyname='$d_gethbyname'
13107 d_gethent='$d_gethent'
13108 d_gethname='$d_gethname'
13109 d_gethostprotos='$d_gethostprotos'
13110 d_getlogin='$d_getlogin'
13111 d_getmntent='$d_getmntent'
13112 d_getnbyaddr='$d_getnbyaddr'
13113 d_getnbyname='$d_getnbyname'
13114 d_getnent='$d_getnent'
13115 d_getnetprotos='$d_getnetprotos'
13116 d_getpbyname='$d_getpbyname'
13117 d_getpbynumber='$d_getpbynumber'
13118 d_getpent='$d_getpent'
13119 d_getpgid='$d_getpgid'
13120 d_getpgrp2='$d_getpgrp2'
13121 d_getpgrp='$d_getpgrp'
13122 d_getppid='$d_getppid'
13123 d_getprior='$d_getprior'
13124 d_getprotoprotos='$d_getprotoprotos'
13125 d_getpwent='$d_getpwent'
13126 d_getsbyname='$d_getsbyname'
13127 d_getsbyport='$d_getsbyport'
13128 d_getsent='$d_getsent'
13129 d_getservprotos='$d_getservprotos'
13130 d_getspent='$d_getspent'
13131 d_getspnam='$d_getspnam'
13132 d_gettimeod='$d_gettimeod'
13133 d_gnulibc='$d_gnulibc'
13134 d_grpasswd='$d_grpasswd'
13135 d_hasmntopt='$d_hasmntopt'
13136 d_htonl='$d_htonl'
13137 d_index='$d_index'
13138 d_inetaton='$d_inetaton'
13139 d_ino64_t='$d_ino64_t'
13140 d_int64t='$d_int64t'
13141 d_iovec_s='$d_iovec_s'
13142 d_isascii='$d_isascii'
13143 d_killpg='$d_killpg'
13144 d_lchown='$d_lchown'
13145 d_link='$d_link'
13146 d_llseek='$d_llseek'
13147 d_locconv='$d_locconv'
13148 d_lockf64='$d_lockf64'
13149 d_lockf='$d_lockf'
13150 d_longdbl='$d_longdbl'
13151 d_longlong='$d_longlong'
13152 d_lseek64='$d_lseek64'
13153 d_lstat64='$d_lstat64'
13154 d_lstat='$d_lstat'
13155 d_madvise='$d_madvise'
13156 d_mblen='$d_mblen'
13157 d_mbstowcs='$d_mbstowcs'
13158 d_mbtowc='$d_mbtowc'
13159 d_memchr='$d_memchr'
13160 d_memcmp='$d_memcmp'
13161 d_memcpy='$d_memcpy'
13162 d_memmove='$d_memmove'
13163 d_memset='$d_memset'
13164 d_mkdir='$d_mkdir'
13165 d_mkfifo='$d_mkfifo'
13166 d_mktime='$d_mktime'
13167 d_mmap='$d_mmap'
13168 d_mprotect='$d_mprotect'
13169 d_msg='$d_msg'
13170 d_msg_ctrunc='$d_msg_ctrunc'
13171 d_msg_dontroute='$d_msg_dontroute'
13172 d_msg_oob='$d_msg_oob'
13173 d_msg_peek='$d_msg_peek'
13174 d_msg_proxy='$d_msg_proxy'
13175 d_msgctl='$d_msgctl'
13176 d_msgget='$d_msgget'
13177 d_msghdr_s='$d_msghdr_s'
13178 d_msgrcv='$d_msgrcv'
13179 d_msgsnd='$d_msgsnd'
13180 d_msync='$d_msync'
13181 d_munmap='$d_munmap'
13182 d_mymalloc='$d_mymalloc'
13183 d_nextkey64='$d_nextkey64'
13184 d_nice='$d_nice'
13185 d_off64_t='$d_off64_t'
13186 d_offset_t='$d_offset_t'
13187 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
13188 d_oldpthreads='$d_oldpthreads'
13189 d_oldsock='$d_oldsock'
13190 d_open3='$d_open3'
13191 d_open64='$d_open64'
13192 d_opendir64='$d_opendir64'
13193 d_pathconf='$d_pathconf'
13194 d_pause='$d_pause'
13195 d_phostname='$d_phostname'
13196 d_pipe='$d_pipe'
13197 d_poll='$d_poll'
13198 d_portable='$d_portable'
13199 d_pthread_yield='$d_pthread_yield'
13200 d_pwage='$d_pwage'
13201 d_pwchange='$d_pwchange'
13202 d_pwclass='$d_pwclass'
13203 d_pwcomment='$d_pwcomment'
13204 d_pwexpire='$d_pwexpire'
13205 d_pwgecos='$d_pwgecos'
13206 d_pwpasswd='$d_pwpasswd'
13207 d_pwquota='$d_pwquota'
13208 d_readdir64='$d_readdir64'
13209 d_readdir='$d_readdir'
13210 d_readlink='$d_readlink'
13211 d_readv='$d_readv'
13212 d_recvmsg='$d_recvmsg'
13213 d_rename='$d_rename'
13214 d_rewinddir='$d_rewinddir'
13215 d_rmdir='$d_rmdir'
13216 d_safebcpy='$d_safebcpy'
13217 d_safemcpy='$d_safemcpy'
13218 d_sanemcmp='$d_sanemcmp'
13219 d_sched_yield='$d_sched_yield'
13220 d_scm_rights='$d_scm_rights'
13221 d_seekdir64='$d_seekdir64'
13222 d_seekdir='$d_seekdir'
13223 d_select='$d_select'
13224 d_sem='$d_sem'
13225 d_semctl='$d_semctl'
13226 d_semctl_semid_ds='$d_semctl_semid_ds'
13227 d_semctl_semun='$d_semctl_semun'
13228 d_semget='$d_semget'
13229 d_semop='$d_semop'
13230 d_sendmsg='$d_sendmsg'
13231 d_setegid='$d_setegid'
13232 d_seteuid='$d_seteuid'
13233 d_setgrent='$d_setgrent'
13234 d_setgrps='$d_setgrps'
13235 d_sethent='$d_sethent'
13236 d_setlinebuf='$d_setlinebuf'
13237 d_setlocale='$d_setlocale'
13238 d_setnent='$d_setnent'
13239 d_setpent='$d_setpent'
13240 d_setpgid='$d_setpgid'
13241 d_setpgrp2='$d_setpgrp2'
13242 d_setpgrp='$d_setpgrp'
13243 d_setprior='$d_setprior'
13244 d_setpwent='$d_setpwent'
13245 d_setregid='$d_setregid'
13246 d_setresgid='$d_setresgid'
13247 d_setresuid='$d_setresuid'
13248 d_setreuid='$d_setreuid'
13249 d_setrgid='$d_setrgid'
13250 d_setruid='$d_setruid'
13251 d_setsent='$d_setsent'
13252 d_setsid='$d_setsid'
13253 d_setspent='$d_setspent'
13254 d_setvbuf='$d_setvbuf'
13255 d_sfio='$d_sfio'
13256 d_shm='$d_shm'
13257 d_shmat='$d_shmat'
13258 d_shmatprototype='$d_shmatprototype'
13259 d_shmctl='$d_shmctl'
13260 d_shmdt='$d_shmdt'
13261 d_shmget='$d_shmget'
13262 d_sigaction='$d_sigaction'
13263 d_sigsetjmp='$d_sigsetjmp'
13264 d_socket='$d_socket'
13265 d_sockpair='$d_sockpair'
13266 d_stat64='$d_stat64'
13267 d_statblks='$d_statblks'
13268 d_statfs='$d_statfs'
13269 d_statfsflags='$d_statfsflags'
13270 d_statvfs='$d_statvfs'
13271 d_stdio_cnt_lval='$d_stdio_cnt_lval'
13272 d_stdio_ptr_lval='$d_stdio_ptr_lval'
13273 d_stdio_stream_array='$d_stdio_stream_array'
13274 d_stdiobase='$d_stdiobase'
13275 d_stdstdio='$d_stdstdio'
13276 d_store64='$d_store64'
13277 d_strchr='$d_strchr'
13278 d_strcoll='$d_strcoll'
13279 d_strctcpy='$d_strctcpy'
13280 d_strerrm='$d_strerrm'
13281 d_strerror='$d_strerror'
13282 d_strtod='$d_strtod'
13283 d_strtol='$d_strtol'
13284 d_strtoul='$d_strtoul'
13285 d_strxfrm='$d_strxfrm'
13286 d_suidsafe='$d_suidsafe'
13287 d_symlink='$d_symlink'
13288 d_syscall='$d_syscall'
13289 d_sysconf='$d_sysconf'
13290 d_sysernlst='$d_sysernlst'
13291 d_syserrlst='$d_syserrlst'
13292 d_system='$d_system'
13293 d_tcgetpgrp='$d_tcgetpgrp'
13294 d_tcsetpgrp='$d_tcsetpgrp'
13295 d_telldir64='$d_telldir64'
13296 d_telldir='$d_telldir'
13297 d_telldirproto='$d_telldirproto'
13298 d_time='$d_time'
13299 d_times='$d_times'
13300 d_tmpfile64='$d_tmpfile64'
13301 d_truncate64='$d_truncate64'
13302 d_truncate='$d_truncate'
13303 d_tzname='$d_tzname'
13304 d_umask='$d_umask'
13305 d_uname='$d_uname'
13306 d_union_semun='$d_union_semun'
13307 d_vfork='$d_vfork'
13308 d_void_closedir='$d_void_closedir'
13309 d_voidsig='$d_voidsig'
13310 d_voidtty='$d_voidtty'
13311 d_volatile='$d_volatile'
13312 d_vprintf='$d_vprintf'
13313 d_wait4='$d_wait4'
13314 d_waitpid='$d_waitpid'
13315 d_wcstombs='$d_wcstombs'
13316 d_wctomb='$d_wctomb'
13317 d_writev='$d_writev'
13318 d_xenix='$d_xenix'
13319 date='$date'
13320 db_hashtype='$db_hashtype'
13321 db_prefixtype='$db_prefixtype'
13322 defvoidused='$defvoidused'
13323 direntrytype='$direntrytype'
13324 dlext='$dlext'
13325 dlsrc='$dlsrc'
13326 doublesize='$doublesize'
13327 drand01='$drand01'
13328 dynamic_ext='$dynamic_ext'
13329 eagain='$eagain'
13330 ebcdic='$ebcdic'
13331 echo='$echo'
13332 egrep='$egrep'
13333 emacs='$emacs'
13334 eunicefix='$eunicefix'
13335 exe_ext='$exe_ext'
13336 expr='$expr'
13337 extensions='$extensions'
13338 fflushNULL='$fflushNULL'
13339 fflushall='$fflushall'
13340 find='$find'
13341 firstmakefile='$firstmakefile'
13342 flex='$flex'
13343 fpostype='$fpostype'
13344 freetype='$freetype'
13345 full_ar='$full_ar'
13346 full_csh='$full_csh'
13347 full_sed='$full_sed'
13348 gccversion='$gccversion'
13349 gidtype='$gidtype'
13350 glibpth='$glibpth'
13351 grep='$grep'
13352 groupcat='$groupcat'
13353 groupstype='$groupstype'
13354 gzip='$gzip'
13355 h_fcntl='$h_fcntl'
13356 h_sysfile='$h_sysfile'
13357 hint='$hint'
13358 hostcat='$hostcat'
13359 huge='$huge'
13360 i_arpainet='$i_arpainet'
13361 i_bsdioctl='$i_bsdioctl'
13362 i_db='$i_db'
13363 i_dbm='$i_dbm'
13364 i_dirent='$i_dirent'
13365 i_dld='$i_dld'
13366 i_dlfcn='$i_dlfcn'
13367 i_fcntl='$i_fcntl'
13368 i_float='$i_float'
13369 i_gdbm='$i_gdbm'
13370 i_grp='$i_grp'
13371 i_inttypes='$i_inttypes'
13372 i_limits='$i_limits'
13373 i_locale='$i_locale'
13374 i_machcthr='$i_machcthr'
13375 i_malloc='$i_malloc'
13376 i_math='$i_math'
13377 i_memory='$i_memory'
13378 i_mntent='$i_mntent'
13379 i_ndbm='$i_ndbm'
13380 i_netdb='$i_netdb'
13381 i_neterrno='$i_neterrno'
13382 i_netinettcp='$i_netinettcp'
13383 i_niin='$i_niin'
13384 i_poll='$i_poll'
13385 i_pthread='$i_pthread'
13386 i_pwd='$i_pwd'
13387 i_rpcsvcdbm='$i_rpcsvcdbm'
13388 i_sfio='$i_sfio'
13389 i_sgtty='$i_sgtty'
13390 i_shadow='$i_shadow'
13391 i_socks='$i_socks'
13392 i_stdarg='$i_stdarg'
13393 i_stddef='$i_stddef'
13394 i_stdlib='$i_stdlib'
13395 i_string='$i_string'
13396 i_sysaccess='$i_sysaccess'
13397 i_sysdir='$i_sysdir'
13398 i_sysfile='$i_sysfile'
13399 i_sysfilio='$i_sysfilio'
13400 i_sysin='$i_sysin'
13401 i_sysioctl='$i_sysioctl'
13402 i_sysmman='$i_sysmman'
13403 i_sysmount='$i_sysmount'
13404 i_sysndir='$i_sysndir'
13405 i_sysparam='$i_sysparam'
13406 i_sysresrc='$i_sysresrc'
13407 i_syssecrt='$i_syssecrt'
13408 i_sysselct='$i_sysselct'
13409 i_syssockio='$i_syssockio'
13410 i_sysstat='$i_sysstat'
13411 i_sysstatvfs='$i_sysstatvfs'
13412 i_systime='$i_systime'
13413 i_systimek='$i_systimek'
13414 i_systimes='$i_systimes'
13415 i_systypes='$i_systypes'
13416 i_sysuio='$i_sysuio'
13417 i_sysun='$i_sysun'
13418 i_syswait='$i_syswait'
13419 i_termio='$i_termio'
13420 i_termios='$i_termios'
13421 i_time='$i_time'
13422 i_unistd='$i_unistd'
13423 i_utime='$i_utime'
13424 i_values='$i_values'
13425 i_varargs='$i_varargs'
13426 i_varhdr='$i_varhdr'
13427 i_vfork='$i_vfork'
13428 ignore_versioned_solibs='$ignore_versioned_solibs'
13429 incpath='$incpath'
13430 inews='$inews'
13431 installarchlib='$installarchlib'
13432 installbin='$installbin'
13433 installman1dir='$installman1dir'
13434 installman3dir='$installman3dir'
13435 installprefix='$installprefix'
13436 installprefixexp='$installprefixexp'
13437 installprivlib='$installprivlib'
13438 installscript='$installscript'
13439 installsitearch='$installsitearch'
13440 installsitelib='$installsitelib'
13441 installstyle='$installstyle'
13442 installusrbinperl='$installusrbinperl'
13443 intsize='$intsize'
13444 known_extensions='$known_extensions'
13445 ksh='$ksh'
13446 large='$large'
13447 ld='$ld'
13448 lddlflags='$lddlflags'
13449 ldflags='$ldflags'
13450 ldlibpthname='$ldlibpthname'
13451 less='$less'
13452 lib_ext='$lib_ext'
13453 libc='$libc'
13454 libperl='$libperl'
13455 libpth='$libpth'
13456 libs='$libs'
13457 libswanted='$libswanted'
13458 line='$line'
13459 lint='$lint'
13460 lkflags='$lkflags'
13461 ln='$ln'
13462 lns='$lns'
13463 locincpth='$locincpth'
13464 loclibpth='$loclibpth'
13465 longdblsize='$longdblsize'
13466 longlongsize='$longlongsize'
13467 longsize='$longsize'
13468 lp='$lp'
13469 lpr='$lpr'
13470 ls='$ls'
13471 lseeksize='$lseeksize'
13472 lseektype='$lseektype'
13473 mail='$mail'
13474 mailx='$mailx'
13475 make='$make'
13476 make_set_make='$make_set_make'
13477 mallocobj='$mallocobj'
13478 mallocsrc='$mallocsrc'
13479 malloctype='$malloctype'
13480 man1dir='$man1dir'
13481 man1direxp='$man1direxp'
13482 man1ext='$man1ext'
13483 man3dir='$man3dir'
13484 man3direxp='$man3direxp'
13485 man3ext='$man3ext'
13486 medium='$medium'
13487 mips='$mips'
13488 mips_type='$mips_type'
13489 mkdir='$mkdir'
13490 mmaptype='$mmaptype'
13491 models='$models'
13492 modetype='$modetype'
13493 more='$more'
13494 multiarch='$multiarch'
13495 mv='$mv'
13496 myarchname='$myarchname'
13497 mydomain='$mydomain'
13498 myhostname='$myhostname'
13499 myuname='$myuname'
13500 n='$n'
13501 netdb_hlen_type='$netdb_hlen_type'
13502 netdb_host_type='$netdb_host_type'
13503 netdb_name_type='$netdb_name_type'
13504 netdb_net_type='$netdb_net_type'
13505 nm='$nm'
13506 nm_opt='$nm_opt'
13507 nm_so_opt='$nm_so_opt'
13508 nonxs_ext='$nonxs_ext'
13509 nroff='$nroff'
13510 o_nonblock='$o_nonblock'
13511 obj_ext='$obj_ext'
13512 old_pthread_create_joinable='$old_pthread_create_joinable'
13513 optimize='$optimize'
13514 orderlib='$orderlib'
13515 osname='$osname'
13516 osvers='$osvers'
13517 package='$package'
13518 pager='$pager'
13519 passcat='$passcat'
13520 patchlevel='$patchlevel'
13521 path_sep='$path_sep'
13522 perl='$perl'
13523 perladmin='$perladmin'
13524 perlpath='$perlpath'
13525 pg='$pg'
13526 phostname='$phostname'
13527 pidtype='$pidtype'
13528 plibpth='$plibpth'
13529 pmake='$pmake'
13530 pr='$pr'
13531 prefix='$prefix'
13532 prefixexp='$prefixexp'
13533 privlib='$privlib'
13534 privlibexp='$privlibexp'
13535 prototype='$prototype'
13536 ptrsize='$ptrsize'
13537 randbits='$randbits'
13538 randfunc='$randfunc'
13539 randseedtype='$randseedtype'
13540 ranlib='$ranlib'
13541 rd_nodata='$rd_nodata'
13542 rm='$rm'
13543 rmail='$rmail'
13544 runnm='$runnm'
13545 sched_yield='$sched_yield'
13546 scriptdir='$scriptdir'
13547 scriptdirexp='$scriptdirexp'
13548 sed='$sed'
13549 seedfunc='$seedfunc'
13550 selectminbits='$selectminbits'
13551 selecttype='$selecttype'
13552 sendmail='$sendmail'
13553 sh='$sh'
13554 shar='$shar'
13555 sharpbang='$sharpbang'
13556 shmattype='$shmattype'
13557 shortsize='$shortsize'
13558 shrpenv='$shrpenv'
13559 shsharp='$shsharp'
13560 sig_count='$sig_count'
13561 sig_name='$sig_name'
13562 sig_name_init='$sig_name_init'
13563 sig_num='$sig_num'
13564 sig_num_init='$sig_num_init'
13565 signal_t='$signal_t'
13566 sitearch='$sitearch'
13567 sitearchexp='$sitearchexp'
13568 sitelib='$sitelib'
13569 sitelibexp='$sitelibexp'
13570 siteprefix='$siteprefix'
13571 siteprefixexp='$siteprefixexp'
13572 sizetype='$sizetype'
13573 sleep='$sleep'
13574 smail='$smail'
13575 small='$small'
13576 so='$so'
13577 sockethdr='$sockethdr'
13578 socketlib='$socketlib'
13579 sort='$sort'
13580 spackage='$spackage'
13581 spitshell='$spitshell'
13582 split='$split'
13583 src='$src'
13584 ssizetype='$ssizetype'
13585 startperl='$startperl'
13586 startsh='$startsh'
13587 static_ext='$static_ext'
13588 stdchar='$stdchar'
13589 stdio_base='$stdio_base'
13590 stdio_bufsiz='$stdio_bufsiz'
13591 stdio_cnt='$stdio_cnt'
13592 stdio_filbuf='$stdio_filbuf'
13593 stdio_ptr='$stdio_ptr'
13594 stdio_stream_array='$stdio_stream_array'
13595 strings='$strings'
13596 submit='$submit'
13597 subversion='$subversion'
13598 sysman='$sysman'
13599 tail='$tail'
13600 tar='$tar'
13601 tbl='$tbl'
13602 tee='$tee'
13603 test='$test'
13604 timeincl='$timeincl'
13605 timetype='$timetype'
13606 touch='$touch'
13607 tr='$tr'
13608 trnl='$trnl'
13609 troff='$troff'
13610 uidtype='$uidtype'
13611 uname='$uname'
13612 uniq='$uniq'
13613 use64bits='$use64bits'
13614 usedl='$usedl'
13615 usemultiplicity='$usemultiplicity'
13616 usemymalloc='$usemymalloc'
13617 usenm='$usenm'
13618 useopcode='$useopcode'
13619 useperlio='$useperlio'
13620 useposix='$useposix'
13621 usesfio='$usesfio'
13622 useshrplib='$useshrplib'
13623 usesocks='$usesocks'
13624 usethreads='$usethreads'
13625 usevfork='$usevfork'
13626 usrinc='$usrinc'
13627 uuname='$uuname'
13628 version='$version'
13629 vi='$vi'
13630 voidflags='$voidflags'
13631 xlibpth='$xlibpth'
13632 zcat='$zcat'
13633 zip='$zip'
13634 EOT
13635
13636 : Add in command line options if available
13637 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
13638
13639 : add special variables
13640 $test -f $src/patchlevel.h && \
13641 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
13642 echo "CONFIGDOTSH=true" >>config.sh
13643
13644 : propagate old symbols
13645 if $test -f UU/config.sh; then
13646         <UU/config.sh sort | uniq >UU/oldconfig.sh
13647         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
13648         sort | uniq -u >UU/oldsyms
13649         set X `cat UU/oldsyms`
13650         shift
13651         case $# in
13652         0) ;;
13653         *)
13654                 cat <<EOM
13655 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
13656 EOM
13657                 echo "# Variables propagated from previous config.sh file." >>config.sh
13658                 for sym in `cat UU/oldsyms`; do
13659                         echo "    Propagating $hint variable "'$'"$sym..."
13660                         eval 'tmp="$'"${sym}"'"'
13661                         echo "$tmp" | \
13662                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
13663                 done
13664                 ;;
13665         esac
13666 fi
13667
13668 : Finish up by extracting the .SH files
13669 case "$alldone" in
13670 exit)
13671         $rm -rf UU
13672         echo "Done."
13673         exit 0
13674         ;;
13675 cont)
13676         ;;
13677 '')
13678         dflt=''
13679         nostick=true
13680         $cat <<EOM
13681
13682 If you'd like to make any changes to the config.sh file before I begin
13683 to configure things, do it as a shell escape now (e.g. !vi config.sh).
13684
13685 EOM
13686         rp="Press return or use a shell escape to edit config.sh:"
13687         . UU/myread
13688         nostick=''
13689         case "$ans" in
13690         '') ;;
13691         *) : in case they cannot read
13692                 sh 1>&4 -c "$ans";;
13693         esac
13694         ;;
13695 esac
13696
13697 : if this fails, just run all the .SH files by hand
13698 . ./config.sh
13699
13700 echo " "
13701 exec 1>&4
13702 . ./UU/extract
13703
13704 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13705         dflt=y
13706         case "$silent" in
13707         true) ;;
13708         *)
13709                 $cat <<EOM
13710
13711 Now you need to generate make dependencies by running "$make depend".
13712 You might prefer to run it in background: "$make depend > makedepend.out &"
13713 It can take a while, so you might not want to run it right now.
13714
13715 EOM
13716                 ;;
13717         esac
13718         rp="Run $make depend now?"
13719         . UU/myread
13720         case "$ans" in
13721         y*)
13722                 $make depend && echo "Now you must run a $make."
13723                 ;;
13724         *)
13725                 echo "You must run '$make depend' then '$make'."
13726                 ;;
13727         esac
13728 elif test -f [Mm]akefile; then
13729         echo " "
13730         echo "Now you must run a $make."
13731 else
13732         echo "Done."
13733 fi
13734
13735 if $test -f Policy.sh; then
13736     $cat <<EOM
13737
13738 If you compile $package on a different machine or from a different object
13739 directory, copy the Policy.sh file from this object directory to the
13740 new one before you run Configure -- this will help you with most of
13741 the policy defaults.
13742
13743 EOM
13744 fi
13745 if $test -f config.msg; then
13746     echo "Hmm.  I also noted the following information while running:"
13747     echo " "
13748     $cat config.msg >&4
13749     $rm -f config.msg
13750 fi
13751 $rm -f kit*isdone ark*isdone
13752 $rm -rf UU
13753
13754 : End of Configure
13755