INSTALL patches
[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 Mon Apr 19 22:21:08 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_fchmod=''
342 d_fchown=''
343 d_fcntl=''
344 d_fd_macros=''
345 d_fd_set=''
346 d_fds_bits=''
347 d_fgetpos=''
348 d_flexfnam=''
349 d_flock=''
350 d_fork=''
351 d_fseeko=''
352 d_fsetpos=''
353 d_ftello=''
354 d_ftime=''
355 d_gettimeod=''
356 d_Gconvert=''
357 d_getgrent=''
358 d_getgrps=''
359 d_gethbyaddr=''
360 d_gethbyname=''
361 d_gethent=''
362 aphostname=''
363 d_gethname=''
364 d_phostname=''
365 d_uname=''
366 d_gethostprotos=''
367 d_getlogin=''
368 d_getmntent=''
369 d_getnbyaddr=''
370 d_getnbyname=''
371 d_getnent=''
372 d_getnetprotos=''
373 d_getpent=''
374 d_getpgid=''
375 d_getpgrp2=''
376 d_bsdgetpgrp=''
377 d_getpgrp=''
378 d_getppid=''
379 d_getprior=''
380 d_getpbyname=''
381 d_getpbynumber=''
382 d_getprotoprotos=''
383 d_getpwent=''
384 d_getsent=''
385 d_getservprotos=''
386 d_getsbyname=''
387 d_getsbyport=''
388 d_gnulibc=''
389 d_hasmntopt=''
390 d_htonl=''
391 d_inetaton=''
392 d_isascii=''
393 d_killpg=''
394 d_lchown=''
395 d_link=''
396 d_locconv=''
397 d_lockf=''
398 d_longdbl=''
399 longdblsize=''
400 d_longlong=''
401 longlongsize=''
402 d_lstat=''
403 d_madvise=''
404 d_mblen=''
405 d_mbstowcs=''
406 d_mbtowc=''
407 d_memcmp=''
408 d_memcpy=''
409 d_memmove=''
410 d_memset=''
411 d_mkdir=''
412 d_mkfifo=''
413 d_mktime=''
414 d_mmap=''
415 mmaptype=''
416 d_mprotect=''
417 d_msg=''
418 d_msgctl=''
419 d_msgget=''
420 d_msgrcv=''
421 d_msgsnd=''
422 d_msync=''
423 d_munmap=''
424 d_nice=''
425 d_open3=''
426 d_fpathconf=''
427 d_pathconf=''
428 d_pause=''
429 d_pipe=''
430 d_poll=''
431 d_portable=''
432 d_old_pthread_create_joinable=''
433 old_pthread_create_joinable=''
434 d_pthread_yield=''
435 d_sched_yield=''
436 sched_yield=''
437 d_readdir=''
438 d_rewinddir=''
439 d_seekdir=''
440 d_telldir=''
441 d_readlink=''
442 d_readv=''
443 d_rename=''
444 d_rmdir=''
445 d_safebcpy=''
446 d_safemcpy=''
447 d_sanemcmp=''
448 d_select=''
449 d_sem=''
450 d_semctl=''
451 d_semget=''
452 d_semop=''
453 d_setegid=''
454 d_seteuid=''
455 d_setgrent=''
456 d_setgrps=''
457 d_sethent=''
458 d_setlinebuf=''
459 d_setlocale=''
460 d_setnent=''
461 d_setpent=''
462 d_setpgid=''
463 d_setpgrp2=''
464 d_bsdsetpgrp=''
465 d_setpgrp=''
466 d_setprior=''
467 d_setpwent=''
468 d_setregid=''
469 d_setresgid=''
470 d_setresuid=''
471 d_setreuid=''
472 d_setrgid=''
473 d_setruid=''
474 d_setsent=''
475 d_setsid=''
476 d_setvbuf=''
477 d_sfio=''
478 usesfio=''
479 d_shm=''
480 d_shmat=''
481 d_shmatprototype=''
482 shmattype=''
483 d_shmctl=''
484 d_shmdt=''
485 d_shmget=''
486 d_sigaction=''
487 d_sigsetjmp=''
488 d_cmsghdr_s=''
489 d_msg_ctrunc=''
490 d_msg_dontroute=''
491 d_msg_oob=''
492 d_msg_peek=''
493 d_msg_proxy=''
494 d_msghdr_s=''
495 d_oldsock=''
496 d_recvmsg=''
497 d_scm_rights=''
498 d_sendmsg=''
499 d_socket=''
500 d_sockpair=''
501 sockethdr=''
502 socketlib=''
503 d_statblks=''
504 d_fstatfs=''
505 d_statfs=''
506 d_statfsflags=''
507 d_fstatvfs=''
508 d_statvfs=''
509 d_stdio_cnt_lval=''
510 d_stdio_ptr_lval=''
511 d_stdiobase=''
512 d_stdstdio=''
513 stdio_base=''
514 stdio_bufsiz=''
515 stdio_cnt=''
516 stdio_filbuf=''
517 stdio_ptr=''
518 d_index=''
519 d_strchr=''
520 d_strcoll=''
521 d_strctcpy=''
522 d_strerrm=''
523 d_strerror=''
524 d_sysernlst=''
525 d_syserrlst=''
526 d_strtod=''
527 d_strtol=''
528 d_strtoul=''
529 d_strxfrm=''
530 d_symlink=''
531 d_syscall=''
532 d_sysconf=''
533 d_system=''
534 d_tcgetpgrp=''
535 d_tcsetpgrp=''
536 d_telldirproto=''
537 d_time=''
538 timetype=''
539 clocktype=''
540 d_times=''
541 d_truncate=''
542 d_tzname=''
543 d_umask=''
544 d_semctl_semid_ds=''
545 d_semctl_semun=''
546 d_union_semun=''
547 d_vfork=''
548 usevfork=''
549 d_voidsig=''
550 signal_t=''
551 d_volatile=''
552 d_charvspr=''
553 d_vprintf=''
554 d_wait4=''
555 d_waitpid=''
556 d_wcstombs=''
557 d_wctomb=''
558 d_writev=''
559 d_dbmclose64=''
560 d_dbminit64=''
561 d_delete64=''
562 d_fetch64=''
563 d_firstkey64=''
564 d_nextkey64=''
565 d_store64=''
566 dlext=''
567 cccdlflags=''
568 ccdlflags=''
569 dlsrc=''
570 ld=''
571 lddlflags=''
572 usedl=''
573 doublesize=''
574 ebcdic=''
575 fpostype=''
576 gidtype=''
577 groupstype=''
578 h_fcntl=''
579 h_sysfile=''
580 i_arpainet=''
581 db_hashtype=''
582 db_prefixtype=''
583 i_db=''
584 i_dbm=''
585 i_rpcsvcdbm=''
586 d_dirnamlen=''
587 direntrytype=''
588 i_dirent=''
589 i_dld=''
590 i_dlfcn=''
591 i_fcntl=''
592 i_float=''
593 i_gdbm=''
594 d_grpasswd=''
595 i_grp=''
596 d_int64t=''
597 i_inttypes=''
598 i_limits=''
599 i_locale=''
600 i_machcthr=''
601 i_malloc=''
602 i_math=''
603 i_memory=''
604 i_mntent=''
605 i_ndbm=''
606 i_netdb=''
607 i_neterrno=''
608 i_niin=''
609 i_sysin=''
610 i_poll=''
611 i_pthread=''
612 d_pwage=''
613 d_pwchange=''
614 d_pwclass=''
615 d_pwcomment=''
616 d_pwexpire=''
617 d_pwgecos=''
618 d_pwpasswd=''
619 d_pwquota=''
620 i_pwd=''
621 i_sfio=''
622 i_stddef=''
623 i_stdlib=''
624 i_string=''
625 strings=''
626 i_sysaccess=''
627 i_sysdir=''
628 i_sysfile=''
629 d_voidtty=''
630 i_bsdioctl=''
631 i_sysfilio=''
632 i_sysioctl=''
633 i_syssockio=''
634 i_sysmman=''
635 i_sysmount=''
636 i_sysndir=''
637 i_sysparam=''
638 i_sysresrc=''
639 i_syssecrt=''
640 i_sysselct=''
641 i_sysstat=''
642 i_sysstatvfs=''
643 i_systimes=''
644 i_systypes=''
645 d_iovec_s=''
646 i_sysuio=''
647 i_sysun=''
648 i_syswait=''
649 i_sgtty=''
650 i_termio=''
651 i_termios=''
652 i_systime=''
653 i_systimek=''
654 i_time=''
655 timeincl=''
656 i_unistd=''
657 i_utime=''
658 i_values=''
659 i_stdarg=''
660 i_varargs=''
661 i_varhdr=''
662 i_vfork=''
663 installusrbinperl=''
664 intsize=''
665 longsize=''
666 shortsize=''
667 d_dirent64_s=''
668 d_flock64_s=''
669 d_fstat64=''
670 d_ftruncate64=''
671 d_ino64_t=''
672 d_llseek=''
673 d_lockf64=''
674 d_lseek64=''
675 d_lstat64=''
676 d_off64_t=''
677 d_offset_t=''
678 d_open64=''
679 d_opendir64=''
680 d_readdir64=''
681 d_seekdir64=''
682 d_stat64=''
683 d_telldir64=''
684 d_truncate64=''
685 libc=''
686 libperl=''
687 shrpenv=''
688 useshrplib=''
689 glibpth=''
690 libpth=''
691 loclibpth=''
692 plibpth=''
693 xlibpth=''
694 ignore_versioned_solibs=''
695 libs=''
696 lns=''
697 lseeksize=''
698 lseektype=''
699 make_set_make=''
700 d_mymalloc=''
701 freetype=''
702 mallocobj=''
703 mallocsrc=''
704 malloctype=''
705 usemymalloc=''
706 installman1dir=''
707 man1dir=''
708 man1direxp=''
709 man1ext=''
710 installman3dir=''
711 man3dir=''
712 man3direxp=''
713 man3ext=''
714 huge=''
715 large=''
716 medium=''
717 models=''
718 small=''
719 split=''
720 modetype=''
721 multiarch=''
722 mydomain=''
723 myhostname=''
724 phostname=''
725 c=''
726 n=''
727 d_eofnblk=''
728 eagain=''
729 o_nonblock=''
730 rd_nodata=''
731 netdb_hlen_type=''
732 netdb_host_type=''
733 netdb_name_type=''
734 netdb_net_type=''
735 groupcat=''
736 hostcat=''
737 passcat=''
738 orderlib=''
739 ranlib=''
740 package=''
741 spackage=''
742 pager=''
743 apiversion=''
744 patchlevel=''
745 subversion=''
746 version=''
747 perladmin=''
748 perlpath=''
749 pidtype=''
750 prefix=''
751 prefixexp=''
752 installprivlib=''
753 privlib=''
754 privlibexp=''
755 prototype=''
756 ptrsize=''
757 drand01=''
758 randbits=''
759 randfunc=''
760 randseedtype=''
761 seedfunc=''
762 installscript=''
763 scriptdir=''
764 scriptdirexp=''
765 selectminbits=''
766 selecttype=''
767 sh=''
768 sig_count=''
769 sig_name=''
770 sig_name_init=''
771 sig_num=''
772 sig_num_init=''
773 installsitearch=''
774 sitearch=''
775 sitearchexp=''
776 installsitelib=''
777 sitelib=''
778 sitelibexp=''
779 sizetype=''
780 so=''
781 sharpbang=''
782 shsharp=''
783 spitshell=''
784 src=''
785 ssizetype=''
786 startperl=''
787 startsh=''
788 stdchar=''
789 d_fgetpos64=''
790 d_fopen64=''
791 d_freopen64=''
792 d_fseek64=''
793 d_fseeko64=''
794 d_fsetpos64=''
795 d_ftell64=''
796 d_ftello64=''
797 d_tmpfile64=''
798 sysman=''
799 trnl=''
800 uidtype=''
801 archname64=''
802 use64bits=''
803 usemultiplicity=''
804 nm_opt=''
805 nm_so_opt=''
806 runnm=''
807 usenm=''
808 useperlio=''
809 d_oldpthreads=''
810 usethreads=''
811 incpath=''
812 mips=''
813 mips_type=''
814 usrinc=''
815 defvoidused=''
816 voidflags=''
817 CONFIG=''
818
819 define='define'
820 undef='undef'
821 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
822 rmlist=''
823
824 : We must find out about Eunice early
825 eunicefix=':'
826 if test -f /etc/unixtovms; then
827         eunicefix=/etc/unixtovms
828 fi
829 if test -f /etc/unixtovms.exe; then
830         eunicefix=/etc/unixtovms.exe
831 fi
832
833 i_whoami=''
834 : Possible local include directories to search.
835 : Set locincpth to "" in a hint file to defeat local include searches.
836 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
837 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
838 :
839 : no include file wanted by default
840 inclwanted=''
841
842 : list of known cpp symbols, sorted alphabetically
843 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
844 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
845 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
846 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
847 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
848 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
849 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
850 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
851 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
852 al="$al VMS Xenix286"
853 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
854 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
855 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
856 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
857 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
858 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
859 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
860 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
861 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
862 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
863 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
864 al="$al __SVR4_2__ __UMAXV__"
865 al="$al ____386BSD____ __alpha __alpha__ __amiga"
866 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
867 al="$al __host_mips__"
868 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
869 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
870 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
871 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
872 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
873 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
874 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
875 al="$al __mc88100 __mc88100__ __mips __mips__"
876 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
877 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
878 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
879 al="$al _host_mips _mips _unix"
880 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
881 al="$al apollo ardent att386 att3b"
882 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
883 al="$al cadmus clipper concurrent convex cray ctix"
884 al="$al dmert encore gcos gcx gimpel gould"
885 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
886 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
887 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
888 al="$al i186 i286 i386 i486 i8086"
889 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
890 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
891 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
892 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
893 al="$al mc88000 mc88100 merlin mert mips mvs n16"
894 al="$al ncl_el ncl_mr"
895 al="$al news1500 news1700 news1800 news1900 news3700"
896 al="$al news700 news800 news900 ns16000 ns32000"
897 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
898 al="$al parisc pc532 pdp11 plexus posix pyr"
899 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
900 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
901 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
902 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
903 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
904 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
905 al="$al xenix z8000"
906
907 : Trailing extension.  Override this in a hint file, if needed.
908 _exe=''
909 : Extra object files, if any, needed on this platform.
910 archobjs=''
911 groupstype=''
912 : change the next line if compiling for Xenix/286 on Xenix/386
913 xlibpth='/usr/lib/386 /lib/386'
914
915 : Possible local library directories to search.
916 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
917 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
918
919 : general looking path for locating libraries
920 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
921 glibpth="$glibpth /lib /usr/lib $xlibpth"
922 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
923 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
924
925 : Private path used by Configure to find libraries.  Its value
926 : is prepended to libpth. This variable takes care of special
927 : machines, like the mips.  Usually, it should be empty.
928 plibpth=''
929
930 : default library list
931 libswanted=''
932 : some systems want to use only the non-versioned libso:s
933 ignore_versioned_solibs=''
934 : full support for void wanted by default
935 defvoidused=15
936
937 : set useposix=false in your hint file to disable the POSIX extension.
938 useposix=true
939 : set useopcode=false in your hint file to disable the Opcode extension.
940 useopcode=true
941 : set usemultiplicity on the Configure command line to enable multiplicity.
942 : set usethreads on the Configure command line to enable threads.
943 : List of libraries we want.
944 : If anyone needs -lnet, put it in a hint file.
945 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
946 libswanted="$libswanted dld ld sun m rt c cposix posix"
947 libswanted="$libswanted ndir dir crypt"
948 libswanted="$libswanted ucb bsd BSD PW x"
949 : We probably want to search /usr/shlib before most other libraries.
950 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
951 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
952 glibpth="/usr/shlib $glibpth"
953 : Do not use vfork unless overridden by a hint file.
954 usevfork=false
955
956 : Find the basic shell for Bourne shell scripts
957 case "$sh" in
958 '')
959         case "$SYSTYPE" in
960         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
961         *) xxx='/bin/sh';;
962         esac
963         if test -f "$xxx"; then
964                 sh="$xxx"
965         else
966                 : Build up a list and do a single loop so we can 'break' out.
967                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
968                 for xxx in sh bash ksh pdksh ash; do
969                         for p in $pth; do
970                                 try="$try ${p}/${xxx}"
971                         done
972                 done
973                 for xxx in $try; do
974                         if test -f "$xxx"; then
975                                 sh="$xxx";
976                                 break
977                         elif test -f "$xxx.exe"; then
978                                 sh="$xxx";
979                                 break
980                         fi
981                 done
982         fi
983         ;;
984 esac
985
986 case "$sh" in
987 '')     cat <<EOM >&2
988 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
989
990 Usually it's in /bin/sh.  How did you even get this far?
991 Please contact me (Perl Maintainers) at perlbug@perl.com and 
992 we'll try to straighten this all out.
993 EOM
994         exit 1
995         ;;
996 esac
997
998 : see if sh knows # comments
999 if `$sh -c '#' >/dev/null 2>&1`; then
1000         shsharp=true
1001         spitshell=cat
1002         xcat=/bin/cat
1003         test -f $xcat || xcat=/usr/bin/cat
1004         echo "#!$xcat" >try
1005         $eunicefix try
1006         chmod +x try
1007         ./try > today
1008         if test -s today; then
1009                 sharpbang='#!'
1010         else
1011                 echo "#! $xcat" > try
1012                 $eunicefix try
1013                 chmod +x try
1014                 ./try > today
1015                 if test -s today; then
1016                         sharpbang='#! '
1017                 else
1018                         sharpbang=': use '
1019                 fi
1020         fi
1021 else
1022         echo " "
1023         echo "Your $sh doesn't grok # comments--I will strip them later on."
1024         shsharp=false
1025         cd ..
1026         echo "exec grep -v '^[  ]*#'" >spitshell
1027         chmod +x spitshell
1028         $eunicefix spitshell
1029         spitshell=`pwd`/spitshell
1030         cd UU
1031         echo "I presume that if # doesn't work, #! won't work either!"
1032         sharpbang=': use '
1033 fi
1034 rm -f try today
1035
1036 : figure out how to guarantee sh startup
1037 case "$startsh" in
1038 '') startsh=${sharpbang}${sh} ;;
1039 *)
1040 esac
1041 cat >try <<EOSS
1042 $startsh
1043 set abc
1044 test "$?abc" != 1
1045 EOSS
1046
1047 chmod +x try
1048 $eunicefix try
1049 if ./try; then
1050         : echo "Yup, it does."
1051 else
1052         echo "Hmm... '$startsh' does not guarantee sh startup..."
1053         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1054 fi
1055 rm -f try
1056
1057
1058 : Save command line options in file UU/cmdline.opt for later use in
1059 : generating config.sh.
1060 cat > cmdline.opt <<EOSH
1061 # Configure command line arguments.
1062 config_arg0='$0'
1063 config_args='$*'
1064 config_argc=$#
1065 EOSH
1066 argn=1
1067 for arg in "$@"; do
1068         cat >>cmdline.opt <<EOSH
1069 config_arg$argn='$arg'
1070 EOSH
1071         argn=`expr $argn + 1`
1072 done
1073
1074 : produce awk script to parse command line options
1075 cat >options.awk <<'EOF'
1076 BEGIN {
1077         optstr = "dD:eEf:hKOrsSU:V";    # getopt-style specification
1078
1079         len = length(optstr);
1080         for (i = 1; i <= len; i++) {
1081                 c = substr(optstr, i, 1);
1082                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1083                 if (a == ":") {
1084                         arg[c] = 1;
1085                         i++;
1086                 }
1087                 opt[c] = 1;
1088         }
1089 }
1090 {
1091         expect = 0;
1092         str = $0;
1093         if (substr(str, 1, 1) != "-") {
1094                 printf("'%s'\n", str);
1095                 next;
1096         }
1097         len = length($0);
1098         for (i = 2; i <= len; i++) {
1099                 c = substr(str, i, 1);
1100                 if (!opt[c]) {
1101                         printf("-%s\n", substr(str, i));
1102                         next;
1103                 }
1104                 printf("-%s\n", c);
1105                 if (arg[c]) {
1106                         if (i < len)
1107                                 printf("'%s'\n", substr(str, i + 1));
1108                         else
1109                                 expect = 1;
1110                         next;
1111                 }
1112         }
1113 }
1114 END {
1115         if (expect)
1116                 print "?";
1117 }
1118 EOF
1119
1120 : process the command line options
1121 set X `for arg in "$@"; do echo "X$arg"; done |
1122         sed -e s/X// | awk -f options.awk`
1123 eval "set $*"
1124 shift
1125 rm -f options.awk
1126
1127 : set up default values
1128 fastread=''
1129 reuseval=false
1130 config_sh=''
1131 alldone=''
1132 error=''
1133 silent=''
1134 extractsh=''
1135 override=''
1136 knowitall=''
1137 rm -f optdef.sh
1138 cat >optdef.sh <<EOS
1139 $startsh
1140 EOS
1141
1142
1143 : option parsing
1144 while test $# -gt 0; do
1145         case "$1" in
1146         -d) shift; fastread=yes;;
1147         -e) shift; alldone=cont;;
1148         -f)
1149                 shift
1150                 cd ..
1151                 if test -r "$1"; then
1152                         config_sh="$1"
1153                 else
1154                         echo "$me: cannot read config file $1." >&2
1155                         error=true
1156                 fi
1157                 cd UU
1158                 shift;;
1159         -h) shift; error=true;;
1160         -r) shift; reuseval=true;;
1161         -s) shift; silent=true; realsilent=true;;
1162         -E) shift; alldone=exit;;
1163         -K) shift; knowitall=true;;
1164         -O) shift; override=true;;
1165         -S) shift; silent=true; extractsh=true;;
1166         -D)
1167                 shift
1168                 case "$1" in
1169                 *=)
1170                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1171                         echo "$me: ignoring -D $1" >&2
1172                         ;;
1173                 *=*) echo "$1" | \
1174                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1175                 *) echo "$1='define'" >> optdef.sh;;
1176                 esac
1177                 shift
1178                 ;;
1179         -U)
1180                 shift
1181                 case "$1" in
1182                 *=) echo "$1" >> optdef.sh;;
1183                 *=*)
1184                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1185                         echo "$me: ignoring -U $1" >&2
1186                         ;;
1187                 *) echo "$1='undef'" >> optdef.sh;;
1188                 esac
1189                 shift
1190                 ;;
1191         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1192                 exit 0;;
1193         --) break;;
1194         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1195         *) break;;
1196         esac
1197 done
1198
1199 case "$error" in
1200 true)
1201         cat >&2 <<EOM
1202 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1203                  [-U symbol] [-U symbol=]
1204   -d : use defaults for all answers.
1205   -e : go on without questioning past the production of config.sh.
1206   -f : specify an alternate default configuration file.
1207   -h : print this help message and exit (with an error status).
1208   -r : reuse C symbols value if possible (skips costly nm extraction).
1209   -s : silent mode, only echoes questions and essential information.
1210   -D : define symbol to have some value:
1211          -D symbol         symbol gets the value 'define'
1212          -D symbol=value   symbol gets the value 'value'
1213   -E : stop at the end of questions, after having produced config.sh.
1214   -K : do not use unless you know what you are doing.
1215   -O : let -D and -U override definitions from loaded configuration file.
1216   -S : perform variable substitutions on all .SH files (can mix with -f)
1217   -U : undefine symbol:
1218          -U symbol    symbol gets the value 'undef'
1219          -U symbol=   symbol gets completely empty
1220   -V : print version number and exit (with a zero status).
1221 EOM
1222         exit 1
1223         ;;
1224 esac
1225
1226 : Sanity checks
1227 case "$fastread$alldone" in
1228 yescont|yesexit) ;;
1229 *)
1230         if test ! -t 0; then
1231                 echo "Say 'sh Configure', not 'sh <Configure'"
1232                 exit 1
1233         fi
1234         ;;
1235 esac
1236
1237 exec 4>&1
1238 case "$silent" in
1239 true) exec 1>/dev/null;;
1240 esac
1241
1242 : run the defines and the undefines, if any, but leave the file out there...
1243 touch optdef.sh
1244 . ./optdef.sh
1245
1246 : set package name
1247 package=perl5
1248 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1249 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1250 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1251 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1252 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1253 esac
1254
1255 : Some greps do not return status, grrr.
1256 echo "grimblepritz" >grimble
1257 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1258         contains=contains
1259 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1260         contains=grep
1261 else
1262         contains=contains
1263 fi
1264 rm -f grimble
1265 : the following should work in any shell
1266 case "$contains" in
1267 contains*)
1268         echo " "
1269         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1270         cat >contains <<'EOSS'
1271 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1272 EOSS
1273 chmod +x contains
1274 esac
1275
1276 : Find the path to the source tree
1277 case "$src" in
1278 '') case "$0" in
1279     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;;
1280     *)   src='.';;
1281     esac;;
1282 esac
1283 case "$src" in
1284 '')     src=/
1285         rsrc=/
1286         ;;
1287 /*) rsrc="$src";;
1288 *) rsrc="../$src";;
1289 esac
1290 if test -f $rsrc/Configure && \
1291         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1292 then
1293    : found it, so we are ok.
1294 else
1295         rsrc=''
1296         for src in . .. ../.. ../../.. ../../../..; do
1297                 if test -f ../$src/Configure && \
1298                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1299                 then
1300                         rsrc=../$src
1301                         break
1302                 fi
1303         done
1304 fi
1305 case "$rsrc" in
1306 '')
1307         cat <<EOM >&4
1308
1309 Sorry, I can't seem to locate the source dir for $package.  Please start
1310 Configure with an explicit path -- i.e. /some/path/Configure.
1311
1312 EOM
1313         exit 1
1314         ;;
1315 ../.)   rsrc='..';;
1316 *)
1317         echo " "
1318         echo "Sources for $package found in \"$src\"." >&4
1319         ;;
1320 esac
1321
1322 : script used to extract .SH files with variable substitutions
1323 cat >extract <<'EOS'
1324 CONFIGDOTSH=true
1325 echo "Doing variable substitutions on .SH files..."
1326 if test -f $src/MANIFEST; then
1327         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1328 else
1329         echo "(Looking for .SH files under the source directory.)"
1330         set x `(cd $src; find . -name "*.SH" -print)`
1331 fi
1332 shift
1333 case $# in
1334 0) set x `(cd $src; echo *.SH)`; shift;;
1335 esac
1336 if test ! -f $src/$1; then
1337         shift
1338 fi
1339 mkdir_p='
1340 name=$1;
1341 create="";
1342 while test $name; do
1343         if test ! -d "$name"; then
1344                 create="$name $create";
1345                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1346                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1347         else
1348                 name="";
1349         fi;
1350 done;
1351 for file in $create; do
1352         mkdir $file;
1353 done
1354 '
1355 for file in $*; do
1356         case "$src" in
1357         ".")
1358                 case "$file" in
1359                 */*)
1360                         dir=`expr X$file : 'X\(.*\)/'`
1361                         file=`expr X$file : 'X.*/\(.*\)'`
1362                         (cd $dir && . ./$file)
1363                         ;;
1364                 *)
1365                         . ./$file
1366                         ;;
1367                 esac
1368                 ;;
1369         *)
1370                 case "$file" in
1371                 */*)
1372                         dir=`expr X$file : 'X\(.*\)/'`
1373                         file=`expr X$file : 'X.*/\(.*\)'`
1374                         (set x $dir; shift; eval $mkdir_p)
1375                         sh <$src/$dir/$file
1376                         ;;
1377                 *)
1378                         sh <$src/$file
1379                         ;;
1380                 esac
1381                 ;;
1382         esac
1383 done
1384 if test -f $src/config_h.SH; then
1385         if test ! -f config.h; then
1386         : oops, they left it out of MANIFEST, probably, so do it anyway.
1387         . $src/config_h.SH
1388         fi
1389 fi
1390 EOS
1391
1392 : extract files and exit if asked to do so
1393 case "$extractsh" in
1394 true)
1395         case "$realsilent" in
1396         true) ;;
1397         *) exec 1>&4;;
1398         esac
1399         case "$config_sh" in
1400         '') config_sh='config.sh';;
1401         esac
1402         echo " "
1403         echo "Fetching answers from $config_sh..."
1404         cd ..
1405         . $config_sh
1406         test "$override" && . ./optdef.sh
1407         echo " "
1408         . UU/extract
1409         rm -rf UU
1410         echo "Done."
1411         exit 0
1412         ;;
1413 esac
1414
1415 : Eunice requires " " instead of "", can you believe it
1416 echo " "
1417 : Here we go...
1418 echo "Beginning of configuration questions for $package."
1419
1420 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1421
1422 : first determine how to suppress newline on echo command
1423 echo " "
1424 echo "Checking echo to see how to suppress newlines..."
1425 (echo "hi there\c" ; echo " ") >.echotmp
1426 if $contains c .echotmp >/dev/null 2>&1 ; then
1427         echo "...using -n."
1428         n='-n'
1429         c=''
1430 else
1431         cat <<'EOM'
1432 ...using \c
1433 EOM
1434         n=''
1435         c='\c'
1436 fi
1437 echo $n "The star should be here-->$c"
1438 echo '*'
1439 rm -f .echotmp
1440
1441 : Now test for existence of everything in MANIFEST
1442 echo " "
1443 if test -f $rsrc/MANIFEST; then
1444         echo "First let's make sure your kit is complete.  Checking..." >&4
1445         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1446         rm -f missing
1447         tmppwd=`pwd`
1448         for filelist in x??; do
1449                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1450         done
1451         if test -s missing; then
1452                 cat missing >&4
1453                 cat >&4 <<'EOM'
1454
1455 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1456
1457 You have the option of continuing the configuration process, despite the
1458 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1459 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1460 and contact the author (perlbug@perl.com).
1461
1462 EOM
1463                 echo $n "Continue? [n] $c" >&4
1464                 read ans
1465                 case "$ans" in
1466                 y*)
1467                         echo "Continuing..." >&4
1468                         rm -f missing
1469                         ;;
1470                 *)
1471                         echo "ABORTING..." >&4
1472                         kill $$
1473                         ;;
1474                 esac
1475         else
1476                 echo "Looks good..."
1477         fi
1478 else
1479         echo "There is no MANIFEST file.  I hope your kit is complete !"
1480 fi
1481 rm -f missing x??
1482
1483 echo " "
1484 : Find the appropriate value for a newline for tr
1485 if test -n "$DJGPP"; then
1486        trnl='\012'
1487 fi
1488 if test X"$trnl" = X; then
1489         case "`echo foo|tr '\n' x 2>/dev/null`" in
1490         foox) trnl='\n' ;;
1491         esac
1492 fi
1493 if test X"$trnl" = X; then
1494         case "`echo foo|tr '\012' x 2>/dev/null`" in
1495         foox) trnl='\012' ;;
1496         esac
1497 fi
1498 if test X"$trnl" = X; then
1499         cat <<EOM >&2
1500
1501 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1502
1503 EOM
1504         exit 1
1505 fi
1506
1507 : compute the number of columns on the terminal for proper question formatting
1508 case "$COLUMNS" in
1509 '') COLUMNS='80';;
1510 esac
1511
1512 : set up the echo used in my read
1513 myecho="case \"\$xxxm\" in
1514 '') echo $n \"\$rp $c\" >&4;;
1515 *) case \"\$rp\" in
1516         '') echo $n \"[\$xxxm] $c\";;
1517         *)
1518                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1519                         echo \"\$rp\" >&4
1520                         echo $n \"[\$xxxm] $c\" >&4
1521                 else
1522                         echo $n \"\$rp [\$xxxm] $c\" >&4
1523                 fi
1524                 ;;
1525         esac;;
1526 esac"
1527
1528 : now set up to do reads with possible shell escape and default assignment
1529 cat <<EOSC >myread
1530 $startsh
1531 xxxm=\$dflt
1532 $myecho
1533 ans='!'
1534 case "\$fastread" in
1535 yes) case "\$dflt" in
1536         '') ;;
1537         *) ans='';
1538                 case "\$silent-\$rp" in
1539                 true-) ;;
1540                 *) echo " " >&4;;
1541                 esac;;
1542         esac;;
1543 *) case "\$silent" in
1544         true) case "\$rp" in
1545                 '') ans='';;
1546                 esac;;
1547         esac;;
1548 esac
1549 while expr "X\$ans" : "X!" >/dev/null; do
1550         read answ
1551         set x \$xxxm
1552         shift
1553         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1554         case  "\$answ" in
1555         "!")
1556                 sh 1>&4
1557                 echo " "
1558                 $myecho
1559                 ;;
1560         !*)
1561                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1562                 shift
1563                 sh 1>&4 -c "\$*"
1564                 echo " "
1565                 $myecho
1566                 ;;
1567         "\$ans")
1568                 case "\$ans" in
1569                 \\&*)
1570                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1571                         shift
1572                         case "\$1" in
1573                         -d)
1574                                 fastread=yes
1575                                 echo "(OK, I'll run with -d after this question.)" >&4
1576                                 ;;
1577                         -*)
1578                                 echo "*** Sorry, \$1 not supported yet." >&4
1579                                 ;;
1580                         esac
1581                         $myecho
1582                         ans=!
1583                         ;;
1584                 esac;;
1585         *)
1586                 case "\$aok" in
1587                 y)
1588                         echo "*** Substitution done -- please confirm."
1589                         xxxm="\$ans"
1590                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1591                         xxxm="\$ans"
1592                         ans=!
1593                         ;;
1594                 *)
1595                         echo "*** Error -- try again."
1596                         ans=!
1597                         ;;
1598                 esac
1599                 $myecho
1600                 ;;
1601         esac
1602         case "\$ans\$xxxm\$nostick" in
1603         '')
1604                 ans=!
1605                 $myecho
1606                 ;;
1607         esac
1608 done
1609 case "\$ans" in
1610 '') ans="\$xxxm";;
1611 esac
1612 EOSC
1613
1614 : create .config dir to save info across Configure sessions
1615 test -d ../.config || mkdir ../.config
1616 cat >../.config/README <<EOF
1617 This directory created by Configure to save information that should
1618 persist across sessions for $package.
1619
1620 You may safely delete it if you wish.
1621 EOF
1622
1623 : general instructions
1624 needman=true
1625 firsttime=true
1626 user=`(logname) 2>/dev/null`
1627 case "$user" in
1628 '') user=`whoami 2>&1`;;
1629 esac
1630 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1631         firsttime=false
1632         echo " "
1633         rp='Would you like to see the instructions?'
1634         dflt=n
1635         . ./myread
1636         case "$ans" in
1637         [yY]*) ;;
1638         *) needman=false;;
1639         esac
1640 fi
1641 if $needman; then
1642         cat <<EOH
1643
1644 This installation shell script will examine your system and ask you questions
1645 to determine how the perl5 package should be installed. If you get
1646 stuck on a question, you may use a ! shell escape to start a subshell or
1647 execute a command.  Many of the questions will have default answers in square
1648 brackets; typing carriage return will give you the default.
1649
1650 On some of the questions which ask for file or directory names you are allowed
1651 to use the ~name construct to specify the login directory belonging to "name",
1652 even if you don't have a shell which knows about that.  Questions where this is
1653 allowed will be marked "(~name ok)".
1654
1655 EOH
1656         rp=''
1657         dflt='Type carriage return to continue'
1658         . ./myread
1659         cat <<'EOH'
1660
1661 The prompter used in this script allows you to use shell variables and
1662 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1663 in the default answer, as if the default line was a set of arguments given to a
1664 script shell.  This means you may also use $* to repeat the whole default line,
1665 so you do not have to re-type everything to add something to the default.
1666
1667 Everytime there is a substitution, you will have to confirm.  If there is an
1668 error (e.g. an unmatched backtick), the default answer will remain unchanged
1669 and you will be prompted again.
1670
1671 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1672 the questions and use the computed defaults (or the previous answers if there
1673 was already a config.sh file). Type 'Configure -h' for a list of options.
1674 You may also start interactively and then answer '& -d' at any prompt to turn
1675 on the non-interactive behaviour for the remainder of the execution.
1676
1677 EOH
1678         . ./myread
1679         cat <<EOH
1680
1681 Much effort has been expended to ensure that this shell script will run on any
1682 Unix system.  If despite that it blows up on yours, your best bet is to edit
1683 Configure and run it again.  If you can't run Configure for some reason,
1684 you'll have to generate a config.sh file by hand.  Whatever problems you
1685 have, let me (perlbug@perl.com) know how I blew it.
1686
1687 This installation script affects things in two ways:
1688
1689 1) it may do direct variable substitutions on some of the files included
1690    in this kit.
1691 2) it builds a config.h file for inclusion in C programs.  You may edit
1692    any of these files as the need arises after running this script.
1693
1694 If you make a mistake on a question, there is no easy way to back up to it
1695 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1696 files.  Configure will offer to let you do this before it runs the SH files.
1697
1698 EOH
1699         dflt='Type carriage return to continue'
1700         . ./myread
1701         case "$firsttime" in
1702         true) echo $user >>../.config/instruct;;
1703         esac
1704 fi
1705
1706 : find out where common programs are
1707 echo " "
1708 echo "Locating common programs..." >&4
1709 cat <<EOSC >loc
1710 $startsh
1711 case \$# in
1712 0) exit 1;;
1713 esac
1714 thing=\$1
1715 shift
1716 dflt=\$1
1717 shift
1718 for dir in \$*; do
1719         case "\$thing" in
1720         .)
1721         if test -d \$dir/\$thing; then
1722                 echo \$dir
1723                 exit 0
1724         fi
1725         ;;
1726         *)
1727         for thisthing in \$dir/\$thing; do
1728                 : just loop through to pick last item
1729         done
1730         if test -f \$thisthing; then
1731                 echo \$thisthing
1732                 exit 0
1733         elif test -f \$dir/\$thing.exe; then
1734                 if test -n "$DJGPP"; then
1735                         echo \$dir/\$thing.exe
1736                 else
1737                         : on Eunice apparently
1738                         echo \$dir/\$thing
1739                 fi
1740                 exit 0
1741         fi
1742         ;;
1743         esac
1744 done
1745 echo \$dflt
1746 exit 1
1747 EOSC
1748 chmod +x loc
1749 $eunicefix loc
1750 loclist="
1751 awk
1752 cat
1753 comm
1754 cp
1755 echo
1756 expr
1757 grep
1758 ls
1759 make
1760 mkdir
1761 rm
1762 sed
1763 sort
1764 touch
1765 tr
1766 uniq
1767 "
1768 trylist="
1769 Mcc
1770 ar
1771 byacc
1772 cpp
1773 csh
1774 date
1775 egrep
1776 gzip
1777 less
1778 ln
1779 more
1780 nm
1781 nroff
1782 pg
1783 test
1784 uname
1785 zip
1786 "
1787 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1788 pth="$pth /lib /usr/lib"
1789 for file in $loclist; do
1790         eval xxx=\$$file
1791         case "$xxx" in
1792         /*|?:[\\/]*)
1793                 if test -f "$xxx"; then
1794                         : ok
1795                 else
1796                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1797                         xxx=`./loc $file $file $pth`
1798                 fi
1799                 ;;
1800         '') xxx=`./loc $file $file $pth`;;
1801         *) xxx=`./loc $xxx $xxx $pth`;;
1802         esac
1803         eval $file=$xxx
1804         eval _$file=$xxx
1805         case "$xxx" in
1806         /*)
1807                 echo $file is in $xxx.
1808                 ;;
1809         ?:[\\/]*)
1810                 echo $file is in $xxx.
1811                 ;;
1812         *)
1813                 echo "I don't know where '$file' is, and my life depends on it." >&4
1814                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1815                 exit 1
1816                 ;;
1817         esac
1818 done
1819 echo " "
1820 echo "Don't worry if any of the following aren't found..."
1821 say=offhand
1822 for file in $trylist; do
1823         eval xxx=\$$file
1824         case "$xxx" in
1825         /*|?:[\\/]*)
1826                 if test -f "$xxx"; then
1827                         : ok
1828                 else
1829                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1830                         xxx=`./loc $file $file $pth`
1831                 fi
1832                 ;;
1833         '') xxx=`./loc $file $file $pth`;;
1834         *) xxx=`./loc $xxx $xxx $pth`;;
1835         esac
1836         eval $file=$xxx
1837         eval _$file=$xxx
1838         case "$xxx" in
1839         /*)
1840                 echo $file is in $xxx.
1841                 ;;
1842         ?:[\\/]*)
1843                 echo $file is in $xxx.
1844                 ;;
1845         *)
1846                 echo "I don't see $file out there, $say."
1847                 say=either
1848                 ;;
1849         esac
1850 done
1851 case "$egrep" in
1852 egrep)
1853         echo "Substituting grep for egrep."
1854         egrep=$grep
1855         ;;
1856 esac
1857 case "$ln" in
1858 ln)
1859         echo "Substituting cp for ln."
1860         ln=$cp
1861         ;;
1862 esac
1863 case "$test" in
1864 test)
1865         echo "Hopefully test is built into your sh."
1866         ;;
1867 *)
1868         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1869                 echo "Using the test built into your sh."
1870                 test=test
1871                 _test=test
1872         fi
1873         ;;
1874 esac
1875 case "$echo" in
1876 echo)
1877         echo "Hopefully echo is built into your sh."
1878         ;;
1879 '') ;;
1880 *)
1881         echo " "
1882 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1883         $echo $n "hi there$c" >foo1
1884         echo $n "hi there$c" >foo2
1885         if cmp foo1 foo2 >/dev/null 2>&1; then
1886                 echo "They are compatible.  In fact, they may be identical."
1887         else
1888                 case "$n" in
1889                 '-n') n='' c='\c';;
1890                 *) n='-n' c='';;
1891                 esac
1892                 cat <<FOO
1893 They are not compatible!  You are probably running ksh on a non-USG system.
1894 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1895 have echo built in and we may have to run some Bourne shell scripts.  That
1896 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1897
1898 FOO
1899                 $echo $n "The star should be here-->$c"
1900                 $echo "*"
1901         fi
1902         $rm -f foo1 foo2
1903         ;;
1904 esac
1905
1906 : determine whether symbolic links are supported
1907 echo " "
1908 $touch blurfl
1909 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1910         echo "Symbolic links are supported." >&4
1911         lns="$ln -s"
1912 else
1913         echo "Symbolic links are NOT supported." >&4
1914         lns="$ln"
1915 fi
1916 $rm -f blurfl sym
1917
1918 : see whether [:lower:] and [:upper:] are supported character classes
1919 echo " "
1920 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1921 ABYZ)
1922         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1923         up='[:upper:]'
1924         low='[:lower:]'
1925         ;;
1926 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
1927         # (0xc9 and 0xd1), therefore that is a nice testing point.
1928         if test "X$up" = X -o "X$low" = X; then
1929             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
1930             ij) up='[A-Z]'
1931                 low='[a-z]'
1932                 ;;
1933             esac
1934         fi
1935         if test "X$up" = X -o "X$low" = X; then
1936             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
1937             ij) up='A-Z'
1938                 low='a-z'
1939                 ;;
1940             esac
1941         fi
1942         if test "X$up" = X -o "X$low" = X; then
1943             case "`echo IJ | od -x 2>/dev/null`" in
1944             *C9D1*|*c9d1*)
1945                 echo "Hey, this might be EBCDIC." >&4
1946                 if test "X$up" = X -o "X$low" = X; then
1947                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
1948                     ij) up='[A-IJ-RS-Z]'
1949                         low='[a-ij-rs-z]'
1950                         ;;
1951                     esac
1952                 fi
1953                 if test "X$up" = X -o "X$low" = X; then
1954                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
1955                     ij) up='A-IJ-RS-Z'
1956                         low='a-ij-rs-z'
1957                         ;;
1958                     esac
1959                 fi
1960                 ;;
1961             esac
1962         fi
1963 esac
1964 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
1965 ij)
1966     echo "Using $up and $low to convert case." >&4
1967     ;;
1968 *)
1969     echo "I don't know how to translate letters from upper to lower case." >&4
1970     echo "Your tr is not acting any way I know of." >&4
1971     exit 1
1972     ;;
1973 esac
1974 : set up the translation script tr, must be called with ./tr of course
1975 cat >tr <<EOSC
1976 $startsh
1977 case "\$1\$2" in
1978 '[A-Z][a-z]') exec $tr '$up' '$low';;
1979 '[a-z][A-Z]') exec $tr '$low' '$up';;
1980 esac
1981 exec $tr "\$@"
1982 EOSC
1983 chmod +x tr
1984 $eunicefix tr
1985
1986 : Try to determine whether config.sh was made on this system
1987 case "$config_sh" in
1988 '')
1989 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1990 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
1991 # because the A-Z/a-z are not consecutive.
1992 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1993         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1994 newmyuname="$myuname"
1995 dflt=n
1996 case "$knowitall" in
1997 '')
1998         if test -f ../config.sh; then
1999                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2000                         eval "`grep myuname= ../config.sh`"
2001                 fi
2002                 if test "X$myuname" = "X$newmyuname"; then
2003                         dflt=y
2004                 fi
2005         fi
2006         ;;
2007 *) dflt=y;;
2008 esac
2009
2010 : Get old answers from old config file if Configure was run on the
2011 : same system, otherwise use the hints.
2012 hint=default
2013 cd ..
2014 if test -f config.sh; then
2015         echo " "
2016         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2017         . UU/myread
2018         case "$ans" in
2019         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2020         *)  echo "Fetching default answers from your old config.sh file..." >&4
2021                 tmp_n="$n"
2022                 tmp_c="$c"
2023                 tmp_sh="$sh"
2024                 . ./config.sh
2025                 cp config.sh UU
2026                 n="$tmp_n"
2027                 c="$tmp_c"
2028                 : Older versions did not always set $sh.  Catch re-use of such
2029                 : an old config.sh.
2030                 case "$sh" in
2031                 '') sh="$tmp_sh" ;;
2032                 esac
2033                 hint=previous
2034                 ;;
2035         esac
2036 fi
2037 if test ! -f config.sh; then
2038         $cat <<EOM
2039
2040 First time through, eh?  I have some defaults handy for some systems
2041 that need some extra help getting the Configure answers right:
2042
2043 EOM
2044         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2045         dflt=''
2046         : Half the following guesses are probably wrong... If you have better
2047         : tests or hints, please send them to perlbug@perl.com
2048         : The metaconfig authors would also appreciate a copy...
2049         $test -f /irix && osname=irix
2050         $test -f /xenix && osname=sco_xenix
2051         $test -f /dynix && osname=dynix
2052         $test -f /dnix && osname=dnix
2053         $test -f /lynx.os && osname=lynxos
2054         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2055         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2056         $test -f /bin/mips && /bin/mips && osname=mips
2057         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2058                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2059         $test -d /usr/apollo/bin && osname=apollo
2060         $test -f /etc/saf/_sactab && osname=svr4
2061         $test -d /usr/include/minix && osname=minix
2062         if $test -d /MachTen -o -d /MachTen_Folder; then
2063                 osname=machten
2064                 if $test -x /sbin/version; then
2065                         osvers=`/sbin/version | $awk '{print $2}' |
2066                         $sed -e 's/[A-Za-z]$//'`
2067                 elif $test -x /usr/etc/version; then
2068                         osvers=`/usr/etc/version | $awk '{print $2}' |
2069                         $sed -e 's/[A-Za-z]$//'`
2070                 else
2071                         osvers="$2.$3"
2072                 fi
2073         fi
2074        $test -f /sys/posix.dll &&
2075                $test -f /usr/bin/what &&
2076                set X `/usr/bin/what /sys/posix.dll` &&
2077                $test "$3" = UWIN &&
2078                osname=uwin &&
2079                osvers="$5"
2080         if $test -f $uname; then
2081                 set X $myuname
2082                 shift
2083
2084                 case "$5" in
2085                 fps*) osname=fps ;;
2086                 mips*)
2087                         case "$4" in
2088                         umips) osname=umips ;;
2089                         *) osname=mips ;;
2090                         esac;;
2091                 [23]100) osname=mips ;;
2092                 next*) osname=next ;;
2093                 i386*)
2094                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2095                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2096                                 osname='sco'
2097                                 osvers=$tmp
2098                         elif $test -f /etc/kconfig; then
2099                                 osname=isc
2100                                 if test "$lns" = "ln -s"; then
2101                                         osvers=4
2102                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2103                                         osvers=3
2104                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2105                                         osvers=2
2106                                 fi
2107                         fi
2108                         tmp=''
2109                         ;;
2110                 pc*)
2111                         if test -n "$DJGPP"; then
2112                                 osname=dos
2113                                 osvers=djgpp
2114                         fi
2115                         ;;
2116                 esac
2117
2118                 case "$1" in
2119                 aix) osname=aix
2120                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2121                         case "$tmp" in
2122                         'not found') osvers="$4"."$3" ;;
2123                         '<3240'|'<>3240') osvers=3.2.0 ;;
2124                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2125                         '=3250'|'>3250') osvers=3.2.5 ;;
2126                         *) osvers=$tmp;;
2127                         esac
2128                         ;;
2129                 *dc.osx) osname=dcosx
2130                         osvers="$3"
2131                         ;;
2132                 dnix) osname=dnix
2133                         osvers="$3"
2134                         ;;
2135                 domainos) osname=apollo
2136                         osvers="$3"
2137                         ;;
2138                 dgux) osname=dgux 
2139                         osvers="$3"
2140                         ;;
2141                 dynixptx*) osname=dynixptx
2142                         osvers=`echo "$4"|sed 's/^v//'`
2143                         ;;
2144                 freebsd) osname=freebsd 
2145                         osvers="$3" ;;
2146                 genix) osname=genix ;;
2147                 hp*) osname=hpux 
2148                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2149                         ;;
2150                 irix*) osname=irix
2151                         case "$3" in
2152                         4*) osvers=4 ;;
2153                         5*) osvers=5 ;;
2154                         *)      osvers="$3" ;;
2155                         esac
2156                         ;;
2157                 linux) osname=linux
2158                         case "$3" in
2159                         *)      osvers="$3" ;;
2160                         esac
2161                         ;;
2162                 MiNT) osname=mint
2163                         ;;
2164                 netbsd*) osname=netbsd
2165                         osvers="$3"
2166                         ;;
2167                 news-os) osvers="$3"
2168                         case "$3" in
2169                         4*) osname=newsos4 ;;
2170                         *) osname=newsos ;;
2171                         esac
2172                         ;;
2173                 bsd386) osname=bsd386
2174                         osvers=`$uname -r`
2175                         ;;
2176                 POSIX-BC | posix-bc ) osname=posix-bc
2177                         osvers="$3"
2178                         ;;
2179                 powerux | power_ux | powermax_os | powermaxos | \
2180                 powerunix | power_unix) osname=powerux
2181                         osvers="$3"
2182                         ;;
2183                 next*) osname=next ;;
2184                 solaris) osname=solaris
2185                         case "$3" in
2186                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2187                         *)      osvers="$3" ;;
2188                         esac
2189                         ;;
2190                 sunos) osname=sunos
2191                         case "$3" in
2192                         5*) osname=solaris
2193                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2194                         *)      osvers="$3" ;;
2195                         esac
2196                         ;;
2197                 titanos) osname=titanos
2198                         case "$3" in
2199                         1*) osvers=1 ;;
2200                         2*) osvers=2 ;;
2201                         3*) osvers=3 ;;
2202                         4*) osvers=4 ;;
2203                         *)      osvers="$3" ;;
2204                         esac
2205                         ;;
2206                 ultrix) osname=ultrix
2207                         osvers="$3"
2208                         ;;
2209                 osf1|mls+)      case "$5" in
2210                                 alpha)
2211                                         osname=dec_osf
2212                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2213                                         ;;
2214                         hp*)    osname=hp_osf1  ;;
2215                         mips)   osname=mips_osf1 ;;
2216                         esac
2217                         ;;
2218                 uts) osname=uts 
2219                         osvers="$3"
2220                         ;;
2221                 qnx) osname=qnx
2222                         osvers="$4"
2223                         ;;
2224                 $2) case "$osname" in
2225                         *isc*) ;;
2226                         *freebsd*) ;;
2227                         svr*)
2228                                 : svr4.x or possibly later
2229                                 case "svr$3" in 
2230                                 ${osname}*)
2231                                         osname=svr$3
2232                                         osvers=$4
2233                                         ;;
2234                                 esac
2235                                 case "$osname" in
2236                                 svr4.0)
2237                                         : Check for ESIX
2238                                         if test -f /stand/boot ; then
2239                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2240                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2241                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2242                                                         if test -n "$isesix"; then
2243                                                                 osname=esix4
2244                                                         fi
2245                                                 fi
2246                                         fi
2247                                         ;;
2248                                 esac
2249                                 ;;
2250                         *)      if test -f /etc/systemid; then
2251                                         osname=sco
2252                                         set `echo $3 | $sed 's/\./ /g'` $4
2253                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2254                                                 osvers=$1.$2.$3
2255                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2256                                                 osvers=$1.$2
2257                                         elif $test -f $src/hints/sco_$1.sh; then
2258                                                 osvers=$1
2259                                         fi
2260                                 else
2261                                         case "$osname" in
2262                                         '') : Still unknown.  Probably a generic Sys V.
2263                                                 osname="sysv"
2264                                                 osvers="$3"
2265                                                 ;;
2266                                         esac
2267                                 fi
2268                                 ;;
2269                         esac
2270                         ;;
2271                 *)      case "$osname" in
2272                         '') : Still unknown.  Probably a generic BSD.
2273                                 osname="$1"
2274                                 osvers="$3"
2275                                 ;;
2276                         esac
2277                         ;;
2278                 esac
2279         else
2280                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2281                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2282                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2283                                 osname=news_os
2284                         fi
2285                         $rm -f UU/kernel.what
2286                 elif test -d c:/.; then
2287                         set X $myuname
2288                         osname=os2
2289                         osvers="$5"
2290                 fi
2291         fi
2292         
2293         : Now look for a hint file osname_osvers, unless one has been
2294         : specified already.
2295         case "$hintfile" in
2296         ''|' ')
2297                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2298                 : Also try without trailing minor version numbers.
2299                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2300                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2301                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2302                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2303                 case "$file" in
2304                 '') dflt=none ;;
2305                 *)  case "$osvers" in
2306                         '') dflt=$file
2307                                 ;;
2308                         *)  if $test -f $src/hints/$file.sh ; then
2309                                         dflt=$file
2310                                 elif $test -f $src/hints/$xfile.sh ; then
2311                                         dflt=$xfile
2312                                 elif $test -f $src/hints/$xxfile.sh ; then
2313                                         dflt=$xxfile
2314                                 elif $test -f $src/hints/$xxxfile.sh ; then
2315                                         dflt=$xxxfile
2316                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2317                                         dflt=$xxxxfile
2318                                 elif $test -f "$src/hints/${osname}.sh" ; then
2319                                         dflt="${osname}"
2320                                 else
2321                                         dflt=none
2322                                 fi
2323                                 ;;
2324                         esac
2325                         ;;
2326                 esac
2327                 if $test -f Policy.sh ; then
2328                         case "$dflt" in
2329                         *Policy*) ;;
2330                         none) dflt="Policy" ;;
2331                         *) dflt="Policy $dflt" ;;
2332                         esac
2333                 fi
2334                 ;;
2335         *)
2336                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2337                 ;;
2338         esac
2339
2340         if $test -f Policy.sh ; then
2341                 $cat <<EOM
2342
2343 There's also a Policy hint file available, which should make the
2344 site-specific (policy) questions easier to answer.
2345 EOM
2346
2347         fi
2348
2349         $cat <<EOM
2350
2351 You may give one or more space-separated answers, or "none" if appropriate.
2352 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2353 is a good thing.  DO NOT give a wrong version.
2354
2355 EOM
2356
2357         rp="Which of these apply, if any?"
2358         . UU/myread
2359         tans=$ans
2360         for file in $tans; do
2361                 if $test X$file = XPolicy -a -f Policy.sh; then
2362                         . Policy.sh
2363                         $cat Policy.sh >> UU/config.sh
2364                 elif $test -f $src/hints/$file.sh; then
2365                         . $src/hints/$file.sh
2366                         $cat $src/hints/$file.sh >> UU/config.sh
2367                 elif $test X$tans = X -o X$tans = Xnone ; then
2368                         : nothing
2369                 else
2370                         : Give one chance to correct a possible typo.
2371                         echo "$file.sh does not exist"
2372                         dflt=$file
2373                         rp="hint to use instead?"
2374                         . UU/myread
2375                         for file in $ans; do
2376                                 if $test -f "$src/hints/$file.sh"; then
2377                                         . $src/hints/$file.sh
2378                                         $cat $src/hints/$file.sh >> UU/config.sh
2379                                 elif $test X$ans = X -o X$ans = Xnone ; then
2380                                         : nothing
2381                                 else
2382                                         echo "$file.sh does not exist -- ignored."
2383                                 fi
2384                         done
2385                 fi
2386         done
2387
2388         hint=recommended
2389         : Remember our hint file for later.
2390         if $test -f "$src/hints/$file.sh" ; then
2391                 hintfile="$file"
2392         else
2393                 hintfile=''
2394         fi
2395 fi
2396 cd UU
2397 ;;
2398 *)
2399         echo " "
2400         echo "Fetching default answers from $config_sh..." >&4
2401         tmp_n="$n"
2402         tmp_c="$c"
2403         cd ..
2404         cp $config_sh config.sh 2>/dev/null
2405         chmod +w config.sh
2406         . ./config.sh
2407         cd UU
2408         cp ../config.sh .
2409         n="$tmp_n"
2410         c="$tmp_c"
2411         hint=previous
2412         ;;
2413 esac
2414 test "$override" && . ./optdef.sh
2415 myuname="$newmyuname"
2416
2417 : Restore computed paths
2418 for file in $loclist $trylist; do
2419         eval $file="\$_$file"
2420 done
2421
2422 cat << EOM
2423
2424 Configure uses the operating system name and version to set some defaults.
2425 The default value is probably right if the name rings a bell. Otherwise,
2426 since spelling matters for me, either accept the default or answer "none"
2427 to leave it blank.
2428
2429 EOM
2430 case "$osname" in
2431         ''|' ')
2432                 case "$hintfile" in
2433                 ''|' '|none) dflt=none ;;
2434                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2435                 esac
2436                 ;;
2437         *) dflt="$osname" ;;
2438 esac
2439 rp="Operating system name?"
2440 . ./myread
2441 case "$ans" in
2442 none)  osname='' ;;
2443 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2444 esac
2445 echo " "
2446 case "$osvers" in
2447         ''|' ')
2448                 case "$hintfile" in
2449                 ''|' '|none) dflt=none ;;
2450                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2451                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2452                         case "$dflt" in
2453                         ''|' ') dflt=none ;;
2454                         esac
2455                         ;;
2456                 esac
2457                 ;;
2458         *) dflt="$osvers" ;;
2459 esac
2460 rp="Operating system version?"
2461 . ./myread
2462 case "$ans" in
2463 none)  osvers='' ;;
2464 *) osvers="$ans" ;;
2465 esac
2466
2467 : who configured the system
2468 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2469 cf_by=`(logname) 2>/dev/null`
2470 case "$cf_by" in
2471 "")
2472         cf_by=`(whoami) 2>/dev/null`
2473         case "$cf_by" in
2474         "") cf_by=unknown ;;
2475         esac ;;
2476 esac
2477
2478 : set up the script used to warn in case of inconsistency
2479 cat <<EOS >whoa
2480 $startsh
2481 EOS
2482 cat <<'EOSC' >>whoa
2483 dflt=y
2484 echo " "
2485 echo "*** WHOA THERE!!! ***" >&4
2486 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2487 rp="    Keep the $hint value?"
2488 . ./myread
2489 case "$ans" in
2490 y) td=$was; tu=$was;;
2491 esac
2492 EOSC
2493
2494 : function used to set $1 to $val
2495 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2496 case "$val$was" in
2497 $define$undef) . ./whoa; eval "$var=\$td";;
2498 $undef$define) . ./whoa; eval "$var=\$tu";;
2499 *) eval "$var=$val";;
2500 esac'
2501
2502 cat <<EOM
2503
2504 Perl can be built to take advantage of threads, on some systems.
2505 To do so, Configure must be run with -Dusethreads.
2506
2507 Note that threading is a highly experimental feature, and
2508 some known race conditions still remain.  If you choose to try
2509 it, be very sure to not actually deploy it for production
2510 purposes.  README.threads has more details, and is required
2511 reading if you enable threads.
2512 EOM
2513 case "$usethreads" in
2514 $define|true|[yY]*)     dflt='y';;
2515 *) dflt='n';;
2516 esac
2517 rp='Build a threading Perl?'
2518 . ./myread
2519 case "$ans" in
2520 y|Y)    val="$define" ;;     
2521 *)      val="$undef" ;;
2522 esac
2523 set usethreads
2524 eval $setvar 
2525
2526 case "$d_oldpthreads" in
2527 '')     : Configure tests would be welcome here.  For now, assume undef.
2528         val="$undef" ;;
2529 *)      val="$d_oldpthreads" ;;
2530 esac
2531 set d_oldpthreads
2532 eval $setvar
2533
2534
2535 case "$usethreads" in
2536 "$define"|true|[yY]*)
2537 : Look for a hint-file generated 'call-back-unit'.  If the
2538 : user has specified that a threading perl is to be built,
2539 : we may need to set or change some other defaults.
2540         if $test -f usethreads.cbu; then
2541                 . ./usethreads.cbu
2542         fi
2543         case "$osname" in
2544         aix|dec_osf|dos_djgpp|freebsd|hpux|irix|linux|next|openbsd|os2|solaris|vmesa)
2545                 # Known thread-capable platforms.
2546                 ;;
2547         *)
2548                 cat >&4 <<EOM
2549 $osname is not known to support threads.
2550 Please let perlbug@perl.com know how to do that.
2551
2552 Cannot continue, aborting.
2553 EOM
2554                 exit 1
2555         ;;
2556         esac # $osname
2557     ;;
2558 esac # $usethreads
2559
2560 cat <<EOM
2561
2562 Perl can be built so that multiple Perl interpreters can coexist
2563 within the same Perl executable.  To do so, Configure must be run with
2564 -Dusemultiplicity.
2565
2566 Normally you do not need this and you should answer no.
2567
2568 EOM
2569 case "$usemultiplicity" in
2570 $define|true|[yY]*)     dflt='y';;
2571 *) dflt='n';;
2572 esac
2573 rp='Build Perl for multiplicity?'
2574 . ./myread
2575 case "$ans" in
2576 y|Y)    val="$define" ;;     
2577 *)      val="$undef" ;;
2578 esac
2579 set usemultiplicity
2580 eval $setvar 
2581
2582 cat <<EOM
2583
2584 Perl can be built to take advantage of explicit 64-bit interfaces,
2585 on some systems.  To do so, Configure must be run with -Duse64bits.
2586
2587 If this doesn't make any sense to you, just accept the default 'n'.
2588 EOM
2589 case "$use64bits" in
2590 $define|true|[yY]*)     dflt='y';;
2591 *) dflt='n';;
2592 esac
2593 rp='Try to use explicit 64-bit interfaces, if available?'
2594 . ./myread
2595 case "$ans" in
2596 y|Y) 
2597         val="$define"
2598         ;;     
2599 *)      
2600         val="$undef"
2601         ;;
2602 esac
2603 set use64bits
2604 eval $setvar
2605
2606 case "$archname64" in
2607 '') archname64='' ;;    # not a typo
2608 esac
2609
2610 case "$use64bits" in
2611 "$define"|true|[yY]*)
2612 : Look for a hint-file generated 'call-back-unit'.  If the
2613 : user has specified that a threading perl is to be built,
2614 : we may need to set or change some other defaults.
2615         if $test -f use64bits.cbu; then
2616                 . ./use64bits.cbu
2617         fi
2618         case "$osname" in
2619         dec_osf|hpux|irix|solaris|unicos)
2620                 # Known 64-bit capable platforms.
2621                 ;;
2622         *)
2623                 cat >&4 <<EOM
2624 $osname is not known to support 64-bit interfaces.
2625 Please let perlbug@perl.com know how to do that.
2626
2627 Cannot continue, aborting.
2628 EOM
2629                 exit 1
2630                 ;;
2631         esac
2632         ;;
2633 esac
2634
2635 : determine the architecture name
2636 echo " "
2637 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2638         tarch=`arch`"-$osname"
2639 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2640         if uname -m > tmparch 2>&1 ; then
2641                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2642                         -e 's/$/'"-$osname/" tmparch`
2643         else
2644                 tarch="$osname"
2645         fi
2646         $rm -f tmparch
2647 else
2648         tarch="$osname"
2649 fi
2650 case "$myarchname" in
2651 ''|"$tarch") ;;
2652 *)
2653         echo "(Your architecture name used to be $myarchname.)"
2654         archname=''
2655         ;;
2656 esac
2657 myarchname="$tarch"
2658 case "$archname" in
2659 '') dflt="$tarch";;
2660 *) dflt="$archname";;
2661 esac
2662 rp='What is your architecture name'
2663 . ./myread
2664 archname="$ans"
2665 case "$usethreads" in
2666 $define)
2667         echo "Threads selected." >&4
2668         case "$archname" in
2669         *-thread*) echo "...and architecture name already has -thread." >&4
2670                 ;;
2671         *)      archname="$archname-thread"
2672                 echo "...setting architecture name to $archname." >&4
2673                 ;;
2674         esac
2675         ;;
2676 esac
2677 case "$usemultiplicity" in
2678 $define)
2679         echo "Multiplicity selected." >&4
2680         case "$archname" in
2681         *-multi*) echo "...and architecture name already has -multi." >&4
2682                 ;;
2683         *)      archname="$archname-multi"
2684                 echo "...setting architecture name to $archname." >&4
2685                 ;;
2686         esac
2687         ;;
2688 esac
2689 case "$use64bits" in
2690 $define)
2691         echo "Explicit 64-bitness selected." >&4
2692         case "$archname64" in
2693         '')
2694                 ;;
2695         *)
2696                 case "$archname" in
2697                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2698                         ;;
2699                 *)      archname="$archname-$archname64"
2700                         echo "...setting architecture name to $archname." >&4
2701                         ;;
2702                 esac
2703                 ;;
2704         esac
2705 esac
2706
2707 : is AFS running?
2708 echo " "
2709 case "$afs" in
2710 $define|true)   afs=true ;;
2711 $undef|false)   afs=false ;;
2712 *)      if test -d /afs; then
2713                 afs=true
2714         else
2715                 afs=false
2716         fi
2717         ;;
2718 esac
2719 if $afs; then
2720         echo "AFS may be running... I'll be extra cautious then..." >&4
2721 else
2722         echo "AFS does not seem to be running..." >&4
2723 fi
2724
2725 : decide how portable to be.  Allow command line overrides.
2726 case "$d_portable" in
2727 "$undef") ;;
2728 *)      d_portable="$define" ;;
2729 esac
2730
2731 : set up shell script to do ~ expansion
2732 cat >filexp <<EOSS
2733 $startsh
2734 : expand filename
2735 case "\$1" in
2736  ~/*|~)
2737         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2738         ;;
2739  ~*)
2740         if $test -f /bin/csh; then
2741                 /bin/csh -f -c "glob \$1"
2742                 failed=\$?
2743                 echo ""
2744                 exit \$failed
2745         else
2746                 name=\`$expr x\$1 : '..\([^/]*\)'\`
2747                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2748                 if $test ! -d "\$dir"; then
2749                         me=\`basename \$0\`
2750                         echo "\$me: can't locate home directory for: \$name" >&2
2751                         exit 1
2752                 fi
2753                 case "\$1" in
2754                 */*)
2755                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2756                         ;;
2757                 *)
2758                         echo \$dir
2759                         ;;
2760                 esac
2761         fi
2762         ;;
2763 *)
2764         echo \$1
2765         ;;
2766 esac
2767 EOSS
2768 chmod +x filexp
2769 $eunicefix filexp
2770
2771 : now set up to get a file name
2772 cat <<EOS >getfile
2773 $startsh
2774 EOS
2775 cat <<'EOSC' >>getfile
2776 tilde=''
2777 fullpath=''
2778 already=''
2779 skip=''
2780 none_ok=''
2781 exp_file=''
2782 nopath_ok=''
2783 orig_rp="$rp"
2784 orig_dflt="$dflt"
2785
2786 case "$fn" in
2787 *\(*)
2788         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
2789         fn=`echo $fn | sed 's/(.*)//'`
2790         ;;
2791 esac
2792
2793 case "$fn" in
2794 *:*)
2795         loc_file=`expr $fn : '.*:\(.*\)'`
2796         fn=`expr $fn : '\(.*\):.*'`
2797         ;;
2798 esac
2799
2800 case "$fn" in
2801 *~*) tilde=true;;
2802 esac
2803 case "$fn" in
2804 */*) fullpath=true;;
2805 esac
2806 case "$fn" in
2807 *+*) skip=true;;
2808 esac
2809 case "$fn" in
2810 *n*) none_ok=true;;
2811 esac
2812 case "$fn" in
2813 *e*) exp_file=true;;
2814 esac
2815 case "$fn" in
2816 *p*) nopath_ok=true;;
2817 esac
2818
2819 case "$fn" in
2820 *f*) type='File';;
2821 *d*) type='Directory';;
2822 *l*) type='Locate';;
2823 esac
2824
2825 what="$type"
2826 case "$what" in
2827 Locate) what='File';;
2828 esac
2829
2830 case "$exp_file" in
2831 '')
2832         case "$d_portable" in
2833         "$define") ;;
2834         *) exp_file=true;;
2835         esac
2836         ;;
2837 esac
2838
2839 cd ..
2840 while test "$type"; do
2841         redo=''
2842         rp="$orig_rp"
2843         dflt="$orig_dflt"
2844         case "$tilde" in
2845         true) rp="$rp (~name ok)";;
2846         esac
2847         . UU/myread
2848         if test -f UU/getfile.ok && \
2849                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2850         then
2851                 value="$ans"
2852                 ansexp="$ans"
2853                 break
2854         fi
2855         case "$ans" in
2856         none)
2857                 value=''
2858                 ansexp=''
2859                 case "$none_ok" in
2860                 true) type='';;
2861                 esac
2862                 ;;
2863         *)
2864                 case "$tilde" in
2865                 '') value="$ans"
2866                         ansexp="$ans";;
2867                 *)
2868                         value=`UU/filexp $ans`
2869                         case $? in
2870                         0)
2871                                 if test "$ans" != "$value"; then
2872                                         echo "(That expands to $value on this system.)"
2873                                 fi
2874                                 ;;
2875                         *) value="$ans";;
2876                         esac
2877                         ansexp="$value"
2878                         case "$exp_file" in
2879                         '') value="$ans";;
2880                         esac
2881                         ;;
2882                 esac
2883                 case "$fullpath" in
2884                 true)
2885                         case "$ansexp" in
2886                         /*) value="$ansexp" ;;
2887                         *)
2888                                 redo=true
2889                                 case "$already" in
2890                                 true)
2891                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
2892                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
2893                                         ;;
2894                                 *)
2895                                 echo "Please give a full path name, starting with slash." >&4
2896                                         case "$tilde" in
2897                                         true)
2898                                 echo "Note that using ~name is ok provided it expands well." >&4
2899                                                 already=true
2900                                                 ;;
2901                                         esac
2902                                 esac
2903                                 ;;
2904                         esac
2905                         ;;
2906                 esac
2907                 case "$redo" in
2908                 '')
2909                         case "$type" in
2910                         File)
2911                                 if test -f "$ansexp"; then
2912                                         type=''
2913                                 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2914                                 then
2915                                         echo "($value is not a plain file, but that's ok.)"
2916                                         type=''
2917                                 fi
2918                                 ;;
2919                         Directory)
2920                                 if test -d "$ansexp"; then
2921                                         type=''
2922                                 fi
2923                                 ;;
2924                         Locate)
2925                                 if test -d "$ansexp"; then
2926                                         echo "(Looking for $loc_file in directory $value.)"
2927                                         value="$value/$loc_file"
2928                                         ansexp="$ansexp/$loc_file"
2929                                 fi
2930                                 if test -f "$ansexp"; then
2931                                         type=''
2932                                 fi
2933                                 case "$nopath_ok" in
2934                                 true)   case "$value" in
2935                                         */*) ;;
2936                                         *)      echo "Assuming $value will be in people's path."
2937                                                 type=''
2938                                                 ;;
2939                                         esac
2940                                         ;;
2941                                 esac
2942                                 ;;
2943                         esac
2944
2945                         case "$skip" in
2946                         true) type='';
2947                         esac
2948
2949                         case "$type" in
2950                         '') ;;
2951                         *)
2952                                 if test "$fastread" = yes; then
2953                                         dflt=y
2954                                 else
2955                                         dflt=n
2956                                 fi
2957                                 rp="$what $value doesn't exist.  Use that name anyway?"
2958                                 . UU/myread
2959                                 dflt=''
2960                                 case "$ans" in
2961                                 y*) type='';;
2962                                 *) echo " ";;
2963                                 esac
2964                                 ;;
2965                         esac
2966                         ;;
2967                 esac
2968                 ;;
2969         esac
2970 done
2971 cd UU
2972 ans="$value"
2973 rp="$orig_rp"
2974 dflt="$orig_dflt"
2975 rm -f getfile.ok
2976 EOSC
2977
2978 : determine root of directory hierarchy where package will be installed.
2979 case "$prefix" in
2980 '')
2981         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2982         ;;
2983 *)
2984         dflt="$prefix"
2985         ;;
2986 esac
2987 $cat <<EOM
2988
2989 By default, $package will be installed in $dflt/bin, manual
2990 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2991 all installation directories. Typically set to /usr/local, but you
2992 may choose /usr if you wish to install $package among your system
2993 binaries. If you wish to have binaries under /bin but manual pages
2994 under /usr/local/man, that's ok: you will be prompted separately
2995 for each of the installation directories, the prefix being only used
2996 to set the defaults.
2997
2998 EOM
2999 fn=d~
3000 rp='Installation prefix to use?'
3001 . ./getfile
3002 oldprefix=''
3003 case "$prefix" in
3004 '') ;;
3005 *)
3006         case "$ans" in
3007         "$prefix") ;;
3008         *) oldprefix="$prefix";;
3009         esac
3010         ;;
3011 esac
3012 prefix="$ans"
3013 prefixexp="$ansexp"
3014
3015 : set the prefixit variable, to compute a suitable default value
3016 prefixit='case "$3" in
3017 ""|none)
3018         case "$oldprefix" in
3019         "") eval "$1=\"\$$2\"";;
3020         *)
3021                 case "$3" in
3022                 "") eval "$1=";;
3023                 none)
3024                         eval "tp=\"\$$2\"";
3025                         case "$tp" in
3026                         ""|" ") eval "$1=\"\$$2\"";;
3027                         *) eval "$1=";;
3028                         esac;;
3029                 esac;;
3030         esac;;
3031 *)
3032         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
3033         case "$tp" in
3034         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
3035         /*-$oldprefix/*|\~*-$oldprefix/*)
3036                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3037         *) eval "$1=\"\$$2\"";;
3038         esac;;
3039 esac'
3040
3041 : set the base revision
3042 baserev=5.0
3043
3044 : get the patchlevel
3045 echo " "
3046 echo "Getting the current patchlevel..." >&4
3047 if $test -r $rsrc/patchlevel.h;then
3048         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
3049         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3050 else
3051         patchlevel=0
3052         subversion=0
3053 fi
3054 $echo $n "(You have $package" $c
3055 case "$package" in
3056 "*$baserev")    ;;
3057 *)              $echo $n " $baserev" $c ;;
3058 esac
3059 $echo $n " patchlevel $patchlevel" $c
3060 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3061 echo ".)"
3062
3063 if test 0 -eq "$subversion"; then
3064         version=`LC_ALL=C; export LC_ALL; \
3065                  echo $baserev $patchlevel | \
3066                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3067 else
3068         version=`LC_ALL=C; export LC_ALL; \
3069                  echo $baserev $patchlevel $subversion | \
3070                  $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3071 fi
3072 : Figure out perl API version.  Perhaps this should be in patchlevel.h
3073 if test "$subversion" -lt 50; then
3074         apiversion=`LC_ALL=C; export LC_ALL; \
3075                  LANGUAGE=C; export LANGUAGE; \
3076                  echo $baserev $patchlevel | \
3077                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3078 else
3079         apiversion="$version"
3080 fi
3081
3082 : determine where private library files go
3083 : Usual default is /usr/local/lib/perl5/$version.
3084 : Also allow things like /opt/perl/lib/$version, since 
3085 : /opt/perl/lib/perl5... would be redundant.
3086 case "$prefix" in
3087 *perl*) set dflt privlib lib/$version ;;
3088 *)       set dflt privlib lib/$package/$version ;;
3089 esac
3090 eval $prefixit
3091 $cat <<EOM
3092
3093 There are some auxiliary files for $package that need to be put into a
3094 private library directory that is accessible by everyone.
3095
3096 EOM
3097 fn=d~+
3098 rp='Pathname where the private library files will reside?'
3099 . ./getfile
3100 if $test "X$privlibexp" != "X$ansexp"; then
3101         installprivlib=''
3102 fi
3103 privlib="$ans"
3104 privlibexp="$ansexp"
3105 if $afs; then
3106         $cat <<EOM
3107
3108 Since you are running AFS, I need to distinguish the directory in which
3109 private files reside from the directory in which they are installed (and from
3110 which they are presumably copied to the former directory by occult means).
3111
3112 EOM
3113         case "$installprivlib" in
3114         '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3115         *) dflt="$installprivlib";;
3116         esac
3117         fn=de~
3118         rp='Where will private files be installed?'
3119         . ./getfile
3120         installprivlib="$ans"
3121 else
3122         installprivlib="$privlibexp"
3123 fi
3124
3125 : set the prefixup variable, to restore leading tilda escape
3126 prefixup='case "$prefixexp" in
3127 "$prefix") ;;
3128 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3129 esac'
3130
3131 : determine where public architecture dependent libraries go
3132 set archlib archlib
3133 eval $prefixit
3134 : privlib default is /usr/local/lib/$package/$version
3135 : archlib default is /usr/local/lib/$package/$version/$archname
3136 : privlib may have an optional trailing /share.
3137 tdflt=`echo $privlib | $sed 's,/share$,,'`
3138 tdflt=$tdflt/$archname
3139 case "$archlib" in
3140 '')     dflt=$tdflt
3141         ;;
3142 *)      dflt="$archlib"
3143     ;;
3144 esac
3145 cat <<EOM
3146
3147 $spackage contains architecture-dependent library files.  If you are
3148 sharing libraries in a heterogeneous environment, you might store
3149 these files in a separate location.  Otherwise, you can just include
3150 them with the rest of the public library files.
3151
3152 EOM
3153 fn=d+~
3154 rp='Where do you want to put the public architecture-dependent libraries?'
3155 . ./getfile
3156 archlib="$ans"
3157 archlibexp="$ansexp"
3158
3159 if $afs; then
3160         $cat <<EOM
3161
3162 Since you are running AFS, I need to distinguish the directory in
3163 which architecture-dependent library files reside from the directory
3164 in which they are installed (and from which they are presumably copied
3165 to the former directory by occult means).
3166
3167 EOM
3168         case "$installarchlib" in
3169         '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3170         *) dflt="$installarchlib";;
3171         esac
3172         fn=de~
3173         rp='Where will architecture-dependent library files be installed?'
3174         . ./getfile
3175         installarchlib="$ans"
3176 else
3177         installarchlib="$archlibexp"
3178 fi
3179 if $test X"$archlib" = X"$privlib"; then
3180         d_archlib="$undef"
3181 else
3182         d_archlib="$define"
3183 fi
3184
3185 : make some quick guesses about what we are up against
3186 echo " "
3187 $echo $n "Hmm...  $c"
3188 echo exit 1 >bsd
3189 echo exit 1 >usg
3190 echo exit 1 >v7
3191 echo exit 1 >osf1
3192 echo exit 1 >eunice
3193 echo exit 1 >xenix
3194 echo exit 1 >venix
3195 echo exit 1 >os2
3196 d_bsd="$undef"
3197 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3198 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3199 then
3200         echo "Looks kind of like an OSF/1 system, but we'll see..."
3201         echo exit 0 >osf1
3202 elif test `echo abc | tr a-z A-Z` = Abc ; then
3203         xxx=`./loc addbib blurfl $pth`
3204         if $test -f $xxx; then
3205         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3206                 echo exit 0 >bsd
3207                 echo exit 0 >usg
3208         else
3209                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3210                         echo "Looks kind of like an extended USG system, but we'll see..."
3211                 else
3212                         echo "Looks kind of like a USG system, but we'll see..."
3213                 fi
3214                 echo exit 0 >usg
3215         fi
3216 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3217         echo "Looks kind of like a BSD system, but we'll see..."
3218         d_bsd="$define"
3219         echo exit 0 >bsd
3220 else
3221         echo "Looks kind of like a Version 7 system, but we'll see..."
3222         echo exit 0 >v7
3223 fi
3224 case "$eunicefix" in
3225 *unixtovms*)
3226         $cat <<'EOI'
3227 There is, however, a strange, musty smell in the air that reminds me of
3228 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3229 EOI
3230         echo exit 0 >eunice
3231         d_eunice="$define"
3232 : it so happens the Eunice I know will not run shell scripts in Unix format
3233         ;;
3234 *)
3235         echo " "
3236         echo "Congratulations.  You aren't running Eunice."
3237         d_eunice="$undef"
3238         ;;
3239 esac
3240 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3241 case "$p_" in
3242 :) ;;
3243 *)
3244         $cat <<'EOI'
3245 I have the feeling something is not exactly right, however...don't tell me...
3246 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3247 EOI
3248         echo exit 0 >os2
3249         ;;
3250 esac
3251 if test -f /xenix; then
3252         echo "Actually, this looks more like a XENIX system..."
3253         echo exit 0 >xenix
3254         d_xenix="$define"
3255 else
3256         echo " "
3257         echo "It's not Xenix..."
3258         d_xenix="$undef"
3259 fi
3260 chmod +x xenix
3261 $eunicefix xenix
3262 if test -f /venix; then
3263         echo "Actually, this looks more like a VENIX system..."
3264         echo exit 0 >venix
3265 else
3266         echo " "
3267         if ./xenix; then
3268                 : null
3269         else
3270                 echo "Nor is it Venix..."
3271         fi
3272 fi
3273 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3274 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3275 $rm -f foo
3276
3277 : see if setuid scripts can be secure
3278 $cat <<EOM
3279
3280 Some kernels have a bug that prevents setuid #! scripts from being
3281 secure.  Some sites have disabled setuid #! scripts because of this.
3282
3283 First let's decide if your kernel supports secure setuid #! scripts.
3284 (If setuid #! scripts would be secure but have been disabled anyway,
3285 don't say that they are secure if asked.)
3286
3287 EOM
3288
3289 val="$undef"
3290 if $test -d /dev/fd; then
3291         echo "#!$ls" >reflect
3292         chmod +x,u+s reflect
3293         ./reflect >flect 2>&1
3294         if $contains "/dev/fd" flect >/dev/null; then
3295                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3296                 val="$define"
3297         else
3298                 $cat <<EOM
3299 If you are not sure if they are secure, I can check but I'll need a
3300 username and password different from the one you are using right now.
3301 If you don't have such a username or don't want me to test, simply
3302 enter 'none'.
3303
3304 EOM
3305                 rp='Other username to test security of setuid scripts with?'
3306                 dflt='none'
3307                 . ./myread
3308                 case "$ans" in
3309                 n|none)
3310                         case "$d_suidsafe" in
3311                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
3312                                 dflt=n;;
3313                         "$undef")
3314                                 echo "Well, the $hint value is *not* secure." >&4
3315                                 dflt=n;;
3316                         *)      echo "Well, the $hint value *is* secure." >&4
3317                                 dflt=y;;
3318                         esac
3319                         ;;
3320                 *)
3321                         $rm -f reflect flect
3322                         echo "#!$ls" >reflect
3323                         chmod +x,u+s reflect
3324                         echo >flect
3325                         chmod a+w flect
3326                         echo '"su" will (probably) prompt you for '"$ans's password."
3327                         su $ans -c './reflect >flect'
3328                         if $contains "/dev/fd" flect >/dev/null; then
3329                                 echo "Okay, it looks like setuid scripts are secure." >&4
3330                                 dflt=y
3331                         else
3332                                 echo "I don't think setuid scripts are secure." >&4
3333                                 dflt=n
3334                         fi
3335                         ;;
3336                 esac
3337                 rp='Does your kernel have *secure* setuid scripts?'
3338                 . ./myread
3339                 case "$ans" in
3340                 [yY]*)  val="$define";;
3341                 *)      val="$undef";;
3342                 esac
3343         fi
3344 else
3345         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3346         echo "(That's for file descriptors, not floppy disks.)"
3347         val="$undef"
3348 fi
3349 set d_suidsafe
3350 eval $setvar
3351
3352 $rm -f reflect flect
3353
3354 : now see if they want to do setuid emulation
3355 echo " "
3356 val="$undef"
3357 case "$d_suidsafe" in
3358 "$define")
3359         val="$undef"
3360         echo "No need to emulate SUID scripts since they are secure here." >& 4
3361         ;;
3362 *)
3363         $cat <<EOM
3364 Some systems have disabled setuid scripts, especially systems where
3365 setuid scripts cannot be secure.  On systems where setuid scripts have
3366 been disabled, the setuid/setgid bits on scripts are currently
3367 useless.  It is possible for $package to detect those bits and emulate
3368 setuid/setgid in a secure fashion.  This emulation will only work if
3369 setuid scripts have been disabled in your kernel.
3370
3371 EOM
3372         case "$d_dosuid" in
3373         "$define") dflt=y ;;
3374         *) dflt=n ;;
3375         esac
3376         rp="Do you want to do setuid/setgid emulation?"
3377         . ./myread
3378         case "$ans" in
3379         [yY]*)  val="$define";;
3380         *)      val="$undef";;
3381         esac
3382         ;;
3383 esac
3384 set d_dosuid
3385 eval $setvar
3386
3387 : determine where manual pages are on this system
3388 echo " "
3389 case "$sysman" in
3390 '') 
3391         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3392         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3393         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3394         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3395         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3396         sysman=`./loc . /usr/man/man1 $syspath`
3397         ;;
3398 esac
3399 if $test -d "$sysman"; then
3400         echo "System manual is in $sysman." >&4
3401 else
3402         echo "Could not find manual pages in source form." >&4
3403 fi
3404
3405 : see what memory models we can support
3406 case "$models" in
3407 '')
3408         $cat >pdp11.c <<'EOP'
3409 int main() {
3410 #ifdef pdp11
3411         exit(0);
3412 #else
3413         exit(1);
3414 #endif
3415 }
3416 EOP
3417         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3418         if $test -f pdp11 && ./pdp11 2>/dev/null; then
3419                 dflt='unsplit split'
3420         else
3421                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3422                 case "$tans" in
3423                 X) dflt='none';;
3424                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3425                                 dflt='small'
3426                         else
3427                                 dflt=''
3428                         fi
3429                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
3430                                 dflt="$dflt medium"
3431                         fi
3432                         if $test -d /lib/large || $test -d /usr/lib/large; then
3433                                 dflt="$dflt large"
3434                         fi
3435                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
3436                                 dflt="$dflt huge"
3437                         fi
3438                 esac
3439         fi;;
3440 *) dflt="$models";;
3441 esac
3442 $cat <<EOM
3443  
3444 Some systems have different model sizes.  On most systems they are called
3445 small, medium, large, and huge.  On the PDP11 they are called unsplit and
3446 split.  If your system doesn't support different memory models, say "none".
3447 If you wish to force everything to one memory model, say "none" here and
3448 put the appropriate flags later when it asks you for other cc and ld flags.
3449 Venix systems may wish to put "none" and let the compiler figure things out.
3450 (In the following question multiple model names should be space separated.)
3451
3452 The default for most systems is "none".
3453
3454 EOM
3455 rp="Which memory models are supported?"
3456 . ./myread
3457 models="$ans"
3458
3459 case "$models" in
3460 none)
3461         small=''
3462         medium=''
3463         large=''
3464         huge=''
3465         unsplit=''
3466         split=''
3467         ;;
3468 *split)
3469         case "$split" in
3470         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3471                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3472                         dflt='-i'
3473                 else
3474                         dflt='none'
3475                 fi;;
3476         *) dflt="$split";;
3477         esac
3478         rp="What flag indicates separate I and D space?"
3479         . ./myread
3480         tans="$ans"
3481         case "$tans" in
3482         none) tans='';;
3483         esac
3484         split="$tans"
3485         unsplit='';;
3486 *large*|*small*|*medium*|*huge*)
3487         case "$models" in
3488         *large*)
3489                 case "$large" in
3490                 '') dflt='-Ml';;
3491                 *) dflt="$large";;
3492                 esac
3493         rp="What flag indicates large model?"
3494         . ./myread
3495         tans="$ans"
3496         case "$tans" in
3497         none) tans='';
3498         esac
3499         large="$tans";;
3500         *) large='';;
3501         esac
3502         case "$models" in
3503         *huge*) case "$huge" in
3504                 '') dflt='-Mh';;
3505                 *) dflt="$huge";;
3506                 esac
3507                 rp="What flag indicates huge model?"
3508                 . ./myread
3509                 tans="$ans"
3510                 case "$tans" in
3511                 none) tans='';
3512                 esac
3513                 huge="$tans";;
3514         *) huge="$large";;
3515         esac
3516         case "$models" in
3517         *medium*) case "$medium" in
3518                 '') dflt='-Mm';;
3519                 *) dflt="$medium";;
3520                 esac
3521                 rp="What flag indicates medium model?"
3522                 . ./myread
3523                 tans="$ans"
3524                 case "$tans" in
3525                 none) tans='';
3526                 esac
3527                 medium="$tans";;
3528         *) medium="$large";;
3529         esac
3530         case "$models" in
3531         *small*) case "$small" in
3532                 '') dflt='none';;
3533                 *) dflt="$small";;
3534                 esac
3535                 rp="What flag indicates small model?"
3536                 . ./myread
3537                 tans="$ans"
3538                 case "$tans" in
3539                 none) tans='';
3540                 esac
3541                 small="$tans";;
3542         *) small='';;
3543         esac
3544         ;;
3545 *)
3546         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3547         ;;
3548 esac
3549 $rm -f pdp11.* pdp11
3550
3551 : see if we need a special compiler
3552 echo " "
3553 if ./usg; then
3554         case "$cc" in
3555         '') case "$Mcc" in
3556                 /*) dflt='Mcc';;
3557                 *) case "$large" in
3558                         -M*) dflt='cc';;
3559                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3560                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3561                                                 dflt='cc'
3562                                         else
3563                                                 dflt='cc -M'
3564                                         fi
3565                                 else
3566                                         dflt='cc'
3567                                 fi;;
3568                         esac;;
3569                 esac;;
3570         *)  dflt="$cc";;
3571         esac
3572         case "$dflt" in
3573         *M*)    $cat <<'EOM'
3574 On some older systems the default C compiler will not resolve multiple global
3575 references that happen to have the same name.  On some such systems the "Mcc"
3576 command may be used to force these to be resolved.  On other systems a "cc -M"
3577 command is required.  (Note that the -M flag on other systems indicates a
3578 memory model to use!) If you have the Gnu C compiler, you might wish to use
3579 that instead.
3580
3581 EOM
3582         ;;
3583         esac
3584         rp="Use which C compiler?"
3585         . ./myread
3586         cc="$ans"
3587 else
3588         case "$cc" in
3589         '') dflt=cc;;
3590         *) dflt="$cc";;
3591         esac
3592         rp="Use which C compiler?"
3593         . ./myread
3594         cc="$ans"
3595 fi
3596 : Look for a hint-file generated 'call-back-unit'.  Now that the
3597 : user has specified the compiler, we may need to set or change some
3598 : other defaults.
3599 if $test -f cc.cbu; then
3600     . ./cc.cbu
3601 fi
3602 echo " "
3603 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3604 $cat >gccvers.c <<EOM
3605 #include <stdio.h>
3606 int main() {
3607 #ifdef __GNUC__
3608 #ifdef __VERSION__
3609         printf("%s\n", __VERSION__);
3610 #else
3611         printf("%s\n", "1");
3612 #endif
3613 #endif
3614         exit(0);
3615 }
3616 EOM
3617 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3618         gccversion=`./gccvers`
3619         case "$gccversion" in
3620         '') echo "You are not using GNU cc." ;;
3621         *)  echo "You are using GNU cc $gccversion." ;;
3622         esac
3623 else
3624         echo " "
3625         echo "*** WHOA THERE!!! ***" >&4
3626         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3627         case "$knowitall" in
3628         '')
3629         echo "    You'd better start hunting for one and let me know about it." >&4
3630                 exit 1
3631                 ;;
3632         esac
3633 fi
3634 $rm -f gccvers*
3635 case "$gccversion" in
3636 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3637 esac
3638
3639 : What should the include directory be ?
3640 echo " "
3641 $echo $n "Hmm...  $c"
3642 dflt='/usr/include'
3643 incpath=''
3644 mips_type=''
3645 if $test -f /bin/mips && /bin/mips; then
3646         echo "Looks like a MIPS system..."
3647         $cat >usr.c <<'EOCP'
3648 #ifdef SYSTYPE_BSD43
3649 /bsd43
3650 #endif
3651 EOCP
3652         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3653                 dflt='/bsd43/usr/include'
3654                 incpath='/bsd43'
3655                 mips_type='BSD 4.3'
3656         else
3657                 mips_type='System V'
3658         fi
3659         $rm -f usr.c usr.out
3660         echo "and you're compiling with the $mips_type compiler and libraries."
3661         xxx_prompt=y
3662         echo "exit 0" >mips
3663 else
3664         echo "Doesn't look like a MIPS system."
3665         xxx_prompt=n
3666         echo "exit 1" >mips
3667 fi
3668 chmod +x mips
3669 $eunicefix mips
3670 case "$usrinc" in
3671 '') ;;
3672 *) dflt="$usrinc";;
3673 esac
3674 case "$xxx_prompt" in
3675 y)      fn=d/
3676         echo " "
3677         rp='Where are the include files you want to use?'
3678         . ./getfile
3679         usrinc="$ans"
3680         ;;
3681 *)      usrinc="$dflt"
3682         ;;
3683 esac
3684
3685 : see how we invoke the C preprocessor
3686 echo " "
3687 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3688 cat <<'EOT' >testcpp.c
3689 #define ABC abc
3690 #define XYZ xyz
3691 ABC.XYZ
3692 EOT
3693 cd ..
3694 if test ! -f cppstdin; then
3695         echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3696 else
3697         echo "Keeping your $hint cppstdin wrapper."
3698 fi
3699 chmod 755 cppstdin
3700 wrapper=`pwd`/cppstdin
3701 ok='false'
3702 cd UU
3703
3704 if $test "X$cppstdin" != "X" && \
3705         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3706         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3707 then
3708         echo "You used to use $cppstdin $cppminus so we'll use that again."
3709         case "$cpprun" in
3710         '') echo "But let's see if we can live without a wrapper..." ;;
3711         *)
3712                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3713                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3714                 then
3715                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3716                         ok='true'
3717                 else
3718                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3719                 fi
3720                 ;;
3721         esac
3722 else
3723         case "$cppstdin" in
3724         '') ;;
3725         *)
3726                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3727                 ;;
3728         esac
3729 fi
3730
3731 if $ok; then
3732         : nothing
3733 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3734         $cc -E <testcpp.c >testcpp.out 2>&1; \
3735         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3736         echo "Yup, it does."
3737         x_cpp="$cc -E"
3738         x_minus='';
3739 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3740         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3741         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3742         echo "Yup, it does."
3743         x_cpp="$cc -E"
3744         x_minus='-';
3745 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3746         $cc -P <testcpp.c >testcpp.out 2>&1; \
3747         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3748         echo "Yipee, that works!"
3749         x_cpp="$cc -P"
3750         x_minus='';
3751 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3752         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3753         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3754         echo "At long last!"
3755         x_cpp="$cc -P"
3756         x_minus='-';
3757 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3758         $cpp <testcpp.c >testcpp.out 2>&1; \
3759         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3760         echo "It works!"
3761         x_cpp="$cpp"
3762         x_minus='';
3763 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3764         $cpp - <testcpp.c >testcpp.out 2>&1; \
3765         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3766         echo "Hooray, it works!  I was beginning to wonder."
3767         x_cpp="$cpp"
3768         x_minus='-';
3769 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3770         $wrapper <testcpp.c >testcpp.out 2>&1; \
3771         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3772         x_cpp="$wrapper"
3773         x_minus=''
3774         echo "Eureka!"
3775 else
3776         dflt=''
3777         rp="No dice.  I can't find a C preprocessor.  Name one:"
3778         . ./myread
3779         x_cpp="$ans"
3780         x_minus=''
3781         $x_cpp <testcpp.c >testcpp.out 2>&1
3782         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3783                 echo "OK, that will do." >&4
3784         else
3785 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3786                 exit 1
3787         fi
3788 fi
3789
3790 case "$ok" in
3791 false)
3792         cppstdin="$x_cpp"
3793         cppminus="$x_minus"
3794         cpprun="$x_cpp"
3795         cpplast="$x_minus"
3796         set X $x_cpp
3797         shift
3798         case "$1" in
3799         "$cpp")
3800                 echo "Perhaps can we force $cc -E using a wrapper..."
3801                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3802                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3803                 then
3804                         echo "Yup, we can."
3805                         cppstdin="$wrapper"
3806                         cppminus='';
3807                 else
3808                         echo "Nope, we'll have to live without it..."
3809                 fi
3810                 ;;
3811         esac
3812         case "$cpprun" in
3813         "$wrapper")
3814                 cpprun=''
3815                 cpplast=''
3816                 ;;
3817         esac
3818         ;;
3819 esac
3820
3821 case "$cppstdin" in
3822 "$wrapper"|'cppstdin') ;;
3823 *) $rm -f $wrapper;;
3824 esac
3825 $rm -f testcpp.c testcpp.out
3826
3827 : Set private lib path
3828 case "$plibpth" in
3829 '') if ./mips; then
3830                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3831         fi;;
3832 esac
3833 case "$libpth" in
3834 ' ') dlist='';;
3835 '') dlist="$loclibpth $plibpth $glibpth";;
3836 *) dlist="$libpth";;
3837 esac
3838
3839 : Now check and see which directories actually exist, avoiding duplicates
3840 libpth=''
3841 for xxx in $dlist
3842 do
3843     if $test -d $xxx; then
3844                 case " $libpth " in
3845                 *" $xxx "*) ;;
3846                 *) libpth="$libpth $xxx";;
3847                 esac
3848     fi
3849 done
3850 $cat <<'EOM'
3851
3852 Some systems have incompatible or broken versions of libraries.  Among
3853 the directories listed in the question below, please remove any you
3854 know not to be holding relevant libraries, and add any that are needed.
3855 Say "none" for none.
3856
3857 EOM
3858 case "$libpth" in
3859 '') dflt='none';;
3860 *)
3861         set X $libpth
3862         shift
3863         dflt=${1+"$@"}
3864         ;;
3865 esac
3866 rp="Directories to use for library searches?"
3867 . ./myread
3868 case "$ans" in
3869 none) libpth=' ';;
3870 *) libpth="$ans";;
3871 esac
3872
3873 : compute shared library extension
3874 case "$so" in
3875 '')
3876         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3877                 dflt='sl'
3878         else
3879                 dflt='so'
3880         fi
3881         ;;
3882 *) dflt="$so";;
3883 esac
3884 $cat <<EOM
3885
3886 On some systems, shared libraries may be available.  Answer 'none' if
3887 you want to suppress searching of shared libraries for the remaining
3888 of this configuration.
3889
3890 EOM
3891 rp='What is the file extension used for shared libraries?'
3892 . ./myread
3893 so="$ans"
3894
3895 : Define several unixisms.
3896 : Hints files or command line option can be used to override them.
3897 : The convoluted testing is in case hints files set either the old
3898 : or the new name.
3899 case "$_exe" in
3900 '')     case "$exe_ext" in
3901     '') ;;
3902         *)      _exe="$exe_ext" ;;
3903         esac
3904         ;;
3905 esac
3906 case "$_a" in
3907 '')     case "$lib_ext" in
3908     '') _a='.a';;
3909         *)      _a="$lib_ext" ;;
3910         esac
3911         ;;
3912 esac
3913 case "$_o" in
3914 '') case "$obj_ext" in
3915         '')     _o='.o';;
3916         *)      _o="$obj_ext";;
3917         esac
3918         ;;
3919 esac
3920 case "$p_" in
3921 '') case "$path_sep" in
3922         '')     p_=':';;
3923         *)      p_="$path_sep";;
3924         esac
3925         ;;
3926 esac
3927 exe_ext=$_exe
3928 lib_ext=$_a
3929 obj_ext=$_o
3930 path_sep=$p_
3931
3932 : Which makefile gets called first.  This is used by make depend.
3933 case "$firstmakefile" in
3934 '') firstmakefile='makefile';;
3935 esac
3936
3937 : Looking for optional libraries
3938 echo " "
3939 echo "Checking for optional libraries..." >&4
3940 case "$libs" in
3941 ' '|'') dflt='';;
3942 *) dflt="$libs";;
3943 esac
3944 case "$libswanted" in
3945 '') libswanted='c_s';;
3946 esac
3947 for thislib in $libswanted; do
3948         
3949         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3950                 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3951                 echo "Found -l$thislib (shared)."
3952                 case " $dflt " in
3953                 *"-l$thislib "*);;
3954                 *) dflt="$dflt -l$thislib";;
3955                 esac
3956         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3957                 echo "Found -l$thislib (shared)."
3958                 case " $dflt " in
3959                 *"-l$thislib "*);;
3960                 *) dflt="$dflt -l$thislib";;
3961                 esac
3962         elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3963                 echo "Found -l$thislib."
3964                 case " $dflt " in
3965                 *"-l$thislib "*);;
3966                 *) dflt="$dflt -l$thislib";;
3967                 esac
3968         elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3969                 echo "Found -l$thislib."
3970                 case " $dflt " in
3971                 *"-l$thislib "*);;
3972                 *) dflt="$dflt -l$thislib";;
3973                 esac
3974         elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3975                 echo "Found -l${thislib}_s."
3976                 case " $dflt " in
3977                 *"-l$thislib "*);;
3978                 *) dflt="$dflt -l${thislib}_s";;
3979                 esac
3980         elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3981                 echo "Found -l$thislib."
3982                 case " $dflt " in
3983                 *"-l$thislib "*);;
3984                 *) dflt="$dflt -l$thislib";;
3985                 esac
3986         else
3987                 echo "No -l$thislib."
3988         fi
3989 done
3990 set X $dflt
3991 shift
3992 dflt="$*"
3993 case "$libs" in
3994 '') dflt="$dflt";;
3995 *) dflt="$libs";;
3996 esac
3997 case "$dflt" in
3998 ' '|'') dflt='none';;
3999 esac
4000
4001 $cat <<EOM
4002  
4003 Some versions of Unix support shared libraries, which make executables smaller
4004 but make load time slightly longer.
4005
4006 On some systems, mostly System V Release 3's, the shared library is included
4007 by putting the option "-lc_s" as the last thing on the cc command line when
4008 linking.  Other systems use shared libraries by default.  There may be other
4009 libraries needed to compile $package on your machine as well.  If your system
4010 needs the "-lc_s" option, include it here.  Include any other special libraries
4011 here as well.  Say "none" for none.
4012 EOM
4013
4014 echo " "
4015 rp="Any additional libraries?"
4016 . ./myread
4017 case "$ans" in
4018 none) libs=' ';;
4019 *) libs="$ans";;
4020 esac
4021
4022 : determine optimize, if desired, or use for debug flag also
4023 case "$optimize" in
4024 ' '|$undef) dflt='none';;
4025 '') dflt='-O';;
4026 *) dflt="$optimize";;
4027 esac
4028 $cat <<EOH
4029
4030 Some C compilers have problems with their optimizers.  By default, $package
4031 compiles with the -O flag to use the optimizer.  Alternately, you might want
4032 to use the symbolic debugger, which uses the -g flag (on traditional Unix
4033 systems).  Either flag can be specified here.  To use neither flag, specify
4034 the word "none".
4035
4036 EOH
4037 rp="What optimizer/debugger flag should be used?"
4038 . ./myread
4039 optimize="$ans"
4040 case "$optimize" in
4041 'none') optimize=" ";;
4042 esac
4043
4044 dflt=''
4045 : We will not override a previous value, but we might want to
4046 : augment a hint file
4047 case "$hint" in
4048 none|recommended)
4049         case "$gccversion" in
4050         1*) dflt='-fpcc-struct-return' ;;
4051         esac
4052         case "$optimize" in
4053         *-g*) dflt="$dflt -DDEBUGGING";;
4054         esac
4055         case "$gccversion" in
4056         2*) if test -d /etc/conf/kconfig.d &&
4057                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4058                 then
4059                         dflt="$dflt -posix"
4060                 fi
4061                 ;;
4062         esac
4063         ;;
4064 esac
4065
4066 case "$mips_type" in
4067 *BSD*|'') inclwanted="$locincpth $usrinc";;
4068 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4069 esac
4070 for thisincl in $inclwanted; do
4071         if $test -d $thisincl; then
4072                 if $test x$thisincl != x$usrinc; then
4073                         case "$dflt" in
4074                         *$thisincl*);;
4075                         *) dflt="$dflt -I$thisincl";;
4076                         esac
4077                 fi
4078         fi
4079 done
4080
4081 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4082         xxx=true;
4083 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4084         xxx=true;
4085 else
4086         xxx=false;
4087 fi;
4088 if $xxx; then
4089         case "$dflt" in
4090         *$2*);;
4091         *) dflt="$dflt -D$2";;
4092         esac;
4093 fi'
4094
4095 set signal.h LANGUAGE_C; eval $inctest
4096
4097 case "$hint" in
4098 none|recommended) dflt="$ccflags $dflt" ;;
4099 *) dflt="$ccflags";;
4100 esac
4101
4102 case "$dflt" in
4103 ''|' ') dflt=none;;
4104 esac
4105 $cat <<EOH
4106
4107 Your C compiler may want other flags.  For this question you should include
4108 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4109 but you should NOT include libraries or ld flags like -lwhatever.  If you
4110 want $package to honor its debug switch, you should include -DDEBUGGING here.
4111 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4112
4113 To use no flags, specify the word "none".
4114
4115 EOH
4116 set X $dflt
4117 shift
4118 dflt=${1+"$@"}
4119 rp="Any additional cc flags?"
4120 . ./myread
4121 case "$ans" in
4122 none) ccflags='';;
4123 *) ccflags="$ans";;
4124 esac
4125
4126 : the following weeds options from ccflags that are of no interest to cpp
4127 cppflags="$ccflags"
4128 case "$gccversion" in
4129 1*) cppflags="$cppflags -D__GNUC__"
4130 esac
4131 case "$mips_type" in
4132 '');;
4133 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4134 esac
4135 case "$cppflags" in
4136 '');;
4137 *)
4138         echo " "
4139         echo "Let me guess what the preprocessor flags are..." >&4
4140         set X $cppflags
4141         shift
4142         cppflags=''
4143         $cat >cpp.c <<'EOM'
4144 #define BLURFL foo
4145
4146 BLURFL xx LFRULB
4147 EOM
4148         previous=''
4149         for flag in $*
4150         do
4151                 case "$flag" in
4152                 -*) ftry="$flag";;
4153                 *) ftry="$previous $flag";;
4154                 esac
4155                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4156                         >cpp1.out 2>/dev/null && \
4157                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4158                         >cpp2.out 2>/dev/null && \
4159                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4160                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4161                 then
4162                         cppflags="$cppflags $ftry"
4163                         previous=''
4164                 else
4165                         previous="$flag"
4166                 fi
4167         done
4168         set X $cppflags
4169         shift
4170         cppflags=${1+"$@"}
4171         case "$cppflags" in
4172         *-*)  echo "They appear to be: $cppflags";;
4173         esac
4174         $rm -f cpp.c cpp?.out
4175         ;;
4176 esac
4177
4178 : flags used in final linking phase
4179 case "$ldflags" in
4180 '') if ./venix; then
4181                 dflt='-i -z'
4182         else
4183                 dflt=''
4184         fi
4185         case "$ccflags" in
4186         *-posix*) dflt="$dflt -posix" ;;
4187         esac
4188         ;;
4189 *) dflt="$ldflags";;
4190 esac
4191
4192 : Try to guess additional flags to pick up local libraries.
4193 for thislibdir in $libpth; do
4194         case " $loclibpth " in
4195         *" $thislibdir "*)
4196                 case "$dflt " in 
4197                 *"-L$thislibdir "*) ;;
4198                 *)  dflt="$dflt -L$thislibdir" ;;
4199                 esac
4200                 ;;
4201         esac
4202 done
4203
4204 case "$dflt" in
4205 '') dflt='none' ;;
4206 esac
4207
4208 $cat <<EOH
4209
4210 Your C linker may need flags.  For this question you should
4211 include -L/whatever and any other flags used by the C linker, but you
4212 should NOT include libraries like -lwhatever.
4213
4214 Make sure you include the appropriate -L/path flags if your C linker
4215 does not normally search all of the directories you specified above,
4216 namely
4217         $libpth
4218 To use no flags, specify the word "none".
4219
4220 EOH
4221
4222 rp="Any additional ld flags (NOT including libraries)?"
4223 . ./myread
4224 case "$ans" in
4225 none) ldflags='';;
4226 *) ldflags="$ans";;
4227 esac
4228 rmlist="$rmlist pdp11"
4229
4230 : coherency check
4231 echo " "
4232 echo "Checking your choice of C compiler and flags for coherency..." >&4
4233 $cat > try.c <<'EOF'
4234 #include <stdio.h>
4235 int main() { printf("Ok\n"); exit(0); }
4236 EOF
4237 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4238 shift
4239 $cat >try.msg <<'EOM'
4240 I've tried to compile and run the following simple program:
4241
4242 EOM
4243 $cat try.c >> try.msg
4244
4245 $cat >> try.msg <<EOM
4246
4247 I used the command:
4248
4249         $*
4250         ./try
4251
4252 and I got the following output:
4253
4254 EOM
4255 dflt=y
4256 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4257         if sh -c './try' >>try.msg 2>&1; then
4258                 xxx=`./try`
4259                 case "$xxx" in
4260                 "Ok") dflt=n ;;
4261                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4262                         case " $libs " in
4263                         *" -lsfio "*)
4264                                 cat >> try.msg <<'EOQS'
4265 If $libs contains -lsfio, and sfio is mis-configured, then it
4266 sometimes (apparently) runs and exits with a 0 status, but with no
4267 output!  It may have to do with sfio's use of _exit vs. exit.
4268
4269 EOQS
4270                                 rp="You have a big problem.  Shall I abort Configure"
4271                                 dflt=y
4272                                 ;;
4273                         esac
4274                         ;;
4275                 esac
4276         else
4277                 echo "The program compiled OK, but exited with status $?." >>try.msg
4278                 rp="You have a problem.  Shall I abort Configure"
4279                 dflt=y
4280         fi
4281 else
4282         echo "I can't compile the test program." >>try.msg
4283         rp="You have a BIG problem.  Shall I abort Configure"
4284         dflt=y
4285 fi
4286 case "$dflt" in
4287 y)
4288         $cat try.msg >&4
4289         case "$knowitall" in
4290         '')
4291                 echo "(The supplied flags or libraries might be incorrect.)"
4292                 ;;
4293         *) dflt=n;;
4294         esac
4295         echo " "
4296         . ./myread
4297         case "$ans" in
4298         n*|N*) ;;
4299         *)      echo "Ok.  Stopping Configure." >&4
4300                 exit 1
4301                 ;;
4302         esac
4303         ;;
4304 n) echo "OK, that should do.";;
4305 esac
4306 $rm -f try try.* core
4307
4308 : determine filename position in cpp output
4309 echo " "
4310 echo "Computing filename position in cpp output for #include directives..." >&4
4311 echo '#include <stdio.h>' > foo.c
4312 $cat >fieldn <<EOF
4313 $startsh
4314 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4315 $grep '^[       ]*#.*stdio\.h' | \
4316 while read cline; do
4317         pos=1
4318         set \$cline
4319         while $test \$# -gt 0; do
4320                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4321                         echo "\$pos"
4322                         exit 0
4323                 fi
4324                 shift
4325                 pos=\`expr \$pos + 1\`
4326         done
4327 done
4328 EOF
4329 chmod +x fieldn
4330 fieldn=`./fieldn`
4331 $rm -f foo.c fieldn
4332 case $fieldn in
4333 '') pos='???';;
4334 1) pos=first;;
4335 2) pos=second;;
4336 3) pos=third;;
4337 *) pos="${fieldn}th";;
4338 esac
4339 echo "Your cpp writes the filename in the $pos field of the line."
4340
4341 : locate header file
4342 $cat >findhdr <<EOF
4343 $startsh
4344 wanted=\$1
4345 name=''
4346 if test -f $usrinc/\$wanted; then
4347         echo "$usrinc/\$wanted"
4348         exit 0
4349 fi
4350 awkprg='{ print \$$fieldn }'
4351 echo "#include <\$wanted>" > foo\$\$.c
4352 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4353 $grep "^[       ]*#.*\$wanted" | \
4354 while read cline; do
4355         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4356         case "\$name" in
4357         */\$wanted) echo "\$name"; exit 0;;
4358         *) name='';;
4359         esac;
4360 done;
4361 $rm -f foo\$\$.c;
4362 case "\$name" in
4363 '') exit 1;;
4364 esac
4365 EOF
4366 chmod +x findhdr
4367
4368 : define an alternate in-header-list? function
4369 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4370 cont=true; xxf="echo \"<\$1> found.\" >&4";
4371 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4372 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4373 esac;
4374 case $# in 4) instead=instead;; *) instead="at last";; esac;
4375 while $test "$cont"; do
4376         xxx=`./findhdr $1`
4377         var=$2; eval "was=\$$2";
4378         if $test "$xxx" && $test -r "$xxx";
4379         then eval $xxf;
4380         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4381                 cont="";
4382         else eval $xxnf;
4383         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4384         set $yyy; shift; shift; yyy=$@;
4385         case $# in 0) cont="";;
4386         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4387                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4388         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4389                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4390         esac;
4391 done;
4392 while $test "$yyy";
4393 do set $yyy; var=$2; eval "was=\$$2";
4394         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4395         set $yyy; shift; shift; yyy=$@;
4396 done'
4397
4398 : see if this is a malloc.h system
4399 set malloc.h i_malloc
4400 eval $inhdr
4401
4402 : see if stdlib is available
4403 set stdlib.h i_stdlib
4404 eval $inhdr
4405
4406 : determine which malloc to compile in
4407 echo " "
4408 case "$usemymalloc" in
4409 ''|[yY]*|true|$define)  dflt='y' ;;
4410 *)      dflt='n' ;;
4411 esac
4412 rp="Do you wish to attempt to use the malloc that comes with $package?"
4413 . ./myread
4414 usemymalloc="$ans"
4415 case "$ans" in
4416 y*|true)
4417         usemymalloc='y'
4418         mallocsrc='malloc.c'
4419         mallocobj="malloc$_o"
4420         d_mymalloc="$define"
4421         case "$libs" in
4422         *-lmalloc*)
4423                 : Remove malloc from list of libraries to use
4424                 echo "Removing unneeded -lmalloc from library list" >&4
4425                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4426                 shift
4427                 libs="$*"
4428                 echo "libs = $libs" >&4
4429                 ;;
4430         esac
4431         ;;
4432 *)
4433         usemymalloc='n'
4434         mallocsrc=''
4435         mallocobj=''
4436         d_mymalloc="$undef"
4437         ;;
4438 esac
4439
4440 : compute the return types of malloc and free
4441 echo " "
4442 $cat >malloc.c <<END
4443 #$i_malloc I_MALLOC
4444 #$i_stdlib I_STDLIB
4445 #include <stdio.h>
4446 #include <sys/types.h>
4447 #ifdef I_MALLOC
4448 #include <malloc.h>
4449 #endif
4450 #ifdef I_STDLIB
4451 #include <stdlib.h>
4452 #endif
4453 #ifdef TRY_MALLOC
4454 void *malloc();
4455 #endif
4456 #ifdef TRY_FREE
4457 void free();
4458 #endif
4459 END
4460 case "$malloctype" in
4461 '')
4462         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4463                 malloctype='void *'
4464         else
4465                 malloctype='char *'
4466         fi
4467         ;;
4468 esac
4469 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4470
4471 case "$freetype" in
4472 '')
4473         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4474                 freetype='void'
4475         else
4476                 freetype='int'
4477         fi
4478         ;;
4479 esac
4480 echo "Your system uses $freetype free(), it would seem." >&4
4481 $rm -f malloc.[co]
4482 : Cruising for prototypes
4483 echo " "
4484 echo "Checking out function prototypes..." >&4
4485 $cat >prototype.c <<'EOCP'
4486 int main(int argc, char *argv[]) {
4487         exit(0);}
4488 EOCP
4489 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4490         echo "Your C compiler appears to support function prototypes."
4491         val="$define"
4492 else
4493         echo "Your C compiler doesn't seem to understand function prototypes."
4494         val="$undef"
4495 fi
4496 set prototype
4497 eval $setvar
4498 $rm -f prototype*
4499
4500 case "$prototype" in
4501 "$define") ;;
4502 *)      ansi2knr='ansi2knr'
4503         echo " "
4504         cat <<EOM >&4
4505
4506 $me:  FATAL ERROR:
4507 This version of $package can only be compiled by a compiler that 
4508 understands function prototypes.  Unfortunately, your C compiler 
4509         $cc $ccflags
4510 doesn't seem to understand them.  Sorry about that.
4511
4512 If GNU cc is available for your system, perhaps you could try that instead.  
4513
4514 Eventually, we hope to support building Perl with pre-ANSI compilers.
4515 If you would like to help in that effort, please contact <perlbug@perl.org>.
4516
4517 Aborting Configure now.
4518 EOM
4519         exit 2
4520         ;;
4521 esac
4522
4523 : determine where public executables go
4524 echo " "
4525 set dflt bin bin
4526 eval $prefixit
4527 fn=d~
4528 rp='Pathname where the public executables will reside?'
4529 . ./getfile
4530 if $test "X$ansexp" != "X$binexp"; then
4531         installbin=''
4532 fi
4533 bin="$ans"
4534 binexp="$ansexp"
4535 if $afs; then
4536         $cat <<EOM
4537
4538 Since you are running AFS, I need to distinguish the directory in which
4539 executables reside from the directory in which they are installed (and from
4540 which they are presumably copied to the former directory by occult means).
4541
4542 EOM
4543         case "$installbin" in
4544         '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
4545         *) dflt="$installbin";;
4546         esac
4547         fn=de~
4548         rp='Where will public executables be installed?'
4549         . ./getfile
4550         installbin="$ans"
4551 else
4552         installbin="$binexp"
4553 fi
4554
4555 : determine whether to install perl also as /usr/bin/perl
4556
4557 echo " "
4558 if test -d /usr/bin -a "X$installbin" != X/usr/bin; then
4559         $cat <<EOM
4560 Many scripts expect to perl to be installed as /usr/bin/perl.
4561 I can install the perl you are about to compile also as /usr/bin/perl
4562 (in addition to $installbin/perl).
4563 EOM
4564         case "$installusrbinperl" in
4565         "$undef"|[nN]*) dflt='n';;
4566         *)              dflt='y';;
4567         esac
4568         rp="Do you want to install perl as /usr/bin/perl?"
4569         . ./myread
4570         case "$ans" in
4571         [yY]*)  val="$define";;
4572         *)      val="$undef" ;;
4573         esac
4574 else
4575         val="$undef"
4576 fi
4577 set installusrbinperl
4578 eval $setvar
4579
4580 : define a shorthand compile call
4581 compile='
4582 mc_file=$1;
4583 shift;
4584 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4585 : define a shorthand compile call for compilations that should be ok.
4586 compile_ok='
4587 mc_file=$1;
4588 shift;
4589 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4590
4591 echo " "
4592 echo "Checking for GNU C Library..." >&4
4593 cat >gnulibc.c <<EOM
4594 #include <stdio.h>
4595 int main()
4596 {
4597 #ifdef __GLIBC__
4598     exit(0);
4599 #else
4600     exit(1);
4601 #endif
4602 }
4603 EOM
4604 set gnulibc
4605 if eval $compile_ok && ./gnulibc; then
4606         val="$define"
4607         echo "You are using the GNU C Library"
4608 else
4609         val="$undef"
4610         echo "You are not using the GNU C Library"
4611 fi
4612 $rm -f gnulibc*
4613 set d_gnulibc
4614 eval $setvar
4615
4616 : see if nm is to be used to determine whether a symbol is defined or not
4617 case "$usenm" in
4618 '')
4619         dflt=''
4620         case "$d_gnulibc" in
4621         "$define")
4622                 echo " "
4623                 echo "nm probably won't work on the GNU C Library." >&4
4624                 dflt=n
4625                 ;;
4626         esac
4627         case "$dflt" in
4628         '') 
4629                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4630                         echo " "
4631                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4632                         echo "'nm' won't be sufficient on this sytem." >&4
4633                         dflt=n
4634                 fi
4635                 ;;
4636         esac
4637         case "$dflt" in
4638         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4639                 if $test $dflt -gt 20; then
4640                         dflt=y
4641                 else
4642                         dflt=n
4643                 fi
4644                 ;;
4645         esac
4646         ;;
4647 *)
4648         case "$usenm" in
4649         true|$define) dflt=y;;
4650         *) dflt=n;;
4651         esac
4652         ;;
4653 esac
4654 $cat <<EOM
4655
4656 I can use $nm to extract the symbols from your C libraries. This
4657 is a time consuming task which may generate huge output on the disk (up
4658 to 3 megabytes) but that should make the symbols extraction faster. The
4659 alternative is to skip the 'nm' extraction part and to compile a small
4660 test program instead to determine whether each symbol is present. If
4661 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4662 this may be the best solution.
4663
4664 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4665
4666 EOM
4667 rp="Shall I use $nm to extract C symbols from the libraries?"
4668 . ./myread
4669 case "$ans" in
4670 [Nn]*) usenm=false;;
4671 *) usenm=true;;
4672 esac
4673
4674 runnm=$usenm
4675 case "$reuseval" in
4676 true) runnm=false;;
4677 esac
4678
4679 : nm options which may be necessary
4680 case "$nm_opt" in
4681 '') if $test -f /mach_boot; then
4682                 nm_opt=''       # Mach
4683         elif $test -d /usr/ccs/lib; then
4684                 nm_opt='-p'     # Solaris (and SunOS?)
4685         elif $test -f /dgux; then
4686                 nm_opt='-p'     # DG-UX
4687         elif $test -f /lib64/rld; then
4688                 nm_opt='-p'     # 64-bit Irix
4689         else
4690                 nm_opt=''
4691         fi;;
4692 esac
4693
4694 : nm options which may be necessary for shared libraries but illegal
4695 : for archive libraries.  Thank you, Linux.
4696 case "$nm_so_opt" in
4697 '')     case "$myuname" in
4698         *linux*)
4699                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4700                         nm_so_opt='--dynamic'
4701                 fi
4702                 ;;
4703         esac
4704         ;;
4705 esac
4706
4707 case "$runnm" in
4708 true)
4709 : get list of predefined functions in a handy place
4710 echo " "
4711 case "$libc" in
4712 '') libc=unknown
4713         case "$libs" in
4714         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4715         esac
4716         ;;
4717 esac
4718 libnames='';
4719 case "$libs" in
4720 '') ;;
4721 *)  for thislib in $libs; do
4722         case "$thislib" in
4723         -lc|-lc_s)
4724                 : Handle C library specially below.
4725                 ;;
4726         -l*)
4727                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4728                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4729                         :
4730                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4731                         :
4732                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4733                         :
4734                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4735                         :
4736                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4737                         :
4738                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4739                         :
4740                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4741                         :
4742                 else
4743                         try=''
4744                 fi
4745                 libnames="$libnames $try"
4746                 ;;
4747         *) libnames="$libnames $thislib" ;;
4748         esac
4749         done
4750         ;;
4751 esac
4752 xxx=normal
4753 case "$libc" in
4754 unknown)
4755         set /lib/libc.$so
4756         for xxx in $libpth; do
4757                 $test -r $1 || set $xxx/libc.$so
4758                 : The messy sed command sorts on library version numbers.
4759                 $test -r $1 || \
4760                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4761                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4762                                 h
4763                                 s/[0-9][0-9]*/0000&/g
4764                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4765                                 G
4766                                 s/\n/ /' | \
4767                          sort | $sed -e 's/^.* //'`
4768                 eval set \$$#
4769         done
4770         $test -r $1 || set /usr/ccs/lib/libc.$so
4771         $test -r $1 || set /lib/libsys_s$_a
4772         ;;
4773 *)
4774         set blurfl
4775         ;;
4776 esac
4777 if $test -r "$1"; then
4778         echo "Your (shared) C library seems to be in $1."
4779         libc="$1"
4780 elif $test -r /lib/libc && $test -r /lib/clib; then
4781         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4782         xxx=apollo
4783         libc='/lib/clib /lib/libc'
4784         if $test -r /lib/syslib; then
4785                 echo "(Your math library is in /lib/syslib.)"
4786                 libc="$libc /lib/syslib"
4787         fi
4788 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4789         echo "Your C library seems to be in $libc, as you said before."
4790 elif $test -r $incpath/usr/lib/libc$_a; then
4791         libc=$incpath/usr/lib/libc$_a;
4792         echo "Your C library seems to be in $libc.  That's fine."
4793 elif $test -r /lib/libc$_a; then
4794         libc=/lib/libc$_a;
4795         echo "Your C library seems to be in $libc.  You're normal."
4796 else
4797         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4798                 :
4799         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4800                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4801         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4802                 :
4803         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4804                 :
4805         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4806                 :
4807         else
4808                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4809         fi
4810         if $test -r "$tans"; then
4811                 echo "Your C library seems to be in $tans, of all places."
4812                 libc=$tans
4813         else
4814                 libc='blurfl'
4815         fi
4816 fi
4817 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4818         dflt="$libc"
4819         cat <<EOM
4820
4821 If the guess above is wrong (which it might be if you're using a strange
4822 compiler, or your machine supports multiple models), you can override it here.
4823
4824 EOM
4825 else
4826         dflt=''
4827         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4828         cat >&4 <<EOM
4829 I can't seem to find your C library.  I've looked in the following places:
4830
4831 EOM
4832         $sed 's/^/      /' libpath
4833         cat <<EOM
4834
4835 None of these seems to contain your C library. I need to get its name...
4836
4837 EOM
4838 fi
4839 fn=f
4840 rp='Where is your C library?'
4841 . ./getfile
4842 libc="$ans"
4843
4844 echo " "
4845 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4846 set X `cat libnames`
4847 shift
4848 xxx=files
4849 case $# in 1) xxx=file; esac
4850 echo "Extracting names from the following $xxx for later perusal:" >&4
4851 echo " "
4852 $sed 's/^/      /' libnames >&4
4853 echo " "
4854 $echo $n "This may take a while...$c" >&4
4855
4856 for file in $*; do
4857         case $file in
4858         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4859         *) $nm $nm_opt $file 2>/dev/null;;
4860         esac
4861 done >libc.tmp
4862
4863 $echo $n ".$c"
4864 $grep fprintf libc.tmp > libc.ptf
4865 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4866 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4867 xxx='[ADTSIW]'
4868 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4869         eval $xscan;\
4870         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4871                 eval $xrun
4872 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4873         eval $xscan;\
4874         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4875                 eval $xrun
4876 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4877         eval $xscan;\
4878         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4879                 eval $xrun
4880 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4881         eval $xscan;\
4882         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4883                 eval $xrun
4884 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4885         eval $xscan;\
4886         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4887                 eval $xrun
4888 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4889         eval $xscan;\
4890         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4891                 eval $xrun
4892 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4893                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
4894         eval $xscan;\
4895         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4896                 eval $xrun
4897 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4898         eval $xscan;\
4899         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4900                 eval $xrun
4901 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4902         eval $xscan;\
4903         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4904                 eval $xrun
4905 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4906         eval $xscan;\
4907         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4908                 eval $xrun
4909 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4910         eval $xscan;\
4911         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4912                 eval $xrun
4913 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4914         eval $xscan;\
4915         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4916                 eval $xrun
4917 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4918         eval $xscan;\
4919         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4920                 eval $xrun
4921 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
4922         eval $xscan;\
4923         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4924                 eval $xrun
4925 else
4926         $nm -p $* 2>/dev/null >libc.tmp
4927         $grep fprintf libc.tmp > libc.ptf
4928         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4929                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4930         then
4931                 nm_opt='-p'
4932                 eval $xrun
4933         else
4934                 echo " "
4935                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4936                 com=''
4937                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4938                         for thisname in $libnames $libc; do
4939                                 $ar t $thisname >>libc.tmp
4940                         done
4941                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4942                         echo "Ok." >&4
4943                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4944                         # Repeat libc to extract forwarders to DLL entries too
4945                         for thisname in $libnames $libc; do
4946                                 $ar tv $thisname >>libc.tmp
4947                                 # Revision 50 of EMX has bug in $ar.
4948                                 # it will not extract forwarders to DLL entries
4949                                 # Use emximp which will extract exactly them.
4950                                 emximp -o tmp.imp $thisname \
4951                                     2>/dev/null && \
4952                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4953                                     < tmp.imp >>libc.tmp
4954                                 $rm tmp.imp
4955                         done
4956                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4957                         echo "Ok." >&4
4958                 else
4959                         echo "$ar didn't seem to work right." >&4
4960                         echo "Maybe this is a Cray...trying bld instead..." >&4
4961                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4962                         then
4963                                 for thisname in $libnames; do
4964                                         bld t $libnames | \
4965                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4966                                         $ar t $thisname >>libc.tmp
4967                                 done
4968                                 echo "Ok." >&4
4969                         else
4970                                 echo "That didn't work either.  Giving up." >&4
4971                                 exit 1
4972                         fi
4973                 fi
4974         fi
4975 fi
4976 nm_extract="$com"
4977 if $test -f /lib/syscalls.exp; then
4978         echo " "
4979         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4980         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
4981 fi
4982 ;;
4983 esac
4984 $rm -f libnames libpath
4985
4986 : see if dld is available
4987 set dld.h i_dld
4988 eval $inhdr
4989
4990 : is a C symbol defined?
4991 csym='tlook=$1;
4992 case "$3" in
4993 -v) tf=libc.tmp; tc=""; tdc="";;
4994 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4995 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4996 esac;
4997 tx=yes;
4998 case "$reuseval-$4" in
4999 true-) ;;
5000 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5001 esac;
5002 case "$tx" in
5003 yes)
5004         case "$runnm" in
5005         true)
5006                 if $contains $tlook $tf >/dev/null 2>&1;
5007                 then tval=true;
5008                 else tval=false;
5009                 fi;;
5010         *)
5011                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5012                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5013                 then tval=true;
5014                 else tval=false;
5015                 fi;
5016                 $rm -f t t.c;;
5017         esac;;
5018 *)
5019         case "$tval" in
5020         $define) tval=true;;
5021         *) tval=false;;
5022         esac;;
5023 esac;
5024 eval "$2=$tval"'
5025
5026 : define an is-in-libc? function
5027 inlibc='echo " "; td=$define; tu=$undef;
5028 sym=$1; var=$2; eval "was=\$$2";
5029 tx=yes;
5030 case "$reuseval$was" in
5031 true) ;;
5032 true*) tx=no;;
5033 esac;
5034 case "$tx" in
5035 yes)
5036         set $sym tres -f;
5037         eval $csym;
5038         case "$tres" in
5039         true)
5040                 echo "$sym() found." >&4;
5041                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5042         *)
5043                 echo "$sym() NOT found." >&4;
5044                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5045         esac;;
5046 *)
5047         case "$was" in
5048         $define) echo "$sym() found." >&4;;
5049         *) echo "$sym() NOT found." >&4;;
5050         esac;;
5051 esac'
5052
5053 : see if dlopen exists
5054 xxx_runnm="$runnm"
5055 runnm=false
5056 set dlopen d_dlopen
5057 eval $inlibc
5058 runnm="$xxx_runnm"
5059
5060 : determine which dynamic loading, if any, to compile in
5061 echo " "
5062 dldir="ext/DynaLoader"
5063 case "$usedl" in
5064 $define|y|true)
5065         dflt='y'
5066         usedl="$define"
5067         ;;
5068 $undef|n|false)
5069         dflt='n'
5070         usedl="$undef"
5071         ;;
5072 *) 
5073         dflt='n'
5074         case "$d_dlopen" in
5075             $define) dflt='y' ;;
5076         esac
5077         case "$i_dld" in
5078             $define) dflt='y' ;;
5079         esac
5080         : Does a dl_xxx.xs file exist for this operating system
5081         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5082         ;;
5083 esac
5084 rp="Do you wish to use dynamic loading?"
5085 . ./myread
5086 usedl="$ans"
5087 case "$ans" in
5088 y*) usedl="$define"
5089         case "$dlsrc" in
5090         '')
5091                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5092                         dflt="$dldir/dl_${osname}.xs"
5093                 elif $test "$d_dlopen" = "$define" ; then
5094                         dflt="$dldir/dl_dlopen.xs"
5095                 elif $test "$i_dld" = "$define" ; then
5096                         dflt="$dldir/dl_dld.xs"
5097                 else
5098                         dflt=''
5099                 fi
5100                 ;;
5101         *)      dflt="$dldir/$dlsrc"
5102                 ;;
5103         esac
5104     echo "The following dynamic loading files are available:"
5105         : Can not go over to $dldir because getfile has path hard-coded in.
5106         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5107         rp="Source file to use for dynamic loading"
5108         fn="fne"
5109         # XXX This getfile call will fail the existence check if you try 
5110         # building away from $src (this is not supported yet).
5111         . ./getfile
5112         usedl="$define"
5113         : emulate basename
5114         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5115
5116         $cat << EOM
5117
5118 Some systems may require passing special flags to $cc -c to
5119 compile modules that will be used to create a shared library.
5120 To use no flags, say "none".
5121
5122 EOM
5123     case "$cccdlflags" in
5124     '') case "$gccversion" in
5125                 '') case "$osname" in
5126                         hpux)   dflt='+z' ;;
5127                         next)   dflt='none' ;;
5128                         irix*)  dflt='-KPIC' ;;
5129                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5130                         sunos)  dflt='-pic' ;;
5131                         *)      dflt='none' ;;
5132                     esac
5133                         ;;
5134                 *)  case "$osname" in
5135                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5136                         *)      dflt='-fpic' ;;
5137                     esac ;;
5138             esac ;;
5139         ' ') dflt='none' ;;
5140     *)  dflt="$cccdlflags" ;;
5141     esac
5142     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5143     . ./myread
5144     case "$ans" in
5145     none) cccdlflags=' ' ;;
5146     *) cccdlflags="$ans" ;;
5147     esac
5148
5149     cat << EOM
5150
5151 Some systems use ld to create libraries that can be dynamically loaded,
5152 while other systems (such as those using ELF) use $cc.
5153
5154 EOM
5155         case "$ld" in
5156         '')     $cat >try.c <<'EOM'
5157 /* Test for whether ELF binaries are produced */
5158 #include <fcntl.h>
5159 #include <stdlib.h>
5160 int main() {
5161         char b[4];
5162         int i = open("a.out",O_RDONLY);
5163         if(i == -1) 
5164                 exit(1); /* fail */
5165         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5166                 exit(0); /* succeed (yes, it's ELF) */
5167         else
5168                 exit(1); /* fail */
5169 }
5170 EOM
5171                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5172                         cat <<EOM
5173 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
5174 EOM
5175                         dflt="$cc"
5176                 else
5177                         echo "I'll use ld to build dynamic libraries."
5178                         dflt='ld'
5179                 fi
5180                 rm -f try.c a.out
5181                 ;;
5182         *)      dflt="$ld"
5183                 ;;
5184         esac
5185
5186     rp="What command should be used to create dynamic libraries?"
5187     . ./myread
5188         ld="$ans"
5189
5190     cat << EOM
5191
5192 Some systems may require passing special flags to $ld to create a
5193 library that can be dynamically loaded.  If your ld flags include
5194 -L/other/path options to locate libraries outside your loader's normal
5195 search path, you may need to specify those -L options here as well.  To
5196 use no flags, say "none".
5197
5198 EOM
5199     case "$lddlflags" in
5200     '') case "$osname" in
5201                         beos) dflt='-nostart' ;;
5202                         hpux)  dflt='-b' ;;
5203                         linux|irix*)    dflt='-shared' ;;
5204                         next)  dflt='none' ;;
5205                         solaris) dflt='-G' ;;
5206                         sunos) dflt='-assert nodefinitions' ;;
5207                         svr4*|esix*) dflt="-G $ldflags" ;;
5208                 *)     dflt='none' ;;
5209                         esac
5210                         ;;
5211     *) dflt="$lddlflags" ;;
5212     esac
5213
5214         : Try to guess additional flags to pick up local libraries.
5215         : Be careful not to append to a plain 'none'
5216         case "$dflt" in
5217         none) dflt='' ;;
5218         esac
5219         for thisflag in $ldflags; do
5220                 case "$thisflag" in
5221                 -L*)
5222                         case " $dflt " in
5223                         *" $thisflag "*) ;;
5224                         *) dflt="$dflt $thisflag" ;;
5225                         esac
5226                         ;;
5227                 esac
5228         done
5229
5230         case "$dflt" in
5231         ''|' ') dflt='none' ;;
5232         esac
5233
5234     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5235     . ./myread
5236     case "$ans" in
5237     none) lddlflags=' ' ;;
5238     *) lddlflags="$ans" ;;
5239     esac
5240
5241         cat <<EOM
5242
5243 Some systems may require passing special flags to $cc to indicate that
5244 the resulting executable will use dynamic linking.  To use no flags,
5245 say "none".
5246
5247 EOM
5248     case "$ccdlflags" in
5249     '') case "$osname" in
5250                 hpux)   dflt='-Wl,-E' ;;
5251                 linux)  dflt='-rdynamic' ;;
5252                 next)   dflt='none' ;;
5253                 sunos)  dflt='none' ;;
5254                 *)      dflt='none' ;;
5255             esac ;;
5256     ' ')  dflt='none' ;;
5257     *)  dflt="$ccdlflags" ;;
5258     esac
5259     rp="Any special flags to pass to $cc to use dynamic loading?"
5260     . ./myread
5261     case "$ans" in
5262     none) ccdlflags=' ' ;;
5263     *) ccdlflags="$ans" ;;
5264     esac
5265     ;;
5266 *)  usedl="$undef"
5267         ld='ld'
5268     dlsrc='dl_none.xs'
5269     lddlflags=''
5270     ccdlflags=''
5271     ;;
5272 esac
5273
5274 also=''
5275 case "$usedl" in
5276 $undef)
5277         # No dynamic loading being used, so don't bother even to prompt.
5278         useshrplib='false'
5279         ;;
5280 *)      case "$useshrplib" in
5281         '')     case "$osname" in
5282                 svr4*|dgux|dynixptx|esix|powerux|beos)
5283                         dflt=y
5284                         also='Building a shared libperl is required for dynamic loading to work on your system.'
5285                         ;;
5286                 next*)
5287                         case "$osvers" in
5288                         4*)     dflt=y
5289                                 also='Building a shared libperl is needed for MAB support.'
5290                                 ;;
5291                         *)      dflt=n
5292                                 ;;
5293                         esac
5294                         ;;
5295                 *)      dflt=n
5296                         ;;
5297                 esac
5298                 ;;
5299         $define|true|[Yy]*)
5300                 dflt=y
5301                 ;;
5302         *)      dflt=n
5303                 ;;
5304         esac
5305         $cat << EOM
5306
5307 The perl executable is normally obtained by linking perlmain.c with
5308 libperl${_a}, any static extensions (usually just DynaLoader), and
5309 any other libraries needed on this system (such as -lm, etc.).  Since
5310 your system supports dynamic loading, it is probably possible to build
5311 a shared libperl.$so.  If you will have more than one executable linked
5312 to libperl.$so, this will significantly reduce the size of each
5313 executable, but it may have a noticeable affect on performance.  The
5314 default is probably sensible for your system.
5315 $also
5316
5317 EOM
5318         rp="Build a shared libperl.$so (y/n)"
5319         . ./myread
5320         case "$ans" in
5321         true|$define|[Yy]*)
5322                 useshrplib='true'
5323                 # Why does next4 have to be so different?
5324                 case "${osname}${osvers}" in
5325                 next4*|rhapsody*)
5326                         xxx='DYLD_LIBRARY_PATH' ;;
5327                 os2*)   xxx='' ;; # Nothing special needed.
5328                 beos*)  xxx='' ;;
5329                 *)              xxx='LD_LIBRARY_PATH' ;;
5330                 esac
5331                 ;;
5332         *)      useshrplib='false' ;;
5333         esac
5334         ;;
5335 esac
5336
5337 case "$useshrplib" in
5338 true)
5339         case "$libperl" in
5340         '')
5341                 # Figure out a good name for libperl.so.  Since it gets stored in
5342                 # a version-specific architecture-dependent library, the version
5343                 # number isn't really that important, except for making cc/ld happy.
5344                 #
5345                 # A name such as libperl.so.3.1
5346                 majmin="libperl.$so.$patchlevel.$subversion"
5347                 # A name such as libperl.so.301
5348                 majonly=`echo $patchlevel $subversion |
5349                         $awk '{printf "%d%02d", $1, $2}'`
5350                 majonly=libperl.$so.$majonly
5351                 # I'd prefer to keep the os-specific stuff here to a minimum, and
5352                 # rely on figuring it out from the naming of libc.
5353                 case "${osname}${osvers}" in
5354                 next4*)
5355                         dflt=libperl.5.$so
5356                         # XXX How handle the --version stuff for MAB?
5357                         ;;
5358                 linux*)  # ld won't link with a bare -lperl otherwise.
5359                         dflt=libperl.$so
5360                         ;;
5361                 *)      # Try to guess based on whether libc has major.minor.
5362                         case "$libc" in
5363                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5364                         *libc.$so.[0-9]*) dflt=$majonly ;;
5365                         *)      dflt=libperl.$so ;;
5366                         esac
5367                         ;;
5368                 esac
5369                 ;;
5370         *)      dflt=$libperl
5371                 ;;
5372         esac
5373         cat << EOM
5374
5375 I need to select a good name for the shared libperl.  If your system uses
5376 library names with major and minor numbers, then you might want something
5377 like $majmin.  Alternatively, if your system uses a single version
5378 number for shared libraries, then you might want to use $majonly.
5379 Or, your system might be quite happy with a simple libperl.$so.
5380
5381 Since the shared libperl will get installed into a version-specific
5382 architecture-dependent directory, the version number of the shared perl
5383 library probably isn't important, so the default should be o.k.
5384
5385 EOM
5386         rp='What name do you want to give to the shared libperl?'
5387         . ./myread
5388         libperl=$ans
5389         echo "Ok, I'll use $libperl"
5390         ;;
5391 *)
5392         libperl="libperl${_a}"
5393         ;;
5394 esac
5395
5396 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5397 case "$shrpdir" in
5398 '') ;;
5399 *)      $cat >&4 <<EOM
5400 WARNING:  Use of the shrpdir variable for the installation location of
5401 the shared $libperl is not supported.  It was never documented and
5402 will not work in this version.  Let me (perlbug@perl.com)
5403 know of any problems this may cause.
5404
5405 EOM
5406         case "$shrpdir" in
5407         "$archlibexp/CORE")
5408                 $cat >&4 <<EOM
5409 But your current setting of $shrpdir is
5410 the default anyway, so it's harmless.
5411 EOM
5412                 ;;
5413         *)
5414                 $cat >&4 <<EOM
5415 Further, your current attempted setting of $shrpdir
5416 conflicts with the value of $archlibexp/CORE
5417 that installperl will use.
5418 EOM
5419                 ;;
5420         esac
5421         ;;
5422 esac
5423
5424 # How will the perl executable find the installed shared $libperl?
5425 # Add $xxx to ccdlflags.
5426 # If we can't figure out a command-line option, use $shrpenv to
5427 # set env LD_RUN_PATH.  The main perl makefile uses this.
5428 shrpdir=$archlibexp/CORE
5429 xxx=''
5430 tmp_shrpenv=''
5431 if "$useshrplib"; then
5432     case "$osname" in 
5433         aix)
5434                 # We'll set it in Makefile.SH...
5435                 ;;
5436         solaris|netbsd)
5437                 xxx="-R $shrpdir"
5438                 ;;
5439         freebsd)
5440                 xxx="-Wl,-R$shrpdir"
5441                 ;;
5442         linux|irix*|dec_osf)
5443                 xxx="-Wl,-rpath,$shrpdir"
5444                 ;;
5445         next)
5446                 # next doesn't like the default...
5447                 ;;
5448         beos)
5449                 # beos doesn't like the default, either.
5450                 ;;
5451         *)
5452                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5453                 ;;
5454         esac
5455         case "$xxx" in
5456         '') ;;
5457         *)      
5458                 # Only add $xxx if it isn't already in ccdlflags.
5459                 case " $ccdlflags " in
5460                 *" $xxx "*)     ;;
5461                 *)      ccdlflags="$ccdlflags $xxx"
5462                         cat <<EOM >&4
5463
5464 Adding $xxx to the flags
5465 passed to $ld so that the perl executable will find the 
5466 installed shared $libperl.
5467
5468 EOM
5469                         ;;
5470                 esac
5471                 ;;
5472         esac
5473 fi
5474 # Respect a hint or command-line value.
5475 case "$shrpenv" in
5476 '') shrpenv="$tmp_shrpenv" ;;
5477 esac
5478
5479 : determine where manual pages go
5480 set man1dir man1dir none
5481 eval $prefixit
5482 $cat <<EOM
5483
5484 $spackage has manual pages available in source form.
5485 EOM
5486 case "$nroff" in
5487 nroff)
5488         echo "However, you don't have nroff, so they're probably useless to you."
5489         case "$man1dir" in
5490         '') man1dir="none";;
5491         esac;;
5492 esac
5493 echo "If you don't want the manual sources installed, answer 'none'."
5494 case "$man1dir" in
5495 ' ') dflt=none
5496         ;;
5497 '')
5498         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5499         lookpath="$lookpath $prefixexp/man/p_man/man1"
5500         lookpath="$lookpath $prefixexp/man/u_man/man1"
5501         lookpath="$lookpath $prefixexp/man/man.1"
5502         case "$sysman" in
5503         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5504         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5505         esac
5506         set dflt
5507         eval $prefixup
5508         ;;
5509 *)  dflt="$man1dir"
5510         ;;
5511 esac
5512 echo " "
5513 fn=dn+~
5514 rp="Where do the main $spackage manual pages (source) go?"
5515 . ./getfile
5516 if $test "X$man1direxp" != "X$ansexp"; then
5517         installman1dir=''
5518 fi
5519 man1dir="$ans"
5520 man1direxp="$ansexp"
5521 case "$man1dir" in
5522 '') man1dir=' '
5523         installman1dir='';;
5524 esac
5525 if $afs; then
5526         $cat <<EOM
5527
5528 Since you are running AFS, I need to distinguish the directory in which
5529 manual pages reside from the directory in which they are installed (and from
5530 which they are presumably copied to the former directory by occult means).
5531
5532 EOM
5533         case "$installman1dir" in
5534         '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5535         *) dflt="$installman1dir";;
5536         esac
5537         fn=de~
5538         rp='Where will man pages be installed?'
5539         . ./getfile
5540         installman1dir="$ans"
5541 else
5542         installman1dir="$man1direxp"
5543 fi
5544
5545 : What suffix to use on installed man pages
5546
5547 case "$man1dir" in
5548 ' ')
5549         man1ext='0'
5550         ;;
5551 *)
5552         rp="What suffix should be used for the main $spackage man pages?"
5553         case "$man1ext" in
5554         '')     case "$man1dir" in
5555                 *1)  dflt=1 ;;
5556                 *1p) dflt=1p ;;
5557                 *1pm) dflt=1pm ;;
5558                 *l) dflt=l;;
5559                 *n) dflt=n;;
5560                 *o) dflt=o;;
5561                 *p) dflt=p;;
5562                 *C) dflt=C;;
5563                 *L) dflt=L;;
5564                 *L1) dflt=L1;;
5565                 *) dflt=1;;
5566                 esac
5567                 ;;
5568         *)      dflt="$man1ext";;
5569         esac
5570         . ./myread
5571         man1ext="$ans"
5572         ;;
5573 esac
5574
5575 : see if we can have long filenames
5576 echo " "
5577 rmlist="$rmlist /tmp/cf$$"
5578 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5579 first=123456789abcdef
5580 second=/tmp/cf$$/$first
5581 $rm -f $first $second
5582 if (echo hi >$first) 2>/dev/null; then
5583         if $test -f 123456789abcde; then
5584                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
5585                 val="$undef"
5586         else
5587                 if (echo hi >$second) 2>/dev/null; then
5588                         if $test -f /tmp/cf$$/123456789abcde; then
5589                                 $cat <<'EOM'
5590 That's peculiar... You can have filenames longer than 14 characters, but only
5591 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
5592 I shall consider your system cannot support long filenames at all.
5593 EOM
5594                                 val="$undef"
5595                         else
5596                                 echo 'You can have filenames longer than 14 characters.' >&4
5597                                 val="$define"
5598                         fi
5599                 else
5600                         $cat <<'EOM'
5601 How confusing! Some of your filesystems are sane enough to allow filenames
5602 longer than 14 characters but some others like /tmp can't even think about them.
5603 So, for now on, I shall assume your kernel does not allow them at all.
5604 EOM
5605                         val="$undef"
5606                 fi
5607         fi
5608 else
5609         $cat <<'EOM'
5610 You can't have filenames longer than 14 chars.  You can't even think about them!
5611 EOM
5612         val="$undef"
5613 fi 
5614 set d_flexfnam
5615 eval $setvar
5616 $rm -rf /tmp/cf$$ 123456789abcde*
5617
5618 : determine where library module manual pages go
5619 set man3dir man3dir none
5620 eval $prefixit
5621 $cat <<EOM
5622
5623 $spackage has manual pages for many of the library modules.
5624 EOM
5625
5626 case "$nroff" in
5627 nroff)
5628         $cat <<'EOM'
5629 However, you don't have nroff, so they're probably useless to you.
5630 EOM
5631         case "$man3dir" in
5632         '') man3dir="none";;
5633         esac;;
5634 esac
5635
5636 case "$d_flexfnam" in
5637 undef)
5638         $cat <<'EOM'
5639 However, your system can't handle the long file names like File::Basename.3. 
5640 EOM
5641         case "$man3dir" in
5642         '') man3dir="none";;
5643         esac;;
5644 esac
5645
5646 echo "If you don't want the manual sources installed, answer 'none'."
5647 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5648 case "$man3dir" in
5649 '')     case "$prefix" in 
5650         *$prog*) dflt=`echo $man1dir | 
5651                         $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5652         *)      dflt="$privlib/man/man3" ;;
5653         esac
5654         ;;
5655 ' ') dflt=none;;
5656 *)      dflt="$man3dir" ;;
5657 esac
5658 echo " "
5659
5660 fn=dn+~
5661 rp="Where do the $package library man pages (source) go?"
5662 . ./getfile
5663 if test "X$man3direxp" != "X$ansexp"; then
5664         installman3dir=''
5665 fi
5666
5667 man3dir="$ans"
5668 man3direxp="$ansexp"
5669 case "$man3dir" in
5670 '') man3dir=' '
5671         installman3dir='';;
5672 esac
5673 if $afs; then
5674         $cat <<EOM
5675
5676 Since you are running AFS, I need to distinguish the directory in which
5677 manual pages reside from the directory in which they are installed (and from
5678 which they are presumably copied to the former directory by occult means).
5679
5680 EOM
5681         case "$installman3dir" in
5682         '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5683         *) dflt="$installman3dir";;
5684         esac
5685         fn=de~
5686         rp='Where will man pages be installed?'
5687         . ./getfile
5688         installman3dir="$ans"
5689 else
5690         installman3dir="$man3direxp"
5691 fi
5692
5693 : What suffix to use on installed man pages
5694
5695 case "$man3dir" in
5696 ' ')
5697         man3ext='0'
5698         ;;
5699 *)
5700         rp="What suffix should be used for the $package library man pages?"
5701         case "$man3ext" in
5702         '')     case "$man3dir" in
5703                 *3)  dflt=3 ;;
5704                 *3p) dflt=3p ;;
5705                 *3pm) dflt=3pm ;;
5706                 *l) dflt=l;;
5707                 *n) dflt=n;;
5708                 *o) dflt=o;;
5709                 *p) dflt=p;;
5710                 *C) dflt=C;;
5711                 *L) dflt=L;;
5712                 *L3) dflt=L3;;
5713                 *) dflt=3;;
5714                 esac
5715                 ;;
5716         *)      dflt="$man3ext";;
5717         esac
5718         . ./myread
5719         man3ext="$ans"
5720         ;;
5721 esac
5722
5723 : see if we have to deal with yellow pages, now NIS.
5724 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5725         if $test -f /usr/etc/nibindd; then
5726                 echo " "
5727                 echo "I'm fairly confident you're on a NeXT."
5728                 echo " "
5729                 rp='Do you get the hosts file via NetInfo?'
5730                 dflt=y
5731                 case "$hostcat" in
5732                 nidump*) ;;
5733                 '') ;;
5734                 *) dflt=n;;
5735                 esac
5736                 . ./myread
5737                 case "$ans" in
5738                 y*) hostcat='nidump hosts .';;
5739                 *)      case "$hostcat" in
5740                         nidump*) hostcat='';;
5741                         esac
5742                         ;;
5743                 esac
5744         fi
5745         case "$hostcat" in
5746         nidump*) ;;
5747         *)
5748                 case "$hostcat" in
5749                 *ypcat*) dflt=y;;
5750                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5751                                 dflt=y
5752                         else
5753                                 dflt=n
5754                         fi;;
5755                 *) dflt=n;;
5756                 esac
5757                 echo " "
5758                 rp='Are you getting the hosts file via yellow pages?'
5759                 . ./myread
5760                 case "$ans" in
5761                 y*) hostcat='ypcat hosts';;
5762                 *) hostcat='cat /etc/hosts';;
5763                 esac
5764                 ;;
5765         esac
5766 fi
5767 case "$hostcat" in
5768 '') hostcat='cat /etc/hosts';;
5769 esac
5770 case "$groupcat" in
5771 '') groupcat='cat /etc/group';;
5772 esac
5773 case "$passcat" in
5774 '') passcat='cat /etc/passwd';;
5775 esac
5776
5777 : now get the host name
5778 echo " "
5779 echo "Figuring out host name..." >&4
5780 case "$myhostname" in
5781 '') cont=true
5782         echo 'Maybe "hostname" will work...'
5783         if tans=`sh -c hostname 2>&1` ; then
5784                 myhostname=$tans
5785                 phostname=hostname
5786                 cont=''
5787         fi
5788         ;;
5789 *) cont='';;
5790 esac
5791 if $test "$cont"; then
5792         if ./xenix; then
5793                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
5794                 if tans=`cat /etc/systemid 2>&1` ; then
5795                         myhostname=$tans
5796                         phostname='cat /etc/systemid'
5797                         echo "Whadyaknow.  Xenix always was a bit strange..."
5798                         cont=''
5799                 fi
5800         elif $test -r /etc/systemid; then
5801                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5802         fi
5803 fi
5804 if $test "$cont"; then
5805         echo 'No, maybe "uuname -l" will work...'
5806         if tans=`sh -c 'uuname -l' 2>&1` ; then
5807                 myhostname=$tans
5808                 phostname='uuname -l'
5809         else
5810                 echo 'Strange.  Maybe "uname -n" will work...'
5811                 if tans=`sh -c 'uname -n' 2>&1` ; then
5812                         myhostname=$tans
5813                         phostname='uname -n'
5814                 else
5815                         echo 'Oh well, maybe I can mine it out of whoami.h...'
5816                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5817                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5818                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5819                         else
5820                                 case "$myhostname" in
5821                                 '') echo "Does this machine have an identity crisis or something?"
5822                                         phostname='';;
5823                                 *)
5824                                         echo "Well, you said $myhostname before..."
5825                                         phostname='echo $myhostname';;
5826                                 esac
5827                         fi
5828                 fi
5829         fi
5830 fi
5831 : you do not want to know about this
5832 set $myhostname
5833 myhostname=$1
5834
5835 : verify guess
5836 if $test "$myhostname" ; then
5837         dflt=y
5838         rp='Your host name appears to be "'$myhostname'".'" Right?"
5839         . ./myread
5840         case "$ans" in
5841         y*) ;;
5842         *) myhostname='';;
5843         esac
5844 fi
5845
5846 : bad guess or no guess
5847 while $test "X$myhostname" = X ; do
5848         dflt=''
5849         rp="Please type the (one word) name of your host:"
5850         . ./myread
5851         myhostname="$ans"
5852 done
5853
5854 : translate upper to lower if necessary
5855 case "$myhostname" in
5856 *[A-Z]*)
5857         echo "(Normalizing case in your host name)"
5858         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5859         ;;
5860 esac
5861
5862 case "$myhostname" in
5863 *.*)
5864         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5865         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5866         echo "(Trimming domain name from host name--host name is now $myhostname)"
5867         ;;
5868 *) case "$mydomain" in
5869         '')
5870                 {
5871                         test "X$hostcat" = "Xypcat hosts" &&
5872                         ypmatch "$myhostname" hosts 2>/dev/null |\
5873                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
5874                         $test -s hosts
5875                 } || {
5876                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
5877                                         /[       ]$myhostname[  . ]/p" > hosts
5878                 }
5879                 tmp_re="[       . ]"
5880                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
5881                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
5882                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5883                         hosts | $sort | $uniq | \
5884                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5885                 case `$echo X$dflt` in
5886                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
5887                         dflt=.
5888                         ;;
5889                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5890                         ;;
5891                 esac
5892                 case "$dflt" in
5893                 .)
5894                         tans=`./loc resolv.conf X /etc /usr/etc`
5895                         if $test -f "$tans"; then
5896                                 echo "(Attempting domain name extraction from $tans)"
5897                                 dflt=.`$sed -n -e 's/   / /g' \
5898                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
5899                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5900                                 case "$dflt" in
5901                                 .) dflt=.`$sed -n -e 's/        / /g' \
5902                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
5903                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5904                                         ;;
5905                                 esac
5906                         fi
5907                         ;;
5908                 esac
5909                 case "$dflt" in
5910                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5911                         dflt=.`sh -c domainname 2>/dev/null`
5912                         case "$dflt" in
5913                         '') dflt='.';;
5914                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5915                         esac
5916                         ;;
5917                 esac
5918                 case "$dflt" in
5919                 .) echo "(Lost all hope -- silly guess then)"
5920                         dflt='.uucp'
5921                         ;;
5922                 esac
5923                 $rm -f hosts
5924                 ;;
5925         *) dflt="$mydomain";;
5926         esac;;
5927 esac
5928 echo " "
5929 rp="What is your domain name?"
5930 . ./myread
5931 tans="$ans"
5932 case "$ans" in
5933 '') ;;
5934 .*) ;;
5935 *) tans=".$tans";;
5936 esac
5937 mydomain="$tans"
5938
5939 : translate upper to lower if necessary
5940 case "$mydomain" in
5941 *[A-Z]*)
5942         echo "(Normalizing case in your domain name)"
5943         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5944         ;;
5945 esac
5946
5947 : a little sanity check here
5948 case "$phostname" in
5949 '') ;;
5950 *)
5951         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5952         $myhostname$mydomain|$myhostname) ;;
5953         *)
5954                 case "$phostname" in
5955                 sed*)
5956                         echo "(That doesn't agree with your whoami.h file, by the way.)"
5957                         ;;
5958                 *)
5959                         echo "(That doesn't agree with your $phostname command, by the way.)"
5960                         ;;
5961                 esac
5962         ;;
5963         esac
5964         ;;
5965 esac
5966
5967 $cat <<EOM
5968
5969 I need to get your e-mail address in Internet format if possible, i.e.
5970 something like user@host.domain. Please answer accurately since I have
5971 no easy means to double check it. The default value provided below
5972 is most probably close to the reality but may not be valid from outside
5973 your organization...
5974
5975 EOM
5976 cont=x
5977 while test "$cont"; do
5978         case "$cf_email" in
5979         '') dflt="$cf_by@$myhostname$mydomain";;
5980         *) dflt="$cf_email";;
5981         esac
5982         rp='What is your e-mail address?'
5983         . ./myread
5984         cf_email="$ans"
5985         case "$cf_email" in
5986         *@*.*) cont='' ;;
5987         *)
5988                 rp='Address does not look like an Internet one.  Use it anyway?'
5989                 case "$fastread" in
5990                 yes) dflt=y ;;
5991                 *) dflt=n ;;
5992                 esac
5993                 . ./myread
5994                 case "$ans" in
5995                 y*) cont='' ;;
5996                 *) echo " " ;;
5997                 esac
5998                 ;;
5999         esac
6000 done
6001
6002 $cat <<EOM
6003
6004 If you or somebody else will be maintaining perl at your site, please
6005 fill in the correct e-mail address here so that they may be contacted
6006 if necessary. Currently, the "perlbug" program included with perl
6007 will send mail to this address in addition to perlbug@perl.com. You may
6008 enter "none" for no administrator.
6009
6010 EOM
6011 case "$perladmin" in
6012 '') dflt="$cf_email";;
6013 *) dflt="$perladmin";;
6014 esac
6015 rp='Perl administrator e-mail address'
6016 . ./myread
6017 perladmin="$ans"
6018
6019 : figure out how to guarantee perl startup
6020 case "$startperl" in
6021 '')
6022         case "$sharpbang" in
6023         *!)
6024                 $cat <<EOH
6025
6026 I can use the #! construct to start perl on your system. This will
6027 make startup of perl scripts faster, but may cause problems if you
6028 want to share those scripts and perl is not in a standard place
6029 ($binexp/perl) on all your platforms. The alternative is to force
6030 a shell by starting the script with a single ':' character.
6031
6032 EOH
6033                 dflt="$binexp/perl"
6034                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6035                 . ./myread
6036                 case "$ans" in
6037                 none)   startperl=": # use perl";;
6038                 *)      startperl="#!$ans"
6039                         if $test 30 -lt `echo "$ans" | wc -c`; then
6040                                 $cat >&4 <<EOM
6041
6042 WARNING:  Some systems limit the #! command to 32 characters.
6043 If you experience difficulty running Perl scripts with #!, try
6044 installing Perl in a directory with a shorter pathname.
6045
6046 EOM
6047                         fi ;;
6048                 esac
6049                 ;;
6050         *) startperl=": # use perl"
6051                 ;;
6052         esac
6053         ;;
6054 esac
6055 echo "I'll use $startperl to start perl scripts."
6056
6057 : figure best path for perl in scripts
6058 case "$perlpath" in
6059 '')
6060         perlpath="$binexp/perl"
6061         case "$startperl" in
6062         *!*) ;;
6063         *)
6064                 $cat <<EOH
6065
6066 I will use the "eval 'exec'" idiom to start Perl on your system.
6067 I can use the full path of your Perl binary for this purpose, but
6068 doing so may cause problems if you want to share those scripts and
6069 Perl is not always in a standard place ($binexp/perl).
6070
6071 EOH
6072                 dflt="$binexp/perl"
6073                 rp="What path shall I use in \"eval 'exec'\"?"
6074                 . ./myread
6075                 perlpath="$ans"
6076                 ;;
6077         esac
6078         ;;
6079 esac
6080 case "$startperl" in
6081 *!*)    ;;
6082 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6083 esac
6084
6085 : determine where public executable scripts go
6086 set scriptdir scriptdir
6087 eval $prefixit
6088 case "$scriptdir" in
6089 '')
6090         dflt="$bin"
6091         : guess some guesses
6092         $test -d /usr/share/scripts && dflt=/usr/share/scripts
6093         $test -d /usr/share/bin && dflt=/usr/share/bin
6094         $test -d /usr/local/script && dflt=/usr/local/script
6095         $test -d $prefixexp/script && dflt=$prefixexp/script
6096         set dflt
6097         eval $prefixup
6098         ;;
6099 *)  dflt="$scriptdir"
6100         ;;
6101 esac
6102 $cat <<EOM
6103  
6104 Some installations have a separate directory just for executable scripts so
6105 that they can mount it across multiple architectures but keep the scripts in
6106 one spot.  You might, for example, have a subdirectory of /usr/share for this.
6107 Or you might just lump your scripts in with all your other executables.
6108  
6109 EOM
6110 fn=d~
6111 rp='Where do you keep publicly executable scripts?'
6112 . ./getfile
6113 if $test "X$ansexp" != "X$scriptdirexp"; then
6114         installscript=''
6115 fi
6116 scriptdir="$ans"
6117 scriptdirexp="$ansexp"
6118 if $afs; then
6119         $cat <<EOM
6120
6121 Since you are running AFS, I need to distinguish the directory in which
6122 scripts reside from the directory in which they are installed (and from
6123 which they are presumably copied to the former directory by occult means).
6124
6125 EOM
6126         case "$installscript" in
6127         '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6128         *) dflt="$installscript";;
6129         esac
6130         fn=de~
6131         rp='Where will public scripts be installed?'
6132         . ./getfile
6133         installscript="$ans"
6134 else
6135         installscript="$scriptdirexp"
6136 fi
6137
6138 : determine where site specific libraries go.
6139 : Usual default is /usr/local/lib/perl5/site_perl/$apiversion
6140 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6141 case "$prefix" in
6142 *perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6143 *)       set dflt sitelib lib/$package/site_$prog/$apiversion ;;
6144 esac
6145 eval $prefixit
6146 $cat <<EOM
6147
6148 The installation process will also create a directory for
6149 site-specific extensions and modules.  Some users find it convenient
6150 to place all site-specific files in this directory rather than in the
6151 main distribution directory.
6152
6153 EOM
6154 fn=d~+
6155 rp='Pathname for the site-specific library files?'
6156 . ./getfile
6157 if $test "X$sitelibexp" != "X$ansexp"; then
6158         installsitelib=''
6159 fi
6160 sitelib="$ans"
6161 sitelibexp="$ansexp"
6162 if $afs; then
6163         $cat <<EOM
6164
6165 Since you are running AFS, I need to distinguish the directory in
6166 which site-specific files reside from the directory in which they are
6167 installed (and from which they are presumably copied to the former
6168 directory by occult means).
6169
6170 EOM
6171         case "$installsitelib" in
6172         '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6173         *) dflt="$installsitelib";;
6174         esac
6175         fn=de~
6176         rp='Where will site-specific files be installed?'
6177         . ./getfile
6178         installsitelib="$ans"
6179 else
6180         installsitelib="$sitelibexp"
6181 fi
6182
6183 : determine where site specific architecture-dependent libraries go.
6184 : sitelib  default is /usr/local/lib/perl5/site_perl/$apiversion
6185 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6186 : sitelib may have an optional trailing /share.
6187 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6188 tdflt="$tdflt/$archname"
6189 set sitearch sitearch none
6190 eval $prefixit
6191 case "$sitearch" in
6192 '')     dflt="$tdflt" ;;
6193 *)      dflt="$sitearch" ;;
6194 esac
6195 $cat <<EOM
6196
6197 The installation process will also create a directory for
6198 architecture-dependent site-specific extensions and modules.
6199
6200 EOM
6201 fn=nd~+
6202 rp='Pathname for the site-specific architecture-dependent library files?'
6203 . ./getfile
6204 if $test "X$sitearchexp" != "X$ansexp"; then
6205         installsitearch=''
6206 fi
6207 sitearch="$ans"
6208 sitearchexp="$ansexp"
6209 if $afs; then
6210         $cat <<EOM
6211
6212 Since you are running AFS, I need to distinguish the directory in
6213 which site-specific architecture-dependent library files reside from
6214 the directory in which they are installed (and from which they are
6215 presumably copied to the former directory by occult means).
6216
6217 EOM
6218         case "$installsitearch" in
6219         '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6220         *) dflt="$installsitearch";;
6221         esac
6222         fn=de~
6223         rp='Where will site-specific architecture-dependent files be installed?'
6224         . ./getfile
6225         installsitearch="$ans"
6226 else
6227         installsitearch="$sitearchexp"
6228 fi
6229
6230 cat <<EOM
6231
6232 Previous version of $package used the standard IO mechanisms as defined
6233 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
6234 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6235 the default.  This abstraction layer can use AT&T's sfio (if you already
6236 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
6237 problems with some extension modules.  Using PerlIO with stdio is safe,
6238 but it is slower than plain stdio and therefore is not the default.
6239
6240 If this doesn't make any sense to you, just accept the default 'n'.
6241 EOM
6242 case "$useperlio" in
6243 $define|true|[yY]*)     dflt='y';;
6244 *) dflt='n';;
6245 esac
6246 rp='Use the experimental PerlIO abstraction layer?'
6247 . ./myread
6248 case "$ans" in
6249 y|Y) 
6250         val="$define"
6251         ;;     
6252 *)      
6253         echo "Ok, doing things the stdio way"
6254         val="$undef"
6255         ;;
6256 esac
6257 set useperlio
6258 eval $setvar 
6259
6260 : Check how to convert floats to strings.
6261 if test "X$d_Gconvert" = X; then
6262         echo " "
6263         echo "Checking for an efficient way to convert floats to strings."
6264         $cat >try.c <<'EOP'
6265 #ifdef TRY_gconvert
6266 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6267 char *myname = "gconvert";
6268 #endif
6269 #ifdef TRY_gcvt
6270 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6271 char *myname = "gcvt";
6272 #endif
6273 #ifdef TRY_sprintf
6274 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6275 char *myname = "sprintf";
6276 #endif
6277
6278 #include <stdio.h>
6279
6280 int
6281 checkit(expect, got)
6282 char *expect;
6283 char *got;
6284 {
6285     if (strcmp(expect, got)) {
6286                 printf("%s oddity:  Expected %s, got %s\n",
6287                         myname, expect, got);
6288                 exit(1);
6289         }
6290 }
6291
6292 int main()
6293
6294         char buf[64]; 
6295         buf[63] = '\0';
6296
6297         /* This must be 1st test on (which?) platform */
6298         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6299         Gconvert(0.1, 8, 0, buf);
6300         checkit("0.1", buf);
6301
6302         Gconvert(1.0, 8, 0, buf); 
6303         checkit("1", buf);
6304
6305         Gconvert(0.0, 8, 0, buf); 
6306         checkit("0", buf);
6307
6308         Gconvert(-1.0, 8, 0, buf); 
6309         checkit("-1", buf);
6310
6311         /* Some Linux gcvt's give 1.e+5 here. */
6312         Gconvert(100000.0, 8, 0, buf); 
6313         checkit("100000", buf);
6314         
6315         /* Some Linux gcvt's give -1.e+5 here. */
6316         Gconvert(-100000.0, 8, 0, buf); 
6317         checkit("-100000", buf);
6318
6319         exit(0);
6320 }
6321 EOP
6322         case "$d_Gconvert" in
6323         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6324         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6325         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6326         *) xxx_list='gconvert gcvt sprintf' ;;
6327         esac
6328
6329         for xxx_convert in $xxx_list; do
6330                 echo "Trying $xxx_convert"
6331                 $rm -f try try$_o
6332                 set try -DTRY_$xxx_convert
6333                 if eval $compile; then
6334                         echo "$xxx_convert" found. >&4
6335                         if ./try; then
6336                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
6337                                 break;
6338                         else
6339                                 echo "...But $xxx_convert didn't work as I expected."
6340                         fi
6341                 else
6342                         echo "$xxx_convert NOT found." >&4
6343                 fi
6344         done
6345                 
6346         case "$xxx_convert" in
6347         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6348         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6349         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6350         esac
6351 fi
6352
6353 : Initialize h_fcntl
6354 h_fcntl=false
6355
6356 : Initialize h_sysfile
6357 h_sysfile=false
6358
6359 : access call always available on UNIX
6360 set access d_access
6361 eval $inlibc
6362
6363 : locate the flags for 'access()'
6364 case "$d_access" in
6365 "$define")
6366         echo " "
6367         $cat >access.c <<'EOCP'
6368 #include <sys/types.h>
6369 #ifdef I_FCNTL
6370 #include <fcntl.h>
6371 #endif
6372 #ifdef I_SYS_FILE
6373 #include <sys/file.h>
6374 #endif
6375 #ifdef I_UNISTD
6376 #include <unistd.h>
6377 #endif
6378 int main() {
6379         exit(R_OK);
6380 }
6381 EOCP
6382         : check sys/file.h first, no particular reason here
6383         if $test `./findhdr sys/file.h` && \
6384                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6385                 h_sysfile=true;
6386                 echo "<sys/file.h> defines the *_OK access constants." >&4
6387         elif $test `./findhdr fcntl.h` && \
6388                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6389                 h_fcntl=true;
6390                 echo "<fcntl.h> defines the *_OK access constants." >&4
6391         elif $test `./findhdr unistd.h` && \
6392                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6393                 echo "<unistd.h> defines the *_OK access constants." >&4
6394         else
6395                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6396         fi
6397         ;;
6398 esac
6399 $rm -f access*
6400
6401 : see if accessx exists
6402 set accessx d_accessx
6403 eval $inlibc
6404
6405 : see if alarm exists
6406 set alarm d_alarm
6407 eval $inlibc
6408
6409 : Look for GNU-cc style attribute checking
6410 echo " "
6411 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6412 $cat >attrib.c <<'EOCP'
6413 #include <stdio.h>
6414 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6415 EOCP
6416 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6417         if $contains 'warning' attrib.out >/dev/null 2>&1; then
6418                 echo "Your C compiler doesn't fully support __attribute__."
6419                 val="$undef"
6420         else
6421                 echo "Your C compiler supports __attribute__."
6422                 val="$define"
6423         fi
6424 else
6425         echo "Your C compiler doesn't seem to understand __attribute__ at all."
6426         val="$undef"
6427 fi
6428 set d_attribut
6429 eval $setvar
6430 $rm -f attrib*
6431
6432 : see if bcmp exists
6433 set bcmp d_bcmp
6434 eval $inlibc
6435
6436 : see if bcopy exists
6437 set bcopy d_bcopy
6438 eval $inlibc
6439
6440 : see if this is a unistd.h system
6441 set unistd.h i_unistd
6442 eval $inhdr
6443
6444 : see if getpgrp exists
6445 set getpgrp d_getpgrp
6446 eval $inlibc
6447
6448 case "$d_getpgrp" in
6449 "$define")
6450         echo " "
6451         echo "Checking to see which flavor of getpgrp is in use..."
6452         $cat >set.c <<EOP
6453 #$i_unistd I_UNISTD
6454 #include <sys/types.h>
6455 #ifdef I_UNISTD
6456 #  include <unistd.h>
6457 #endif
6458 int main()
6459 {
6460         if (getuid() == 0) {
6461                 printf("(I see you are running Configure as super-user...)\n");
6462                 setuid(1);
6463         }
6464 #ifdef TRY_BSD_PGRP
6465         if (getpgrp(1) == 0)
6466                 exit(0);
6467 #else
6468         if (getpgrp() > 0)
6469                 exit(0);
6470 #endif
6471         exit(1);
6472 }
6473 EOP
6474         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6475                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6476                 val="$define"
6477         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6478                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6479                 val="$undef"
6480         else
6481                 echo "I can't seem to compile and run the test program."
6482                 if ./usg; then
6483                         xxx="a USG one, i.e. you use getpgrp()."
6484                 else
6485                         # SVR4 systems can appear rather BSD-ish.
6486                         case "$i_unistd" in
6487                         $undef)
6488                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
6489                                 val="$define"
6490                                 ;;
6491                         $define)
6492                                 xxx="probably a USG one, i.e. you use getpgrp()."
6493                                 val="$undef"
6494                                 ;;
6495                         esac
6496                 fi
6497                 echo "Assuming your getpgrp is $xxx" >&4
6498         fi
6499         ;;
6500 *) val="$undef";;
6501 esac
6502 set d_bsdgetpgrp
6503 eval $setvar
6504 $rm -f set set.c
6505
6506 : see if setpgrp exists
6507 set setpgrp d_setpgrp
6508 eval $inlibc
6509
6510 case "$d_setpgrp" in
6511 "$define")
6512         echo " "
6513         echo "Checking to see which flavor of setpgrp is in use..."
6514         $cat >set.c <<EOP
6515 #$i_unistd I_UNISTD
6516 #include <sys/types.h>
6517 #ifdef I_UNISTD
6518 #  include <unistd.h>
6519 #endif
6520 int main()
6521 {
6522         if (getuid() == 0) {
6523                 printf("(I see you are running Configure as super-user...)\n");
6524                 setuid(1);
6525         }
6526 #ifdef TRY_BSD_PGRP
6527         if (-1 == setpgrp(1, 1))
6528                 exit(0);
6529 #else
6530         if (setpgrp() != -1)
6531                 exit(0);
6532 #endif
6533         exit(1);
6534 }
6535 EOP
6536         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6537                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6538                 val="$define"
6539         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6540                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6541                 val="$undef"
6542         else
6543                 echo "(I can't seem to compile and run the test program.)"
6544                 if ./usg; then
6545                         xxx="a USG one, i.e. you use setpgrp()."
6546                 else
6547                         # SVR4 systems can appear rather BSD-ish.
6548                         case "$i_unistd" in
6549                         $undef)
6550                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6551                                 val="$define"
6552                                 ;;
6553                         $define)
6554                                 xxx="probably a USG one, i.e. you use setpgrp()."
6555                                 val="$undef"
6556                                 ;;
6557                         esac
6558                 fi
6559                 echo "Assuming your setpgrp is $xxx" >&4
6560         fi
6561         ;;
6562 *) val="$undef";;
6563 esac
6564 set d_bsdsetpgrp
6565 eval $setvar
6566 $rm -f set set.c
6567 : see if bzero exists
6568 set bzero d_bzero
6569 eval $inlibc
6570
6571 : check for lengths of integral types
6572 echo " "
6573 case "$intsize" in
6574 '')
6575         echo "Checking to see how big your integers are..." >&4
6576         $cat >intsize.c <<'EOCP'
6577 #include <stdio.h>
6578 int main()
6579 {
6580         printf("intsize=%d;\n", sizeof(int));
6581         printf("longsize=%d;\n", sizeof(long));
6582         printf("shortsize=%d;\n", sizeof(short));
6583         exit(0);
6584 }
6585 EOCP
6586         set intsize
6587         if eval $compile_ok && ./intsize > /dev/null; then
6588                 eval `./intsize`
6589                 echo "Your integers are $intsize bytes long."
6590                 echo "Your long integers are $longsize bytes long."
6591                 echo "Your short integers are $shortsize bytes long."
6592         else
6593                 $cat >&4 <<EOM
6594 !
6595 Help! I can't compile and run the intsize test program: please enlighten me!
6596 (This is probably a misconfiguration in your system or libraries, and
6597 you really ought to fix it.  Still, I'll try anyway.)
6598 !
6599 EOM
6600                 dflt=4
6601                 rp="What is the size of an integer (in bytes)?"
6602                 . ./myread
6603                 intsize="$ans"
6604                 dflt=$intsize
6605                 rp="What is the size of a long integer (in bytes)?"
6606                 . ./myread
6607                 longsize="$ans"
6608                 dflt=2
6609                 rp="What is the size of a short integer (in bytes)?"
6610                 . ./myread
6611                 shortsize="$ans"
6612         fi
6613         ;;
6614 esac
6615 $rm -f intsize intsize.*
6616
6617 : see if signal is declared as pointer to function returning int or void
6618 echo " "
6619 xxx=`./findhdr signal.h`
6620 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6621 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
6622         echo "You have int (*signal())() instead of void." >&4
6623         val="$undef"
6624 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
6625         echo "You have void (*signal())()." >&4
6626         val="$define"
6627 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6628         echo "You have int (*signal())() instead of void." >&4
6629         val="$undef"
6630 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6631         echo "You have void (*signal())()." >&4
6632         val="$define"
6633 else
6634         case "$d_voidsig" in
6635         '')
6636         echo "I can't determine whether signal handler returns void or int..." >&4
6637                 dflt=void
6638                 rp="What type does your signal handler return?"
6639                 . ./myread
6640                 case "$ans" in
6641                 v*) val="$define";;
6642                 *) val="$undef";;
6643                 esac;;
6644         "$define")
6645                 echo "As you already told me, signal handler returns void." >&4
6646                 val="$define"
6647                 ;;
6648         *)      echo "As you already told me, signal handler returns int." >&4
6649                 val="$undef"
6650                 ;;
6651         esac
6652 fi
6653 set d_voidsig
6654 eval $setvar
6655 case "$d_voidsig" in
6656 "$define") signal_t="void";;
6657 *) signal_t="int";;
6658 esac
6659 $rm -f $$.tmp
6660
6661 : check for ability to cast large floats to 32-bit ints.
6662 echo " "
6663 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6664 if $test "$intsize" -ge 4; then
6665         xxx=int
6666 else
6667         xxx=long
6668 fi
6669 $cat >try.c <<EOCP
6670 #include <stdio.h>
6671 #include <sys/types.h>
6672 #include <signal.h>
6673 $signal_t blech(s) int s; { exit(3); }
6674 int main()
6675 {
6676         $xxx i32;
6677         double f, g;
6678         int result = 0;
6679         char str[16];
6680         signal(SIGFPE, blech);
6681
6682         /* Don't let compiler optimize the test away.  Store the number 
6683            in a writable string for gcc to pass to sscanf under HP/UX.
6684         */
6685         sprintf(str, "2147483647");
6686         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6687         g = 10 * f;
6688         i32  = ($xxx) g;
6689
6690         /* x86 processors will probably give 0x8000 0000, which is a
6691        sign change.  We don't want that.  We want to mimic SPARC
6692            behavior here, which is to preserve the sign and give
6693            back 0x7fff ffff.
6694         */
6695         if (i32 != ($xxx) f)
6696                 result |= 1;
6697         exit(result);
6698 }
6699 EOCP
6700 set try
6701 if eval $compile_ok; then
6702         ./try
6703         yyy=$?
6704 else
6705         echo "(I can't seem to compile the test program--assuming it can't)"
6706         yyy=1
6707 fi
6708 case "$yyy" in
6709 0)      val="$define"
6710         echo "Yup, it can."
6711         ;;
6712 *)      val="$undef"
6713         echo "Nope, it can't."
6714         ;;
6715 esac
6716 set d_casti32
6717 eval $setvar
6718 $rm -f try try.*
6719
6720 : check for ability to cast negative floats to unsigned
6721 echo " "
6722 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6723 $cat >try.c <<EOCP
6724 #include <stdio.h>
6725 #include <sys/types.h>
6726 #include <signal.h>
6727 $signal_t blech(s) int s; { exit(7); }
6728 $signal_t blech_in_list(s) int s; { exit(4); }
6729 unsigned long dummy_long(p) unsigned long p; { return p; }
6730 unsigned int dummy_int(p) unsigned int p; { return p; }
6731 unsigned short dummy_short(p) unsigned short p; { return p; }
6732 int main()
6733 {
6734         double f;
6735         unsigned long along;
6736         unsigned int aint;
6737         unsigned short ashort;
6738         int result = 0;
6739         char str[16];
6740         
6741         /* Frustrate gcc-2.7.2's optimizer which failed this test with
6742            a direct f = -123. assignment.  gcc-2.8.0 reportedly
6743            optimized the whole file away
6744         */
6745         /* Store the number in a writable string for gcc to pass to 
6746            sscanf under HP/UX.
6747         */
6748         sprintf(str, "-123");
6749         sscanf(str, "%lf", &f);  /* f = -123.; */
6750
6751         signal(SIGFPE, blech);
6752         along = (unsigned long)f;
6753         aint = (unsigned int)f;
6754         ashort = (unsigned short)f;
6755         if (along != (unsigned long)-123)
6756                 result |= 1;
6757         if (aint != (unsigned int)-123)
6758                 result |= 1;
6759         if (ashort != (unsigned short)-123)
6760                 result |= 1;
6761         sprintf(str, "1073741824.");
6762         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6763         f = f + f;
6764         along = 0;
6765         along = (unsigned long)f;
6766         if (along != 0x80000000)
6767                 result |= 2;
6768         f -= 1.;
6769         along = 0;
6770         along = (unsigned long)f;
6771         if (along != 0x7fffffff)
6772                 result |= 1;
6773         f += 2.;
6774         along = 0;
6775         along = (unsigned long)f;
6776         if (along != 0x80000001)
6777                 result |= 2;
6778         if (result)
6779                 exit(result);
6780         signal(SIGFPE, blech_in_list);
6781         sprintf(str, "123.");
6782         sscanf(str, "%lf", &f);  /* f = 123.; */
6783         along = dummy_long((unsigned long)f);
6784         aint = dummy_int((unsigned int)f);
6785         ashort = dummy_short((unsigned short)f);
6786         if (along != (unsigned long)123)
6787                 result |= 4;
6788         if (aint != (unsigned int)123)
6789                 result |= 4;
6790         if (ashort != (unsigned short)123)
6791                 result |= 4;
6792         exit(result);
6793
6794 }
6795 EOCP
6796 set try
6797 if eval $compile_ok; then
6798         ./try
6799         castflags=$?
6800 else
6801         echo "(I can't seem to compile the test program--assuming it can't)"
6802         castflags=7
6803 fi
6804 case "$castflags" in
6805 0)      val="$define"
6806         echo "Yup, it can."
6807         ;;
6808 *)      val="$undef"
6809         echo "Nope, it can't."
6810         ;;
6811 esac
6812 set d_castneg
6813 eval $setvar
6814 $rm -f try.*
6815
6816 : see if vprintf exists
6817 echo " "
6818 if set vprintf val -f d_vprintf; eval $csym; $val; then
6819         echo 'vprintf() found.' >&4
6820         val="$define"
6821         $cat >vprintf.c <<'EOF'
6822 #include <varargs.h>
6823
6824 int main() { xxx("foo"); }
6825
6826 xxx(va_alist)
6827 va_dcl
6828 {
6829         va_list args;
6830         char buf[10];
6831
6832         va_start(args);
6833         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6834 }
6835 EOF
6836         set vprintf
6837         if eval $compile && ./vprintf; then
6838                 echo "Your vsprintf() returns (int)." >&4
6839                 val2="$undef"
6840         else
6841                 echo "Your vsprintf() returns (char*)." >&4
6842                 val2="$define"
6843         fi
6844 else
6845         echo 'vprintf() NOT found.' >&4
6846                 val="$undef"
6847                 val2="$undef"
6848 fi
6849 set d_vprintf
6850 eval $setvar
6851 val=$val2
6852 set d_charvspr
6853 eval $setvar
6854
6855 : see if chown exists
6856 set chown d_chown
6857 eval $inlibc
6858
6859 : see if chroot exists
6860 set chroot d_chroot
6861 eval $inlibc
6862
6863 : see if chsize exists
6864 set chsize d_chsize
6865 eval $inlibc
6866
6867 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6868 while $test $# -ge 2; do
6869         case "$1" in
6870         $define) echo "#include <$2>";;
6871         esac ;
6872     shift 2;
6873 done > try.c;
6874 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6875 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6876         val="$define";
6877 else
6878         val="$undef";
6879 fi;
6880 set $varname;
6881 eval $setvar;
6882 $rm -f try.c try.o'
6883
6884 : see if this is a sys/uio.h system
6885 set sys/uio.h i_sysuio
6886 eval $inhdr
6887
6888 echo "Checking to see if your system supports struct iovec..." >&4
6889 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6890 eval $hasfield
6891 case "$d_iovec_s" in
6892 "$define")      echo "Yup, it does." >&4
6893                 ;;
6894 *)              echo "Nope, it doesn't." >&4
6895                 ;;
6896 esac
6897
6898 socketlib=''
6899 sockethdr=''
6900 : see whether socket exists
6901 echo " "
6902 $echo $n "Hmm... $c" >&4
6903 if set socket val -f d_socket; eval $csym; $val; then
6904         echo "Looks like you have Berkeley networking support." >&4
6905         d_socket="$define"
6906         if set setsockopt val -f; eval $csym; $val; then
6907                 d_oldsock="$undef"
6908         else
6909                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6910                 d_oldsock="$define"
6911         fi
6912 else
6913         if $contains socklib libc.list >/dev/null 2>&1; then
6914                 echo "Looks like you have Berkeley networking support." >&4
6915                 d_socket="$define"
6916                 : we will have to assume that it supports the 4.2 BSD interface
6917                 d_oldsock="$undef"
6918         else
6919                 echo "You don't have Berkeley networking in libc$_a..." >&4
6920                 if test "X$d_socket" = "X$define"; then
6921                    echo "...but you seem to believe that you have sockets." >&4
6922                 else
6923                         for net in net socket
6924                         do
6925                                 if test -f /usr/lib/lib$net$_a; then
6926                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
6927                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6928                                         if $contains socket libc.list >/dev/null 2>&1; then
6929                                                 d_socket="$define"
6930                                                 socketlib="-l$net"
6931                                                 case "$net" in
6932                                                 net)
6933                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
6934                                                         sockethdr="-I/usr/netinclude"
6935                                                         ;;
6936                                                 esac
6937                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
6938                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
6939                                                         d_oldsock="$undef"
6940                                                 else
6941                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6942                                                         d_oldsock="$define"
6943                                                 fi
6944                                                 break
6945                                         fi
6946                                 fi
6947                         done
6948                         if test "X$d_socket" != "X$define"; then
6949                            echo "or anywhere else I see." >&4
6950                            d_socket="$undef"
6951                            d_oldsock="$undef"
6952                         fi
6953                 fi
6954         fi
6955 fi
6956
6957 : see if socketpair exists
6958 set socketpair d_sockpair
6959 eval $inlibc
6960
6961
6962 echo " "
6963 echo "Checking the availability of certain socket constants..." >& 4
6964 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
6965         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
6966         $cat >try.c <<EOF
6967 #include <sys/types.h>
6968 #include <sys/socket.h>
6969 int main() {
6970     int i = $ENUM;
6971 }
6972 EOF
6973         val="$undef"
6974         set try; if eval $compile; then
6975                 val="$define"
6976         fi
6977         set d_${enum}; eval $setvar
6978         $rm -f try.c try
6979 done
6980
6981 set sendmsg d_sendmsg
6982 eval $inlibc
6983
6984 set recvmsg d_recvmsg
6985 eval $inlibc
6986
6987 echo " "
6988 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
6989 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6990 eval $hasfield
6991 case "$d_msghdr_s" in
6992 "$define")      echo "Yup, it does." >&4
6993                 ;;
6994 *)              echo "Nope, it doesn't." >&4
6995                 ;;
6996 esac
6997
6998 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
6999 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
7000 eval $hasfield
7001 case "$d_cmsghdr_s" in
7002 "$define")      echo "Yup, it does." >&4
7003                 ;;
7004 *)              echo "Nope, it doesn't." >&4
7005                 ;;
7006 esac
7007
7008 : check for const keyword
7009 echo " "
7010 echo 'Checking to see if your C compiler knows about "const"...' >&4
7011 $cat >const.c <<'EOCP'
7012 typedef struct spug { int drokk; } spug;
7013 int main()
7014 {
7015         const char *foo;
7016         const spug y;
7017 }
7018 EOCP
7019 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7020         val="$define"
7021         echo "Yup, it does."
7022 else
7023         val="$undef"
7024         echo "Nope, it doesn't."
7025 fi
7026 set d_const
7027 eval $setvar
7028
7029 : see if crypt exists
7030 echo " "
7031 if set crypt val -f d_crypt; eval $csym; $val; then
7032         echo 'crypt() found.' >&4
7033         val="$define"
7034         cryptlib=''
7035 else
7036         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7037         if $test -z "$cryptlib"; then
7038                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7039         else
7040                 cryptlib=-lcrypt
7041         fi
7042         if $test -z "$cryptlib"; then
7043                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7044         else
7045                 cryptlib=-lcrypt
7046         fi
7047         if $test -z "$cryptlib"; then
7048                 cryptlib=`./loc libcrypt$_a "" $libpth`
7049         else
7050                 cryptlib=-lcrypt
7051         fi
7052         if $test -z "$cryptlib"; then
7053                 echo 'crypt() NOT found.' >&4
7054                 val="$undef"
7055         else
7056                 val="$define"
7057         fi
7058 fi
7059 set d_crypt
7060 eval $setvar
7061
7062 : get csh whereabouts
7063 case "$csh" in
7064 'csh') val="$undef" ;;
7065 *) val="$define" ;;
7066 esac
7067 set d_csh
7068 eval $setvar
7069 : Respect a hint or command line value for full_csh.
7070 case "$full_csh" in
7071 '') full_csh=$csh ;;
7072 esac
7073
7074 : see if cuserid exists
7075 set cuserid d_cuserid
7076 eval $inlibc
7077
7078 : see if this is a limits.h system
7079 set limits.h i_limits
7080 eval $inhdr
7081
7082 : see if this is a float.h system
7083 set float.h i_float
7084 eval $inhdr
7085
7086 : See if number of significant digits in a double precision number is known
7087 echo " "
7088 $cat >dbl_dig.c <<EOM
7089 #$i_limits I_LIMITS
7090 #$i_float I_FLOAT
7091 #ifdef I_LIMITS
7092 #include <limits.h>
7093 #endif
7094 #ifdef I_FLOAT
7095 #include <float.h>
7096 #endif
7097 #ifdef DBL_DIG
7098 printf("Contains DBL_DIG");
7099 #endif
7100 EOM
7101 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7102 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7103         echo "DBL_DIG found." >&4
7104         val="$define"
7105 else
7106         echo "DBL_DIG NOT found." >&4
7107         val="$undef"
7108 fi
7109 $rm -f dbl_dig.?
7110 set d_dbl_dig
7111 eval $setvar
7112
7113
7114 if $test X"$use64bits" = X"$define"; then
7115         : see if dbminit64 exists
7116         set dbminit64 d_dbminit64
7117         eval $inlibc
7118
7119         : see if dbmclose64 exists
7120         set dbmclose64 d_dbmclose64
7121         eval $inlibc
7122
7123         : see if fetch64 exists
7124         set fetch64 d_fetch64
7125         eval $inlibc
7126
7127         : see if store64 exists
7128         set store64 d_store64
7129         eval $inlibc
7130
7131         : see if delete64 exists
7132         set delete64 d_delete64
7133         eval $inlibc
7134
7135         : see if firstkey64 exists
7136         set firstkey64 d_firstkey64
7137         eval $inlibc
7138
7139         : see if nextkey64 exists
7140         set nextkey64 d_nextkey64
7141         eval $inlibc
7142 else
7143         val="$undef"
7144         for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7145         do
7146                 set $xxx
7147                 eval $setvar
7148         done
7149 fi
7150
7151 : see if difftime exists
7152 set difftime d_difftime
7153 eval $inlibc
7154
7155 : see if sys/stat.h is available
7156 set sys/stat.h i_sysstat
7157 eval $inhdr
7158
7159 : see if this is a dirent system
7160 echo " "
7161 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7162         val="$define"
7163         echo "<dirent.h> found." >&4
7164 else
7165         val="$undef"
7166         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7167                 echo "<sys/dir.h> found." >&4
7168                 echo " "
7169         else
7170                 xinc=`./findhdr sys/ndir.h`
7171         fi
7172         echo "<dirent.h> NOT found." >&4
7173 fi
7174 set i_dirent
7175 eval $setvar
7176
7177 : Look for type of directory structure.
7178 echo " "
7179 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7180
7181 case "$direntrytype" in
7182 ''|' ')
7183         case "$i_dirent" in
7184         $define) guess1='struct dirent' ;;
7185         *) guess1='struct direct'  ;;
7186         esac
7187         ;;
7188 *)      guess1="$direntrytype"
7189         ;;
7190 esac
7191
7192 case "$guess1" in
7193 'struct dirent') guess2='struct direct' ;;
7194 *) guess2='struct dirent' ;;
7195 esac
7196                 
7197 if $contains "$guess1" try.c >/dev/null 2>&1; then
7198         direntrytype="$guess1"
7199         echo "Your directory entries are $direntrytype." >&4
7200 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7201         direntrytype="$guess2"
7202         echo "Your directory entries seem to be $direntrytype." >&4
7203 else
7204         echo "I don't recognize your system's directory entries." >&4
7205         rp="What type is used for directory entries on this system?"
7206         dflt="$guess1"
7207         . ./myread
7208         direntrytype="$ans"
7209 fi
7210 $rm -f try.c
7211
7212
7213 : see if the directory entry stores field length
7214 echo " "
7215 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7216 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7217         echo "Good, your directory entry keeps length information in d_namlen." >&4
7218         val="$define"
7219 else
7220         echo "Your directory entry does not know about the d_namlen field." >&4
7221         val="$undef"
7222 fi
7223 set d_dirnamlen
7224 eval $setvar
7225 $rm -f try.c
7226
7227
7228 if $test X"$use64bits" = X"$define"; then
7229         : see if fstat64 exists
7230         set fstat64 d_fstat64
7231         eval $inlibc
7232
7233         : see if ftruncate64 exists
7234         set ftruncate64 d_ftruncate64
7235         eval $inlibc
7236
7237         : see if lockf64 exists
7238         set lockf64 d_lockf64
7239         eval $inlibc
7240
7241         : see if llseek exists
7242         set llseek d_llseek
7243         eval $inlibc
7244
7245         : see if lseek64 exists
7246         set lseek64 d_lseek64
7247         eval $inlibc
7248
7249         : see if lstat64 exists
7250         set lstat64 d_lstat64
7251         eval $inlibc
7252
7253         : see if open64 exists
7254         set open64 d_open64
7255         eval $inlibc
7256
7257         : see if opendir64 exists
7258         set opendir64 d_opendir64
7259         eval $inlibc
7260
7261         : see if readdir64 exists
7262         set readdir64 d_readdir64
7263         eval $inlibc
7264
7265         : see if seekdir64 exists
7266         set seekdir64 d_seekdir64
7267         eval $inlibc
7268
7269         : see if stat64 exists
7270         set stat64 d_stat64
7271         eval $inlibc
7272
7273         : see if telldir64 exists
7274         set telldir64 d_telldir64
7275         eval $inlibc
7276
7277         : see if truncate64 exists
7278         set truncate64 d_truncate64
7279         eval $inlibc
7280
7281         : check for off64_t
7282         echo " "
7283         echo $n "Checking to see if your system supports off64_t...$c" >&4
7284         $cat >try.c <<EOCP
7285 #include <sys/types.h>
7286 #include <unistd.h>
7287 off64_t foo() { off64_t x; x = 7; return x; }'
7288 EOCP
7289         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7290                 val="$define"
7291                 echo " Yup, it does." >&4
7292         else
7293                 val="$undef"
7294                 echo " Nope, it doesn't." >&4
7295         fi
7296         $rm -f try.*
7297         set d_off64_t
7298         eval $setvar
7299
7300         : check for offset_t
7301         echo " "
7302         echo $n "Checking to see if your system supports offset_t...$c" >&4
7303         $cat >try.c <<EOCP
7304 #include <sys/types.h>
7305 #include <unistd.h>
7306 offset_t foo() { offset_t x; x = 7; return x; }'
7307 EOCP
7308         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7309                 val="$define"
7310                 echo " Yup, it does." >&4
7311         else
7312                 val="$undef"
7313                 echo " Nope, it doesn't." >&4
7314         fi
7315         $rm -f try.*
7316         set d_offset_t
7317         eval $setvar
7318
7319         : check for ino64_t
7320         echo " "
7321         echo $n "Checking to see if your system supports ino64_t...$c" >&4
7322         val="$undef"
7323         case "$i_sysstat" in
7324         "$define" )
7325                 $cat >try.c <<EOCP
7326 #include <sys/types.h>
7327 #include <sys/stat.h>
7328 ino64_t foo() { ino64_t x; x = 7; return x; }'
7329 EOCP
7330                 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7331                         val="$define"
7332                 fi
7333                 $rm -f try.*
7334                 ;;
7335         esac
7336         if $test "X$val" = X"$define"; then
7337                 echo " Yup, it does." >&4
7338         else
7339                 echo " Nope, it doesn't." >&4
7340         fi
7341         set d_ino64_t
7342         eval $setvar
7343
7344         : check for struct flock64
7345         echo " "
7346         echo "Checking to see if your system supports struct flock64..." >&4
7347         if $h_fcntl; then
7348                 set d_flock64_s flock64 l_len define fcntl.h
7349                 eval $hasfield
7350         else
7351                 val="$undef"
7352                 set d_flock64_s
7353                 eval $setvar
7354         fi
7355         case "$d_flock64_s" in
7356         "$define")      echo "Yup, it does." >&4
7357                         ;;
7358         *)              echo "Nope, it doesn't." >&4
7359                         ;;
7360         esac
7361
7362         : check for struct dirent64
7363         echo " "
7364         echo "Checking to see if your system supports struct dirent64..." >&4
7365         set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7366         eval $hasfield
7367         case "$d_dirent64_s" in
7368         "$define")      echo "Yup, it does." >&4
7369                         ;;
7370         *)              echo "Nope, it doesn't." >&4
7371                         ;;
7372         esac
7373
7374 else
7375         val="$undef"
7376         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
7377         do
7378                 set $xxx
7379                 eval $setvar
7380         done
7381 fi
7382
7383 : see if dlerror exists
7384 xxx_runnm="$runnm"
7385 runnm=false
7386 set dlerror d_dlerror
7387 eval $inlibc
7388 runnm="$xxx_runnm"
7389
7390 : see if dlfcn is available
7391 set dlfcn.h i_dlfcn
7392 eval $inhdr
7393
7394 case "$usedl" in
7395 $define|y|true)
7396         $cat << EOM
7397
7398 On a few systems, the dynamically loaded modules that perl generates and uses
7399 will need a different extension than shared libs. The default will probably
7400 be appropriate.
7401
7402 EOM
7403         case "$dlext" in
7404         '')     dflt="$so" ;;
7405         *)      dflt="$dlext" ;;
7406         esac
7407         rp='What is the extension of dynamically loaded modules'
7408         . ./myread
7409         dlext="$ans"
7410         ;;
7411 *)
7412         dlext="none"
7413         ;;
7414 esac
7415
7416 : Check if dlsym need a leading underscore
7417 echo " "
7418 val="$undef"
7419
7420 case "$dlsrc" in
7421 dl_dlopen.xs)
7422         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7423         $cat >dyna.c <<'EOM'
7424 fred () { }
7425 EOM
7426
7427 $cat >fred.c<<EOM
7428
7429 #include <stdio.h>
7430 #$i_dlfcn I_DLFCN
7431 #ifdef I_DLFCN
7432 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
7433 #else
7434 #include <sys/types.h>
7435 #include <nlist.h>
7436 #include <link.h>
7437 #endif
7438
7439 extern int fred() ;
7440
7441 int main()
7442 {
7443     void * handle ;
7444     void * symbol ;
7445 #ifndef RTLD_LAZY
7446     int mode = 1 ;
7447 #else
7448     int mode = RTLD_LAZY ;
7449 #endif
7450     handle = dlopen("./dyna.$dlext", mode) ;
7451     if (handle == NULL) {
7452         printf ("1\n") ;
7453         fflush (stdout) ;
7454         exit(0);
7455     }
7456     symbol = dlsym(handle, "fred") ;
7457     if (symbol == NULL) {
7458         /* try putting a leading underscore */
7459         symbol = dlsym(handle, "_fred") ;
7460         if (symbol == NULL) {
7461             printf ("2\n") ;
7462             fflush (stdout) ;
7463             exit(0);
7464         }
7465         printf ("3\n") ;
7466     }
7467     else
7468         printf ("4\n") ;
7469     fflush (stdout) ;
7470     exit(0);
7471 }
7472 EOM
7473         : Call the object file tmp-dyna.o in case dlext=o.
7474         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
7475                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
7476                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
7477                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7478                 xxx=`./fred`
7479                 case $xxx in
7480                 1)      echo "Test program failed using dlopen." >&4
7481                         echo "Perhaps you should not use dynamic loading." >&4;;
7482                 2)      echo "Test program failed using dlsym." >&4
7483                         echo "Perhaps you should not use dynamic loading." >&4;;
7484                 3)      echo "dlsym needs a leading underscore" >&4
7485                         val="$define" ;;
7486                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
7487                 esac
7488         else
7489                 echo "I can't compile and run the test program." >&4
7490         fi
7491         ;;
7492 esac
7493                 
7494 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7495
7496 set d_dlsymun
7497 eval $setvar
7498
7499 hasproto='varname=$1; func=$2; shift; shift;
7500 while $test $# -ge 2; do
7501         case "$1" in
7502         $define) echo "#include <$2>";;
7503         esac ;
7504     shift 2;
7505 done > try.c;
7506 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7507 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7508         echo "$func() prototype found.";
7509         val="$define";
7510 else
7511         echo "$func() prototype NOT found.";
7512         val="$undef";
7513 fi;
7514 set $varname;
7515 eval $setvar;
7516 $rm -f try.c tryout.c'
7517
7518 : see if prototype for drand48 is available
7519 echo " "
7520 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7521 eval $hasproto
7522
7523 : see if dup2 exists
7524 set dup2 d_dup2
7525 eval $inlibc
7526
7527 : see if eaccess exists
7528 set eaccess d_eaccess
7529 eval $inlibc
7530
7531 : see if endgrent exists
7532 set endgrent d_endgrent
7533 eval $inlibc
7534
7535 : see if endhostent exists
7536 set endhostent d_endhent
7537 eval $inlibc
7538
7539 : see if endnetent exists
7540 set endnetent d_endnent
7541 eval $inlibc
7542
7543 : see if endprotoent exists
7544 set endprotoent d_endpent
7545 eval $inlibc
7546
7547 : see if endpwent exists
7548 set endpwent d_endpwent
7549 eval $inlibc
7550
7551 : see if endservent exists
7552 set endservent d_endsent
7553 eval $inlibc
7554
7555 : Locate the flags for 'open()'
7556 echo " "
7557 $cat >open3.c <<'EOCP'
7558 #include <sys/types.h>
7559 #ifdef I_FCNTL
7560 #include <fcntl.h>
7561 #endif
7562 #ifdef I_SYS_FILE
7563 #include <sys/file.h>
7564 #endif
7565 int main() {
7566         if(O_RDONLY);
7567 #ifdef O_TRUNC
7568         exit(0);
7569 #else
7570         exit(1);
7571 #endif
7572 }
7573 EOCP
7574 : check sys/file.h first to get FREAD on Sun
7575 if $test `./findhdr sys/file.h` && \
7576                 set open3 -DI_SYS_FILE && eval $compile; then
7577         h_sysfile=true;
7578         echo "<sys/file.h> defines the O_* constants..." >&4
7579         if ./open3; then
7580                 echo "and you have the 3 argument form of open()." >&4
7581                 val="$define"
7582         else
7583                 echo "but not the 3 argument form of open().  Oh, well." >&4
7584                 val="$undef"
7585         fi
7586 elif $test `./findhdr fcntl.h` && \
7587                 set open3 -DI_FCNTL && eval $compile; then
7588         h_fcntl=true;
7589         echo "<fcntl.h> defines the O_* constants..." >&4
7590         if ./open3; then
7591                 echo "and you have the 3 argument form of open()." >&4
7592                 val="$define"
7593         else
7594                 echo "but not the 3 argument form of open().  Oh, well." >&4
7595                 val="$undef"
7596         fi
7597 else
7598         val="$undef"
7599         echo "I can't find the O_* constant definitions!  You got problems." >&4
7600 fi
7601 set d_open3
7602 eval $setvar
7603 $rm -f open3*
7604
7605 : check for non-blocking I/O stuff
7606 case "$h_sysfile" in
7607 true) echo "#include <sys/file.h>" > head.c;;
7608 *)
7609         case "$h_fcntl" in
7610         true) echo "#include <fcntl.h>" > head.c;;
7611         *) echo "#include <sys/fcntl.h>" > head.c;;
7612         esac
7613         ;;
7614 esac
7615 echo " "
7616 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7617 case "$o_nonblock" in
7618 '')
7619         $cat head.c > try.c
7620         $cat >>try.c <<'EOCP'
7621 int main() {
7622 #ifdef O_NONBLOCK
7623         printf("O_NONBLOCK\n");
7624         exit(0);
7625 #endif
7626 #ifdef O_NDELAY
7627         printf("O_NDELAY\n");
7628         exit(0);
7629 #endif
7630 #ifdef FNDELAY
7631         printf("FNDELAY\n");
7632         exit(0);
7633 #endif
7634         exit(0);
7635 }
7636 EOCP
7637         set try
7638         if eval $compile_ok; then
7639                 o_nonblock=`./try`
7640                 case "$o_nonblock" in
7641                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7642                 *) echo "Seems like we can use $o_nonblock.";;
7643                 esac
7644         else
7645                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7646         fi
7647         ;;
7648 *) echo "Using $hint value $o_nonblock.";;
7649 esac
7650 $rm -f try try.* .out core
7651
7652 echo " "
7653 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7654 case "$eagain" in
7655 '')
7656         $cat head.c > try.c
7657         $cat >>try.c <<EOCP
7658 #include <errno.h>
7659 #include <sys/types.h>
7660 #include <signal.h>
7661 #define MY_O_NONBLOCK $o_nonblock
7662 #ifndef errno  /* XXX need better Configure test */
7663 extern int errno;
7664 #endif
7665 $signal_t blech(x) int x; { exit(3); }
7666 EOCP
7667         $cat >> try.c <<'EOCP'
7668 int main()
7669 {
7670         int pd[2];
7671         int pu[2];
7672         char buf[1];
7673         char string[100];
7674
7675         pipe(pd);       /* Down: child -> parent */
7676         pipe(pu);       /* Up: parent -> child */
7677         if (0 != fork()) {
7678                 int ret;
7679                 close(pd[1]);   /* Parent reads from pd[0] */
7680                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
7681                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7682                         exit(1);
7683                 signal(SIGALRM, blech);
7684                 alarm(5);
7685                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
7686                         exit(2);
7687                 sprintf(string, "%d\n", ret);
7688                 write(2, string, strlen(string));
7689                 alarm(0);
7690 #ifdef EAGAIN
7691                 if (errno == EAGAIN) {
7692                         printf("EAGAIN\n");
7693                         goto ok;
7694                 }
7695 #endif
7696 #ifdef EWOULDBLOCK
7697                 if (errno == EWOULDBLOCK)
7698                         printf("EWOULDBLOCK\n");
7699 #endif
7700         ok:
7701                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
7702                 sleep(2);                               /* Give it time to close our pipe */
7703                 alarm(5);
7704                 ret = read(pd[0], buf, 1);      /* Should read EOF */
7705                 alarm(0);
7706                 sprintf(string, "%d\n", ret);
7707                 write(3, string, strlen(string));
7708                 exit(0);
7709         }
7710
7711         close(pd[0]);                   /* We write to pd[1] */
7712         close(pu[1]);                   /* We read from pu[0] */
7713         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
7714         close(pd[1]);                   /* Pipe pd is now fully closed! */
7715         exit(0);                                /* Bye bye, thank you for playing! */
7716 }
7717 EOCP
7718         set try
7719         if eval $compile_ok; then
7720                 echo "$startsh" >mtry
7721                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7722                 chmod +x mtry
7723                 ./mtry >/dev/null 2>&1
7724                 case $? in
7725                 0) eagain=`$cat try.out`;;
7726                 1) echo "Could not perform non-blocking setting!";;
7727                 2) echo "I did a successful read() for something that was not there!";;
7728                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7729                 *) echo "Something terribly wrong happened during testing.";;
7730                 esac
7731                 rd_nodata=`$cat try.ret`
7732                 echo "A read() system call with no data present returns $rd_nodata."
7733                 case "$rd_nodata" in
7734                 0|-1) ;;
7735                 *)
7736                         echo "(That's peculiar, fixing that to be -1.)"
7737                         rd_nodata=-1
7738                         ;;
7739                 esac
7740                 case "$eagain" in
7741                 '')
7742                         echo "Forcing errno EAGAIN on read() with no data available."
7743                         eagain=EAGAIN
7744                         ;;
7745                 *)
7746                         echo "Your read() sets errno to $eagain when no data is available."
7747                         ;;
7748                 esac
7749                 status=`$cat try.err`
7750                 case "$status" in
7751                 0) echo "And it correctly returns 0 to signal EOF.";;
7752                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7753                 *) echo "However, your read() returns '$status' on EOF??";;
7754                 esac
7755                 val="$define"
7756                 if test "$status" = "$rd_nodata"; then
7757                         echo "WARNING: you can't distinguish between EOF and no data!"
7758                         val="$undef"
7759                 fi
7760         else
7761                 echo "I can't compile the test program--assuming errno EAGAIN will do."
7762                 eagain=EAGAIN
7763         fi
7764         set d_eofnblk
7765         eval $setvar
7766         ;;
7767 *)
7768         echo "Using $hint value $eagain."
7769         echo "Your read() returns $rd_nodata when no data is present."
7770         case "$d_eofnblk" in
7771         "$define") echo "And you can see EOF because read() returns 0.";;
7772         "$undef") echo "But you can't see EOF status from read() returned value.";;
7773         *)
7774                 echo "(Assuming you can't see EOF status from read anyway.)"
7775                 d_eofnblk=$undef
7776                 ;;
7777         esac
7778         ;;
7779 esac
7780 $rm -f try try.* .out core head.c mtry
7781
7782 : see if fchmod exists
7783 set fchmod d_fchmod
7784 eval $inlibc
7785
7786 : see if fchown exists
7787 set fchown d_fchown
7788 eval $inlibc
7789
7790 : see if this is an fcntl system
7791 set fcntl d_fcntl
7792 eval $inlibc
7793
7794 : see if sys/select.h has to be included
7795 set sys/select.h i_sysselct
7796 eval $inhdr
7797
7798 : see if we should include time.h, sys/time.h, or both
7799 echo " "
7800 if test "X$timeincl" = X; then
7801         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7802         $echo $n "I'm now running the test program...$c"
7803         $cat >try.c <<'EOCP'
7804 #include <sys/types.h>
7805 #ifdef I_TIME
7806 #include <time.h>
7807 #endif
7808 #ifdef I_SYSTIME
7809 #ifdef SYSTIMEKERNEL
7810 #define KERNEL
7811 #endif
7812 #include <sys/time.h>
7813 #endif
7814 #ifdef I_SYSSELECT
7815 #include <sys/select.h>
7816 #endif
7817 int main()
7818 {
7819         struct tm foo;
7820 #ifdef S_TIMEVAL
7821         struct timeval bar;
7822 #endif
7823 #ifdef S_TIMEZONE
7824         struct timezone tzp;
7825 #endif
7826         if (foo.tm_sec == foo.tm_sec)
7827                 exit(0);
7828 #ifdef S_TIMEVAL
7829         if (bar.tv_sec == bar.tv_sec)
7830                 exit(0);
7831 #endif
7832         exit(1);
7833 }
7834 EOCP
7835         flags=''
7836         for s_timezone in '-DS_TIMEZONE' ''; do
7837         sysselect=''
7838         for s_timeval in '-DS_TIMEVAL' ''; do
7839         for i_systimek in '' '-DSYSTIMEKERNEL'; do
7840         for i_time in '' '-DI_TIME'; do
7841         for i_systime in '-DI_SYSTIME' ''; do
7842                 case "$flags" in
7843                 '') $echo $n ".$c"
7844                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7845                         if eval $compile; then
7846                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7847                                 shift
7848                                 flags="$*"
7849                                 echo " "
7850                                 $echo $n "Succeeded with $flags$c"
7851                         fi
7852                         ;;
7853                 esac
7854         done
7855         done
7856         done
7857         done
7858         done
7859         timeincl=''
7860         echo " "
7861         case "$flags" in
7862         *SYSTIMEKERNEL*) i_systimek="$define"
7863                 timeincl=`./findhdr sys/time.h`
7864                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7865         *) i_systimek="$undef";;
7866         esac
7867         case "$flags" in
7868         *I_TIME*) i_time="$define"
7869                 timeincl=`./findhdr time.h`" $timeincl"
7870                 echo "We'll include <time.h>." >&4;;
7871         *) i_time="$undef";;
7872         esac
7873         case "$flags" in
7874         *I_SYSTIME*) i_systime="$define"
7875                 timeincl=`./findhdr sys/time.h`" $timeincl"
7876                 echo "We'll include <sys/time.h>." >&4;;
7877         *) i_systime="$undef";;
7878         esac
7879         $rm -f try.c try
7880 fi
7881
7882 : check for fd_set items
7883 $cat <<EOM
7884
7885 Checking to see how well your C compiler handles fd_set and friends ...
7886 EOM
7887 $cat >fd_set.c <<EOCP
7888 #$i_systime I_SYS_TIME
7889 #$i_sysselct I_SYS_SELECT
7890 #$d_socket HAS_SOCKET
7891 #include <sys/types.h>
7892 #ifdef HAS_SOCKET
7893 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7894 #endif
7895 #ifdef I_SYS_TIME
7896 #include <sys/time.h>
7897 #endif
7898 #ifdef I_SYS_SELECT
7899 #include <sys/select.h>
7900 #endif
7901 int main() {
7902         fd_set fds;
7903
7904 #ifdef TRYBITS
7905         if(fds.fds_bits);
7906 #endif
7907
7908 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7909         exit(0);
7910 #else
7911         exit(1);
7912 #endif
7913 }
7914 EOCP
7915 set fd_set -DTRYBITS
7916 if eval $compile; then
7917         d_fds_bits="$define"
7918         d_fd_set="$define"
7919         echo "Well, your system knows about the normal fd_set typedef..." >&4
7920         if ./fd_set; then
7921                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7922                 d_fd_macros="$define"
7923         else
7924                 $cat >&4 <<'EOM'
7925 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
7926 EOM
7927                 d_fd_macros="$undef"
7928         fi
7929 else
7930         $cat <<'EOM'
7931 Hmm, your compiler has some difficulty with fd_set.  Checking further...
7932 EOM
7933         set fd_set
7934         if eval $compile; then
7935                 d_fds_bits="$undef"
7936                 d_fd_set="$define"
7937                 echo "Well, your system has some sort of fd_set available..." >&4
7938                 if ./fd_set; then
7939                         echo "and you have the normal fd_set macros." >&4
7940                         d_fd_macros="$define"
7941                 else
7942                         $cat <<'EOM'
7943 but not the normal fd_set macros!  Gross!  More work for me...
7944 EOM
7945                         d_fd_macros="$undef"
7946                 fi
7947         else
7948         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
7949                 d_fd_set="$undef"
7950                 d_fds_bits="$undef"
7951                 d_fd_macros="$undef"
7952         fi
7953 fi
7954 $rm -f fd_set*
7955
7956 : see if fgetpos exists
7957 set fgetpos d_fgetpos
7958 eval $inlibc
7959
7960
7961 if $test X"$use64bits" = X"$define"; then
7962         : see if fgetpos64 exists
7963         set fgetpos64 d_fgetpos64
7964         eval $inlibc
7965
7966         : see if fopen64 exists
7967         set freopen64 d_fopen64
7968         eval $inlibc
7969
7970         : see if freopen64 exists
7971         set freopen64 d_freopen64
7972         eval $inlibc
7973
7974         : see if fseek64 exists
7975         set fseek64 d_fseek64
7976         eval $inlibc
7977
7978         : see if fseeko64 exists
7979         set fseeko64 d_fseeko64
7980         eval $inlibc
7981
7982         : see if fsetpos64 exists
7983         set fsetpos64 d_fsetpos64
7984         eval $inlibc
7985
7986         : see if ftell64 exists
7987         set ftell64 d_ftell64
7988         eval $inlibc
7989
7990         : see if ftello64 exists
7991         set ftello64 d_ftello64
7992         eval $inlibc
7993
7994         : see if tmpfile64 exists
7995         set tmpfile64 d_tmpfile64
7996         eval $inlibc
7997 else
7998         val="$undef"
7999         for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
8000         do
8001                 set $xxx
8002                 eval $setvar
8003         done
8004 fi
8005 : see if flock exists
8006 set flock d_flock
8007 eval $inlibc
8008
8009 : see if fork exists
8010 set fork d_fork
8011 eval $inlibc
8012
8013 : see if pathconf exists
8014 set pathconf d_pathconf
8015 eval $inlibc
8016
8017 : see if fpathconf exists
8018 set fpathconf d_fpathconf
8019 eval $inlibc
8020
8021 : see if fseeko exists
8022 set fseeko d_fseeko
8023 eval $inlibc
8024
8025 : see if fsetpos exists
8026 set fsetpos d_fsetpos
8027 eval $inlibc
8028
8029 : see if this is a sys/param system
8030 set sys/param.h i_sysparam
8031 eval $inhdr
8032
8033 : see if this is a sys/mount.h system
8034 set sys/mount.h i_sysmount
8035 eval $inhdr
8036
8037
8038 : see if statfs exists
8039 set statfs d_statfs
8040 eval $inlibc
8041
8042 : see if fstatfs exists
8043 set fstatfs d_fstatfs
8044 eval $inlibc
8045
8046 : see if statfs knows about mount flags
8047 set d_statfsflags statfs f_flags $i_sysparam sys/param.h $i_sysmount sys/mount.h
8048 eval $hasfield
8049
8050
8051 : see if statvfs exists
8052 set statvfs d_statvfs
8053 eval $inlibc
8054
8055 : see if fstatvfs exists
8056 set fstatvfs d_fstatvfs
8057 eval $inlibc
8058
8059
8060 : see if ftello exists
8061 set ftello d_ftello
8062 eval $inlibc
8063
8064 : see if getgrent exists
8065 set getgrent d_getgrent
8066 eval $inlibc
8067
8068 : see if gethostbyaddr exists
8069 set gethostbyaddr d_gethbyaddr
8070 eval $inlibc
8071
8072 : see if gethostbyname exists
8073 set gethostbyname d_gethbyname
8074 eval $inlibc
8075
8076 : see if gethostent exists
8077 set gethostent d_gethent
8078 eval $inlibc
8079
8080 : see how we will look up host name
8081 echo " "
8082 call=''
8083 if set gethostname val -f d_gethname; eval $csym; $val; then
8084         echo 'gethostname() found.' >&4
8085         d_gethname="$define"
8086         call=gethostname
8087 fi
8088 if set uname val -f d_uname; eval $csym; $val; then
8089         if ./xenix; then
8090                 $cat <<'EOM'
8091 uname() was found, but you're running xenix, and older versions of xenix
8092 have a broken uname(). If you don't really know whether your xenix is old
8093 enough to have a broken system call, use the default answer.
8094
8095 EOM
8096                 dflt=y
8097                 case "$d_uname" in
8098                 "$define") dflt=n;;
8099                 esac
8100                 rp='Is your uname() broken?'
8101                 . ./myread
8102                 case "$ans" in
8103                 n*) d_uname="$define"; call=uname;;
8104                 esac
8105         else
8106                 echo 'uname() found.' >&4
8107                 d_uname="$define"
8108                 case "$call" in
8109                 '') call=uname ;;
8110                 esac
8111         fi
8112 fi
8113 case "$d_gethname" in
8114 '') d_gethname="$undef";;
8115 esac
8116 case "$d_uname" in
8117 '') d_uname="$undef";;
8118 esac
8119 case "$d_uname$d_gethname" in
8120 *define*)
8121         dflt=n
8122         cat <<EOM
8123  
8124 Every now and then someone has a $call() that lies about the hostname
8125 but can't be fixed for political or economic reasons.  If you wish, I can
8126 pretend $call() isn't there and maybe compute hostname at run-time
8127 thanks to the '$phostname' command.
8128
8129 EOM
8130         rp="Shall I ignore $call() from now on?"
8131         . ./myread
8132         case "$ans" in
8133         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8134         esac;;
8135 esac
8136 case "$phostname" in
8137 '') aphostname='';;
8138 *) case "$aphostname" in
8139         /*) ;;
8140         *) set X $phostname
8141                 shift
8142                 file=$1
8143                 shift
8144                 file=`./loc $file $file $pth`
8145                 aphostname=`echo $file $*`
8146                 ;;
8147         esac
8148         ;;
8149 esac
8150 case "$d_uname$d_gethname" in
8151 *define*) ;;
8152 *)
8153         case "$phostname" in
8154         '')
8155                 echo "There will be no way for $package to get your hostname." >&4;;
8156         *)
8157         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8158                 ;;
8159         esac;;
8160 esac
8161 case "$d_phostname" in
8162 '') d_phostname="$undef";;
8163 esac
8164
8165 : see if this is a netdb.h system
8166 set netdb.h i_netdb
8167 eval $inhdr
8168
8169 : see if prototypes for various gethostxxx netdb.h functions are available
8170 echo " "
8171 set d_gethostprotos gethostent $i_netdb netdb.h
8172 eval $hasproto
8173
8174 : see if getlogin exists
8175 set getlogin d_getlogin
8176 eval $inlibc
8177
8178 : see if getmntent exists
8179 set getmntent d_getmntent
8180 eval $inlibc
8181
8182 : see if getnetbyaddr exists
8183 set getnetbyaddr d_getnbyaddr
8184 eval $inlibc
8185
8186 : see if getnetbyname exists
8187 set getnetbyname d_getnbyname
8188 eval $inlibc
8189
8190 : see if getnetent exists
8191 set getnetent d_getnent
8192 eval $inlibc
8193
8194 : see if prototypes for various getnetxxx netdb.h functions are available
8195 echo " "
8196 set d_getnetprotos getnetent $i_netdb netdb.h
8197 eval $hasproto
8198
8199
8200 : see if getprotobyname exists
8201 set getprotobyname d_getpbyname
8202 eval $inlibc
8203
8204 : see if getprotobynumber exists
8205 set getprotobynumber d_getpbynumber
8206 eval $inlibc
8207
8208 : see if getprotoent exists
8209 set getprotoent d_getpent
8210 eval $inlibc
8211
8212 : see if getpgid exists
8213 set getpgid d_getpgid
8214 eval $inlibc
8215
8216 : see if getpgrp2 exists
8217 set getpgrp2 d_getpgrp2
8218 eval $inlibc
8219
8220 : see if getppid exists
8221 set getppid d_getppid
8222 eval $inlibc
8223
8224 : see if getpriority exists
8225 set getpriority d_getprior
8226 eval $inlibc
8227
8228 : see if prototypes for various getprotoxxx netdb.h functions are available
8229 echo " "
8230 set d_getprotoprotos getprotoent $i_netdb netdb.h
8231 eval $hasproto
8232
8233 : see if getpwent exists
8234 set getpwent d_getpwent
8235 eval $inlibc
8236
8237
8238 : see if getservbyname exists
8239 set getservbyname d_getsbyname
8240 eval $inlibc
8241
8242 : see if getservbyport exists
8243 set getservbyport d_getsbyport
8244 eval $inlibc
8245
8246 : see if getservent exists
8247 set getservent d_getsent
8248 eval $inlibc
8249
8250 : see if prototypes for various getservxxx netdb.h functions are available
8251 echo " "
8252 set d_getservprotos getservent $i_netdb netdb.h
8253 eval $hasproto
8254
8255 : see if gettimeofday or ftime exists
8256 set gettimeofday d_gettimeod
8257 eval $inlibc
8258 case "$d_gettimeod" in
8259 "$undef")
8260         set ftime d_ftime 
8261         eval $inlibc
8262         ;;
8263 *)
8264         val="$undef"; set d_ftime; eval $setvar
8265         ;;
8266 esac
8267 case "$d_gettimeod$d_ftime" in
8268 "$undef$undef")
8269         echo " "
8270         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8271         ;;
8272 esac
8273
8274 : see if this is an grp system
8275 set grp.h i_grp
8276 eval $inhdr
8277
8278 case "$i_grp" in
8279 $define)
8280         xxx=`./findhdr grp.h`
8281         $cppstdin $cppflags $cppminus < $xxx >$$.h
8282
8283         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8284                 val="$define"
8285         else
8286                 val="$undef"
8287         fi
8288         set d_grpasswd
8289         eval $setvar
8290
8291         $rm -f $$.h
8292         ;;
8293 *)
8294         val="$undef";
8295         set d_grpasswd; eval $setvar
8296         ;;
8297 esac
8298
8299 : see if hasmntopt exists
8300 set hasmntopt d_hasmntopt
8301 eval $inlibc
8302
8303 : see if this is a netinet/in.h or sys/in.h system
8304 set netinet/in.h i_niin sys/in.h i_sysin
8305 eval $inhdr
8306
8307 : see if arpa/inet.h has to be included
8308 set arpa/inet.h i_arpainet
8309 eval $inhdr
8310
8311 : see if htonl --and friends-- exists
8312 val=''
8313 set htonl val
8314 eval $inlibc
8315
8316 : Maybe they are macros.
8317 case "$val" in
8318 $undef)
8319         $cat >htonl.c <<EOM
8320 #include <stdio.h>
8321 #include <sys/types.h>
8322 #$i_niin I_NETINET_IN
8323 #$i_sysin I_SYS_IN
8324 #$i_arpainet I_ARPA_INET
8325 #ifdef I_NETINET_IN
8326 #include <netinet/in.h>
8327 #endif
8328 #ifdef I_SYS_IN
8329 #include <sys/in.h>
8330 #endif
8331 #ifdef I_ARPA_INET
8332 #include <arpa/inet.h>
8333 #endif
8334 #ifdef htonl
8335 printf("Defined as a macro.");
8336 #endif
8337 EOM
8338         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8339         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8340                 val="$define"
8341                 echo "But it seems to be defined as a macro." >&4
8342         fi
8343         $rm -f htonl.?
8344         ;;
8345 esac
8346 set d_htonl
8347 eval $setvar
8348
8349 : see which of string.h or strings.h is needed
8350 echo " "
8351 strings=`./findhdr string.h`
8352 if $test "$strings" && $test -r "$strings"; then
8353         echo "Using <string.h> instead of <strings.h>." >&4
8354         val="$define"
8355 else
8356         val="$undef"
8357         strings=`./findhdr strings.h`
8358         if $test "$strings" && $test -r "$strings"; then
8359                 echo "Using <strings.h> instead of <string.h>." >&4
8360         else
8361                 echo "No string header found -- You'll surely have problems." >&4
8362         fi
8363 fi
8364 set i_string
8365 eval $setvar
8366 case "$i_string" in
8367 "$undef") strings=`./findhdr strings.h`;;
8368 *)        strings=`./findhdr string.h`;;
8369 esac
8370
8371 : index or strchr
8372 echo " "
8373 if set index val -f; eval $csym; $val; then
8374         if set strchr val -f d_strchr; eval $csym; $val; then
8375                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8376                         val="$define"
8377                         vali="$undef"
8378                         echo "strchr() found." >&4
8379                 else
8380                         val="$undef"
8381                         vali="$define"
8382                         echo "index() found." >&4
8383                 fi
8384         else
8385                 val="$undef"
8386                 vali="$define"
8387                 echo "index() found." >&4
8388         fi
8389 else
8390         if set strchr val -f d_strchr; eval $csym; $val; then
8391                 val="$define"
8392                 vali="$undef"
8393                 echo "strchr() found." >&4
8394         else
8395                 echo "No index() or strchr() found!" >&4
8396                 val="$undef"
8397                 vali="$undef"
8398         fi
8399 fi
8400 set d_strchr; eval $setvar
8401 val="$vali"
8402 set d_index; eval $setvar
8403
8404 : check whether inet_aton exists
8405 set inet_aton d_inetaton
8406 eval $inlibc
8407
8408 : see if inttypes.h is available
8409 : we want a real compile instead of Inhdr because some systems
8410 : have an inttypes.h which includes non-existent headers
8411 echo " "
8412 $cat >try.c <<EOCP
8413 #include <inttypes.h>
8414 int main() {
8415         static int32_t foo32 = 0x12345678;
8416 }
8417 EOCP
8418 set try
8419 if eval $compile; then
8420         echo "<inttypes.h> found." >&4
8421         val="$define"
8422 else
8423         echo "<inttypes.h> NOT found." >&4
8424         val="$undef"
8425 fi
8426 $rm -f try.c try
8427 set i_inttypes
8428 eval $setvar
8429
8430 : check for int64_t
8431 case "$use64bits" in
8432 "$define" )
8433         echo " "
8434         echo $n "Checking to see if your system supports int64_t...$c" >&4
8435         $cat >try.c <<EOCP
8436 #include <sys/types.h>
8437 #$i_inttypes I_INTTYPES
8438 #ifdef I_INTTYPES
8439 #include <inttypes.h>
8440 #endif
8441 int64_t foo() { int64_t x; x = 7; return x; }
8442 EOCP
8443         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8444                 val="$define"
8445                 echo " Yup, it does." >&4
8446         else
8447                 val="$undef"
8448                 echo " Nope, it doesn't." >&4
8449         fi
8450         $rm -f try.*
8451         ;;
8452 *)      val="$undef"
8453         ;;
8454 esac
8455 set d_int64t
8456 eval $setvar
8457
8458
8459 : Look for isascii
8460 echo " "
8461 $cat >isascii.c <<'EOCP'
8462 #include <stdio.h>
8463 #include <ctype.h>
8464 int main() {
8465         int c = 'A';
8466         if (isascii(c))
8467                 exit(0);
8468         else
8469                 exit(1);
8470 }
8471 EOCP
8472 set isascii
8473 if eval $compile; then
8474         echo "isascii() found." >&4
8475         val="$define"
8476 else
8477         echo "isascii() NOT found." >&4
8478         val="$undef"
8479 fi
8480 set d_isascii
8481 eval $setvar
8482 $rm -f isascii*
8483
8484 : see if killpg exists
8485 set killpg d_killpg
8486 eval $inlibc
8487
8488 : see if lchown exists
8489 echo " "
8490 $cat > try.c <<'EOCP'
8491 /* System header to define __stub macros and hopefully few prototypes,
8492     which can conflict with char lchown(); below.  */
8493 #include <assert.h>
8494 /* Override any gcc2 internal prototype to avoid an error.  */
8495 /* We use char because int might match the return type of a gcc2
8496    builtin and then its argument prototype would still apply.  */
8497 char lchown();
8498 int main() {
8499     /*  The GNU C library defines this for functions which it implements
8500         to always fail with ENOSYS.  Some functions are actually named
8501         something starting with __ and the normal name is an alias.  */
8502 #if defined (__stub_lchown) || defined (__stub___lchown)
8503 choke me
8504 #else
8505 lchown();
8506 #endif
8507 ; return 0; }
8508 EOCP
8509 set try
8510 if eval $compile; then
8511     $echo "lchown() found." >&4
8512     val="$define"
8513 else
8514     $echo "lchown() NOT found." >&4
8515     val="$undef"
8516 fi
8517 set d_lchown
8518 eval $setvar
8519
8520 : see if link exists
8521 set link d_link
8522 eval $inlibc
8523
8524 : see if localeconv exists
8525 set localeconv d_locconv
8526 eval $inlibc
8527
8528 : see if lockf exists
8529 set lockf d_lockf
8530 eval $inlibc
8531
8532 : check for length of double
8533 echo " "
8534 case "$doublesize" in
8535 '')
8536         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8537         $cat >try.c <<'EOCP'
8538 #include <stdio.h>
8539 int main()
8540 {
8541         printf("%d\n", sizeof(double));
8542 }
8543 EOCP
8544         set try
8545         if eval $compile_ok; then
8546                 doublesize=`./try`
8547                 $echo " $doublesize bytes." >&4
8548         else
8549                 dflt='8'
8550                 echo "(I can't seem to compile the test program.  Guessing...)"
8551                 rp="What is the size of a double precision number (in bytes)?"
8552                 . ./myread
8553                 doublesize="$ans"
8554         fi
8555         ;;
8556 esac
8557 $rm -f try.c try
8558
8559 : check for long doubles
8560 echo " "
8561 echo $n "Checking to see if your system supports long doubles...$c" >&4
8562 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8563 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8564         val="$define"
8565         echo " Yup, it does." >&4
8566 else
8567         val="$undef"
8568         echo " Nope, it doesn't." >&4
8569 fi
8570 $rm try.*
8571 set d_longdbl
8572 eval $setvar
8573
8574 : check for length of long double
8575 case "${d_longdbl}${longdblsize}" in
8576 $define)
8577         echo " "
8578         $echo $n "Checking to see how big your long doubles are...$c" >&4
8579         $cat >try.c <<'EOCP'
8580 #include <stdio.h>
8581 int main()
8582 {
8583         printf("%d\n", sizeof(long double));
8584 }
8585 EOCP
8586         set try
8587         if eval $compile; then
8588                 longdblsize=`./try`
8589                 $echo " $longdblsize bytes." >&4
8590         else
8591                 dflt='8'
8592                 echo " "
8593                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
8594                 rp="What is the size of a long double (in bytes)?"
8595                 . ./myread
8596                 longdblsize="$ans"
8597         fi
8598         if $test "X$doublesize" = "X$longdblsize"; then
8599                 echo "(That isn't any different from an ordinary double.)"
8600         fi      
8601         ;;
8602 esac
8603 $rm -f try.c try
8604
8605 : check for long long
8606 echo " "
8607 echo $n "Checking to see if your system supports long long...$c" >&4
8608 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8609 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8610         val="$define"
8611         echo " Yup, it does." >&4
8612 else
8613         val="$undef"
8614         echo " Nope, it doesn't." >&4
8615 fi
8616 $rm try.*
8617 set d_longlong
8618 eval $setvar
8619
8620 : check for length of long long
8621 case "${d_longlong}${longlongsize}" in
8622 $define)
8623         echo " "
8624         $echo $n "Checking to see how big your long longs are...$c" >&4
8625         $cat >try.c <<'EOCP'
8626 #include <stdio.h>
8627 int main()
8628 {
8629         printf("%d\n", sizeof(long long));
8630 }
8631 EOCP
8632         set try
8633         if eval $compile_ok; then
8634                 longlongsize=`./try`
8635                 $echo " $longlongsize bytes." >&4
8636         else
8637                 dflt='8'
8638                 echo " "
8639                 echo "(I can't seem to compile the test program.  Guessing...)"
8640                 rp="What is the size of a long long (in bytes)?"
8641                 . ./myread
8642                 longlongsize="$ans"
8643         fi
8644         if $test "X$longsize" = "X$longlongsize"; then
8645                 echo "(That isn't any different from an ordinary long.)"
8646         fi      
8647         ;;
8648 esac
8649 $rm -f try.c try
8650
8651 : see if lstat exists
8652 set lstat d_lstat
8653 eval $inlibc
8654
8655 : see if madvise exists
8656 set madvise d_madvise
8657 eval $inlibc
8658
8659 : see if mblen exists
8660 set mblen d_mblen
8661 eval $inlibc
8662
8663 : see if mbstowcs exists
8664 set mbstowcs d_mbstowcs
8665 eval $inlibc
8666
8667 : see if mbtowc exists
8668 set mbtowc d_mbtowc
8669 eval $inlibc
8670
8671 : see if memcmp exists
8672 set memcmp d_memcmp
8673 eval $inlibc
8674
8675 : see if memcpy exists
8676 set memcpy d_memcpy
8677 eval $inlibc
8678
8679 : see if memmove exists
8680 set memmove d_memmove
8681 eval $inlibc
8682
8683 : see if memset exists
8684 set memset d_memset
8685 eval $inlibc
8686
8687 : see if mkdir exists
8688 set mkdir d_mkdir
8689 eval $inlibc
8690
8691 : see if mkfifo exists
8692 set mkfifo d_mkfifo
8693 eval $inlibc
8694
8695 : see if mktime exists
8696 set mktime d_mktime
8697 eval $inlibc
8698
8699 : see if this is a sys/mman.h system
8700 set sys/mman.h i_sysmman
8701 eval $inhdr
8702
8703 : see if mmap exists
8704 set mmap d_mmap
8705 eval $inlibc
8706 : see what shmat returns
8707 : default to something harmless
8708 mmaptype='void *'
8709 case "$i_sysmman$d_mmap" in
8710 "$define$define")
8711         $cat >mmap.c <<'END'
8712 #include <sys/mman.h>
8713 void *mmap();
8714 END
8715         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
8716                 mmaptype='void *'
8717         else
8718                 mmaptype='caddr_t'
8719         fi
8720         echo "and it returns ($mmaptype)." >&4
8721         ;;
8722 esac
8723
8724
8725
8726 : see if mprotect exists
8727 set mprotect d_mprotect
8728 eval $inlibc
8729
8730 : see if msgctl exists
8731 set msgctl d_msgctl
8732 eval $inlibc
8733
8734 : see if msgget exists
8735 set msgget d_msgget
8736 eval $inlibc
8737
8738 : see if msgsnd exists
8739 set msgsnd d_msgsnd
8740 eval $inlibc
8741
8742 : see if msgrcv exists
8743 set msgrcv d_msgrcv
8744 eval $inlibc
8745
8746 : see how much of the 'msg*(2)' library is present.
8747 h_msg=true
8748 echo " "
8749 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8750 *"$undef"*) h_msg=false;;
8751 esac
8752 case "$osname" in
8753 freebsd)
8754     case "`ipcs 2>&1`" in
8755     "SVID messages"*"not configured"*)
8756         echo "Your $osname does not have the msg*(2) configured." >&4
8757         h_msg=false
8758         val="$undef"
8759         set msgctl d_msgctl
8760         eval $setvar
8761         set msgget d_msgget
8762         eval $setvar
8763         set msgsnd d_msgsnd
8764         eval $setvar
8765         set msgrcv d_msgrcv
8766         eval $setvar
8767         ;;
8768     esac
8769     ;;
8770 esac
8771 : we could also check for sys/ipc.h ...
8772 if $h_msg && $test `./findhdr sys/msg.h`; then
8773         echo "You have the full msg*(2) library." >&4
8774         val="$define"
8775 else
8776         echo "You don't have the full msg*(2) library." >&4
8777         val="$undef"
8778 fi
8779 set d_msg
8780 eval $setvar
8781
8782 : see if msync exists
8783 set msync d_msync
8784 eval $inlibc
8785
8786 : see if munmap exists
8787 set munmap d_munmap
8788 eval $inlibc
8789
8790 : see if nice exists
8791 set nice d_nice
8792 eval $inlibc
8793
8794 : see if POSIX threads are available
8795 if test "X$usethreads" = "X$define"; then
8796         set pthread.h i_pthread
8797         eval $inhdr
8798 else
8799         i_pthread="$undef"
8800 fi
8801
8802
8803
8804 : how to create joinable pthreads
8805 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
8806         echo " "
8807         echo "Checking what constant to use for creating joinable pthreads..." >&4 
8808         $cat >try.c <<'EOCP'
8809 #include <pthread.h>
8810 int main() {
8811     int detachstate = JOINABLE;
8812 }
8813 EOCP
8814         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8815         if eval $compile; then
8816                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
8817                 val="$undef" # Yes, undef.
8818                 set d_old_pthread_create_joinable
8819                 eval $setvar
8820                 val=""
8821                 set old_pthread_create_joinable
8822                 eval $setvar
8823         else
8824                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8825                 if eval $compile; then
8826                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
8827                         val="$define"
8828                         set d_old_pthread_create_joinable
8829                         eval $setvar
8830                         val=PTHREAD_CREATE_UNDETACHED
8831                         set old_pthread_create_joinable
8832                         eval $setvar
8833                 else            
8834                         set try -DJOINABLE=__UNDETACHED
8835                         if eval $compile; then
8836                                 echo "You seem to use __UNDETACHED." >&4
8837                                 val="$define"
8838                                 set d_old_pthread_create_joinable
8839                                 eval $setvar
8840                                 val=__UNDETACHED
8841                                 set old_pthread_create_joinable
8842                                 eval $setvar
8843                         else
8844                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
8845                                 val="$define"
8846                                 set d_old_pthread_create_joinable
8847                                 eval $setvar
8848                                 val=0
8849                                 set old_pthread_create_joinable
8850                                 eval $setvar
8851                         fi
8852                 fi
8853         fi
8854         $rm -f try try.*
8855 else
8856     d_old_pthread_create_joinable="$undef"
8857     old_pthread_create_joinable=""
8858 fi
8859
8860 : see if pause exists
8861 set pause d_pause
8862 eval $inlibc
8863
8864 : see if pipe exists
8865 set pipe d_pipe
8866 eval $inlibc
8867
8868 : see if poll exists
8869 set poll d_poll
8870 eval $inlibc
8871
8872
8873 : see whether the various POSIXish _yields exist
8874 $cat >try.c <<EOP
8875 #include <pthread.h>
8876 #include <stdio.h>
8877 int main() {
8878 #ifdef SCHED_YIELD
8879         sched_yield();
8880 #else
8881 #ifdef PTHREAD_YIELD
8882         pthread_yield();
8883 #else
8884 #ifdef PTHREAD_YIELD_NULL
8885         pthread_yield(NULL);
8886 #endif
8887 #endif
8888 #endif
8889 }
8890 EOP
8891 : see if sched_yield exists
8892 set try -DSCHED_YIELD
8893 if eval $compile; then
8894     val="$define"
8895     sched_yield='sched_yield()'
8896 else
8897     val="$undef"
8898 fi
8899 case "$usethreads" in
8900 $define)
8901         case "$val" in
8902         $define) echo 'sched_yield() found.' >&4        ;;
8903         *)       echo 'sched_yield() NOT found.' >&4    ;;
8904         esac
8905 esac
8906 set d_sched_yield
8907 eval $setvar
8908
8909 : see if pthread_yield exists
8910 set try -DPTHREAD_YIELD
8911 if eval $compile; then
8912     val="$define"
8913     case "$sched_yield" in
8914     '') sched_yield='pthread_yield()' ;;
8915     esac
8916 else
8917     set try -DPTHREAD_YIELD_NULL
8918     if eval $compile; then
8919         val="$define"
8920         case "$sched_yield" in
8921         '') sched_yield='pthread_yield(NULL)' ;;
8922         esac
8923     else
8924         val="$undef"
8925     fi
8926 fi
8927 case "$usethreads" in
8928 $define)
8929         case "$val" in
8930         $define) echo 'pthread_yield() found.' >&4      ;;
8931         *)       echo 'pthread_yield() NOT found.' >&4  ;;
8932         esac
8933         ;;
8934 esac
8935 set d_pthread_yield
8936 eval $setvar
8937
8938 case "$sched_yield" in
8939 '') sched_yield=undef ;;
8940 esac
8941
8942 $rm -f try try.*
8943
8944 : see if this is a pwd.h system
8945 set pwd.h i_pwd
8946 eval $inhdr
8947
8948 case "$i_pwd" in
8949 $define)
8950         xxx=`./findhdr pwd.h`
8951         $cppstdin $cppflags $cppminus < $xxx >$$.h
8952
8953         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
8954                 val="$define"
8955         else
8956                 val="$undef"
8957         fi
8958         set d_pwquota
8959         eval $setvar
8960
8961         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
8962                 val="$define"
8963         else
8964                 val="$undef"
8965         fi
8966         set d_pwage
8967         eval $setvar
8968
8969         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
8970                 val="$define"
8971         else
8972                 val="$undef"
8973         fi
8974         set d_pwchange
8975         eval $setvar
8976
8977         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
8978                 val="$define"
8979         else
8980                 val="$undef"
8981         fi
8982         set d_pwclass
8983         eval $setvar
8984
8985         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
8986                 val="$define"
8987         else
8988                 val="$undef"
8989         fi
8990         set d_pwexpire
8991         eval $setvar
8992
8993         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
8994                 val="$define"
8995         else
8996                 val="$undef"
8997         fi
8998         set d_pwcomment
8999         eval $setvar
9000
9001         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
9002                 val="$define"
9003         else
9004                 val="$undef"
9005         fi
9006         set d_pwgecos
9007         eval $setvar
9008
9009         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
9010                 val="$define"
9011         else
9012                 val="$undef"
9013         fi
9014         set d_pwpasswd
9015         eval $setvar
9016
9017         $rm -f $$.h
9018         ;;
9019 *)
9020         val="$undef"; 
9021         set d_pwquota; eval $setvar
9022         set d_pwage; eval $setvar
9023         set d_pwchange; eval $setvar
9024         set d_pwclass; eval $setvar
9025         set d_pwexpire; eval $setvar
9026         set d_pwcomment; eval $setvar
9027         set d_pwgecos; eval $setvar
9028         set d_pwpasswd; eval $setvar
9029         ;;
9030 esac
9031
9032 : see if readdir and friends exist
9033 set readdir d_readdir
9034 eval $inlibc
9035 set seekdir d_seekdir
9036 eval $inlibc
9037 set telldir d_telldir
9038 eval $inlibc
9039 set rewinddir d_rewinddir
9040 eval $inlibc
9041
9042 : see if readlink exists
9043 set readlink d_readlink
9044 eval $inlibc
9045
9046 : see if readv exists
9047 set readv d_readv
9048 eval $inlibc
9049
9050 : see if rename exists
9051 set rename d_rename
9052 eval $inlibc
9053
9054 : see if rmdir exists
9055 set rmdir d_rmdir
9056 eval $inlibc
9057
9058 : see if memory.h is available.
9059 val=''
9060 set memory.h val
9061 eval $inhdr
9062
9063 : See if it conflicts with string.h
9064 case "$val" in
9065 $define)
9066         case "$strings" in
9067         '') ;;
9068         *)
9069                 $cppstdin $cppflags $cppminus < $strings > mem.h
9070                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
9071                         echo " "
9072                         echo "We won't be including <memory.h>."
9073                         val="$undef"
9074                 fi
9075                 $rm -f mem.h
9076                 ;;
9077         esac
9078 esac
9079 set i_memory
9080 eval $setvar
9081
9082 : can bcopy handle overlapping blocks?
9083 val="$undef"
9084 case "$d_bcopy" in
9085 "$define")
9086         echo " "
9087         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
9088         $cat >try.c <<EOCP
9089 #$i_memory I_MEMORY
9090 #$i_stdlib I_STDLIB
9091 #$i_string I_STRING
9092 #$i_unistd I_UNISTD
9093 EOCP
9094         $cat >>try.c <<'EOCP'
9095 #include <stdio.h>
9096 #ifdef I_MEMORY
9097 #  include <memory.h>
9098 #endif
9099 #ifdef I_STDLIB
9100 #  include <stdlib.h>
9101 #endif
9102 #ifdef I_STRING
9103 #  include <string.h>
9104 #else
9105 #  include <strings.h>
9106 #endif
9107 #ifdef I_UNISTD
9108 #  include <unistd.h>  /* Needed for NetBSD */
9109 #endif
9110 int main()
9111 {
9112 char buf[128], abc[128];
9113 char *b;
9114 int len;
9115 int off;
9116 int align;
9117
9118 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9119
9120 for (align = 7; align >= 0; align--) {
9121         for (len = 36; len; len--) {
9122                 b = buf+align;
9123                 bcopy(abc, b, len);
9124                 for (off = 1; off <= len; off++) {
9125                         bcopy(b, b+off, len);
9126                         bcopy(b+off, b, len);
9127                         if (bcmp(b, abc, len))
9128                                 exit(1);
9129                 }
9130         }
9131 }
9132 exit(0);
9133 }
9134 EOCP
9135         set try
9136         if eval $compile_ok; then
9137                 if ./try 2>/dev/null; then
9138                         echo "Yes, it can."
9139                         val="$define"
9140                 else
9141                         echo "It can't, sorry."
9142                         case "$d_memmove" in
9143                         "$define") echo "But that's Ok since you have memmove()." ;;
9144                         esac
9145                 fi
9146         else
9147                 echo "(I can't compile the test program, so we'll assume not...)"
9148                 case "$d_memmove" in
9149                 "$define") echo "But that's Ok since you have memmove()." ;;
9150                 esac
9151         fi
9152         ;;
9153 esac
9154 $rm -f try.* try core
9155 set d_safebcpy
9156 eval $setvar
9157
9158 : can memcpy handle overlapping blocks?
9159 val="$undef"
9160 case "$d_memcpy" in
9161 "$define")
9162         echo " "
9163         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9164         $cat >try.c <<EOCP
9165 #$i_memory I_MEMORY
9166 #$i_stdlib I_STDLIB
9167 #$i_string I_STRING
9168 #$i_unistd I_UNISTD
9169 EOCP
9170         $cat >>try.c <<'EOCP'
9171 #include <stdio.h>
9172 #ifdef I_MEMORY
9173 #  include <memory.h>
9174 #endif
9175 #ifdef I_STDLIB
9176 #  include <stdlib.h>
9177 #endif
9178 #ifdef I_STRING
9179 #  include <string.h>
9180 #else
9181 #  include <strings.h>
9182 #endif
9183 #ifdef I_UNISTD
9184 #  include <unistd.h>  /* Needed for NetBSD */
9185 #endif
9186 int main()
9187 {
9188 char buf[128], abc[128];
9189 char *b;
9190 int len;
9191 int off;
9192 int align;
9193
9194 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9195    try to store the string in read-only memory. */
9196 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9197
9198 for (align = 7; align >= 0; align--) {
9199         for (len = 36; len; len--) {
9200                 b = buf+align;
9201                 memcpy(b, abc, len);
9202                 for (off = 1; off <= len; off++) {
9203                         memcpy(b+off, b, len);
9204                         memcpy(b, b+off, len);
9205                         if (memcmp(b, abc, len))
9206                                 exit(1);
9207                 }
9208         }
9209 }
9210 exit(0);
9211 }
9212 EOCP
9213         set try
9214         if eval $compile_ok; then
9215                 if ./try 2>/dev/null; then
9216                         echo "Yes, it can."
9217                         val="$define"
9218                 else
9219                         echo "It can't, sorry."
9220                         case "$d_memmove" in
9221                         "$define") echo "But that's Ok since you have memmove()." ;;
9222                         esac
9223                 fi
9224         else
9225                 echo "(I can't compile the test program, so we'll assume not...)"
9226                 case "$d_memmove" in
9227                 "$define") echo "But that's Ok since you have memmove()." ;;
9228                 esac
9229         fi
9230         ;;
9231 esac
9232 $rm -f try.* try core
9233 set d_safemcpy
9234 eval $setvar
9235
9236 : can memcmp be trusted to compare relative magnitude?
9237 val="$undef"
9238 case "$d_memcmp" in
9239 "$define")
9240         echo " "
9241         echo "Checking if your memcmp() can compare relative magnitude..." >&4
9242         $cat >try.c <<EOCP
9243 #$i_memory I_MEMORY
9244 #$i_stdlib I_STDLIB
9245 #$i_string I_STRING
9246 #$i_unistd I_UNISTD
9247 EOCP
9248         $cat >>try.c <<'EOCP'
9249 #include <stdio.h>
9250 #ifdef I_MEMORY
9251 #  include <memory.h>
9252 #endif
9253 #ifdef I_STDLIB
9254 #  include <stdlib.h>
9255 #endif
9256 #ifdef I_STRING
9257 #  include <string.h>
9258 #else
9259 #  include <strings.h>
9260 #endif
9261 #ifdef I_UNISTD
9262 #  include <unistd.h>  /* Needed for NetBSD */
9263 #endif
9264 int main()
9265 {
9266 char a = -1;
9267 char b = 0;
9268 if ((a < b) && memcmp(&a, &b, 1) < 0)
9269         exit(1);
9270 exit(0);
9271 }
9272 EOCP
9273         set try
9274         if eval $compile_ok; then
9275                 if ./try 2>/dev/null; then
9276                         echo "Yes, it can."
9277                         val="$define"
9278                 else
9279                         echo "No, it can't (it uses signed chars)."
9280                 fi
9281         else
9282                 echo "(I can't compile the test program, so we'll assume not...)"
9283         fi
9284         ;;
9285 esac
9286 $rm -f try.* try core
9287 set d_sanemcmp
9288 eval $setvar
9289
9290 : see if select exists
9291 set select d_select
9292 eval $inlibc
9293
9294 : see if semctl exists
9295 set semctl d_semctl
9296 eval $inlibc
9297
9298 : see if semget exists
9299 set semget d_semget
9300 eval $inlibc
9301
9302 : see if semop exists
9303 set semop d_semop
9304 eval $inlibc
9305
9306 : see how much of the 'sem*(2)' library is present.
9307 h_sem=true
9308 echo " "
9309 case "$d_semctl$d_semget$d_semop" in
9310 *"$undef"*) h_sem=false;;
9311 esac
9312 case "$osname" in
9313 freebsd)
9314     case "`ipcs 2>&1`" in
9315     "SVID messages"*"not configured"*)
9316         echo "Your $osname does not have the sem*(2) configured." >&4
9317         h_sem=false
9318         val="$undef"
9319         set semctl d_semctl
9320         eval $setvar
9321         set semget d_semget
9322         eval $setvar
9323         set semop d_semop
9324         eval $setvar
9325         ;;
9326     esac
9327     ;;
9328 esac
9329 : we could also check for sys/ipc.h ...
9330 if $h_sem && $test `./findhdr sys/sem.h`; then
9331         echo "You have the full sem*(2) library." >&4
9332         val="$define"
9333 else
9334         echo "You don't have the full sem*(2) library." >&4
9335         val="$undef"
9336 fi
9337 set d_sem
9338 eval $setvar
9339
9340 : see whether sys/sem.h defines union semun
9341 echo " "
9342 $cat > try.c <<'END'
9343 #include <sys/types.h>
9344 #include <sys/ipc.h>
9345 #include <sys/sem.h>
9346 int main () { union semun semun; semun.buf = 0; }
9347 END
9348 set try
9349 if eval $compile; then
9350     echo "You have union semun in <sys/sem.h>." >&4
9351     val="$define"
9352 else
9353     echo "You do not have union semun in <sys/sem.h>." >&4
9354     val="$undef"
9355 fi
9356 $rm -f try try.c try.h
9357 set d_union_semun
9358 eval $setvar
9359
9360 : see how to do semctl IPC_STAT
9361 case "$d_sem" in
9362 $define)
9363     : see whether semctl IPC_STAT can use union semun
9364     echo " "
9365     $cat > try.h <<END
9366 #ifndef S_IRUSR
9367 #   ifdef S_IREAD
9368 #       define S_IRUSR S_IREAD
9369 #       define S_IWUSR S_IWRITE
9370 #       define S_IXUSR S_IEXEC
9371 #   else
9372 #       define S_IRUSR 0400
9373 #       define S_IWUSR 0200
9374 #       define S_IXUSR 0100
9375 #   endif
9376 #   define S_IRGRP (S_IRUSR>>3)
9377 #   define S_IWGRP (S_IWUSR>>3)
9378 #   define S_IXGRP (S_IXUSR>>3)
9379 #   define S_IROTH (S_IRUSR>>6)
9380 #   define S_IWOTH (S_IWUSR>>6)
9381 #   define S_IXOTH (S_IXUSR>>6)
9382 #endif
9383 #ifndef S_IRWXU
9384 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9385 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9386 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9387 #endif
9388 END
9389
9390     $cat > try.c <<END
9391 #include <sys/types.h>
9392 #include <sys/ipc.h>
9393 #include <sys/sem.h>
9394 #include <sys/stat.h>
9395 #include <stdio.h>
9396 #include <errno.h>
9397 #include "try.h"
9398 #ifndef errno
9399 extern int errno;
9400 #endif
9401 #$d_union_semun HAS_UNION_SEMUN
9402 int main() {
9403     union semun
9404 #ifndef HAS_UNION_SEMUN
9405     {
9406         int val;
9407         struct semid_ds *buf;
9408         unsigned short *array;
9409     }
9410 #endif
9411     arg;
9412     int sem, st;
9413
9414 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9415     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9416     if (sem > -1) {
9417         struct semid_ds argbuf;
9418         arg.buf = &argbuf;
9419 #       ifdef IPC_STAT
9420         st = semctl(sem, 0, IPC_STAT, arg);
9421         if (st == 0)
9422             printf("semun\n");
9423         else
9424 #       endif /* IPC_STAT */
9425             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9426 #       ifdef IPC_RMID
9427         if (semctl(sem, 0, IPC_RMID, arg) != 0)
9428 #       endif /* IPC_RMID */
9429             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9430     } else
9431 #endif /* IPC_PRIVATE && ... */
9432         printf("semget failed: errno = %d\n", errno);
9433   return 0;
9434 }
9435 END
9436     val="$undef"
9437     set try
9438     if eval $compile; then
9439         xxx=`./try`
9440         case "$xxx" in
9441         semun) val="$define" ;;
9442         esac
9443     fi
9444     $rm -f try try.c
9445     set d_semctl_semun
9446     eval $setvar
9447     case "$d_semctl_semun" in
9448     $define)
9449         echo "You can use union semun for semctl IPC_STAT." >&4
9450         also='also'
9451         ;;
9452     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
9453         also=''
9454         ;;
9455     esac
9456
9457     : see whether semctl IPC_STAT can use struct semid_ds pointer
9458     $cat > try.c <<'END'
9459 #include <sys/types.h>
9460 #include <sys/ipc.h>
9461 #include <sys/sem.h>
9462 #include <sys/stat.h>
9463 #include "try.h"
9464 #include <stdio.h>
9465 #include <errno.h>
9466 #ifndef errno
9467 extern int errno;
9468 #endif
9469 int main() {
9470     struct semid_ds arg;
9471     int sem, st;
9472
9473 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
9474     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9475     if (sem > -1) {
9476 #       ifdef IPC_STAT
9477         st = semctl(sem, 0, IPC_STAT, &arg);
9478         if (st == 0)
9479             printf("semid_ds\n");
9480         else
9481 #       endif /* IPC_STAT */
9482             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9483 #       ifdef IPC_RMID
9484         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9485 #       endif /* IPC_RMID */
9486             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9487     } else
9488 #endif /* IPC_PRIVATE && ... */
9489         printf("semget failed: errno = %d\n", errno);
9490
9491     return 0;
9492 }
9493 END
9494     val="$undef"
9495     set try
9496     if eval $compile; then
9497         xxx=`./try`
9498         case "$xxx" in
9499         semid_ds) val="$define" ;;
9500         esac
9501     fi
9502     $rm -f try try.c
9503     set d_semctl_semid_ds
9504     eval $setvar
9505     case "$d_semctl_semid_ds" in
9506     $define)
9507         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9508         ;;
9509     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9510         ;;
9511     esac
9512     $rm -f try.h
9513     ;;
9514 *)  val="$undef"
9515
9516     # We do not have the full sem*(2) library, so assume we can not
9517     # use either.
9518
9519     set d_semctl_semun
9520     eval $setvar
9521
9522     set d_semctl_semid_ds
9523     eval $setvar
9524     ;;
9525 esac
9526
9527 : see if setegid exists
9528 set setegid d_setegid
9529 eval $inlibc
9530
9531 : see if seteuid exists
9532 set seteuid d_seteuid
9533 eval $inlibc
9534
9535 : see if setgrent exists
9536 set setgrent d_setgrent
9537 eval $inlibc
9538
9539 : see if sethostent exists
9540 set sethostent d_sethent
9541 eval $inlibc
9542
9543 : see if setlinebuf exists
9544 set setlinebuf d_setlinebuf
9545 eval $inlibc
9546
9547 : see if setlocale exists
9548 set setlocale d_setlocale
9549 eval $inlibc
9550
9551 : see if setnetent exists
9552 set setnetent d_setnent
9553 eval $inlibc
9554
9555 : see if setprotoent exists
9556 set setprotoent d_setpent
9557 eval $inlibc
9558
9559 : see if setpgid exists
9560 set setpgid d_setpgid
9561 eval $inlibc
9562
9563 : see if setpgrp2 exists
9564 set setpgrp2 d_setpgrp2
9565 eval $inlibc
9566
9567 : see if setpriority exists
9568 set setpriority d_setprior
9569 eval $inlibc
9570
9571 : see if setpwent exists
9572 set setpwent d_setpwent
9573 eval $inlibc
9574
9575 : see if setregid exists
9576 set setregid d_setregid
9577 eval $inlibc
9578 set setresgid d_setresgid
9579 eval $inlibc
9580
9581 : see if setreuid exists
9582 set setreuid d_setreuid
9583 eval $inlibc
9584 set setresuid d_setresuid
9585 eval $inlibc
9586
9587 : see if setrgid exists
9588 set setrgid d_setrgid
9589 eval $inlibc
9590
9591 : see if setruid exists
9592 set setruid d_setruid
9593 eval $inlibc
9594
9595 : see if setservent exists
9596 set setservent d_setsent
9597 eval $inlibc
9598
9599 : see if setsid exists
9600 set setsid d_setsid
9601 eval $inlibc
9602
9603 : see if setvbuf exists
9604 set setvbuf d_setvbuf
9605 eval $inlibc
9606
9607 : see if sfio.h is available
9608 set sfio.h i_sfio
9609 eval $inhdr
9610
9611
9612 : see if sfio library is available
9613 case "$i_sfio" in
9614 $define)
9615         val=''
9616         set sfreserve val
9617         eval $inlibc
9618         ;;
9619 *)
9620         val="$undef"
9621         ;;
9622 esac
9623 : Ok, but do we want to use it.
9624 case "$val" in
9625 $define)
9626         case "$usesfio" in
9627         true|$define|[yY]*) dflt='y';;
9628         *) dflt='n';;
9629         esac
9630         echo "$package can use the sfio library, but it is experimental."
9631         rp="You seem to have sfio available, do you want to try using it?"
9632         . ./myread
9633         case "$ans" in
9634         y|Y) ;;
9635         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
9636                 val="$undef"
9637                 : Remove sfio from list of libraries to use
9638                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9639                 shift
9640                 libs="$*"
9641                 echo "libs = $libs" >&4
9642                 ;;
9643         esac
9644         ;;
9645 *)      case "$usesfio" in
9646         true|$define|[yY]*)
9647                 echo "Sorry, cannot find sfio on this machine" >&4
9648                 echo "Ignoring your setting of usesfio=$usesfio" >&4
9649                 ;;
9650         esac
9651         ;;
9652 esac
9653 set d_sfio
9654 eval $setvar
9655 case "$d_sfio" in
9656 $define) usesfio='true';;
9657 *) usesfio='false';;
9658 esac
9659
9660 : see if shmctl exists
9661 set shmctl d_shmctl
9662 eval $inlibc
9663
9664 : see if shmget exists
9665 set shmget d_shmget
9666 eval $inlibc
9667
9668 : see if shmat exists
9669 set shmat d_shmat
9670 eval $inlibc
9671 : see what shmat returns
9672 case "$d_shmat" in
9673 "$define")
9674         $cat >shmat.c <<'END'
9675 #include <sys/shm.h>
9676 void *shmat();
9677 END
9678         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9679                 shmattype='void *'
9680         else
9681                 shmattype='char *'
9682         fi
9683         echo "and it returns ($shmattype)." >&4
9684         : see if a prototype for shmat is available
9685         xxx=`./findhdr sys/shm.h`
9686         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9687         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9688                 val="$define"
9689         else
9690                 val="$undef"
9691         fi
9692         $rm -f shmat.[co]
9693         ;;
9694 *)
9695         val="$undef"
9696         ;;
9697 esac
9698 set d_shmatprototype
9699 eval $setvar
9700
9701 : see if shmdt exists
9702 set shmdt d_shmdt
9703 eval $inlibc
9704
9705 : see how much of the 'shm*(2)' library is present.
9706 h_shm=true
9707 echo " "
9708 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9709 *"$undef"*) h_shm=false;;
9710 esac
9711 case "$osname" in
9712 freebsd)
9713     case "`ipcs 2>&1`" in
9714     "SVID shared memory"*"not configured"*)
9715         echo "Your $osname does not have the shm*(2) configured." >&4
9716         h_shm=false
9717         val="$undef"
9718         set shmctl d_shmctl
9719         evat $setvar
9720         set shmget d_shmget
9721         evat $setvar
9722         set shmat d_shmat
9723         evat $setvar
9724         set shmdt d_shmdt
9725         evat $setvar
9726         ;;
9727     esac
9728     ;;
9729 esac
9730 : we could also check for sys/ipc.h ...
9731 if $h_shm && $test `./findhdr sys/shm.h`; then
9732         echo "You have the full shm*(2) library." >&4
9733         val="$define"
9734 else
9735         echo "You don't have the full shm*(2) library." >&4
9736         val="$undef"
9737 fi
9738 set d_shm
9739 eval $setvar
9740
9741 echo " "
9742 : see if we have sigaction
9743 if set sigaction val -f d_sigaction; eval $csym; $val; then
9744         echo 'sigaction() found.' >&4
9745         $cat > try.c <<'EOP'
9746 #include <stdio.h>
9747 #include <sys/types.h>
9748 #include <signal.h>
9749 int main()
9750 {
9751     struct sigaction act, oact;
9752 }
9753 EOP
9754         set try
9755         if eval $compile_ok; then
9756                 val="$define"
9757         else
9758                 echo "But you don't seem to have a useable struct sigaction." >&4
9759                 val="$undef"
9760         fi
9761 else
9762         echo 'sigaction NOT found.' >&4
9763         val="$undef"
9764 fi
9765 set d_sigaction; eval $setvar
9766 $rm -f try try$_o try.c
9767
9768 : see if sigsetjmp exists
9769 echo " "
9770 case "$d_sigsetjmp" in
9771 '')
9772         $cat >try.c <<'EOP'
9773 #include <setjmp.h>
9774 sigjmp_buf env;
9775 int set = 1;
9776 int main()
9777 {
9778         if (sigsetjmp(env,1))
9779                 exit(set);
9780         set = 0;
9781         siglongjmp(env, 1);
9782         exit(1);
9783 }
9784 EOP
9785         set try
9786         if eval $compile; then
9787                 if ./try >/dev/null 2>&1; then
9788                         echo "POSIX sigsetjmp found." >&4
9789                         val="$define"
9790                 else
9791                         $cat >&4 <<EOM
9792 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9793 I'll ignore them.
9794 EOM
9795                         val="$undef"
9796                 fi
9797         else
9798                 echo "sigsetjmp not found." >&4
9799                 val="$undef"
9800         fi
9801         ;;
9802 *) val="$d_sigsetjmp"
9803         case "$d_sigsetjmp" in
9804         $define) echo "POSIX sigsetjmp found." >&4;;
9805         $undef) echo "sigsetjmp not found." >&4;;
9806         esac
9807         ;;
9808 esac
9809 set d_sigsetjmp
9810 eval $setvar
9811 $rm -f try.c try
9812
9813 : see if stat knows about block sizes
9814 echo " "
9815 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9816 eval $hasfield
9817
9818 : see if _ptr and _cnt from stdio act std
9819 echo " "
9820 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9821         echo "(Looks like you have stdio.h from Linux.)"
9822         case "$stdio_ptr" in
9823         '') stdio_ptr='((fp)->_IO_read_ptr)'
9824                 ptr_lval=$define
9825                 ;;
9826         *)      ptr_lval=$d_stdio_ptr_lval;;
9827         esac
9828         case "$stdio_cnt" in
9829         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9830                 cnt_lval=$undef
9831                 ;;
9832         *)      cnt_lval=$d_stdio_cnt_lval;;
9833         esac
9834         case "$stdio_base" in
9835         '') stdio_base='((fp)->_IO_read_base)';;
9836         esac
9837         case "$stdio_bufsiz" in
9838         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9839         esac
9840 else
9841         case "$stdio_ptr" in
9842         '') stdio_ptr='((fp)->_ptr)'
9843                 ptr_lval=$define
9844                 ;;
9845         *)      ptr_lval=$d_stdio_ptr_lval;;
9846         esac
9847         case "$stdio_cnt" in
9848         '') stdio_cnt='((fp)->_cnt)'
9849                 cnt_lval=$define
9850                 ;;
9851         *)      cnt_lval=$d_stdio_cnt_lval;;
9852         esac
9853         case "$stdio_base" in
9854         '') stdio_base='((fp)->_base)';;
9855         esac
9856         case "$stdio_bufsiz" in
9857         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9858         esac
9859 fi
9860 : test whether _ptr and _cnt really work
9861 echo "Checking how std your stdio is..." >&4
9862 $cat >try.c <<EOP
9863 #include <stdio.h>
9864 #define FILE_ptr(fp)    $stdio_ptr
9865 #define FILE_cnt(fp)    $stdio_cnt
9866 int main() {
9867         FILE *fp = fopen("try.c", "r");
9868         char c = getc(fp);
9869         if (
9870                 18 <= FILE_cnt(fp) &&
9871                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9872         )
9873                 exit(0);
9874         exit(1);
9875 }
9876 EOP
9877 val="$undef"
9878 set try
9879 if eval $compile; then
9880         if ./try; then
9881                 echo "Your stdio acts pretty std."
9882                 val="$define"
9883         else
9884                 echo "Your stdio isn't very std."
9885         fi
9886 else
9887         echo "Your stdio doesn't appear very std."
9888 fi
9889 $rm -f try.c try
9890 set d_stdstdio
9891 eval $setvar
9892
9893 : Can _ptr be used as an lvalue?
9894 case "$d_stdstdio$ptr_lval" in
9895 $define$define) val=$define ;;
9896 *) val=$undef ;;
9897 esac
9898 set d_stdio_ptr_lval
9899 eval $setvar
9900
9901 : Can _cnt be used as an lvalue?
9902 case "$d_stdstdio$cnt_lval" in
9903 $define$define) val=$define ;;
9904 *) val=$undef ;;
9905 esac
9906 set d_stdio_cnt_lval
9907 eval $setvar
9908
9909 : see if _base is also standard
9910 val="$undef"
9911 case "$d_stdstdio" in
9912 $define)
9913         $cat >try.c <<EOP
9914 #include <stdio.h>
9915 #define FILE_base(fp)   $stdio_base
9916 #define FILE_bufsiz(fp) $stdio_bufsiz
9917 int main() {
9918         FILE *fp = fopen("try.c", "r");
9919         char c = getc(fp);
9920         if (
9921                 19 <= FILE_bufsiz(fp) &&
9922                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9923         )
9924                 exit(0);
9925         exit(1);
9926 }
9927 EOP
9928         set try
9929         if eval $compile; then
9930                 if ./try; then
9931                         echo "And its _base field acts std."
9932                         val="$define"
9933                 else
9934                         echo "But its _base field isn't std."
9935                 fi
9936         else
9937                 echo "However, it seems to be lacking the _base field."
9938         fi
9939         $rm -f try.c try
9940         ;;
9941 esac
9942 set d_stdiobase
9943 eval $setvar
9944
9945 : see if strcoll exists
9946 set strcoll d_strcoll
9947 eval $inlibc
9948
9949 : check for structure copying
9950 echo " "
9951 echo "Checking to see if your C compiler can copy structs..." >&4
9952 $cat >try.c <<'EOCP'
9953 int main()
9954 {
9955         struct blurfl {
9956                 int dyick;
9957         } foo, bar;
9958
9959         foo = bar;
9960 }
9961 EOCP
9962 if $cc -c try.c >/dev/null 2>&1 ; then
9963         val="$define"
9964         echo "Yup, it can."
9965 else
9966         val="$undef"
9967         echo "Nope, it can't."
9968 fi
9969 set d_strctcpy
9970 eval $setvar
9971 $rm -f try.*
9972
9973 : see if strerror and/or sys_errlist[] exist
9974 echo " "
9975 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
9976     if set strerror val -f d_strerror; eval $csym; $val; then
9977                 echo 'strerror() found.' >&4
9978                 d_strerror="$define"
9979                 d_strerrm='strerror(e)'
9980                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9981                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
9982                         d_syserrlst="$define"
9983                 else
9984                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
9985                         d_syserrlst="$undef"
9986                 fi
9987     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
9988                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
9989                 echo 'strerror() found in string header.' >&4
9990                 d_strerror="$define"
9991                 d_strerrm='strerror(e)'
9992                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9993                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
9994                                 d_syserrlst="$define"
9995                 else
9996                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
9997                         d_syserrlst="$undef"
9998                 fi
9999     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10000                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
10001                 d_strerror="$undef"
10002                 d_syserrlst="$define"
10003                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
10004     else
10005                 echo 'strerror() and sys_errlist[] NOT found.' >&4
10006                 d_strerror="$undef"
10007                 d_syserrlst="$undef"
10008                 d_strerrm='"unknown"'
10009     fi
10010 fi
10011
10012 : see if strtod exists
10013 set strtod d_strtod
10014 eval $inlibc
10015
10016 : see if strtol exists
10017 set strtol d_strtol
10018 eval $inlibc
10019
10020 : see if strtoul exists
10021 set strtoul d_strtoul
10022 eval $inlibc
10023
10024 : see if strxfrm exists
10025 set strxfrm d_strxfrm
10026 eval $inlibc
10027
10028 : see if symlink exists
10029 set symlink d_symlink
10030 eval $inlibc
10031
10032 : see if syscall exists
10033 set syscall d_syscall
10034 eval $inlibc
10035
10036 : see if sysconf exists
10037 set sysconf d_sysconf
10038 eval $inlibc
10039
10040 : see if system exists
10041 set system d_system
10042 eval $inlibc
10043
10044 : see if tcgetpgrp exists
10045 set tcgetpgrp d_tcgetpgrp
10046 eval $inlibc
10047
10048 : see if tcsetpgrp exists
10049 set tcsetpgrp d_tcsetpgrp
10050 eval $inlibc
10051
10052 : see if sys/types.h has to be included
10053 set sys/types.h i_systypes
10054 eval $inhdr
10055
10056 : see if prototype for telldir is available
10057 echo " "
10058 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
10059 eval $hasproto
10060
10061 : define an is-a-typedef? function
10062 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10063 case "$inclist" in
10064 "") inclist="sys/types.h";;
10065 esac;
10066 eval "varval=\$$var";
10067 case "$varval" in
10068 "")
10069         $rm -f temp.c;
10070         for inc in $inclist; do
10071                 echo "#include <$inc>" >>temp.c;
10072         done;
10073         echo "#ifdef $type" >> temp.c;
10074         echo "printf(\"We have $type\");" >> temp.c;
10075         echo "#endif" >> temp.c;
10076         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10077         if $contains $type temp.E >/dev/null 2>&1; then
10078                 eval "$var=\$type";
10079         else
10080                 eval "$var=\$def";
10081         fi;
10082         $rm -f temp.?;;
10083 *) eval "$var=\$varval";;
10084 esac'
10085
10086 : define an is-a-typedef? function that prompts if the type is not available.
10087 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10088 case "$inclist" in
10089 "") inclist="sys/types.h";;
10090 esac;
10091 eval "varval=\$$var";
10092 case "$varval" in
10093 "")
10094         $rm -f temp.c;
10095         for inc in $inclist; do
10096                 echo "#include <$inc>" >>temp.c;
10097         done;
10098         echo "#ifdef $type" >> temp.c;
10099         echo "printf(\"We have $type\");" >> temp.c;
10100         echo "#endif" >> temp.c;
10101         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10102         echo " " ;
10103         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
10104         if $contains $type temp.E >/dev/null 2>&1; then
10105                 echo "$type found." >&4;
10106                 eval "$var=\$type";
10107         else
10108                 echo "$type NOT found." >&4;
10109                 dflt="$def";
10110                 . ./myread ;
10111                 eval "$var=\$ans";
10112         fi;
10113         $rm -f temp.?;;
10114 *) eval "$var=\$varval";;
10115 esac'
10116
10117 : see if this is a sys/times.h system
10118 set sys/times.h i_systimes
10119 eval $inhdr
10120
10121 : see if times exists
10122 echo " "
10123 if set times val -f d_times; eval $csym; $val; then
10124         echo 'times() found.' >&4
10125         d_times="$define"
10126         inc=''
10127         case "$i_systimes" in
10128         "$define") inc='sys/times.h';;
10129         esac
10130         rp="What is the type returned by times() on this system?"
10131         set clock_t clocktype long stdio.h sys/types.h $inc
10132         eval $typedef_ask
10133 else
10134         echo 'times() NOT found, hope that will do.' >&4
10135         d_times="$undef"
10136         clocktype='int'
10137 fi
10138
10139 : see if truncate exists
10140 set truncate d_truncate
10141 eval $inlibc
10142
10143 : see if tzname[] exists
10144 echo " "
10145 if set tzname val -a d_tzname; eval $csym; $val; then
10146         val="$define"
10147         echo 'tzname[] found.' >&4
10148 else
10149         val="$undef"
10150         echo 'tzname[] NOT found.' >&4
10151 fi
10152 set d_tzname
10153 eval $setvar
10154
10155 : see if umask exists
10156 set umask d_umask
10157 eval $inlibc
10158
10159 : backward compatibility for d_hvfork
10160 if test X$d_hvfork != X; then
10161         d_vfork="$d_hvfork"
10162         d_hvfork=''
10163 fi
10164 : see if there is a vfork
10165 val=''
10166 set vfork val
10167 eval $inlibc
10168
10169 : Ok, but do we want to use it. vfork is reportedly unreliable in 
10170 : perl on Solaris 2.x, and probably elsewhere.
10171 case "$val" in
10172 $define)
10173         echo " "
10174         case "$usevfork" in
10175         false) dflt='n';;
10176         *) dflt='y';;
10177         esac
10178         cat <<'EOM'
10179  
10180 Perl can only use a vfork() that doesn't suffer from strict
10181 restrictions on calling functions or modifying global data in
10182 the child.  For example, glibc-2.1 contains such a vfork()
10183 that is unsuitable.  If your system provides a proper fork()
10184 call, chances are that you do NOT want perl to use vfork().
10185
10186 EOM
10187         rp="Do you still want to use vfork()?"
10188         . ./myread
10189         case "$ans" in
10190         y|Y) ;;
10191         *)
10192                 echo "Ok, we won't use vfork()."
10193                 val="$undef"
10194                 ;;
10195         esac
10196         ;;
10197 esac
10198 set d_vfork
10199 eval $setvar
10200 case "$d_vfork" in
10201 $define) usevfork='true';;
10202 *) usevfork='false';;
10203 esac
10204
10205 : see if this is an sysdir system
10206 set sys/dir.h i_sysdir
10207 eval $inhdr
10208
10209 : see if this is an sysndir system
10210 set sys/ndir.h i_sysndir
10211 eval $inhdr
10212
10213 : see if closedir exists
10214 set closedir d_closedir
10215 eval $inlibc
10216
10217 case "$d_closedir" in
10218 "$define")
10219         echo " "
10220         echo "Checking whether closedir() returns a status..." >&4
10221         cat > closedir.c <<EOM
10222 #$i_dirent I_DIRENT             /**/
10223 #$i_sysdir I_SYS_DIR            /**/
10224 #$i_sysndir I_SYS_NDIR          /**/
10225 #$i_systypes I_SYS_TYPES        /**/
10226
10227 #if defined(I_SYS_TYPES)
10228 #include <sys/types.h>
10229 #endif
10230 #if defined(I_DIRENT)
10231 #include <dirent.h>
10232 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10233 #include <sys/dir.h>
10234 #endif
10235 #else
10236 #ifdef I_SYS_NDIR
10237 #include <sys/ndir.h>
10238 #else
10239 #ifdef I_SYS_DIR
10240 #ifdef hp9000s500
10241 #include <ndir.h>       /* may be wrong in the future */
10242 #else
10243 #include <sys/dir.h>
10244 #endif
10245 #endif
10246 #endif
10247 #endif 
10248 int main() { return closedir(opendir(".")); }
10249 EOM
10250         set closedir
10251         if eval $compile_ok; then
10252                 if ./closedir > /dev/null 2>&1 ; then
10253                         echo "Yes, it does."
10254                         val="$undef"
10255                 else
10256                         echo "No, it doesn't."
10257                         val="$define"
10258                 fi
10259         else
10260                 echo "(I can't seem to compile the test program--assuming it doesn't)"
10261                 val="$define"
10262         fi
10263         ;;
10264 *)
10265         val="$undef";
10266         ;;
10267 esac
10268 set d_void_closedir
10269 eval $setvar
10270 $rm -f closedir*
10271 : check for volatile keyword
10272 echo " "
10273 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10274 $cat >try.c <<'EOCP'
10275 int main()
10276 {
10277         typedef struct _goo_struct goo_struct;
10278         goo_struct * volatile goo = ((goo_struct *)0);
10279         struct _goo_struct {
10280                 long long_int;
10281                 int reg_int;
10282                 char char_var;
10283         };
10284         typedef unsigned short foo_t;
10285         char *volatile foo;
10286         volatile int bar;
10287         volatile foo_t blech;
10288         foo = foo;
10289 }
10290 EOCP
10291 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10292         val="$define"
10293         echo "Yup, it does."
10294 else
10295         val="$undef"
10296         echo "Nope, it doesn't."
10297 fi
10298 set d_volatile
10299 eval $setvar
10300 $rm -f try.*
10301
10302 : see if there is a wait4
10303 set wait4 d_wait4
10304 eval $inlibc
10305
10306 : see if waitpid exists
10307 set waitpid d_waitpid
10308 eval $inlibc
10309
10310 : see if wcstombs exists
10311 set wcstombs d_wcstombs
10312 eval $inlibc
10313
10314 : see if wctomb exists
10315 set wctomb d_wctomb
10316 eval $inlibc
10317
10318 : see if writev exists
10319 set writev d_writev
10320 eval $inlibc
10321
10322 : preserve RCS keywords in files with variable substitution, grrr
10323 Date='$Date'
10324 Id='$Id'
10325 Log='$Log'
10326 RCSfile='$RCSfile'
10327 Revision='$Revision'
10328
10329 case "$crosscompile" in
10330 ''|[nN]*) crosscompile="$undef" ;;
10331 esac
10332
10333 case "$osname" in
10334 next|rhapsody) multiarch="$define" ;;
10335 esac
10336 case "$multiarch" in
10337 ''|[nN]*) multiarch="$undef" ;;
10338 esac
10339
10340 : check for alignment requirements
10341 echo " "
10342 case "$crosscompile$multiarch" in
10343 *$define*)
10344         $cat <<EOM
10345 You seem to be either cross-compiling or doing a multiarchitecture build,
10346 skipping the memory alignment check.
10347
10348 EOM
10349         case "$alignbytes" in
10350         '') alignbytes=8 ;;
10351         esac
10352         ;;
10353 *)
10354         case "$alignbytes" in
10355         '') echo "Checking alignment constraints..." >&4
10356                 $cat >try.c <<'EOCP'
10357 struct foobar {
10358         char foo;
10359         double bar;
10360 } try_algn;
10361 int main()
10362 {
10363         printf("%d\n", (char *)&try_algn.bar - (char *)&try_algn.foo);
10364 }
10365 EOCP
10366                 set try
10367                 if eval $compile_ok; then
10368                         dflt=`./try`
10369                 else
10370                         dflt='8'
10371                         echo "(I can't seem to compile the test program...)"
10372                 fi
10373                 ;;
10374         *) dflt="$alignbytes"
10375                 ;;
10376         esac
10377         rp="Doubles must be aligned on a how-many-byte boundary?"
10378         . ./myread
10379         alignbytes="$ans"
10380         $rm -f try.c try
10381         ;;
10382 esac
10383
10384
10385 : check for ordering of bytes in a long
10386 echo " "
10387 case "$crosscompile$multiarch" in
10388 *$define*)
10389         $cat <<EOM
10390 You seem to be either cross-compiling or doing a multiarchitecture build,
10391 skipping the byteorder check.
10392
10393 EOM
10394         byteorder=''
10395         ;;
10396 *)
10397         case "$byteorder" in
10398         '')
10399                 $cat <<'EOM'
10400 In the following, larger digits indicate more significance.  A big-endian
10401 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10402 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10403 machines may have weird orders like 3412.  A Cray will report 87654321. If
10404 the test program works the default is probably right.
10405 I'm now running the test program...
10406 EOM
10407                 $cat >try.c <<'EOCP'
10408 #include <stdio.h>
10409 int main()
10410 {
10411         int i;
10412         union {
10413                 unsigned long l;
10414                 char c[sizeof(long)];
10415         } u;
10416
10417         if (sizeof(long) > 4)
10418                 u.l = (0x08070605L << 32) | 0x04030201L;
10419         else
10420                 u.l = 0x04030201L;
10421         for (i = 0; i < sizeof(long); i++)
10422                 printf("%c", u.c[i]+'0');
10423         printf("\n");
10424         exit(0);
10425 }
10426 EOCP
10427                 xxx_prompt=y
10428                 set try
10429                 if eval $compile && ./try > /dev/null; then
10430                         dflt=`./try`
10431                         case "$dflt" in
10432                         [1-4][1-4][1-4][1-4]|12345678|87654321)
10433                                 echo "(The test program ran ok.)"
10434                                 echo "byteorder=$dflt"
10435                                 xxx_prompt=n
10436                         ;;
10437                         ????|????????) echo "(The test program ran ok.)" ;;
10438                         *) echo "(The test program didn't run right for some reason.)" ;;
10439                         esac
10440                 else
10441                         dflt='4321'
10442                         cat <<'EOM'
10443 (I can't seem to compile the test program.  Guessing big-endian...)
10444 EOM
10445                 fi
10446                 case "$xxx_prompt" in
10447                 y)
10448                         rp="What is the order of bytes in a long?"
10449                         . ./myread
10450                         byteorder="$ans"
10451                         ;;
10452                 *)      byteorder=$dflt
10453                         ;;
10454                 esac
10455                 ;;
10456         esac
10457         $rm -f try.c try
10458         ;;
10459 esac
10460
10461
10462 : how do we catenate cpp tokens here?
10463 echo " "
10464 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10465 $cat >cpp_stuff.c <<'EOCP'
10466 #define RCAT(a,b)a/**/b
10467 #define ACAT(a,b)a ## b
10468 RCAT(Rei,ser)
10469 ACAT(Cir,cus)
10470 EOCP
10471 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10472 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10473         echo "Oh!  Smells like ANSI's been here." >&4
10474         echo "We can catify or stringify, separately or together!"
10475         cpp_stuff=42
10476 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10477         echo "Ah, yes!  The good old days!" >&4
10478         echo "However, in the good old days we don't know how to stringify and"
10479         echo "catify at the same time."
10480         cpp_stuff=1
10481 else
10482         $cat >&4 <<EOM
10483 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
10484 to have to edit the values of CAT[2-5] in config.h...
10485 EOM
10486         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10487 fi
10488 $rm -f cpp_stuff.*
10489
10490 : see if this is a db.h system
10491 set db.h i_db
10492 eval $inhdr
10493
10494 case "$i_db" in
10495 $define)
10496         : Check db version.
10497         echo " "
10498         echo "Checking Berkeley DB version ..." >&4
10499         $cat >try.c <<EOCP
10500 #$d_const HASCONST
10501 #ifndef HASCONST
10502 #define const
10503 #endif
10504 #include <sys/types.h>
10505 #include <stdio.h>
10506 #include <db.h>
10507 int main()
10508 {
10509 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10510     int Major, Minor, Patch ;
10511     unsigned long Version ;
10512     (void)db_version(&Major, &Minor, &Patch) ;
10513     printf("You have Berkeley DB Version 2 or greater\n");
10514
10515     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10516                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10517     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10518                 Major, Minor, Patch) ;
10519
10520     /* check that db.h & libdb are compatible */
10521     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10522         printf("db.h and libdb are incompatible\n") ;
10523         exit(3);        
10524     }
10525
10526     printf("db.h and libdb are compatible\n") ;
10527
10528     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10529                 + DB_VERSION_PATCH ;
10530
10531     /* needs to be >= 2.3.4 */
10532     if (Version < 2003004) {
10533     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10534         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10535         exit(2);        
10536     }
10537
10538     exit(0);
10539 #else
10540 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10541     printf("You have Berkeley DB Version 1\n");
10542     exit(0);    /* DB version < 2: the coast is clear. */
10543 #else
10544     exit(1);    /* <db.h> not Berkeley DB? */
10545 #endif
10546 #endif
10547 }
10548 EOCP
10549         set try
10550         if eval $compile && ./try; then
10551                 echo 'Looks OK.' >&4
10552         else
10553                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
10554                 i_db=$undef
10555                 case " $libs " in
10556                 *"-ldb "*)
10557                         : Remove db from list of libraries to use
10558                         echo "Removing unusable -ldb from library list" >&4
10559                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10560                         shift
10561                         libs="$*"
10562                         echo "libs = $libs" >&4
10563                         ;;
10564                 esac
10565         fi
10566         $rm -f try.*
10567         ;;
10568 esac
10569
10570 case "$i_db" in
10571 define)
10572         : Check the return type needed for hash 
10573         echo " "
10574         echo "Checking return type needed for hash for Berkeley DB ..." >&4
10575         $cat >try.c <<EOCP
10576 #$d_const HASCONST
10577 #ifndef HASCONST
10578 #define const
10579 #endif
10580 #include <sys/types.h>
10581 #include <db.h>
10582
10583 #ifndef DB_VERSION_MAJOR
10584 u_int32_t hash_cb (ptr, size)
10585 const void *ptr;
10586 size_t size;
10587 {
10588 }
10589 HASHINFO info;
10590 int main()
10591 {
10592         info.hash = hash_cb;
10593 }
10594 #endif
10595 EOCP
10596         if $cc $ccflags -c try.c >try.out 2>&1 ; then
10597                 if $contains warning try.out >>/dev/null 2>&1 ; then
10598                         db_hashtype='int'
10599                 else
10600                         db_hashtype='u_int32_t'
10601                 fi
10602         else
10603                 : XXX Maybe we should just give up here.
10604                 db_hashtype=u_int32_t
10605                 $cat try.out >&4
10606                 echo "Help:  I can't seem to compile the db test program." >&4
10607                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10608         fi
10609         $rm -f try.*
10610         echo "Your version of Berkeley DB uses $db_hashtype for hash."
10611         ;;
10612 *)      db_hashtype=u_int32_t
10613         ;;
10614 esac
10615 case "$i_db" in
10616 define)
10617         : Check the return type needed for prefix 
10618         echo " "
10619         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10620         cat >try.c <<EOCP
10621 #$d_const HASCONST
10622 #ifndef HASCONST
10623 #define const
10624 #endif
10625 #include <sys/types.h>
10626 #include <db.h>
10627
10628 #ifndef DB_VERSION_MAJOR
10629 size_t prefix_cb (key1, key2)
10630 const DBT *key1;
10631 const DBT *key2;
10632 {
10633 }
10634 BTREEINFO info;
10635 int main()
10636 {
10637         info.prefix = prefix_cb;
10638 }
10639 #endif
10640 EOCP
10641         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
10642                 if $contains warning try.out >>/dev/null 2>&1 ; then
10643                         db_prefixtype='int'
10644                 else
10645                         db_prefixtype='size_t'
10646                 fi
10647         else
10648                 db_prefixtype='size_t'
10649                 : XXX Maybe we should just give up here.
10650                 $cat try.out >&4
10651                 echo "Help:  I can't seem to compile the db test program." >&4
10652                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10653         fi
10654         $rm -f try.*
10655         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10656         ;;
10657 *)      db_prefixtype='size_t'
10658         ;;
10659 esac
10660
10661 : check for void type
10662 echo " "
10663 echo "Checking to see how well your C compiler groks the void type..." >&4
10664 case "$voidflags" in
10665 '')
10666         $cat >try.c <<'EOCP'
10667 #if TRY & 1
10668 void sub() {
10669 #else
10670 sub() {
10671 #endif
10672         extern void moo();      /* function returning void */
10673         void (*goo)();          /* ptr to func returning void */
10674 #if TRY & 8
10675         void *hue;              /* generic ptr */
10676 #endif
10677 #if TRY & 2
10678         void (*foo[10])();
10679 #endif
10680
10681 #if TRY & 4
10682         if(goo == moo) {
10683                 exit(0);
10684         }
10685 #endif
10686         exit(0);
10687 }
10688 int main() { sub(); }
10689 EOCP
10690         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10691                 voidflags=$defvoidused
10692         echo "Good.  It appears to support void to the level $package wants.">&4
10693                 if $contains warning .out >/dev/null 2>&1; then
10694                         echo "However, you might get some warnings that look like this:"
10695                         $cat .out
10696                 fi
10697         else
10698 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10699                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10700                         echo "It supports 1..."
10701                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10702                                 echo "It also supports 2..."
10703                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10704                                         voidflags=7
10705                                         echo "And it supports 4 but not 8 definitely."
10706                                 else
10707                                         echo "It doesn't support 4..."
10708                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10709                                                 voidflags=11
10710                                                 echo "But it supports 8."
10711                                         else
10712                                                 voidflags=3
10713                                                 echo "Neither does it support 8."
10714                                         fi
10715                                 fi
10716                         else
10717                                 echo "It does not support 2..."
10718                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10719                                         voidflags=13
10720                                         echo "But it supports 4 and 8."
10721                                 else
10722                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10723                                                 voidflags=5
10724                                                 echo "And it supports 4 but has not heard about 8."
10725                                         else
10726                                                 echo "However it supports 8 but not 4."
10727                                         fi
10728                                 fi
10729                         fi
10730                 else
10731                         echo "There is no support at all for void."
10732                         voidflags=0
10733                 fi
10734         fi
10735 esac
10736 case "$voidflags" in
10737 "$defvoidused") ;;
10738 *)      $cat >&4 <<'EOM'
10739   Support flag bits are:
10740     1: basic void declarations.
10741     2: arrays of pointers to functions returning void.
10742     4: operations between pointers to and addresses of void functions.
10743     8: generic void pointers.
10744 EOM
10745         dflt="$voidflags";
10746         rp="Your void support flags add up to what?"
10747         . ./myread
10748         voidflags="$ans"
10749         ;;
10750 esac
10751 $rm -f try.* .out
10752
10753
10754 : How can we generate normalized random numbers ?
10755 echo " "
10756 echo "Looking for a random number function..." >&4
10757 case "$randfunc" in
10758 '')
10759         if set drand48 val -f; eval $csym; $val; then
10760                 dflt="drand48"
10761                 echo "Good, found drand48()." >&4
10762         elif set random val -f; eval $csym; $val; then
10763                 dflt="random"
10764                 echo "OK, found random()." >&4
10765         else
10766                 dflt="rand"
10767                 echo "Yick, looks like I have to use rand()." >&4
10768         fi
10769         echo " "
10770         ;;
10771 *)
10772         dflt="$randfunc"
10773         ;;
10774 esac
10775 cont=true
10776
10777 case "$ccflags" in
10778 *-Dmy_rand=*|*-Dmy_srand=*)
10779         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10780         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10781         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10782         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10783         ;;
10784 esac
10785
10786 while $test "$cont"; do
10787         rp="Use which function to generate random numbers?"
10788         . ./myread
10789         if $test "$ans" = "$dflt"; then
10790                 : null
10791         else
10792                 randbits=''
10793         fi
10794         randfunc="$ans"
10795         if set $ans val -f; eval $csym; $val; then
10796                 cont=''
10797         else
10798                 dflt=y
10799                 rp="I cannot find function $ans. Use that name anyway?"
10800                 . ./myread
10801                 dflt=rand
10802                 case "$ans" in
10803                         [yY]*) cont='';;
10804                 esac
10805         fi
10806         case "$cont" in
10807         '')
10808                 case "$randfunc" in
10809                 drand48)
10810                         drand01="drand48()"
10811                         seedfunc="srand48"
10812                         randbits=48
10813                         randseedtype=long
10814                         ;;
10815                 rand|random)
10816                         case "$randbits" in
10817                         '')
10818 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10819                                 $cat >try.c <<EOCP
10820 #$i_unistd I_UNISTD
10821 #$i_stdlib I_STDLIB
10822 #include <stdio.h>
10823 #ifdef I_UNISTD
10824 #  include <unistd.h>
10825 #endif
10826 #ifdef I_STDLIB
10827 #  include <stdlib.h>
10828 #endif
10829 int main()
10830 {
10831         register int i;
10832         register unsigned long tmp;
10833         register unsigned long max = 0L;
10834
10835         for (i = 1000; i; i--) {
10836                 tmp = (unsigned long) $randfunc();
10837                 if (tmp > max) max = tmp;
10838         }
10839         for (i = 0; max; i++)
10840                 max /= 2;
10841         printf("%d\n",i);
10842 }
10843 EOCP
10844                                 set try
10845                                 if eval $compile_ok; then
10846                                         dflt=`try`
10847                                 else
10848                                         dflt='?'
10849                                         echo "(I can't seem to compile the test program...)"
10850                                 fi
10851                                 ;;
10852                         *)
10853                                 dflt="$randbits"
10854                                 ;;
10855                         esac
10856                         rp="How many bits does your $randfunc() function produce?"
10857                         . ./myread
10858                         randbits="$ans"
10859                         $rm -f try.c try
10860                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10861                         seedfunc="s$randfunc"
10862                         randseedtype=unsigned
10863                         ;;
10864                 *)
10865                         dflt="31"
10866                         rp="How many bits does your $randfunc() function produce?"
10867                         . ./myread
10868                         randbits="$ans"
10869                         seedfunc="s$randfunc"
10870                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10871                         if set $seedfunc val -f; eval $csym; $val; then
10872                                 echo "(Using $seedfunc() to seed random generator)"
10873                         else
10874                                 echo "(Warning: no $seedfunc() to seed random generator)"
10875                                 seedfunc=rand
10876                         fi
10877                         randseedtype=unsigned
10878                         ;;
10879                 esac
10880                 ;;
10881         esac
10882 done
10883
10884 echo " "
10885 echo "Determining whether or not we are on an EBCDIC system..." >&4
10886 $cat >tebcdic.c <<'EOM'
10887 int main()
10888 {
10889   if ('M'==0xd4) return 0;
10890   return 1;
10891 }
10892 EOM
10893
10894 val=$undef
10895 set tebcdic
10896 if eval $compile_ok; then
10897         if ./tebcdic; then
10898                 echo "You have EBCDIC." >&4
10899                 val="$define"
10900         else
10901                 echo "Nope, no EBCDIC.  Assuming ASCII or some ISO Latin." >&4
10902         fi
10903 else
10904         echo "I'm unable to compile the test program." >&4
10905         echo "I'll assume ASCII or some ISO Latin." >&4
10906 fi
10907 $rm -f tebcdic.c tebcdic
10908 set ebcdic
10909 eval $setvar
10910
10911 : see what type file positions are declared as in the library
10912 rp="What is the type for file position used by fsetpos()?"
10913 set fpos_t fpostype long stdio.h sys/types.h
10914 eval $typedef_ask
10915
10916 : Store the full pathname to the ar program for use in the C program
10917 : Respect a hint or command line value for full_ar.
10918 case "$full_ar" in
10919 '') full_ar=$ar ;;
10920 esac
10921
10922 : Store the full pathname to the sed program for use in the C program
10923 full_sed=$sed
10924
10925 : see what type gids are declared as in the kernel
10926 echo " "
10927 echo "Looking for the type for group ids returned by getgid()."
10928 set gid_t gidtype xxx stdio.h sys/types.h
10929 eval $typedef
10930 case "$gidtype" in
10931 xxx)
10932         xxx=`./findhdr sys/user.h`
10933         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
10934         case $1 in
10935         unsigned) dflt="$1 $2" ;;
10936         *) dflt="$1" ;;
10937         esac
10938         ;;
10939 *) dflt="$gidtype";;
10940 esac
10941 case "$gidtype" in
10942 gid_t) echo "gid_t found." ;;
10943 *)      rp="What is the type for group ids returned by getgid()?"
10944         . ./myread
10945         gidtype="$ans"
10946         ;;
10947 esac
10948
10949 : see if getgroups exists
10950 set getgroups d_getgrps
10951 eval $inlibc
10952
10953 : see if setgroups exists
10954 set setgroups d_setgrps
10955 eval $inlibc
10956
10957
10958 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
10959 echo " "
10960 case "$d_getgrps$d_setgrps" in
10961 *define*)
10962         case "$groupstype" in
10963         '') dflt="$gidtype" ;;
10964         *)  dflt="$groupstype" ;;
10965         esac
10966         $cat <<EOM
10967 What type of pointer is the second argument to getgroups() and setgroups()?
10968 Usually this is the same as group ids, $gidtype, but not always.
10969
10970 EOM
10971         rp='What type pointer is the second argument to getgroups() and setgroups()?'
10972         . ./myread
10973         groupstype="$ans"
10974         ;;
10975 *)  groupstype="$gidtype";;
10976 esac
10977
10978 : see what type lseek is declared as in the kernel
10979 rp="What is the type used for lseek's offset on this system?"
10980 set off_t lseektype long stdio.h sys/types.h
10981 eval $typedef_ask
10982
10983 echo " "
10984 $echo $n "Checking to see how big your file offsets are...$c" >&4
10985 $cat >try.c <<EOCP
10986 #include <sys/types.h>
10987 #include <stdio.h>
10988 int main()
10989 {
10990         printf("%d\n", sizeof($lseektype));
10991 }
10992 EOCP
10993 set try
10994 if eval $compile_ok; then
10995         lseeksize=`./try`
10996         $echo " $lseeksize bytes." >&4
10997 else
10998         dflt='4'
10999         echo " "
11000         echo "(I can't seem to compile the test program.  Guessing...)"
11001         rp="What is the size of your file offsets (in bytes)?"
11002         . ./myread
11003         lseeksize="$ans"
11004 fi
11005 $rm -f try.c try
11006
11007 echo " "
11008 echo "Checking if your $make program sets \$(MAKE)..." >&4
11009 case "$make_set_make" in
11010 '')
11011         $sed 's/^X //' > testmake.mak << 'EOF'
11012 Xall:
11013 X       @echo 'maketemp="$(MAKE)"'
11014 EOF
11015         case "`$make -f testmake.mak 2>/dev/null`" in
11016         *maketemp=*) make_set_make='#' ;;
11017         *)      make_set_make="MAKE=$make" ;;
11018         esac
11019         $rm -f testmake.mak
11020         ;;
11021 esac
11022 case "$make_set_make" in
11023 '#') echo "Yup, it does.";;
11024 *) echo "Nope, it doesn't.";;
11025 esac
11026
11027 : see what type is used for mode_t
11028 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
11029 set mode_t modetype int stdio.h sys/types.h
11030 eval $typedef_ask
11031
11032 : define a fucntion to check prototypes
11033 $cat > protochk <<EOSH
11034 $startsh
11035 cc="$cc"
11036 optimize="$optimize"
11037 ccflags="$ccflags"
11038 prototype="$prototype"
11039 define="$define"
11040 rm=$rm
11041 EOSH
11042
11043 $cat >> protochk <<'EOSH'
11044
11045 $rm -f try.c
11046 foo="$1"
11047 shift
11048 while test $# -ge 2; do
11049         case "$1" in
11050                 $define) echo "#include <$2>" >> try.c ;;
11051                 literal) echo "$2" >> try.c ;;
11052         esac
11053     shift 2
11054 done
11055 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
11056 cat >> try.c <<'EOCP'
11057 #ifdef CAN_PROTOTYPE
11058 #define _(args) args
11059 #else
11060 #define _(args) ()
11061 #endif
11062 EOCP
11063 echo "$foo" >> try.c
11064 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
11065 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
11066 status=$?
11067 $rm -f try.[co]
11068 exit $status
11069 EOSH
11070 chmod +x protochk
11071 $eunicefix protochk
11072
11073 : see what type is used for size_t
11074 rp="What is the type used for the length parameter for string functions?"
11075 set size_t sizetype 'unsigned int' stdio.h sys/types.h
11076 eval $typedef_ask
11077
11078 : check for type of arguments to gethostbyaddr. 
11079 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
11080         case "$d_gethbyaddr" in
11081         $define)
11082                 $cat <<EOM
11083
11084 Checking to see what type of arguments are accepted by gethostbyaddr().
11085 EOM
11086                 hdrs="$define sys/types.h
11087                         $d_socket sys/socket.h 
11088                         $i_niin netinet/in.h 
11089                         $i_netdb netdb.h
11090                         $i_unistd unistd.h"
11091                 : The first arg can 'char *' or 'void *'
11092                 : The second arg is some of integral type
11093                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
11094                         for yyy in size_t long int; do
11095                                 case "$netdb_host_type" in
11096                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
11097                                         if ./protochk "$try" $hdrs; then
11098                                                 echo "Your system accepts $xxx for the first arg."
11099                                                 echo "...and $yyy for the second arg."
11100                                                 netdb_host_type="$xxx"
11101                                                 netdb_hlen_type="$yyy"
11102                                         fi
11103                                         ;;
11104                                 esac
11105                         done
11106                 done
11107                 : In case none of those worked, prompt the user.
11108                 case "$netdb_host_type" in
11109                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
11110                         dflt='char *'
11111                         . ./myread
11112                         netdb_host_type=$ans
11113                         rp='What is the type for the 2nd argument to gethostbyaddr?'
11114                         dflt="$sizetype"
11115                         . ./myread
11116                         netdb_hlen_type=$ans
11117                         ;;
11118                 esac
11119                 ;;
11120         *)      : no gethostbyaddr, so pick harmless defaults
11121                 netdb_host_type='char *'
11122                 netdb_hlen_type="$sizetype"
11123                 ;;
11124         esac
11125         # Remove the "const" if needed. -- but then we'll have a 
11126         # prototype clash!
11127         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
11128 fi
11129
11130 : check for type of argument to gethostbyname. 
11131 if test "X$netdb_name_type" = X ; then
11132         case "$d_gethbyname" in
11133         $define)
11134                 $cat <<EOM
11135
11136 Checking to see what type of argument is accepted by gethostbyname().
11137 EOM
11138                 hdrs="$define sys/types.h
11139                         $d_socket sys/socket.h 
11140                         $i_niin netinet/in.h 
11141                         $i_netdb netdb.h
11142                         $i_unistd unistd.h"
11143                 for xxx in "const char *" "char *"; do
11144                         case "$netdb_name_type" in
11145                         '')     try="extern struct hostent *gethostbyname($xxx);"
11146                                 if ./protochk "$try" $hdrs; then
11147                                         echo "Your system accepts $xxx."
11148                                         netdb_name_type="$xxx"
11149                                 fi
11150                                 ;;
11151                         esac
11152                 done
11153                 : In case none of those worked, prompt the user.
11154                 case "$netdb_name_type" in
11155                 '')     rp='What is the type for the 1st argument to gethostbyname?'
11156                         dflt='char *'
11157                         . ./myread
11158                         netdb_name_type=$ans
11159                         ;;
11160                 esac
11161                 ;;
11162         *)      : no gethostbyname, so pick harmless default
11163                 netdb_name_type='char *'
11164                 ;;
11165         esac
11166 fi
11167
11168 : check for type of 1st argument to getnetbyaddr. 
11169 if test "X$netdb_net_type" = X ; then
11170         case "$d_getnbyaddr" in
11171         $define)
11172                 $cat <<EOM
11173
11174 Checking to see what type of 1st argument is accepted by getnetbyaddr().
11175 EOM
11176                 hdrs="$define sys/types.h
11177                         $d_socket sys/socket.h 
11178                         $i_niin netinet/in.h 
11179                         $i_netdb netdb.h
11180                         $i_unistd unistd.h"
11181                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11182                         case "$netdb_net_type" in
11183                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
11184                                 if ./protochk "$try" $hdrs; then
11185                                         echo "Your system accepts $xxx."
11186                                         netdb_net_type="$xxx"
11187                                 fi
11188                                 ;;
11189                         esac
11190                 done
11191                 : In case none of those worked, prompt the user.
11192                 case "$netdb_net_type" in
11193                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
11194                         dflt='long'
11195                         . ./myread
11196                         netdb_net_type=$ans
11197                         ;;
11198                 esac
11199                 ;;
11200         *)      : no getnetbyaddr, so pick harmless default
11201                 netdb_net_type='long'
11202                 ;;
11203         esac
11204 fi
11205 : locate the preferred pager for this system
11206 case "$pager" in
11207 '')
11208         dflt=''
11209         case "$pg" in
11210         /*) dflt=$pg;;
11211         esac
11212         case "$more" in
11213         /*) dflt=$more;;
11214         esac
11215         case "$less" in
11216         /*) dflt=$less;;
11217         esac
11218         case "$dflt" in
11219         '') dflt=/usr/ucb/more;;
11220         esac
11221         ;;
11222 *) dflt="$pager";;
11223 esac
11224 echo " "
11225 fn=f/
11226 rp='What pager is used on your system?'
11227 . ./getfile
11228 pager="$ans"
11229
11230 : see what type pids are declared as in the kernel
11231 rp="What is the type of process ids on this system?"
11232 set pid_t pidtype int stdio.h sys/types.h
11233 eval $typedef_ask
11234
11235 : check for length of pointer
11236 echo " "
11237 case "$ptrsize" in
11238 '')
11239         $echo $n "Checking to see how big your pointers are...$c" >&4
11240         if test "$voidflags" -gt 7; then
11241                 echo '#define VOID_PTR char *' > try.c
11242         else
11243                 echo '#define VOID_PTR void *' > try.c
11244         fi
11245         $cat >>try.c <<'EOCP'
11246 #include <stdio.h>
11247 int main()
11248 {
11249         printf("%d\n", sizeof(VOID_PTR));
11250         exit(0);
11251 }
11252 EOCP
11253         set try
11254         if eval $compile_ok; then
11255                 ptrsize=`./try`
11256                 $echo " $ptrsize bytes." >&4
11257         else
11258                 dflt='4'
11259                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
11260                 rp="What is the size of a pointer (in bytes)?"
11261                 . ./myread
11262                 ptrsize="$ans"
11263         fi
11264         ;;
11265 esac
11266 $rm -f try.c try
11267
11268 : see if ar generates random libraries by itself
11269 echo " "
11270 echo "Checking how to generate random libraries on your machine..." >&4
11271 echo 'int bar1() { return bar2(); }' > bar1.c
11272 echo 'int bar2() { return 2; }' > bar2.c
11273 $cat > foo.c <<'EOP'
11274 int main() { printf("%d\n", bar1()); exit(0); }
11275 EOP
11276 $cc $ccflags -c bar1.c >/dev/null 2>&1
11277 $cc $ccflags -c bar2.c >/dev/null 2>&1
11278 $cc $ccflags -c foo.c >/dev/null 2>&1
11279 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11280 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11281         ./foobar >/dev/null 2>&1; then
11282         echo "$ar appears to generate random libraries itself."
11283         orderlib=false
11284         ranlib=":"
11285 elif $ar ts bar$_a >/dev/null 2>&1 &&
11286         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11287         ./foobar >/dev/null 2>&1; then
11288                 echo "a table of contents needs to be added with '$ar ts'."
11289                 orderlib=false
11290                 ranlib="$ar ts"
11291 else
11292         case "$ranlib" in
11293         :) ranlib='';;
11294         '')
11295                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11296                 $test -f $ranlib || ranlib=''
11297                 ;;
11298         esac
11299         if $test -n "$ranlib"; then
11300                 echo "your system has '$ranlib'; we'll use that."
11301                 orderlib=false
11302         else
11303                 echo "your system doesn't seem to support random libraries"
11304                 echo "so we'll use lorder and tsort to order the libraries."
11305                 orderlib=true
11306                 ranlib=":"
11307         fi
11308 fi
11309 $rm -f foo* bar* 
11310
11311 : check for type of arguments to select. 
11312 case "$selecttype" in
11313 '') case "$d_select" in
11314         $define)
11315                 $cat <<EOM
11316 Checking to see what type of arguments are accepted by select().
11317 EOM
11318                 hdrs="$define sys/types.h
11319                         $i_systime sys/time.h 
11320                         $i_sysselct sys/select.h
11321                         $d_socket sys/socket.h"
11322                 : The first arg can be int, unsigned, or size_t
11323                 : The last arg may or may not be 'const'
11324                 val=''
11325                 : void pointer has been seen but using that
11326                 : breaks the selectminbits test
11327                 for xxx in 'fd_set *' 'int *'; do
11328                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11329                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
11330                                         case "$val" in
11331                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11332                                                 if ./protochk "$try" $hdrs; then
11333                                                         echo "Your system accepts $xxx."
11334                                                         val="$xxx"
11335                                                 fi
11336                                                 ;;
11337                                         esac
11338                                 done
11339                         done
11340                 done
11341                 case "$val" in
11342                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11343                         case "$d_fd_set" in
11344                                 $define) dflt="fd_set *" ;;
11345                                 *)              dflt="int *" ;;
11346                         esac
11347                         . ./myread
11348                         val=$ans
11349                         ;;
11350                 esac
11351                 selecttype="$val"
11352                 ;;
11353         *)      : no select, so pick a harmless default
11354                 selecttype='int *'
11355                 ;;
11356         esac
11357         ;;
11358 esac
11359
11360 : check for the select 'width'
11361 case "$selectminbits" in
11362 '') case "$d_select" in
11363         $define)
11364                 $cat <<EOM
11365
11366 Checking to see on how many bits at a time your select() operates...
11367 EOM
11368                 $cat >try.c <<EOCP
11369 #include <sys/types.h>
11370 #$i_time I_TIME
11371 #$i_systime I_SYS_TIME
11372 #$i_systimek I_SYS_TIME_KERNEL
11373 #ifdef I_TIME
11374 #   include <time.h>
11375 #endif
11376 #ifdef I_SYS_TIME
11377 #   ifdef I_SYS_TIME_KERNEL
11378 #       define KERNEL
11379 #   endif
11380 #   include <sys/time.h>
11381 #   ifdef I_SYS_TIME_KERNEL
11382 #       undef KERNEL
11383 #   endif
11384 #endif
11385 #$i_sysselct I_SYS_SELECT
11386 #ifdef I_SYS_SELECT
11387 #include <sys/select.h>
11388 #endif
11389 #include <stdio.h>
11390 $selecttype b;
11391 #define S sizeof(*(b))
11392 #define MINBITS 64
11393 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11394 #define NBITS  (NBYTES * 8)
11395 int main() {
11396     char s[NBYTES];
11397     struct timeval t;
11398     int i;
11399     FILE* fp;
11400     int fd;
11401
11402     fclose(stdin);
11403     fp = fopen("try.c", "r");
11404     if (fp == 0)
11405       exit(1);
11406     fd = fileno(fp);
11407     if (fd < 0)
11408       exit(2);
11409     b = ($selecttype)s;
11410     for (i = 0; i < NBITS; i++)
11411         FD_SET(i, b);
11412     t.tv_sec  = 0;
11413     t.tv_usec = 0;
11414     select(fd + 1, b, 0, 0, &t);
11415     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11416     printf("%d\n", i + 1);
11417     return 0;
11418 }
11419 EOCP
11420                 set try
11421                 if eval $compile_ok; then
11422                         selectminbits=`./try`
11423                         case "$selectminbits" in
11424                         '')     cat >&4 <<EOM
11425 Cannot figure out on how many bits at a time your select() operates.
11426 I'll play safe and guess it is 32 bits.
11427 EOM
11428                                 selectminbits=32
11429                                 bits="32 bits"
11430                                 ;;
11431                         1)      bits="1 bit" ;;
11432                         *)      bits="$selectminbits bits" ;;
11433                         esac
11434                         echo "Your select() operates on $bits at a time." >&4
11435                 else
11436                         rp='What is the minimum number of bits your select() operates on?'
11437                         case "$byteorder" in
11438                         1234|12345678)  dflt=32 ;;
11439                         *)              dflt=1  ;;
11440                         esac
11441                         . ./myread
11442                         val=$ans
11443                         selectminbits="$val"
11444                 fi
11445                 $rm -f try.* try
11446                 ;;
11447         *)      : no select, so pick a harmless default
11448                 selectminbits='32'
11449                 ;;
11450         esac
11451         ;;
11452 esac
11453
11454 : Trace out the files included by signal.h, then look for SIGxxx names.
11455 : Remove SIGARRAYSIZE used by HPUX.
11456 : Remove SIGSTKSIZE used by Linux.
11457 : Remove SIGSTKSZ used by Posix.
11458 : Remove SIGTYP void lines used by OS2.
11459 xxx=`echo '#include <signal.h>' |
11460         $cppstdin $cppminus $cppflags 2>/dev/null |
11461         $grep '^[       ]*#.*include' | 
11462         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11463 : Check this list of files to be sure we have parsed the cpp output ok.
11464 : This will also avoid potentially non-existent files, such 
11465 : as ../foo/bar.h
11466 xxxfiles=''
11467 for xx in $xxx /dev/null ; do
11468         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11469 done
11470 : If we have found no files, at least try signal.h
11471 case "$xxxfiles" in
11472 '')     xxxfiles=`./findhdr signal.h` ;;
11473 esac
11474 xxx=`awk '
11475 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
11476         print substr($2, 4, 20)
11477 }
11478 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11479         print substr($3, 4, 20)
11480 }' $xxxfiles`
11481 : Append some common names just in case the awk scan failed.
11482 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11483 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11484 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11485 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11486 : generate a few handy files for later
11487 $cat > signal.c <<'EOCP'
11488 #include <sys/types.h>
11489 #include <signal.h>
11490 #include <stdio.h>
11491 int main() {
11492
11493 /* Strange style to avoid deeply-nested #if/#else/#endif */
11494 #ifndef NSIG
11495 #  ifdef _NSIG
11496 #    define NSIG (_NSIG)
11497 #  endif
11498 #endif
11499
11500 #ifndef NSIG
11501 #  ifdef SIGMAX
11502 #    define NSIG (SIGMAX+1)
11503 #  endif
11504 #endif
11505
11506 #ifndef NSIG
11507 #  ifdef SIG_MAX
11508 #    define NSIG (SIG_MAX+1)
11509 #  endif
11510 #endif
11511
11512 #ifndef NSIG
11513 #  ifdef MAXSIG
11514 #    define NSIG (MAXSIG+1)
11515 #  endif
11516 #endif
11517
11518 #ifndef NSIG
11519 #  ifdef MAX_SIG
11520 #    define NSIG (MAX_SIG+1)
11521 #  endif
11522 #endif
11523
11524 #ifndef NSIG
11525 #  ifdef SIGARRAYSIZE
11526 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11527 #  endif
11528 #endif
11529
11530 #ifndef NSIG
11531 #  ifdef _sys_nsig
11532 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
11533 #  endif
11534 #endif
11535
11536 /* Default to some arbitrary number that's big enough to get most
11537    of the common signals.
11538 */
11539 #ifndef NSIG
11540 #    define NSIG 50
11541 #endif
11542
11543 printf("NSIG %d\n", NSIG);
11544
11545 #ifndef JUST_NSIG
11546
11547 EOCP
11548
11549 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11550 {
11551         printf "#ifdef SIG"; printf $1; printf "\n"
11552         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11553         printf $1; printf ");\n"
11554         printf "#endif\n"
11555 }
11556 END {
11557         printf "#endif /* JUST_NSIG */\n";
11558         printf "}\n";
11559 }
11560 ' >>signal.c
11561 $cat >signal.awk <<'EOP'
11562 BEGIN { ndups = 0 }
11563 $1 ~ /^NSIG$/ { nsig = $2 }
11564 ($1 !~ /^NSIG$/) && (NF == 2) {
11565     if ($2 > maxsig) { maxsig = $2 }
11566     if (sig_name[$2]) {
11567         dup_name[ndups] = $1
11568         dup_num[ndups] = $2
11569         ndups++ 
11570     }
11571     else {
11572         sig_name[$2] = $1
11573         sig_num[$2] = $2
11574     }
11575 }
11576 END { 
11577     if (nsig == 0) {
11578         nsig = maxsig + 1
11579     }
11580     printf("NSIG %d\n", nsig);
11581     for (n = 1; n < nsig; n++) {
11582         if (sig_name[n]) {
11583             printf("%s %d\n", sig_name[n], sig_num[n])
11584         }
11585         else {
11586             printf("NUM%d %d\n", n, n) 
11587         }
11588     }
11589     for (n = 0; n < ndups; n++) {
11590         printf("%s %d\n", dup_name[n], dup_num[n])
11591     }
11592 }
11593 EOP
11594 $cat >signal_cmd <<EOS
11595 $startsh
11596 if $test -s signal.lst; then
11597     echo "Using your existing signal.lst file"
11598         exit 0
11599 fi
11600 xxx="$xxx"
11601 EOS
11602 $cat >>signal_cmd <<'EOS'
11603
11604 set signal
11605 if eval $compile_ok; then
11606         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11607 else
11608         echo "(I can't seem be able to compile the whole test program)" >&4
11609         echo "(I'll try it in little pieces.)" >&4
11610         set signal -DJUST_NSIG
11611         if eval $compile_ok; then
11612                 ./signal$_exe > signal.nsg
11613                 $cat signal.nsg
11614         else
11615                 echo "I can't seem to figure out how many signals you have." >&4
11616                 echo "Guessing 50." >&4
11617                 echo 'NSIG 50' > signal.nsg
11618         fi
11619         : Now look at all the signal names, one at a time.
11620         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11621                 $cat > signal.c <<EOCP
11622 #include <sys/types.h>
11623 #include <signal.h>
11624 #include <stdio.h>
11625 int main() {
11626 printf("$xx %d\n", SIG${xx});
11627 return 0;
11628 }
11629 EOCP
11630                 set signal
11631                 if eval $compile; then
11632                         echo "SIG${xx} found."
11633                         ./signal$_exe  >> signal.ls1
11634                 else
11635                         echo "SIG${xx} NOT found."
11636                 fi
11637         done
11638         if $test -s signal.ls1; then
11639                 $cat signal.nsg signal.ls1 |
11640                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11641         fi
11642
11643 fi
11644 if $test -s signal.lst; then
11645         :
11646 else
11647         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11648         echo 'kill -l' >signal
11649         set X `csh -f <signal`
11650         $rm -f signal
11651         shift
11652         case $# in
11653         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11654         esac
11655         echo $@ | $tr ' ' $trnl | \
11656             $awk '{ printf "%s %d\n", $1, ++s; }
11657                   END { printf "NSIG %d\n", ++s }' >signal.lst
11658 fi
11659 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11660 EOS
11661 chmod a+x signal_cmd
11662 $eunicefix signal_cmd
11663
11664 : generate list of signal names
11665 echo " "
11666 case "$sig_name_init" in
11667 '') doinit=yes ;;
11668 *)  case "$sig_num_init" in
11669     ''|*,*) doinit=yes ;;
11670     esac ;;
11671 esac
11672 case "$doinit" in
11673 yes)
11674         echo "Generating a list of signal names and numbers..." >&4
11675         . ./signal_cmd
11676         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
11677         sig_name=`$awk 'BEGIN { printf "ZERO " }
11678                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
11679         sig_num=`$awk  'BEGIN { printf "0 " }
11680                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
11681         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
11682                              !/^NSIG/   { printf "\"%s\", ", $1 }
11683                              END        { printf "0\n" }' signal.lst`
11684         sig_num_init=`$awk  'BEGIN      { printf "0, " }
11685                              !/^NSIG/   { printf "%d, ", $2}
11686                              END        { printf "0\n"}' signal.lst`
11687         ;;
11688 esac
11689 echo "The following $sig_count signals are available:"
11690 echo " "
11691 echo $sig_name | $awk \
11692 'BEGIN { linelen = 0 }
11693 {
11694         for (i = 1; i <= NF; i++) {
11695                 name = "SIG" $i " "
11696                 linelen = linelen + length(name)
11697                 if (linelen > 70) {
11698                         printf "\n"
11699                         linelen = length(name)
11700                 }
11701                 printf "%s", name
11702         }
11703         printf "\n"
11704 }'
11705 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
11706
11707 : see what type is used for signed size_t
11708 set ssize_t ssizetype int stdio.h sys/types.h
11709 eval $typedef
11710 dflt="$ssizetype"
11711 $cat > ssize.c <<EOM
11712 #include <stdio.h>
11713 #include <sys/types.h>
11714 #define Size_t $sizetype
11715 #define SSize_t $dflt
11716 int main()
11717 {
11718         if (sizeof(Size_t) == sizeof(SSize_t))
11719                 printf("$dflt\n");
11720         else if (sizeof(Size_t) == sizeof(int))
11721                 printf("int\n");
11722         else 
11723                 printf("long\n");
11724         exit(0);
11725 }
11726 EOM
11727 echo " "
11728 set ssize
11729 if eval $compile_ok && ./ssize > /dev/null; then
11730         ssizetype=`./ssize`
11731         echo "I'll be using $ssizetype for functions returning a byte count." >&4
11732 else
11733         $cat >&4 <<EOM
11734 Help! I can't compile and run the ssize_t test program: please enlighten me!
11735 (This is probably a misconfiguration in your system or libraries, and
11736 you really ought to fix it.  Still, I'll try anyway.)
11737
11738 I need a type that is the same size as $sizetype, but is guaranteed to
11739 be signed.  Common values are ssize_t, int and long.
11740
11741 EOM
11742         rp="What signed type is the same size as $sizetype?"
11743         . ./myread
11744         ssizetype="$ans"
11745 fi
11746 $rm -f ssize ssize.*
11747
11748 : see what type of char stdio uses.
11749 echo " "
11750 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11751         echo "Your stdio uses unsigned chars." >&4
11752         stdchar="unsigned char"
11753 else
11754         echo "Your stdio uses signed chars." >&4
11755         stdchar="char"
11756 fi
11757
11758 : see if time exists
11759 echo " "
11760 if test "X$d_time" = X -o X"$timetype" = X; then
11761     if set time val -f d_time; eval $csym; $val; then
11762                 echo 'time() found.' >&4
11763                 val="$define"
11764                 rp="What is the type returned by time() on this system?"
11765                 set time_t timetype long stdio.h sys/types.h
11766                 eval $typedef_ask
11767     else
11768                 echo 'time() not found, hope that will do.' >&4
11769                 val="$undef"
11770                 timetype='int';
11771     fi
11772     set d_time
11773     eval $setvar
11774 fi
11775
11776 : see what type uids are declared as in the kernel
11777 echo " "
11778 echo "Looking for the type for user ids returned by getuid()."
11779 set uid_t uidtype xxx stdio.h sys/types.h
11780 eval $typedef
11781 case "$uidtype" in
11782 xxx)
11783         xxx=`./findhdr sys/user.h`
11784         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
11785         case $1 in
11786         unsigned) dflt="$1 $2" ;;
11787         *) dflt="$1" ;;
11788         esac
11789         ;;
11790 *) dflt="$uidtype";;
11791 esac
11792 case "$uidtype" in
11793 uid_t)  echo "uid_t found." ;;
11794 *)      rp="What is the type for user ids returned by getuid()?"
11795         . ./myread
11796         uidtype="$ans"
11797         ;;
11798 esac
11799
11800 : see if dbm.h is available
11801 : see if dbmclose exists
11802 set dbmclose d_dbmclose
11803 eval $inlibc
11804
11805 case "$d_dbmclose" in
11806 $define)
11807         set dbm.h i_dbm
11808         eval $inhdr
11809         case "$i_dbm" in
11810         $define)
11811                 val="$undef"
11812                 set i_rpcsvcdbm
11813                 eval $setvar
11814                 ;;
11815         *)      set rpcsvc/dbm.h i_rpcsvcdbm
11816                 eval $inhdr
11817                 ;;
11818         esac
11819         ;;
11820 *)      echo "We won't be including <dbm.h>"
11821         val="$undef"
11822         set i_dbm
11823         eval $setvar
11824         val="$undef"
11825         set i_rpcsvcdbm
11826         eval $setvar
11827         ;;
11828 esac
11829
11830 : see if this is a sys/file.h system
11831 val=''
11832 set sys/file.h val
11833 eval $inhdr
11834
11835 : do we need to include sys/file.h ?
11836 case "$val" in
11837 "$define")
11838         echo " "
11839         if $h_sysfile; then
11840                 val="$define"
11841                 echo "We'll be including <sys/file.h>." >&4
11842         else
11843                 val="$undef"
11844                 echo "We won't be including <sys/file.h>." >&4
11845         fi
11846         ;;
11847 *)
11848         h_sysfile=false
11849         ;;
11850 esac
11851 set i_sysfile
11852 eval $setvar
11853
11854 : see if fcntl.h is there
11855 val=''
11856 set fcntl.h val
11857 eval $inhdr
11858
11859 : see if we can include fcntl.h
11860 case "$val" in
11861 "$define")
11862         echo " "
11863         if $h_fcntl; then
11864                 val="$define"
11865                 echo "We'll be including <fcntl.h>." >&4
11866         else
11867                 val="$undef"
11868                 if $h_sysfile; then
11869         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11870                 else
11871                         echo "We won't be including <fcntl.h>." >&4
11872                 fi
11873         fi
11874         ;;
11875 *)
11876         h_fcntl=false
11877         val="$undef"
11878         ;;
11879 esac
11880 set i_fcntl
11881 eval $setvar
11882
11883 : see if locale.h is available
11884 set locale.h i_locale
11885 eval $inhdr
11886
11887 : see if mach cthreads are available
11888 if test "X$usethreads" = "X$define"; then
11889         set mach/cthreads.h i_machcthr
11890         eval $inhdr
11891 else
11892         i_machcthr="$undef"
11893 fi
11894
11895
11896
11897 : see if this is a math.h system
11898 set math.h i_math
11899 eval $inhdr
11900
11901 : see if this is a mntent.h system
11902 set mntent.h i_mntent
11903 eval $inhdr
11904
11905 : see if ndbm.h is available
11906 set ndbm.h t_ndbm
11907 eval $inhdr
11908 case "$t_ndbm" in
11909 $define)
11910         : see if dbm_open exists
11911         set dbm_open d_dbm_open
11912         eval $inlibc
11913         case "$d_dbm_open" in
11914         $undef)
11915                 t_ndbm="$undef"
11916                 echo "We won't be including <ndbm.h>"
11917                 ;;
11918         esac
11919         ;;
11920 esac
11921 val="$t_ndbm"
11922 set i_ndbm
11923 eval $setvar
11924
11925 : see if net/errno.h is available
11926 val=''
11927 set net/errno.h val
11928 eval $inhdr
11929
11930 : Unfortunately, it causes problems on some systems.  Arrgh.
11931 case "$val" in
11932 $define)
11933         cat > try.c <<'EOM'
11934 #include <stdio.h>
11935 #include <errno.h>
11936 #include <net/errno.h>
11937 int func()
11938 {
11939         return ENOTSOCK;
11940 }
11941 EOM
11942         if $cc $ccflags -c try.c >/dev/null 2>&1; then
11943                 echo "We'll be including <net/errno.h>." >&4
11944         else
11945                 echo "We won't be including <net/errno.h>." >&4
11946                 val="$undef"
11947         fi
11948         $rm -f try.* try
11949         ;;
11950 esac
11951 set i_neterrno
11952 eval $setvar
11953
11954 : see if this is a poll.h system
11955 set poll.h i_poll
11956 eval $inhdr
11957
11958 : get C preprocessor symbols handy
11959 echo " "
11960 $echo $n "Hmm... $c"
11961 echo $al | $tr ' ' $trnl >Cppsym.know
11962 $cat <<EOSS >Cppsym
11963 $startsh
11964 case "\$1" in
11965 -l) list=true
11966         shift
11967         ;;
11968 esac
11969 unknown=''
11970 case "\$list\$#" in
11971 1|2)
11972         for sym do
11973                 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
11974                         exit 0
11975                 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
11976                         :
11977                 else
11978                         unknown="\$unknown \$sym"
11979                 fi
11980         done
11981         set X \$unknown
11982         shift
11983         ;;
11984 esac
11985 case \$# in
11986 0) exit 1;;
11987 esac
11988 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
11989 #ifdef \1\\
11990 exit 0; _ _ _ _\1\\      \1\\
11991 #endif\\
11992 /' >Cppsym\$\$
11993 echo "exit 1; _ _ _" >>Cppsym\$\$
11994 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _'  >Cppsym2\$\$
11995 case "\$list" in
11996 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
11997 *)
11998         sh Cppsym2\$\$
11999         status=\$?
12000         ;;
12001 esac
12002 $rm -f Cppsym\$\$ Cppsym2\$\$
12003 exit \$status
12004 EOSS
12005 chmod +x Cppsym
12006 $eunicefix Cppsym
12007 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
12008
12009 : now check the C compiler for additional symbols
12010 postprocess_cc_v=''
12011 case "$osname" in
12012 aix) postprocess_cc_v="|$tr , ' '" ;;
12013 esac
12014 $cat >ccsym <<EOS
12015 $startsh
12016 $cat >tmp.c <<EOF
12017 extern int foo;
12018 EOF
12019 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
12020 do
12021         case "\$i" in
12022         -D*) echo "\$i" | $sed 's/^-D//';;
12023         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
12024         esac
12025 done
12026 $rm -f try.c
12027 EOS
12028 postprocess_cc_v=''
12029 chmod +x ccsym
12030 $eunicefix ccsym
12031 ./ccsym > ccsym1.raw
12032 if $test -s ccsym1.raw; then
12033        $sort ccsym1.raw | $uniq >ccsym.raw
12034 else
12035        mv ccsym1.raw ccsym.raw
12036 fi
12037
12038 $awk '/\=/ { print $0; next }
12039         { print $0"=1" }' ccsym.raw >ccsym.list
12040 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
12041 $comm -13 ccsym.true ccsym.list >ccsym.own
12042 $comm -12 ccsym.true ccsym.list >ccsym.com
12043 $comm -23 ccsym.true ccsym.list >ccsym.cpp
12044 also=''
12045 if $test -z ccsym.raw; then
12046         echo "Your C compiler doesn't seem to define any symbols!" >&4
12047         echo " "
12048         echo "However, your C preprocessor defines the following symbols:"
12049         $cat Cppsym.true
12050         ccsymbols=''
12051         cppsymbols=`$cat Cppsym.true`
12052         cppsymbols=`echo $cppsymbols`
12053         cppccsymbols="$cppsymbols"
12054 else
12055         if $test -s ccsym.com; then
12056                 echo "Your C compiler and pre-processor define these symbols:"
12057                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
12058                 also='also '
12059                 symbols='ones'
12060                 cppccsymbols=`$cat ccsym.com`
12061                 cppccsymbols=`echo $cppccsymbols`
12062                 $test "$silent" || sleep 1
12063         fi
12064         if $test -s ccsym.cpp; then
12065                 $test "$also" && echo " "
12066                 echo "Your C pre-processor ${also}defines the following symbols:"
12067                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
12068                 also='further '
12069                 cppsymbols=`$cat ccsym.cpp`
12070                 cppsymbols=`echo $cppsymbols`
12071                 $test "$silent" || sleep 1
12072         fi
12073         if $test -s ccsym.own; then
12074                 $test "$also" && echo " "
12075                 echo "Your C compiler ${also}defines the following cpp symbols:"
12076                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
12077                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
12078                 ccsymbols=`$cat ccsym.own`
12079                 ccsymbols=`echo $ccsymbols`
12080                 $test "$silent" || sleep 1
12081         fi
12082 fi
12083 $rm -f ccsym*
12084
12085 : see if this is a termio system
12086 val="$undef"
12087 val2="$undef"
12088 val3="$undef"
12089 if $test `./findhdr termios.h`; then
12090         set tcsetattr i_termios
12091         eval $inlibc
12092         val3="$i_termios"
12093 fi
12094 echo " "
12095 case "$val3" in
12096 "$define") echo "You have POSIX termios.h... good!" >&4;;
12097 *) if ./Cppsym pyr; then
12098                 case "`/bin/universe`" in
12099                 ucb) if $test `./findhdr sgtty.h`; then
12100                                 val2="$define"
12101                                 echo "<sgtty.h> found." >&4
12102                         else
12103                                 echo "System is pyramid with BSD universe."
12104                                 echo "<sgtty.h> not found--you could have problems." >&4
12105                         fi;;
12106                 *) if $test `./findhdr termio.h`; then
12107                                 val="$define"
12108                                 echo "<termio.h> found." >&4
12109                         else
12110                                 echo "System is pyramid with USG universe."
12111                                 echo "<termio.h> not found--you could have problems." >&4
12112                         fi;;
12113                 esac
12114         elif ./usg; then
12115                 if $test `./findhdr termio.h`; then
12116                         echo "<termio.h> found." >&4
12117                         val="$define"
12118                 elif $test `./findhdr sgtty.h`; then
12119                         echo "<sgtty.h> found." >&4
12120                         val2="$define"
12121                 else
12122 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
12123                 fi
12124         else
12125                 if $test `./findhdr sgtty.h`; then
12126                         echo "<sgtty.h> found." >&4
12127                         val2="$define"
12128                 elif $test `./findhdr termio.h`; then
12129                         echo "<termio.h> found." >&4
12130                         val="$define"
12131                 else
12132 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
12133                 fi
12134         fi;;
12135 esac
12136 set i_termio; eval $setvar
12137 val=$val2; set i_sgtty; eval $setvar
12138 val=$val3; set i_termios; eval $setvar
12139
12140 : see if stdarg is available
12141 echo " "
12142 if $test `./findhdr stdarg.h`; then
12143         echo "<stdarg.h> found." >&4
12144         valstd="$define"
12145 else
12146         echo "<stdarg.h> NOT found." >&4
12147         valstd="$undef"
12148 fi
12149
12150 : see if varags is available
12151 echo " "
12152 if $test `./findhdr varargs.h`; then
12153         echo "<varargs.h> found." >&4
12154 else
12155         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
12156 fi
12157
12158 : set up the varargs testing programs
12159 $cat > varargs.c <<EOP
12160 #ifdef I_STDARG
12161 #include <stdarg.h>
12162 #endif
12163 #ifdef I_VARARGS
12164 #include <varargs.h>
12165 #endif
12166
12167 #ifdef I_STDARG
12168 int f(char *p, ...)
12169 #else
12170 int f(va_alist)
12171 va_dcl
12172 #endif
12173 {
12174         va_list ap;
12175 #ifndef I_STDARG
12176         char *p;
12177 #endif
12178 #ifdef I_STDARG
12179         va_start(ap,p);
12180 #else
12181         va_start(ap);
12182         p = va_arg(ap, char *);
12183 #endif
12184         va_end(ap);
12185 }
12186 EOP
12187 $cat > varargs <<EOP
12188 $startsh
12189 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
12190         echo "true"
12191 else
12192         echo "false"
12193 fi
12194 $rm -f varargs$_o
12195 EOP
12196 chmod +x varargs
12197
12198 : now check which varargs header should be included
12199 echo " "
12200 i_varhdr=''
12201 case "$valstd" in
12202 "$define")
12203         if `./varargs I_STDARG`; then
12204                 val='stdarg.h'
12205         elif `./varargs I_VARARGS`; then
12206                 val='varargs.h'
12207         fi
12208         ;;
12209 *)
12210         if `./varargs I_VARARGS`; then
12211                 val='varargs.h'
12212         fi
12213         ;;
12214 esac
12215 case "$val" in
12216 '')
12217 echo "I could not find the definition for va_dcl... You have problems..." >&4
12218         val="$undef"; set i_stdarg; eval $setvar
12219         val="$undef"; set i_varargs; eval $setvar
12220         ;;
12221 *) 
12222         set i_varhdr
12223         eval $setvar
12224         case "$i_varhdr" in
12225         stdarg.h)
12226                 val="$define"; set i_stdarg; eval $setvar
12227                 val="$undef"; set i_varargs; eval $setvar
12228                 ;;
12229         varargs.h)
12230                 val="$undef"; set i_stdarg; eval $setvar
12231                 val="$define"; set i_varargs; eval $setvar
12232                 ;;
12233         esac
12234         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12235 esac
12236 $rm -f varargs*
12237
12238 : see if stddef is available
12239 set stddef.h i_stddef
12240 eval $inhdr
12241
12242 : see if sys/access.h is available
12243 set sys/access.h i_sysaccess
12244 eval $inhdr
12245
12246 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12247 set sys/filio.h i_sysfilio
12248 eval $inhdr
12249 echo " "
12250 if $test `./findhdr sys/ioctl.h`; then
12251         val="$define"
12252         echo '<sys/ioctl.h> found.' >&4
12253 else
12254         val="$undef"
12255         if $test $i_sysfilio = "$define"; then
12256             echo '<sys/ioctl.h> NOT found.' >&4
12257         else
12258                 $test $i_sgtty = "$define" && xxx="sgtty.h"
12259                 $test $i_termio = "$define" && xxx="termio.h"
12260                 $test $i_termios = "$define" && xxx="termios.h"
12261 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12262         fi
12263 fi
12264 set i_sysioctl
12265 eval $setvar
12266
12267 : see if sys/resource.h has to be included
12268 set sys/resource.h i_sysresrc
12269 eval $inhdr
12270
12271 : see if sys/security.h is available
12272 set sys/security.h i_syssecrt
12273 eval $inhdr
12274
12275 : see if this is a sys/statvfs.h system
12276 set sys/statvfs.h i_sysstatvfs
12277 eval $inhdr
12278
12279 : see if this is a sys/un.h system
12280 set sys/un.h i_sysun
12281 eval $inhdr
12282
12283 : see if this is a syswait system
12284 set sys/wait.h i_syswait
12285 eval $inhdr
12286
12287 : see if this is an utime system
12288 set utime.h i_utime
12289 eval $inhdr
12290
12291 : see if this is a values.h system
12292 set values.h i_values
12293 eval $inhdr
12294
12295 : see if this is a vfork system
12296 case "$d_vfork" in
12297 "$define")
12298         set vfork.h i_vfork
12299         eval $inhdr
12300         ;;
12301 *)
12302         i_vfork="$undef"
12303         ;;
12304 esac
12305
12306 : see if gdbm.h is available
12307 set gdbm.h t_gdbm
12308 eval $inhdr
12309 case "$t_gdbm" in
12310 $define)
12311         : see if gdbm_open exists
12312         set gdbm_open d_gdbm_open
12313         eval $inlibc
12314         case "$d_gdbm_open" in
12315         $undef)
12316                 t_gdbm="$undef"
12317                 echo "We won't be including <gdbm.h>"
12318                 ;;
12319         esac
12320         ;;
12321 esac
12322 val="$t_gdbm"
12323 set i_gdbm
12324 eval $setvar
12325
12326 echo " "
12327 echo "Looking for extensions..." >&4
12328 tdir=`pwd`
12329 cd $rsrc/ext
12330 : If we are using the old config.sh, known_extensions may contain
12331 : old or inaccurate or duplicate values.
12332 known_extensions=''
12333 nonxs_extensions=''
12334 : We do not use find because it might not be available.
12335 : We do not just use MANIFEST because the user may have dropped
12336 : some additional extensions into the source tree and expect them
12337 : to be built.
12338 for xxx in * ; do
12339         case "$xxx" in
12340         DynaLoader|dynaload) ;;
12341         *)      if $test -f $xxx/$xxx.xs; then
12342                         known_extensions="$known_extensions $xxx"
12343                 elif $test -f $xxx/Makefile.PL; then
12344                         nonxs_extensions="$nonxs_extensions $xxx"
12345                 else
12346                         if $test -d $xxx; then
12347                                 # Look for nested extensions, eg. Devel/Dprof.
12348                                 cd $xxx
12349                                 for yyy in * ; do
12350                                 if $test -f $yyy/$yyy.xs; then
12351                                         known_extensions="$known_extensions $xxx/$yyy"
12352                                 elif $test -f $yyy/Makefile.PL; then
12353                                         nonxs_extensions="$nonxs_extensions $xxx/$yyy"
12354                                 fi
12355                                 done
12356                                 cd ..
12357                         fi
12358                 fi 
12359                 ;;
12360         esac
12361 done
12362 set X $nonxs_extensions
12363 shift
12364 nonxs_extensions="$*"
12365 set X $known_extensions
12366 shift
12367 known_extensions="$*"
12368 cd $tdir
12369
12370 : Now see which are supported on this system.
12371 avail_ext=''
12372 for xxx in $known_extensions ; do
12373         case "$xxx" in
12374         DB_File|db_file)
12375                 case "$i_db" in
12376                 $define) avail_ext="$avail_ext $xxx" ;;
12377                 esac
12378                 ;;
12379         GDBM_File|gdbm_fil)
12380                 case "$i_gdbm" in 
12381                 $define) avail_ext="$avail_ext $xxx" ;;
12382                 esac
12383                 ;;
12384         NDBM_File|ndbm_fil)
12385                 case "$i_ndbm" in
12386                 $define) avail_ext="$avail_ext $xxx" ;;
12387                 esac
12388                 ;;
12389         ODBM_File|odbm_fil) 
12390                 case "${i_dbm}${i_rpcsvcdbm}" in
12391                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12392                 esac
12393                 ;;
12394         POSIX|posix)
12395                 case "$useposix" in
12396                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12397                 esac
12398                 ;;
12399         Opcode|opcode)
12400                 case "$useopcode" in
12401                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12402                 esac
12403                 ;;
12404         Socket|socket)
12405                 case "$d_socket" in 
12406                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12407                 esac
12408                 ;;
12409         Thread|thread)
12410                 case "$usethreads" in 
12411                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12412                 esac
12413                 ;;
12414         IPC/SysV|ipc/sysv)
12415                 : XXX Do we need a useipcsysv variable here
12416                 case "${d_msg}${d_sem}${d_shm}" in 
12417                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12418                 esac
12419                 ;;
12420         *)      avail_ext="$avail_ext $xxx"
12421                 ;;
12422         esac
12423 done
12424
12425 set X $avail_ext
12426 shift
12427 avail_ext="$*"
12428
12429 : Now see which nonxs extensions are supported on this system.
12430 : For now assume all are.
12431 nonxs_ext=''
12432 for xxx in $nonxs_extensions ; do
12433         case "$xxx" in
12434         *)      nonxs_ext="$nonxs_ext $xxx"
12435                 ;;
12436         esac
12437 done
12438
12439 set X $nonxs_ext
12440 shift
12441 nonxs_ext="$*"
12442
12443 case $usedl in
12444 $define)
12445         $cat <<EOM
12446 A number of extensions are supplied with $package.  You may choose to
12447 compile these extensions for dynamic loading (the default), compile
12448 them into the $package executable (static loading), or not include
12449 them at all.  Answer "none" to include no extensions.
12450 Note that DynaLoader is always built and need not be mentioned here.
12451
12452 EOM
12453         case "$dynamic_ext" in
12454         '') dflt="$avail_ext" ;;
12455         *)      dflt="$dynamic_ext"
12456                 # Perhaps we are reusing an old out-of-date config.sh.
12457                 case "$hint" in
12458                 previous)
12459                         if test X"$dynamic_ext" != X"$avail_ext"; then
12460                                 $cat <<EOM
12461 NOTICE:  Your previous config.sh list may be incorrect. 
12462 The extensions now available to you are 
12463         ${avail_ext}
12464 but the default list from your previous config.sh is
12465         ${dynamic_ext} 
12466
12467 EOM
12468                         fi
12469                         ;;
12470                 esac
12471                 ;;
12472         esac
12473         case "$dflt" in
12474         '')     dflt=none;;
12475         esac
12476         rp="What extensions do you wish to load dynamically?"
12477         . ./myread
12478         case "$ans" in
12479         none) dynamic_ext=' ' ;;
12480         *) dynamic_ext="$ans" ;;
12481         esac
12482
12483         case "$static_ext" in
12484         '')
12485                 : Exclude those already listed in dynamic linking
12486                 dflt=''
12487                 for xxx in $avail_ext; do
12488                         case " $dynamic_ext " in
12489                         *" $xxx "*) ;;
12490                         *) dflt="$dflt $xxx" ;;
12491                         esac
12492                 done
12493                 set X $dflt
12494                 shift
12495                 dflt="$*"
12496                 ;;
12497         *)  dflt="$static_ext" 
12498                 ;;
12499         esac
12500
12501         case "$dflt" in
12502         '')     dflt=none;;
12503         esac
12504         rp="What extensions do you wish to load statically?"
12505         . ./myread
12506         case "$ans" in
12507         none) static_ext=' ' ;;
12508         *) static_ext="$ans" ;;
12509         esac
12510         ;;
12511 *)
12512         $cat <<EOM
12513 A number of extensions are supplied with $package.  Answer "none" 
12514 to include no extensions. 
12515 Note that DynaLoader is always built and need not be mentioned here.
12516
12517 EOM
12518         case "$static_ext" in
12519         '') dflt="$avail_ext" ;;
12520         *)      dflt="$static_ext"
12521                 # Perhaps we are reusing an old out-of-date config.sh.
12522                 case "$hint" in
12523                 previous)
12524                         if test X"$static_ext" != X"$avail_ext"; then
12525                                 $cat <<EOM
12526 NOTICE:  Your previous config.sh list may be incorrect. 
12527 The extensions now available to you are 
12528         ${avail_ext}
12529 but the default list from your previous config.sh is
12530         ${static_ext} 
12531
12532 EOM
12533                         fi
12534                         ;;
12535                 esac
12536                 ;;
12537         esac
12538         : Exclude those that are not xs extensions
12539         case "$dflt" in
12540         '')     dflt=none;;
12541         esac
12542         rp="What extensions do you wish to include?"
12543         . ./myread
12544         case "$ans" in
12545         none) static_ext=' ' ;;
12546         *) static_ext="$ans" ;;
12547         esac
12548         ;;
12549 esac
12550
12551 set X $dynamic_ext $static_ext $nonxs_ext
12552 shift
12553 extensions="$*"
12554
12555 : Remove build directory name from cppstdin so it can be used from
12556 : either the present location or the final installed location.
12557 echo " "
12558 : Get out of the UU directory to get correct path name.
12559 cd ..
12560 case "$cppstdin" in
12561 `pwd`/cppstdin)
12562         echo "Stripping down cppstdin path name"
12563         cppstdin=cppstdin
12564         ;;
12565 esac
12566 cd UU
12567
12568 : end of configuration questions
12569 echo " "
12570 echo "End of configuration questions."
12571 echo " "
12572
12573 : back to where it started
12574 if test -d ../UU; then
12575         cd ..
12576 fi
12577
12578 : configuration may be patched via a 'config.over' file
12579 if $test -f config.over; then
12580         echo " "
12581         dflt=y
12582         rp='I see a config.over file.  Do you wish to load it?'
12583         . UU/myread
12584         case "$ans" in
12585         n*) echo "OK, I'll ignore it.";;
12586         *)      . ./config.over
12587                 echo "Configuration override changes have been loaded."
12588                 ;;
12589         esac
12590 fi
12591
12592 : in case they want portability, strip down executable paths
12593 case "$d_portable" in
12594 "$define")
12595         echo " "
12596         echo "Stripping down executable paths..." >&4
12597         for file in $loclist $trylist; do
12598                 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12599                         eval $file="\$file"
12600                 fi
12601         done
12602         ;;
12603 esac
12604
12605 : create config.sh file
12606 echo " "
12607 echo "Creating config.sh..." >&4
12608 $spitshell <<EOT >config.sh
12609 $startsh
12610 #
12611 # This file was produced by running the Configure script. It holds all the
12612 # definitions figured out by Configure. Should you modify one of these values,
12613 # do not forget to propagate your changes by running "Configure -der". You may
12614 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12615 #
12616
12617 # Package name      : $package
12618 # Source directory  : $src
12619 # Configuration time: $cf_time
12620 # Configured by     : $cf_by
12621 # Target system     : $myuname
12622
12623 Author='$Author'
12624 Date='$Date'
12625 Header='$Header'
12626 Id='$Id'
12627 Locker='$Locker'
12628 Log='$Log'
12629 Mcc='$Mcc'
12630 RCSfile='$RCSfile'
12631 Revision='$Revision'
12632 Source='$Source'
12633 State='$State'
12634 _a='$_a'
12635 _exe='$_exe'
12636 _o='$_o'
12637 afs='$afs'
12638 alignbytes='$alignbytes'
12639 ansi2knr='$ansi2knr'
12640 aphostname='$aphostname'
12641 apiversion='$apiversion'
12642 ar='$ar'
12643 archlib='$archlib'
12644 archlibexp='$archlibexp'
12645 archname64='$archname64'
12646 archname='$archname'
12647 archobjs='$archobjs'
12648 awk='$awk'
12649 baserev='$baserev'
12650 bash='$bash'
12651 bin='$bin'
12652 binexp='$binexp'
12653 bison='$bison'
12654 byacc='$byacc'
12655 byteorder='$byteorder'
12656 c='$c'
12657 castflags='$castflags'
12658 cat='$cat'
12659 cc='$cc'
12660 cccdlflags='$cccdlflags'
12661 ccdlflags='$ccdlflags'
12662 ccflags='$ccflags'
12663 ccsymbols='$ccsymbols'
12664 cf_by='$cf_by'
12665 cf_email='$cf_email'
12666 cf_time='$cf_time'
12667 chgrp='$chgrp'
12668 chmod='$chmod'
12669 chown='$chown'
12670 clocktype='$clocktype'
12671 comm='$comm'
12672 compress='$compress'
12673 contains='$contains'
12674 cp='$cp'
12675 cpio='$cpio'
12676 cpp='$cpp'
12677 cpp_stuff='$cpp_stuff'
12678 cppccsymbols='$cppccsymbols'
12679 cppflags='$cppflags'
12680 cpplast='$cpplast'
12681 cppminus='$cppminus'
12682 cpprun='$cpprun'
12683 cppstdin='$cppstdin'
12684 cppsymbols='$cppsymbols'
12685 crosscompile='$crosscompile'
12686 cryptlib='$cryptlib'
12687 csh='$csh'
12688 d_Gconvert='$d_Gconvert'
12689 d_access='$d_access'
12690 d_accessx='$d_accessx'
12691 d_alarm='$d_alarm'
12692 d_archlib='$d_archlib'
12693 d_attribut='$d_attribut'
12694 d_bcmp='$d_bcmp'
12695 d_bcopy='$d_bcopy'
12696 d_bsd='$d_bsd'
12697 d_bsdgetpgrp='$d_bsdgetpgrp'
12698 d_bsdsetpgrp='$d_bsdsetpgrp'
12699 d_bzero='$d_bzero'
12700 d_casti32='$d_casti32'
12701 d_castneg='$d_castneg'
12702 d_charvspr='$d_charvspr'
12703 d_chown='$d_chown'
12704 d_chroot='$d_chroot'
12705 d_chsize='$d_chsize'
12706 d_closedir='$d_closedir'
12707 d_cmsghdr_s='$d_cmsghdr_s'
12708 d_const='$d_const'
12709 d_crypt='$d_crypt'
12710 d_csh='$d_csh'
12711 d_cuserid='$d_cuserid'
12712 d_dbl_dig='$d_dbl_dig'
12713 d_dbmclose64='$d_dbmclose64'
12714 d_dbminit64='$d_dbminit64'
12715 d_delete64='$d_delete64'
12716 d_difftime='$d_difftime'
12717 d_dirent64_s='$d_dirent64_s'
12718 d_dirnamlen='$d_dirnamlen'
12719 d_dlerror='$d_dlerror'
12720 d_dlopen='$d_dlopen'
12721 d_dlsymun='$d_dlsymun'
12722 d_dosuid='$d_dosuid'
12723 d_drand48proto='$d_drand48proto'
12724 d_dup2='$d_dup2'
12725 d_eaccess='$d_eaccess'
12726 d_endgrent='$d_endgrent'
12727 d_endhent='$d_endhent'
12728 d_endnent='$d_endnent'
12729 d_endpent='$d_endpent'
12730 d_endpwent='$d_endpwent'
12731 d_endsent='$d_endsent'
12732 d_eofnblk='$d_eofnblk'
12733 d_eunice='$d_eunice'
12734 d_fchmod='$d_fchmod'
12735 d_fchown='$d_fchown'
12736 d_fcntl='$d_fcntl'
12737 d_fd_macros='$d_fd_macros'
12738 d_fd_set='$d_fd_set'
12739 d_fds_bits='$d_fds_bits'
12740 d_fetch64='$d_fetch64'
12741 d_fgetpos64='$d_fgetpos64'
12742 d_fgetpos='$d_fgetpos'
12743 d_firstkey64='$d_firstkey64'
12744 d_flexfnam='$d_flexfnam'
12745 d_flock64_s='$d_flock64_s'
12746 d_flock='$d_flock'
12747 d_fopen64='$d_fopen64'
12748 d_fork='$d_fork'
12749 d_fpathconf='$d_fpathconf'
12750 d_freopen64='$d_freopen64'
12751 d_fseek64='$d_fseek64'
12752 d_fseeko64='$d_fseeko64'
12753 d_fseeko='$d_fseeko'
12754 d_fsetpos64='$d_fsetpos64'
12755 d_fsetpos='$d_fsetpos'
12756 d_fstat64='$d_fstat64'
12757 d_fstatfs='$d_fstatfs'
12758 d_fstatvfs='$d_fstatvfs'
12759 d_ftell64='$d_ftell64'
12760 d_ftello64='$d_ftello64'
12761 d_ftello='$d_ftello'
12762 d_ftime='$d_ftime'
12763 d_ftruncate64='$d_ftruncate64'
12764 d_getgrent='$d_getgrent'
12765 d_getgrps='$d_getgrps'
12766 d_gethbyaddr='$d_gethbyaddr'
12767 d_gethbyname='$d_gethbyname'
12768 d_gethent='$d_gethent'
12769 d_gethname='$d_gethname'
12770 d_gethostprotos='$d_gethostprotos'
12771 d_getlogin='$d_getlogin'
12772 d_getmntent='$d_getmntent'
12773 d_getnbyaddr='$d_getnbyaddr'
12774 d_getnbyname='$d_getnbyname'
12775 d_getnent='$d_getnent'
12776 d_getnetprotos='$d_getnetprotos'
12777 d_getpbyname='$d_getpbyname'
12778 d_getpbynumber='$d_getpbynumber'
12779 d_getpent='$d_getpent'
12780 d_getpgid='$d_getpgid'
12781 d_getpgrp2='$d_getpgrp2'
12782 d_getpgrp='$d_getpgrp'
12783 d_getppid='$d_getppid'
12784 d_getprior='$d_getprior'
12785 d_getprotoprotos='$d_getprotoprotos'
12786 d_getpwent='$d_getpwent'
12787 d_getsbyname='$d_getsbyname'
12788 d_getsbyport='$d_getsbyport'
12789 d_getsent='$d_getsent'
12790 d_getservprotos='$d_getservprotos'
12791 d_gettimeod='$d_gettimeod'
12792 d_gnulibc='$d_gnulibc'
12793 d_grpasswd='$d_grpasswd'
12794 d_hasmntopt='$d_hasmntopt'
12795 d_htonl='$d_htonl'
12796 d_index='$d_index'
12797 d_inetaton='$d_inetaton'
12798 d_ino64_t='$d_ino64_t'
12799 d_int64t='$d_int64t'
12800 d_iovec_s='$d_iovec_s'
12801 d_isascii='$d_isascii'
12802 d_killpg='$d_killpg'
12803 d_lchown='$d_lchown'
12804 d_link='$d_link'
12805 d_llseek='$d_llseek'
12806 d_locconv='$d_locconv'
12807 d_lockf64='$d_lockf64'
12808 d_lockf='$d_lockf'
12809 d_longdbl='$d_longdbl'
12810 d_longlong='$d_longlong'
12811 d_lseek64='$d_lseek64'
12812 d_lstat64='$d_lstat64'
12813 d_lstat='$d_lstat'
12814 d_madvise='$d_madvise'
12815 d_mblen='$d_mblen'
12816 d_mbstowcs='$d_mbstowcs'
12817 d_mbtowc='$d_mbtowc'
12818 d_memcmp='$d_memcmp'
12819 d_memcpy='$d_memcpy'
12820 d_memmove='$d_memmove'
12821 d_memset='$d_memset'
12822 d_mkdir='$d_mkdir'
12823 d_mkfifo='$d_mkfifo'
12824 d_mktime='$d_mktime'
12825 d_mmap='$d_mmap'
12826 d_mprotect='$d_mprotect'
12827 d_msg='$d_msg'
12828 d_msg_ctrunc='$d_msg_ctrunc'
12829 d_msg_dontroute='$d_msg_dontroute'
12830 d_msg_oob='$d_msg_oob'
12831 d_msg_peek='$d_msg_peek'
12832 d_msg_proxy='$d_msg_proxy'
12833 d_msgctl='$d_msgctl'
12834 d_msgget='$d_msgget'
12835 d_msghdr_s='$d_msghdr_s'
12836 d_msgrcv='$d_msgrcv'
12837 d_msgsnd='$d_msgsnd'
12838 d_msync='$d_msync'
12839 d_munmap='$d_munmap'
12840 d_mymalloc='$d_mymalloc'
12841 d_nextkey64='$d_nextkey64'
12842 d_nice='$d_nice'
12843 d_off64_t='$d_off64_t'
12844 d_offset_t='$d_offset_t'
12845 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
12846 d_oldpthreads='$d_oldpthreads'
12847 d_oldsock='$d_oldsock'
12848 d_open3='$d_open3'
12849 d_open64='$d_open64'
12850 d_opendir64='$d_opendir64'
12851 d_pathconf='$d_pathconf'
12852 d_pause='$d_pause'
12853 d_phostname='$d_phostname'
12854 d_pipe='$d_pipe'
12855 d_poll='$d_poll'
12856 d_portable='$d_portable'
12857 d_pthread_yield='$d_pthread_yield'
12858 d_pwage='$d_pwage'
12859 d_pwchange='$d_pwchange'
12860 d_pwclass='$d_pwclass'
12861 d_pwcomment='$d_pwcomment'
12862 d_pwexpire='$d_pwexpire'
12863 d_pwgecos='$d_pwgecos'
12864 d_pwpasswd='$d_pwpasswd'
12865 d_pwquota='$d_pwquota'
12866 d_readdir64='$d_readdir64'
12867 d_readdir='$d_readdir'
12868 d_readlink='$d_readlink'
12869 d_readv='$d_readv'
12870 d_recvmsg='$d_recvmsg'
12871 d_rename='$d_rename'
12872 d_rewinddir='$d_rewinddir'
12873 d_rmdir='$d_rmdir'
12874 d_safebcpy='$d_safebcpy'
12875 d_safemcpy='$d_safemcpy'
12876 d_sanemcmp='$d_sanemcmp'
12877 d_sched_yield='$d_sched_yield'
12878 d_scm_rights='$d_scm_rights'
12879 d_seekdir64='$d_seekdir64'
12880 d_seekdir='$d_seekdir'
12881 d_select='$d_select'
12882 d_sem='$d_sem'
12883 d_semctl='$d_semctl'
12884 d_semctl_semid_ds='$d_semctl_semid_ds'
12885 d_semctl_semun='$d_semctl_semun'
12886 d_semget='$d_semget'
12887 d_semop='$d_semop'
12888 d_sendmsg='$d_sendmsg'
12889 d_setegid='$d_setegid'
12890 d_seteuid='$d_seteuid'
12891 d_setgrent='$d_setgrent'
12892 d_setgrps='$d_setgrps'
12893 d_sethent='$d_sethent'
12894 d_setlinebuf='$d_setlinebuf'
12895 d_setlocale='$d_setlocale'
12896 d_setnent='$d_setnent'
12897 d_setpent='$d_setpent'
12898 d_setpgid='$d_setpgid'
12899 d_setpgrp2='$d_setpgrp2'
12900 d_setpgrp='$d_setpgrp'
12901 d_setprior='$d_setprior'
12902 d_setpwent='$d_setpwent'
12903 d_setregid='$d_setregid'
12904 d_setresgid='$d_setresgid'
12905 d_setresuid='$d_setresuid'
12906 d_setreuid='$d_setreuid'
12907 d_setrgid='$d_setrgid'
12908 d_setruid='$d_setruid'
12909 d_setsent='$d_setsent'
12910 d_setsid='$d_setsid'
12911 d_setvbuf='$d_setvbuf'
12912 d_sfio='$d_sfio'
12913 d_shm='$d_shm'
12914 d_shmat='$d_shmat'
12915 d_shmatprototype='$d_shmatprototype'
12916 d_shmctl='$d_shmctl'
12917 d_shmdt='$d_shmdt'
12918 d_shmget='$d_shmget'
12919 d_sigaction='$d_sigaction'
12920 d_sigsetjmp='$d_sigsetjmp'
12921 d_socket='$d_socket'
12922 d_sockpair='$d_sockpair'
12923 d_stat64='$d_stat64'
12924 d_statblks='$d_statblks'
12925 d_statfs='$d_statfs'
12926 d_statfsflags='$d_statfsflags'
12927 d_statvfs='$d_statvfs'
12928 d_stdio_cnt_lval='$d_stdio_cnt_lval'
12929 d_stdio_ptr_lval='$d_stdio_ptr_lval'
12930 d_stdiobase='$d_stdiobase'
12931 d_stdstdio='$d_stdstdio'
12932 d_store64='$d_store64'
12933 d_strchr='$d_strchr'
12934 d_strcoll='$d_strcoll'
12935 d_strctcpy='$d_strctcpy'
12936 d_strerrm='$d_strerrm'
12937 d_strerror='$d_strerror'
12938 d_strtod='$d_strtod'
12939 d_strtol='$d_strtol'
12940 d_strtoul='$d_strtoul'
12941 d_strxfrm='$d_strxfrm'
12942 d_suidsafe='$d_suidsafe'
12943 d_symlink='$d_symlink'
12944 d_syscall='$d_syscall'
12945 d_sysconf='$d_sysconf'
12946 d_sysernlst='$d_sysernlst'
12947 d_syserrlst='$d_syserrlst'
12948 d_system='$d_system'
12949 d_tcgetpgrp='$d_tcgetpgrp'
12950 d_tcsetpgrp='$d_tcsetpgrp'
12951 d_telldir64='$d_telldir64'
12952 d_telldir='$d_telldir'
12953 d_telldirproto='$d_telldirproto'
12954 d_time='$d_time'
12955 d_times='$d_times'
12956 d_tmpfile64='$d_tmpfile64'
12957 d_truncate64='$d_truncate64'
12958 d_truncate='$d_truncate'
12959 d_tzname='$d_tzname'
12960 d_umask='$d_umask'
12961 d_uname='$d_uname'
12962 d_union_semun='$d_union_semun'
12963 d_vfork='$d_vfork'
12964 d_void_closedir='$d_void_closedir'
12965 d_voidsig='$d_voidsig'
12966 d_voidtty='$d_voidtty'
12967 d_volatile='$d_volatile'
12968 d_vprintf='$d_vprintf'
12969 d_wait4='$d_wait4'
12970 d_waitpid='$d_waitpid'
12971 d_wcstombs='$d_wcstombs'
12972 d_wctomb='$d_wctomb'
12973 d_writev='$d_writev'
12974 d_xenix='$d_xenix'
12975 date='$date'
12976 db_hashtype='$db_hashtype'
12977 db_prefixtype='$db_prefixtype'
12978 defvoidused='$defvoidused'
12979 direntrytype='$direntrytype'
12980 dlext='$dlext'
12981 dlsrc='$dlsrc'
12982 doublesize='$doublesize'
12983 drand01='$drand01'
12984 dynamic_ext='$dynamic_ext'
12985 eagain='$eagain'
12986 ebcdic='$ebcdic'
12987 echo='$echo'
12988 egrep='$egrep'
12989 emacs='$emacs'
12990 eunicefix='$eunicefix'
12991 exe_ext='$exe_ext'
12992 expr='$expr'
12993 extensions='$extensions'
12994 find='$find'
12995 firstmakefile='$firstmakefile'
12996 flex='$flex'
12997 fpostype='$fpostype'
12998 freetype='$freetype'
12999 full_ar='$full_ar'
13000 full_csh='$full_csh'
13001 full_sed='$full_sed'
13002 gccversion='$gccversion'
13003 gidtype='$gidtype'
13004 glibpth='$glibpth'
13005 grep='$grep'
13006 groupcat='$groupcat'
13007 groupstype='$groupstype'
13008 gzip='$gzip'
13009 h_fcntl='$h_fcntl'
13010 h_sysfile='$h_sysfile'
13011 hint='$hint'
13012 hostcat='$hostcat'
13013 huge='$huge'
13014 i_arpainet='$i_arpainet'
13015 i_bsdioctl='$i_bsdioctl'
13016 i_db='$i_db'
13017 i_dbm='$i_dbm'
13018 i_dirent='$i_dirent'
13019 i_dld='$i_dld'
13020 i_dlfcn='$i_dlfcn'
13021 i_fcntl='$i_fcntl'
13022 i_float='$i_float'
13023 i_gdbm='$i_gdbm'
13024 i_grp='$i_grp'
13025 i_inttypes='$i_inttypes'
13026 i_limits='$i_limits'
13027 i_locale='$i_locale'
13028 i_machcthr='$i_machcthr'
13029 i_malloc='$i_malloc'
13030 i_math='$i_math'
13031 i_memory='$i_memory'
13032 i_mntent='$i_mntent'
13033 i_ndbm='$i_ndbm'
13034 i_netdb='$i_netdb'
13035 i_neterrno='$i_neterrno'
13036 i_niin='$i_niin'
13037 i_poll='$i_poll'
13038 i_pthread='$i_pthread'
13039 i_pwd='$i_pwd'
13040 i_rpcsvcdbm='$i_rpcsvcdbm'
13041 i_sfio='$i_sfio'
13042 i_sgtty='$i_sgtty'
13043 i_stdarg='$i_stdarg'
13044 i_stddef='$i_stddef'
13045 i_stdlib='$i_stdlib'
13046 i_string='$i_string'
13047 i_sysaccess='$i_sysaccess'
13048 i_sysdir='$i_sysdir'
13049 i_sysfile='$i_sysfile'
13050 i_sysfilio='$i_sysfilio'
13051 i_sysin='$i_sysin'
13052 i_sysioctl='$i_sysioctl'
13053 i_sysmman='$i_sysmman'
13054 i_sysmount='$i_sysmount'
13055 i_sysndir='$i_sysndir'
13056 i_sysparam='$i_sysparam'
13057 i_sysresrc='$i_sysresrc'
13058 i_syssecrt='$i_syssecrt'
13059 i_sysselct='$i_sysselct'
13060 i_syssockio='$i_syssockio'
13061 i_sysstat='$i_sysstat'
13062 i_sysstatvfs='$i_sysstatvfs'
13063 i_systime='$i_systime'
13064 i_systimek='$i_systimek'
13065 i_systimes='$i_systimes'
13066 i_systypes='$i_systypes'
13067 i_sysuio='$i_sysuio'
13068 i_sysun='$i_sysun'
13069 i_syswait='$i_syswait'
13070 i_termio='$i_termio'
13071 i_termios='$i_termios'
13072 i_time='$i_time'
13073 i_unistd='$i_unistd'
13074 i_utime='$i_utime'
13075 i_values='$i_values'
13076 i_varargs='$i_varargs'
13077 i_varhdr='$i_varhdr'
13078 i_vfork='$i_vfork'
13079 ignore_versioned_solibs='$ignore_versioned_solibs'
13080 incpath='$incpath'
13081 inews='$inews'
13082 installarchlib='$installarchlib'
13083 installbin='$installbin'
13084 installman1dir='$installman1dir'
13085 installman3dir='$installman3dir'
13086 installprivlib='$installprivlib'
13087 installscript='$installscript'
13088 installsitearch='$installsitearch'
13089 installsitelib='$installsitelib'
13090 installusrbinperl='$installusrbinperl'
13091 intsize='$intsize'
13092 known_extensions='$known_extensions'
13093 ksh='$ksh'
13094 large='$large'
13095 ld='$ld'
13096 lddlflags='$lddlflags'
13097 ldflags='$ldflags'
13098 less='$less'
13099 lib_ext='$lib_ext'
13100 libc='$libc'
13101 libperl='$libperl'
13102 libpth='$libpth'
13103 libs='$libs'
13104 libswanted='$libswanted'
13105 line='$line'
13106 lint='$lint'
13107 lkflags='$lkflags'
13108 ln='$ln'
13109 lns='$lns'
13110 locincpth='$locincpth'
13111 loclibpth='$loclibpth'
13112 longdblsize='$longdblsize'
13113 longlongsize='$longlongsize'
13114 longsize='$longsize'
13115 lp='$lp'
13116 lpr='$lpr'
13117 ls='$ls'
13118 lseeksize='$lseeksize'
13119 lseektype='$lseektype'
13120 mail='$mail'
13121 mailx='$mailx'
13122 make='$make'
13123 make_set_make='$make_set_make'
13124 mallocobj='$mallocobj'
13125 mallocsrc='$mallocsrc'
13126 malloctype='$malloctype'
13127 man1dir='$man1dir'
13128 man1direxp='$man1direxp'
13129 man1ext='$man1ext'
13130 man3dir='$man3dir'
13131 man3direxp='$man3direxp'
13132 man3ext='$man3ext'
13133 medium='$medium'
13134 mips='$mips'
13135 mips_type='$mips_type'
13136 mkdir='$mkdir'
13137 mmaptype='$mmaptype'
13138 models='$models'
13139 modetype='$modetype'
13140 more='$more'
13141 multiarch='$multiarch'
13142 mv='$mv'
13143 myarchname='$myarchname'
13144 mydomain='$mydomain'
13145 myhostname='$myhostname'
13146 myuname='$myuname'
13147 n='$n'
13148 netdb_hlen_type='$netdb_hlen_type'
13149 netdb_host_type='$netdb_host_type'
13150 netdb_name_type='$netdb_name_type'
13151 netdb_net_type='$netdb_net_type'
13152 nm='$nm'
13153 nm_opt='$nm_opt'
13154 nm_so_opt='$nm_so_opt'
13155 nonxs_ext='$nonxs_ext'
13156 nroff='$nroff'
13157 o_nonblock='$o_nonblock'
13158 obj_ext='$obj_ext'
13159 old_pthread_create_joinable='$old_pthread_create_joinable'
13160 optimize='$optimize'
13161 orderlib='$orderlib'
13162 osname='$osname'
13163 osvers='$osvers'
13164 package='$package'
13165 pager='$pager'
13166 passcat='$passcat'
13167 patchlevel='$patchlevel'
13168 path_sep='$path_sep'
13169 perl='$perl'
13170 perladmin='$perladmin'
13171 perlpath='$perlpath'
13172 pg='$pg'
13173 phostname='$phostname'
13174 pidtype='$pidtype'
13175 plibpth='$plibpth'
13176 pmake='$pmake'
13177 pr='$pr'
13178 prefix='$prefix'
13179 prefixexp='$prefixexp'
13180 privlib='$privlib'
13181 privlibexp='$privlibexp'
13182 prototype='$prototype'
13183 ptrsize='$ptrsize'
13184 randbits='$randbits'
13185 randfunc='$randfunc'
13186 randseedtype='$randseedtype'
13187 ranlib='$ranlib'
13188 rd_nodata='$rd_nodata'
13189 rm='$rm'
13190 rmail='$rmail'
13191 runnm='$runnm'
13192 sched_yield='$sched_yield'
13193 scriptdir='$scriptdir'
13194 scriptdirexp='$scriptdirexp'
13195 sed='$sed'
13196 seedfunc='$seedfunc'
13197 selectminbits='$selectminbits'
13198 selecttype='$selecttype'
13199 sendmail='$sendmail'
13200 sh='$sh'
13201 shar='$shar'
13202 sharpbang='$sharpbang'
13203 shmattype='$shmattype'
13204 shortsize='$shortsize'
13205 shrpenv='$shrpenv'
13206 shsharp='$shsharp'
13207 sig_count='$sig_count'
13208 sig_name='$sig_name'
13209 sig_name_init='$sig_name_init'
13210 sig_num='$sig_num'
13211 sig_num_init='$sig_num_init'
13212 signal_t='$signal_t'
13213 sitearch='$sitearch'
13214 sitearchexp='$sitearchexp'
13215 sitelib='$sitelib'
13216 sitelibexp='$sitelibexp'
13217 sizetype='$sizetype'
13218 sleep='$sleep'
13219 smail='$smail'
13220 small='$small'
13221 so='$so'
13222 sockethdr='$sockethdr'
13223 socketlib='$socketlib'
13224 sort='$sort'
13225 spackage='$spackage'
13226 spitshell='$spitshell'
13227 split='$split'
13228 src='$src'
13229 ssizetype='$ssizetype'
13230 startperl='$startperl'
13231 startsh='$startsh'
13232 static_ext='$static_ext'
13233 stdchar='$stdchar'
13234 stdio_base='$stdio_base'
13235 stdio_bufsiz='$stdio_bufsiz'
13236 stdio_cnt='$stdio_cnt'
13237 stdio_filbuf='$stdio_filbuf'
13238 stdio_ptr='$stdio_ptr'
13239 strings='$strings'
13240 submit='$submit'
13241 subversion='$subversion'
13242 sysman='$sysman'
13243 tail='$tail'
13244 tar='$tar'
13245 tbl='$tbl'
13246 tee='$tee'
13247 test='$test'
13248 timeincl='$timeincl'
13249 timetype='$timetype'
13250 touch='$touch'
13251 tr='$tr'
13252 trnl='$trnl'
13253 troff='$troff'
13254 uidtype='$uidtype'
13255 uname='$uname'
13256 uniq='$uniq'
13257 use64bits='$use64bits'
13258 usedl='$usedl'
13259 usemultiplicity='$usemultiplicity'
13260 usemymalloc='$usemymalloc'
13261 usenm='$usenm'
13262 useopcode='$useopcode'
13263 useperlio='$useperlio'
13264 useposix='$useposix'
13265 usesfio='$usesfio'
13266 useshrplib='$useshrplib'
13267 usethreads='$usethreads'
13268 usevfork='$usevfork'
13269 usrinc='$usrinc'
13270 uuname='$uuname'
13271 version='$version'
13272 vi='$vi'
13273 voidflags='$voidflags'
13274 xlibpth='$xlibpth'
13275 zcat='$zcat'
13276 zip='$zip'
13277 EOT
13278
13279 : Add in command line options if available
13280 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
13281
13282 : add special variables
13283 $test -f $src/patchlevel.h && \
13284 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
13285 echo "CONFIGDOTSH=true" >>config.sh
13286
13287 : propagate old symbols
13288 if $test -f UU/config.sh; then
13289         <UU/config.sh sort | uniq >UU/oldconfig.sh
13290         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
13291         sort | uniq -u >UU/oldsyms
13292         set X `cat UU/oldsyms`
13293         shift
13294         case $# in
13295         0) ;;
13296         *)
13297                 cat <<EOM
13298 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
13299 EOM
13300                 echo "# Variables propagated from previous config.sh file." >>config.sh
13301                 for sym in `cat UU/oldsyms`; do
13302                         echo "    Propagating $hint variable "'$'"$sym..."
13303                         eval 'tmp="$'"${sym}"'"'
13304                         echo "$tmp" | \
13305                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
13306                 done
13307                 ;;
13308         esac
13309 fi
13310
13311 : Finish up by extracting the .SH files
13312 case "$alldone" in
13313 exit)
13314         $rm -rf UU
13315         echo "Done."
13316         exit 0
13317         ;;
13318 cont)
13319         ;;
13320 '')
13321         dflt=''
13322         nostick=true
13323         $cat <<EOM
13324
13325 If you'd like to make any changes to the config.sh file before I begin
13326 to configure things, do it as a shell escape now (e.g. !vi config.sh).
13327
13328 EOM
13329         rp="Press return or use a shell escape to edit config.sh:"
13330         . UU/myread
13331         nostick=''
13332         case "$ans" in
13333         '') ;;
13334         *) : in case they cannot read
13335                 sh 1>&4 -c "$ans";;
13336         esac
13337         ;;
13338 esac
13339
13340 : if this fails, just run all the .SH files by hand
13341 . ./config.sh
13342
13343 echo " "
13344 exec 1>&4
13345 . ./UU/extract
13346
13347 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13348         dflt=y
13349         case "$silent" in
13350         true) ;;
13351         *)
13352                 $cat <<EOM
13353
13354 Now you need to generate make dependencies by running "$make depend".
13355 You might prefer to run it in background: "$make depend > makedepend.out &"
13356 It can take a while, so you might not want to run it right now.
13357
13358 EOM
13359                 ;;
13360         esac
13361         rp="Run $make depend now?"
13362         . UU/myread
13363         case "$ans" in
13364         y*)
13365                 $make depend && echo "Now you must run a $make."
13366                 ;;
13367         *)
13368                 echo "You must run '$make depend' then '$make'."
13369                 ;;
13370         esac
13371 elif test -f [Mm]akefile; then
13372         echo " "
13373         echo "Now you must run a $make."
13374 else
13375         echo "Done."
13376 fi
13377
13378 if $test -f Policy.sh; then
13379     $cat <<EOM
13380
13381 If you compile $package on a different machine or from a different object
13382 directory, copy the Policy.sh file from this object directory to the
13383 new one before you run Configure -- this will help you with most of
13384 the policy defaults.
13385
13386 EOM
13387 fi
13388 if $test -f config.msg; then
13389     echo "Hmm.  I also noted the following information while running:"
13390     echo " "
13391     $cat config.msg >&4
13392     $rm -f config.msg
13393 fi
13394 $rm -f kit*isdone ark*isdone
13395 $rm -rf UU
13396
13397 : End of Configure
13398