2979dab0843ff1c55d7f979767cc78f07026aff8
[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 Tue Feb  2 13:28:17 EET 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 case "$inksh/$needksh" in
112 /[a-z]*)
113                 ENV=''
114                 changesh=true
115                 reason="$needksh"
116         ;;
117 esac
118 case "$inksh/$avoidksh" in
119 true/[a-z]*)
120         changesh=true
121         reason="$avoidksh"
122         ;;
123 esac
124 case "$inksh/$needksh-$avoidksh-" in
125 true/--)
126                 cat <<EOM
127 (I see you are using the Korn shell.  Some ksh's blow up on $me,
128 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
129 EOM
130         ;;
131 esac
132 case "$changesh" in
133 true)
134         echo "(Feeding myself to $newsh $reason.)"
135         case "$0" in
136         Configure|*/Configure) exec $newsh $0 "$@";;
137         *) exec $newsh Configure "$@";;
138         esac
139         ;;
140 esac
141
142 : if needed set CDPATH to a harmless value that is not chatty
143 : avoid bash 2.02 problems with empty CDPATH.
144 case "$CDPATH" in
145 '')     ;;
146 *)      case "$SHELL" in
147         *bash*) CDPATH='.' ;;
148         *)              CDPATH='' ;;
149         esac
150         ;;
151 esac
152 : Configure runs within the UU subdirectory
153 test -d UU || mkdir UU
154 cd UU && rm -f ./*
155
156 dynamic_ext=''
157 extensions=''
158 known_extensions=''
159 nonxs_ext=''
160 static_ext=''
161 useopcode=''
162 useposix=''
163 d_bsd=''
164 d_eunice=''
165 d_xenix=''
166 eunicefix=''
167 Mcc=''
168 ar=''
169 awk=''
170 bash=''
171 bison=''
172 byacc=''
173 cat=''
174 chgrp=''
175 chmod=''
176 chown=''
177 comm=''
178 compress=''
179 cp=''
180 cpio=''
181 cpp=''
182 csh=''
183 date=''
184 echo=''
185 egrep=''
186 emacs=''
187 expr=''
188 find=''
189 flex=''
190 grep=''
191 gzip=''
192 inews=''
193 ksh=''
194 less=''
195 line=''
196 lint=''
197 ln=''
198 lp=''
199 lpr=''
200 ls=''
201 mail=''
202 mailx=''
203 make=''
204 mkdir=''
205 more=''
206 mv=''
207 nm=''
208 nroff=''
209 perl=''
210 pg=''
211 pmake=''
212 pr=''
213 rm=''
214 rmail=''
215 sed=''
216 sendmail=''
217 shar=''
218 sleep=''
219 smail=''
220 sort=''
221 submit=''
222 tail=''
223 tar=''
224 tbl=''
225 tee=''
226 test=''
227 touch=''
228 tr=''
229 troff=''
230 uname=''
231 uniq=''
232 uuname=''
233 vi=''
234 zcat=''
235 zip=''
236 full_sed=''
237 libswanted=''
238 hint=''
239 myuname=''
240 osname=''
241 osvers=''
242 Author=''
243 Date=''
244 Header=''
245 Id=''
246 Locker=''
247 Log=''
248 RCSfile=''
249 Revision=''
250 Source=''
251 State=''
252 _a=''
253 _exe=''
254 _o=''
255 archobjs=''
256 exe_ext=''
257 firstmakefile=''
258 lib_ext=''
259 obj_ext=''
260 path_sep=''
261 afs=''
262 alignbytes=''
263 ansi2knr=''
264 archlib=''
265 archlibexp=''
266 d_archlib=''
267 installarchlib=''
268 archname=''
269 myarchname=''
270 baserev=''
271 bin=''
272 binexp=''
273 installbin=''
274 byteorder=''
275 cc=''
276 gccversion=''
277 ccflags=''
278 cppflags=''
279 ldflags=''
280 lkflags=''
281 locincpth=''
282 optimize=''
283 cf_email=''
284 cf_by=''
285 cf_time=''
286 contains=''
287 cpp_stuff=''
288 cpplast=''
289 cppminus=''
290 cpprun=''
291 cppstdin=''
292 d_access=''
293 d_accessx=''
294 d_alarm=''
295 d_attribut=''
296 d_bcmp=''
297 d_bcopy=''
298 d_bzero=''
299 d_casti32=''
300 castflags=''
301 d_castneg=''
302 d_chown=''
303 d_chroot=''
304 d_chsize=''
305 d_closedir=''
306 d_void_closedir=''
307 d_const=''
308 cryptlib=''
309 d_crypt=''
310 d_csh=''
311 full_csh=''
312 d_cuserid=''
313 d_dbl_dig=''
314 d_difftime=''
315 d_dlerror=''
316 d_dlopen=''
317 d_dlsymun=''
318 d_dosuid=''
319 d_suidsafe=''
320 d_drand48proto=''
321 d_dup2=''
322 d_eaccess=''
323 d_endgrent=''
324 d_endhent=''
325 d_endnent=''
326 d_endpent=''
327 d_endpwent=''
328 d_endsent=''
329 d_fchmod=''
330 d_fchown=''
331 d_fcntl=''
332 d_fd_macros=''
333 d_fd_set=''
334 d_fds_bits=''
335 d_fgetpos=''
336 d_flexfnam=''
337 d_flock=''
338 d_fork=''
339 d_fseeko=''
340 d_fsetpos=''
341 d_ftello=''
342 d_ftime=''
343 d_gettimeod=''
344 d_Gconvert=''
345 d_getgrent=''
346 d_getgrps=''
347 d_gethbyaddr=''
348 d_gethbyname=''
349 d_gethent=''
350 aphostname=''
351 d_gethname=''
352 d_phostname=''
353 d_uname=''
354 d_gethostprotos=''
355 d_getlogin=''
356 d_getnbyaddr=''
357 d_getnbyname=''
358 d_getnent=''
359 d_getnetprotos=''
360 d_getpent=''
361 d_getpgid=''
362 d_getpgrp2=''
363 d_bsdgetpgrp=''
364 d_getpgrp=''
365 d_getppid=''
366 d_getprior=''
367 d_getpbyname=''
368 d_getpbynumber=''
369 d_getprotoprotos=''
370 d_getpwent=''
371 d_getsent=''
372 d_getservprotos=''
373 d_getsbyname=''
374 d_getsbyport=''
375 d_gnulibc=''
376 d_htonl=''
377 d_inetaton=''
378 d_isascii=''
379 d_killpg=''
380 d_lchown=''
381 d_link=''
382 d_locconv=''
383 d_lockf=''
384 d_longdbl=''
385 longdblsize=''
386 d_longlong=''
387 longlongsize=''
388 d_lstat=''
389 d_mblen=''
390 d_mbstowcs=''
391 d_mbtowc=''
392 d_memcmp=''
393 d_memcpy=''
394 d_memmove=''
395 d_memset=''
396 d_mkdir=''
397 d_mkfifo=''
398 d_mktime=''
399 d_msg=''
400 d_msgctl=''
401 d_msgget=''
402 d_msgrcv=''
403 d_msgsnd=''
404 d_nice=''
405 d_open3=''
406 d_fpathconf=''
407 d_pathconf=''
408 d_pause=''
409 d_pipe=''
410 d_poll=''
411 d_portable=''
412 d_old_pthread_create_joinable=''
413 old_pthread_create_joinable=''
414 d_pthread_yield=''
415 d_sched_yield=''
416 sched_yield=''
417 d_readdir=''
418 d_rewinddir=''
419 d_seekdir=''
420 d_telldir=''
421 d_readlink=''
422 d_readv=''
423 d_rename=''
424 d_rmdir=''
425 d_safebcpy=''
426 d_safemcpy=''
427 d_sanemcmp=''
428 d_select=''
429 d_sem=''
430 d_semctl=''
431 d_semget=''
432 d_semop=''
433 d_setegid=''
434 d_seteuid=''
435 d_setgrent=''
436 d_setgrps=''
437 d_sethent=''
438 d_setlinebuf=''
439 d_setlocale=''
440 d_setnent=''
441 d_setpent=''
442 d_setpgid=''
443 d_setpgrp2=''
444 d_bsdsetpgrp=''
445 d_setpgrp=''
446 d_setprior=''
447 d_setpwent=''
448 d_setregid=''
449 d_setresgid=''
450 d_setresuid=''
451 d_setreuid=''
452 d_setrgid=''
453 d_setruid=''
454 d_setsent=''
455 d_setsid=''
456 d_setvbuf=''
457 d_sfio=''
458 usesfio=''
459 d_shm=''
460 d_shmat=''
461 d_shmatprototype=''
462 shmattype=''
463 d_shmctl=''
464 d_shmdt=''
465 d_shmget=''
466 d_sigaction=''
467 d_sigsetjmp=''
468 d_cmsghdr_s=''
469 d_msg_ctrunc=''
470 d_msg_dontroute=''
471 d_msg_oob=''
472 d_msg_peek=''
473 d_msg_proxy=''
474 d_msghdr_s=''
475 d_oldsock=''
476 d_recvmsg=''
477 d_scm_rights=''
478 d_sendmsg=''
479 d_socket=''
480 d_sockpair=''
481 sockethdr=''
482 socketlib=''
483 d_statblks=''
484 d_fstatfs=''
485 d_statfs=''
486 d_statfsflags=''
487 d_fstatvfs=''
488 d_statvfs=''
489 d_stdio_cnt_lval=''
490 d_stdio_ptr_lval=''
491 d_stdiobase=''
492 d_stdstdio=''
493 stdio_base=''
494 stdio_bufsiz=''
495 stdio_cnt=''
496 stdio_filbuf=''
497 stdio_ptr=''
498 d_index=''
499 d_strchr=''
500 d_strcoll=''
501 d_strctcpy=''
502 d_strerrm=''
503 d_strerror=''
504 d_sysernlst=''
505 d_syserrlst=''
506 d_strtod=''
507 d_strtol=''
508 d_strtoul=''
509 d_strxfrm=''
510 d_symlink=''
511 d_syscall=''
512 d_sysconf=''
513 d_system=''
514 d_tcgetpgrp=''
515 d_tcsetpgrp=''
516 d_time=''
517 timetype=''
518 clocktype=''
519 d_times=''
520 d_truncate=''
521 d_tzname=''
522 d_umask=''
523 d_semctl_semid_ds=''
524 d_semctl_semun=''
525 d_union_semun=''
526 d_vfork=''
527 usevfork=''
528 d_voidsig=''
529 signal_t=''
530 d_volatile=''
531 d_charvspr=''
532 d_vprintf=''
533 d_wait4=''
534 d_waitpid=''
535 d_wcstombs=''
536 d_wctomb=''
537 d_writev=''
538 d_dbmclose64=''
539 d_dbminit64=''
540 d_delete64=''
541 d_fetch64=''
542 d_firstkey64=''
543 d_nextkey64=''
544 d_store64=''
545 dlext=''
546 cccdlflags=''
547 ccdlflags=''
548 dlsrc=''
549 ld=''
550 lddlflags=''
551 usedl=''
552 doublesize=''
553 ebcdic=''
554 fpostype=''
555 gidtype=''
556 groupstype=''
557 h_fcntl=''
558 h_sysfile=''
559 i_arpainet=''
560 db_hashtype=''
561 db_prefixtype=''
562 i_db=''
563 i_dbm=''
564 i_rpcsvcdbm=''
565 d_dirnamlen=''
566 direntrytype=''
567 i_dirent=''
568 i_dld=''
569 i_dlfcn=''
570 i_fcntl=''
571 i_float=''
572 i_gdbm=''
573 d_grpasswd=''
574 i_grp=''
575 d_int64t=''
576 i_inttypes=''
577 i_limits=''
578 i_locale=''
579 i_machcthr=''
580 i_malloc=''
581 i_math=''
582 i_memory=''
583 i_mntent=''
584 i_ndbm=''
585 i_netdb=''
586 i_neterrno=''
587 i_niin=''
588 i_sysin=''
589 i_poll=''
590 d_pwage=''
591 d_pwchange=''
592 d_pwclass=''
593 d_pwcomment=''
594 d_pwexpire=''
595 d_pwgecos=''
596 d_pwpasswd=''
597 d_pwquota=''
598 i_pwd=''
599 i_sfio=''
600 i_stddef=''
601 i_stdlib=''
602 i_string=''
603 strings=''
604 i_sysaccess=''
605 i_sysdir=''
606 i_sysfile=''
607 d_voidtty=''
608 i_bsdioctl=''
609 i_sysfilio=''
610 i_sysioctl=''
611 i_syssockio=''
612 i_sysmount=''
613 i_sysndir=''
614 i_sysparam=''
615 i_sysresrc=''
616 i_syssecrt=''
617 i_sysselct=''
618 i_sysstat=''
619 i_sysstatvfs=''
620 i_systimes=''
621 i_systypes=''
622 d_iovec_s=''
623 i_sysuio=''
624 i_sysun=''
625 i_syswait=''
626 i_sgtty=''
627 i_termio=''
628 i_termios=''
629 i_systime=''
630 i_systimek=''
631 i_time=''
632 timeincl=''
633 i_unistd=''
634 i_utime=''
635 i_values=''
636 i_stdarg=''
637 i_varargs=''
638 i_varhdr=''
639 i_vfork=''
640 installusrbinperl=''
641 intsize=''
642 longsize=''
643 shortsize=''
644 d_dirent64_s=''
645 d_flock64_s=''
646 d_fstat64=''
647 d_ftruncate64=''
648 d_ino64t=''
649 d_lockf64=''
650 d_lseek64=''
651 d_lstat64=''
652 d_off64t=''
653 d_open64=''
654 d_opendir64=''
655 d_readdir64=''
656 d_seekdir64=''
657 d_stat64=''
658 d_telldir64=''
659 d_truncate64=''
660 libc=''
661 libperl=''
662 shrpenv=''
663 useshrplib=''
664 glibpth=''
665 libpth=''
666 loclibpth=''
667 plibpth=''
668 xlibpth=''
669 ignore_versioned_solibs=''
670 libs=''
671 lns=''
672 lseeksize=''
673 lseektype=''
674 make_set_make=''
675 d_mymalloc=''
676 freetype=''
677 mallocobj=''
678 mallocsrc=''
679 malloctype=''
680 usemymalloc=''
681 installman1dir=''
682 man1dir=''
683 man1direxp=''
684 man1ext=''
685 installman3dir=''
686 man3dir=''
687 man3direxp=''
688 man3ext=''
689 huge=''
690 large=''
691 medium=''
692 models=''
693 small=''
694 split=''
695 modetype=''
696 mydomain=''
697 myhostname=''
698 phostname=''
699 c=''
700 n=''
701 d_eofnblk=''
702 eagain=''
703 o_nonblock=''
704 rd_nodata=''
705 netdb_hlen_type=''
706 netdb_host_type=''
707 netdb_name_type=''
708 netdb_net_type=''
709 groupcat=''
710 hostcat=''
711 passcat=''
712 orderlib=''
713 ranlib=''
714 package=''
715 spackage=''
716 pager=''
717 apiversion=''
718 patchlevel=''
719 subversion=''
720 version=''
721 perladmin=''
722 perlpath=''
723 pidtype=''
724 prefix=''
725 prefixexp=''
726 installprivlib=''
727 privlib=''
728 privlibexp=''
729 prototype=''
730 ptrsize=''
731 drand01=''
732 randbits=''
733 randfunc=''
734 randseedtype=''
735 seedfunc=''
736 installscript=''
737 scriptdir=''
738 scriptdirexp=''
739 selectminbits=''
740 selecttype=''
741 sh=''
742 sig_name=''
743 sig_name_init=''
744 sig_num=''
745 sig_num_init=''
746 installsitearch=''
747 sitearch=''
748 sitearchexp=''
749 installsitelib=''
750 sitelib=''
751 sitelibexp=''
752 sizetype=''
753 so=''
754 sharpbang=''
755 shsharp=''
756 spitshell=''
757 src=''
758 ssizetype=''
759 startperl=''
760 startsh=''
761 stdchar=''
762 d_fgetpos64=''
763 d_fopen64=''
764 d_freopen64=''
765 d_fseek64=''
766 d_fseeko64=''
767 d_fsetpos64=''
768 d_ftell64=''
769 d_ftello64=''
770 d_tmpfile64=''
771 sysman=''
772 trnl=''
773 uidtype=''
774 archname64=''
775 use64bits=''
776 usemultiplicity=''
777 nm_opt=''
778 nm_so_opt=''
779 runnm=''
780 usenm=''
781 useperlio=''
782 d_oldpthreads=''
783 usethreads=''
784 incpath=''
785 mips=''
786 mips_type=''
787 usrinc=''
788 defvoidused=''
789 voidflags=''
790 CONFIG=''
791
792 define='define'
793 undef='undef'
794 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
795 rmlist=''
796
797 : We must find out about Eunice early
798 eunicefix=':'
799 if test -f /etc/unixtovms; then
800         eunicefix=/etc/unixtovms
801 fi
802 if test -f /etc/unixtovms.exe; then
803         eunicefix=/etc/unixtovms.exe
804 fi
805
806 i_whoami=''
807 : change the next line if compiling for Xenix/286 on Xenix/386
808 xlibpth='/usr/lib/386 /lib/386'
809
810 : Possible local library directories to search.
811 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
812 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
813
814 : general looking path for locating libraries
815 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
816 glibpth="$glibpth /lib /usr/lib $xlibpth"
817 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
818 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
819
820 : Private path used by Configure to find libraries.  Its value
821 : is prepended to libpth. This variable takes care of special
822 : machines, like the mips.  Usually, it should be empty.
823 plibpth=''
824
825 : Possible local include directories to search.
826 : Set locincpth to "" in a hint file to defeat local include searches.
827 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
828 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
829 :
830 : no include file wanted by default
831 inclwanted=''
832
833 : list of known cpp symbols, sorted alphabetically
834 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
835 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
836 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
837 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
838 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
839 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
840 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
841 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
842 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
843 al="$al VMS Xenix286"
844 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
845 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
846 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
847 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
848 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
849 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
850 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
851 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
852 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
853 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
854 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
855 al="$al __SVR4_2__ __UMAXV__"
856 al="$al ____386BSD____ __alpha __alpha__ __amiga"
857 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
858 al="$al __host_mips__"
859 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
860 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
861 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
862 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
863 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
864 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
865 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
866 al="$al __mc88100 __mc88100__ __mips __mips__"
867 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
868 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
869 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
870 al="$al _host_mips _mips _unix"
871 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
872 al="$al apollo ardent att386 att3b"
873 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
874 al="$al cadmus clipper concurrent convex cray ctix"
875 al="$al dmert encore gcos gcx gimpel gould"
876 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
877 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
878 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
879 al="$al i186 i286 i386 i486 i8086"
880 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
881 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
882 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
883 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
884 al="$al mc88000 mc88100 merlin mert mips mvs n16"
885 al="$al ncl_el ncl_mr"
886 al="$al news1500 news1700 news1800 news1900 news3700"
887 al="$al news700 news800 news900 ns16000 ns32000"
888 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
889 al="$al parisc pc532 pdp11 plexus posix pyr"
890 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
891 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
892 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
893 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
894 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
895 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
896 al="$al xenix z8000"
897
898 : Trailing extension.  Override this in a hint file, if needed.
899 _exe=''
900 : Extra object files, if any, needed on this platform.
901 archobjs=''
902 groupstype=''
903 : default library list
904 libswanted=''
905 : some systems want to use only the non-versioned libso:s
906 ignore_versioned_solibs=''
907 : full support for void wanted by default
908 defvoidused=15
909
910 : set useposix=false in your hint file to disable the POSIX extension.
911 useposix=true
912 : set useopcode=false in your hint file to disable the Opcode extension.
913 useopcode=true
914 : set usemultiplicity on the Configure command line to enable multiplicity.
915 : set usethreads on the Configure command line to enable threads.
916 : List of libraries we want.
917 : If anyone needs -lnet, put it in a hint file.
918 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
919 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
920 libswanted="$libswanted ucb bsd BSD PW x"
921 : We probably want to search /usr/shlib before most other libraries.
922 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
923 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
924 glibpth="/usr/shlib $glibpth"
925 : Do not use vfork unless overridden by a hint file.
926 usevfork=false
927
928 : Find the basic shell for Bourne shell scripts
929 case "$sh" in
930 '')
931         case "$SYSTYPE" in
932         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
933         *) xxx='/bin/sh';;
934         esac
935         if test -f "$xxx"; then
936                 sh="$xxx"
937         else
938                 : Build up a list and do a single loop so we can 'break' out.
939                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
940                 for xxx in sh bash ksh pdksh ash; do
941                         for p in $pth; do
942                                 try="$try ${p}/${xxx}"
943                         done
944                 done
945                 for xxx in $try; do
946                         if test -f "$xxx"; then
947                                 sh="$xxx";
948                                 break
949                         elif test -f "$xxx.exe"; then
950                                 sh="$xxx";
951                                 break
952                         fi
953                 done
954         fi
955         ;;
956 esac
957
958 case "$sh" in
959 '')     cat <<EOM >&2
960 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
961
962 Usually it's in /bin/sh.  How did you even get this far?
963 Please contact me (Perl Maintainers) at perlbug@perl.com and 
964 we'll try to straighten this all out.
965 EOM
966         exit 1
967         ;;
968 esac
969
970 : see if sh knows # comments
971 if `$sh -c '#' >/dev/null 2>&1`; then
972         shsharp=true
973         spitshell=cat
974         xcat=/bin/cat
975         test -f $xcat || xcat=/usr/bin/cat
976         echo "#!$xcat" >try
977         $eunicefix try
978         chmod +x try
979         ./try > today
980         if test -s today; then
981                 sharpbang='#!'
982         else
983                 echo "#! $xcat" > try
984                 $eunicefix try
985                 chmod +x try
986                 ./try > today
987                 if test -s today; then
988                         sharpbang='#! '
989                 else
990                         sharpbang=': use '
991                 fi
992         fi
993 else
994         echo " "
995         echo "Your $sh doesn't grok # comments--I will strip them later on."
996         shsharp=false
997         cd ..
998         echo "exec grep -v '^[  ]*#'" >spitshell
999         chmod +x spitshell
1000         $eunicefix spitshell
1001         spitshell=`pwd`/spitshell
1002         cd UU
1003         echo "I presume that if # doesn't work, #! won't work either!"
1004         sharpbang=': use '
1005 fi
1006 rm -f try today
1007
1008 : figure out how to guarantee sh startup
1009 case "$startsh" in
1010 '') startsh=${sharpbang}${sh} ;;
1011 *)
1012 esac
1013 cat >try <<EOSS
1014 $startsh
1015 set abc
1016 test "$?abc" != 1
1017 EOSS
1018
1019 chmod +x try
1020 $eunicefix try
1021 if ./try; then
1022         : echo "Yup, it does."
1023 else
1024         echo "Hmm... '$startsh' does not guarantee sh startup..."
1025         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1026 fi
1027 rm -f try
1028
1029
1030 : Save command line options in file UU/cmdline.opt for later use in
1031 : generating config.sh.
1032 cat > cmdline.opt <<EOSH
1033 # Configure command line arguments.
1034 config_arg0='$0'
1035 config_args='$*'
1036 config_argc=$#
1037 EOSH
1038 argn=1
1039 for arg in "$@"; do
1040         cat >>cmdline.opt <<EOSH
1041 config_arg$argn='$arg'
1042 EOSH
1043         argn=`expr $argn + 1`
1044 done
1045
1046 : produce awk script to parse command line options
1047 cat >options.awk <<'EOF'
1048 BEGIN {
1049         optstr = "dD:eEf:hKOrsSU:V";    # getopt-style specification
1050
1051         len = length(optstr);
1052         for (i = 1; i <= len; i++) {
1053                 c = substr(optstr, i, 1);
1054                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1055                 if (a == ":") {
1056                         arg[c] = 1;
1057                         i++;
1058                 }
1059                 opt[c] = 1;
1060         }
1061 }
1062 {
1063         expect = 0;
1064         str = $0;
1065         if (substr(str, 1, 1) != "-") {
1066                 printf("'%s'\n", str);
1067                 next;
1068         }
1069         len = length($0);
1070         for (i = 2; i <= len; i++) {
1071                 c = substr(str, i, 1);
1072                 if (!opt[c]) {
1073                         printf("-%s\n", substr(str, i));
1074                         next;
1075                 }
1076                 printf("-%s\n", c);
1077                 if (arg[c]) {
1078                         if (i < len)
1079                                 printf("'%s'\n", substr(str, i + 1));
1080                         else
1081                                 expect = 1;
1082                         next;
1083                 }
1084         }
1085 }
1086 END {
1087         if (expect)
1088                 print "?";
1089 }
1090 EOF
1091
1092 : process the command line options
1093 set X `for arg in "$@"; do echo "X$arg"; done |
1094         sed -e s/X// | awk -f options.awk`
1095 eval "set $*"
1096 shift
1097 rm -f options.awk
1098
1099 : set up default values
1100 fastread=''
1101 reuseval=false
1102 config_sh=''
1103 alldone=''
1104 error=''
1105 silent=''
1106 extractsh=''
1107 override=''
1108 knowitall=''
1109 rm -f optdef.sh
1110 cat >optdef.sh <<EOS
1111 $startsh
1112 EOS
1113
1114
1115 : option parsing
1116 while test $# -gt 0; do
1117         case "$1" in
1118         -d) shift; fastread=yes;;
1119         -e) shift; alldone=cont;;
1120         -f)
1121                 shift
1122                 cd ..
1123                 if test -r "$1"; then
1124                         config_sh="$1"
1125                 else
1126                         echo "$me: cannot read config file $1." >&2
1127                         error=true
1128                 fi
1129                 cd UU
1130                 shift;;
1131         -h) shift; error=true;;
1132         -r) shift; reuseval=true;;
1133         -s) shift; silent=true; realsilent=true;;
1134         -E) shift; alldone=exit;;
1135         -K) shift; knowitall=true;;
1136         -O) shift; override=true;;
1137         -S) shift; silent=true; extractsh=true;;
1138         -D)
1139                 shift
1140                 case "$1" in
1141                 *=)
1142                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1143                         echo "$me: ignoring -D $1" >&2
1144                         ;;
1145                 *=*) echo "$1" | \
1146                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1147                 *) echo "$1='define'" >> optdef.sh;;
1148                 esac
1149                 shift
1150                 ;;
1151         -U)
1152                 shift
1153                 case "$1" in
1154                 *=) echo "$1" >> optdef.sh;;
1155                 *=*)
1156                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1157                         echo "$me: ignoring -U $1" >&2
1158                         ;;
1159                 *) echo "$1='undef'" >> optdef.sh;;
1160                 esac
1161                 shift
1162                 ;;
1163         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1164                 exit 0;;
1165         --) break;;
1166         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1167         *) break;;
1168         esac
1169 done
1170
1171 case "$error" in
1172 true)
1173         cat >&2 <<EOM
1174 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1175                  [-U symbol] [-U symbol=]
1176   -d : use defaults for all answers.
1177   -e : go on without questioning past the production of config.sh.
1178   -f : specify an alternate default configuration file.
1179   -h : print this help message and exit (with an error status).
1180   -r : reuse C symbols value if possible (skips costly nm extraction).
1181   -s : silent mode, only echoes questions and essential information.
1182   -D : define symbol to have some value:
1183          -D symbol         symbol gets the value 'define'
1184          -D symbol=value   symbol gets the value 'value'
1185   -E : stop at the end of questions, after having produced config.sh.
1186   -K : do not use unless you know what you are doing.
1187   -O : let -D and -U override definitions from loaded configuration file.
1188   -S : perform variable substitutions on all .SH files (can mix with -f)
1189   -U : undefine symbol:
1190          -U symbol    symbol gets the value 'undef'
1191          -U symbol=   symbol gets completely empty
1192   -V : print version number and exit (with a zero status).
1193 EOM
1194         exit 1
1195         ;;
1196 esac
1197
1198 : Sanity checks
1199 case "$fastread$alldone" in
1200 yescont|yesexit) ;;
1201 *)
1202         if test ! -t 0; then
1203                 echo "Say 'sh Configure', not 'sh <Configure'"
1204                 exit 1
1205         fi
1206         ;;
1207 esac
1208
1209 exec 4>&1
1210 case "$silent" in
1211 true) exec 1>/dev/null;;
1212 esac
1213
1214 : run the defines and the undefines, if any, but leave the file out there...
1215 touch optdef.sh
1216 . ./optdef.sh
1217
1218 : set package name
1219 package=perl5
1220 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1221 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1222 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1223 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1224 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1225 esac
1226
1227 : Some greps do not return status, grrr.
1228 echo "grimblepritz" >grimble
1229 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1230         contains=contains
1231 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1232         contains=grep
1233 else
1234         contains=contains
1235 fi
1236 rm -f grimble
1237 : the following should work in any shell
1238 case "$contains" in
1239 contains*)
1240         echo " "
1241         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1242         cat >contains <<'EOSS'
1243 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1244 EOSS
1245 chmod +x contains
1246 esac
1247
1248 : Find the path to the source tree
1249 case "$src" in
1250 '') case "$0" in
1251     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;;
1252     *)   src='.';;
1253     esac;;
1254 esac
1255 case "$src" in
1256 '')     src=/
1257         rsrc=/
1258         ;;
1259 /*) rsrc="$src";;
1260 *) rsrc="../$src";;
1261 esac
1262 if test -f $rsrc/Configure && \
1263         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1264 then
1265    : found it, so we are ok.
1266 else
1267         rsrc=''
1268         for src in . .. ../.. ../../.. ../../../..; do
1269                 if test -f ../$src/Configure && \
1270                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1271                 then
1272                         rsrc=../$src
1273                         break
1274                 fi
1275         done
1276 fi
1277 case "$rsrc" in
1278 '')
1279         cat <<EOM >&4
1280
1281 Sorry, I can't seem to locate the source dir for $package.  Please start
1282 Configure with an explicit path -- i.e. /some/path/Configure.
1283
1284 EOM
1285         exit 1
1286         ;;
1287 ../.)   rsrc='..';;
1288 *)
1289         echo " "
1290         echo "Sources for $package found in \"$src\"." >&4
1291         ;;
1292 esac
1293
1294 : script used to extract .SH files with variable substitutions
1295 cat >extract <<'EOS'
1296 CONFIG=true
1297 echo "Doing variable substitutions on .SH files..."
1298 if test -f $src/MANIFEST; then
1299         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1300 else
1301         echo "(Looking for .SH files under the source directory.)"
1302         set x `(cd $src; find . -name "*.SH" -print)`
1303 fi
1304 shift
1305 case $# in
1306 0) set x `(cd $src; echo *.SH)`; shift;;
1307 esac
1308 if test ! -f $src/$1; then
1309         shift
1310 fi
1311 mkdir_p='
1312 name=$1;
1313 create="";
1314 while test $name; do
1315         if test ! -d "$name"; then
1316                 create="$name $create";
1317                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1318                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1319         else
1320                 name="";
1321         fi;
1322 done;
1323 for file in $create; do
1324         mkdir $file;
1325 done
1326 '
1327 for file in $*; do
1328         case "$src" in
1329         ".")
1330                 case "$file" in
1331                 */*)
1332                         dir=`expr X$file : 'X\(.*\)/'`
1333                         file=`expr X$file : 'X.*/\(.*\)'`
1334                         (cd $dir && . ./$file)
1335                         ;;
1336                 *)
1337                         . ./$file
1338                         ;;
1339                 esac
1340                 ;;
1341         *)
1342                 case "$file" in
1343                 */*)
1344                         dir=`expr X$file : 'X\(.*\)/'`
1345                         file=`expr X$file : 'X.*/\(.*\)'`
1346                         (set x $dir; shift; eval $mkdir_p)
1347                         sh <$src/$dir/$file
1348                         ;;
1349                 *)
1350                         sh <$src/$file
1351                         ;;
1352                 esac
1353                 ;;
1354         esac
1355 done
1356 if test -f $src/config_h.SH; then
1357         if test ! -f config.h; then
1358         : oops, they left it out of MANIFEST, probably, so do it anyway.
1359         . $src/config_h.SH
1360         fi
1361 fi
1362 EOS
1363
1364 : extract files and exit if asked to do so
1365 case "$extractsh" in
1366 true)
1367         case "$realsilent" in
1368         true) ;;
1369         *) exec 1>&4;;
1370         esac
1371         case "$config_sh" in
1372         '') config_sh='config.sh';;
1373         esac
1374         echo " "
1375         echo "Fetching answers from $config_sh..."
1376         cd ..
1377         . $config_sh
1378         test "$override" && . ./optdef.sh
1379         echo " "
1380         . UU/extract
1381         rm -rf UU
1382         echo "Done."
1383         exit 0
1384         ;;
1385 esac
1386
1387 : Eunice requires " " instead of "", can you believe it
1388 echo " "
1389 : Here we go...
1390 echo "Beginning of configuration questions for $package."
1391
1392 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1393
1394 : first determine how to suppress newline on echo command
1395 echo " "
1396 echo "Checking echo to see how to suppress newlines..."
1397 (echo "hi there\c" ; echo " ") >.echotmp
1398 if $contains c .echotmp >/dev/null 2>&1 ; then
1399         echo "...using -n."
1400         n='-n'
1401         c=''
1402 else
1403         cat <<'EOM'
1404 ...using \c
1405 EOM
1406         n=''
1407         c='\c'
1408 fi
1409 echo $n "The star should be here-->$c"
1410 echo '*'
1411 rm -f .echotmp
1412
1413 : Now test for existence of everything in MANIFEST
1414 echo " "
1415 if test -f $rsrc/MANIFEST; then
1416         echo "First let's make sure your kit is complete.  Checking..." >&4
1417         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1418         rm -f missing
1419         tmppwd=`pwd`
1420         for filelist in x??; do
1421                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1422         done
1423         if test -s missing; then
1424                 cat missing >&4
1425                 cat >&4 <<'EOM'
1426
1427 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1428
1429 You have the option of continuing the configuration process, despite the
1430 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1431 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1432 and contact the author (perlbug@perl.com).
1433
1434 EOM
1435                 echo $n "Continue? [n] $c" >&4
1436                 read ans
1437                 case "$ans" in
1438                 y*)
1439                         echo "Continuing..." >&4
1440                         rm -f missing
1441                         ;;
1442                 *)
1443                         echo "ABORTING..." >&4
1444                         kill $$
1445                         ;;
1446                 esac
1447         else
1448                 echo "Looks good..."
1449         fi
1450 else
1451         echo "There is no MANIFEST file.  I hope your kit is complete !"
1452 fi
1453 rm -f missing x??
1454
1455 echo " "
1456 : Find the appropriate value for a newline for tr
1457 if test -n "$DJGPP"; then
1458        trnl='\012'
1459 fi
1460 if test X"$trnl" = X; then
1461         case "`echo foo|tr '\n' x 2>/dev/null`" in
1462         foox) trnl='\n' ;;
1463         esac
1464 fi
1465 if test X"$trnl" = X; then
1466         case "`echo foo|tr '\012' x 2>/dev/null`" in
1467         foox) trnl='\012' ;;
1468         esac
1469 fi
1470 if test X"$trnl" = X; then
1471         cat <<EOM >&2
1472
1473 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1474
1475 EOM
1476         exit 1
1477 fi
1478
1479 : compute the number of columns on the terminal for proper question formatting
1480 case "$COLUMNS" in
1481 '') COLUMNS='80';;
1482 esac
1483
1484 : set up the echo used in my read
1485 myecho="case \"\$xxxm\" in
1486 '') echo $n \"\$rp $c\" >&4;;
1487 *) case \"\$rp\" in
1488         '') echo $n \"[\$xxxm] $c\";;
1489         *)
1490                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1491                         echo \"\$rp\" >&4
1492                         echo $n \"[\$xxxm] $c\" >&4
1493                 else
1494                         echo $n \"\$rp [\$xxxm] $c\" >&4
1495                 fi
1496                 ;;
1497         esac;;
1498 esac"
1499
1500 : now set up to do reads with possible shell escape and default assignment
1501 cat <<EOSC >myread
1502 $startsh
1503 xxxm=\$dflt
1504 $myecho
1505 ans='!'
1506 case "\$fastread" in
1507 yes) case "\$dflt" in
1508         '') ;;
1509         *) ans='';
1510                 case "\$silent-\$rp" in
1511                 true-) ;;
1512                 *) echo " " >&4;;
1513                 esac;;
1514         esac;;
1515 *) case "\$silent" in
1516         true) case "\$rp" in
1517                 '') ans='';;
1518                 esac;;
1519         esac;;
1520 esac
1521 while expr "X\$ans" : "X!" >/dev/null; do
1522         read answ
1523         set x \$xxxm
1524         shift
1525         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1526         case  "\$answ" in
1527         "!")
1528                 sh 1>&4
1529                 echo " "
1530                 $myecho
1531                 ;;
1532         !*)
1533                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1534                 shift
1535                 sh 1>&4 -c "\$*"
1536                 echo " "
1537                 $myecho
1538                 ;;
1539         "\$ans")
1540                 case "\$ans" in
1541                 \\&*)
1542                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1543                         shift
1544                         case "\$1" in
1545                         -d)
1546                                 fastread=yes
1547                                 echo "(OK, I'll run with -d after this question.)" >&4
1548                                 ;;
1549                         -*)
1550                                 echo "*** Sorry, \$1 not supported yet." >&4
1551                                 ;;
1552                         esac
1553                         $myecho
1554                         ans=!
1555                         ;;
1556                 esac;;
1557         *)
1558                 case "\$aok" in
1559                 y)
1560                         echo "*** Substitution done -- please confirm."
1561                         xxxm="\$ans"
1562                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1563                         xxxm="\$ans"
1564                         ans=!
1565                         ;;
1566                 *)
1567                         echo "*** Error -- try again."
1568                         ans=!
1569                         ;;
1570                 esac
1571                 $myecho
1572                 ;;
1573         esac
1574         case "\$ans\$xxxm\$nostick" in
1575         '')
1576                 ans=!
1577                 $myecho
1578                 ;;
1579         esac
1580 done
1581 case "\$ans" in
1582 '') ans="\$xxxm";;
1583 esac
1584 EOSC
1585
1586 : create .config dir to save info across Configure sessions
1587 test -d ../.config || mkdir ../.config
1588 cat >../.config/README <<EOF
1589 This directory created by Configure to save information that should
1590 persist across sessions for $package.
1591
1592 You may safely delete it if you wish.
1593 EOF
1594
1595 : general instructions
1596 needman=true
1597 firsttime=true
1598 user=`(logname) 2>/dev/null`
1599 case "$user" in
1600 '') user=`whoami 2>&1`;;
1601 esac
1602 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1603         firsttime=false
1604         echo " "
1605         rp='Would you like to see the instructions?'
1606         dflt=n
1607         . ./myread
1608         case "$ans" in
1609         [yY]*) ;;
1610         *) needman=false;;
1611         esac
1612 fi
1613 if $needman; then
1614         cat <<EOH
1615
1616 This installation shell script will examine your system and ask you questions
1617 to determine how the perl5 package should be installed. If you get
1618 stuck on a question, you may use a ! shell escape to start a subshell or
1619 execute a command.  Many of the questions will have default answers in square
1620 brackets; typing carriage return will give you the default.
1621
1622 On some of the questions which ask for file or directory names you are allowed
1623 to use the ~name construct to specify the login directory belonging to "name",
1624 even if you don't have a shell which knows about that.  Questions where this is
1625 allowed will be marked "(~name ok)".
1626
1627 EOH
1628         rp=''
1629         dflt='Type carriage return to continue'
1630         . ./myread
1631         cat <<'EOH'
1632
1633 The prompter used in this script allows you to use shell variables and
1634 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1635 in the default answer, as if the default line was a set of arguments given to a
1636 script shell.  This means you may also use $* to repeat the whole default line,
1637 so you do not have to re-type everything to add something to the default.
1638
1639 Everytime there is a substitution, you will have to confirm.  If there is an
1640 error (e.g. an unmatched backtick), the default answer will remain unchanged
1641 and you will be prompted again.
1642
1643 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1644 the questions and use the computed defaults (or the previous answers if there
1645 was already a config.sh file). Type 'Configure -h' for a list of options.
1646 You may also start interactively and then answer '& -d' at any prompt to turn
1647 on the non-interactive behaviour for the remainder of the execution.
1648
1649 EOH
1650         . ./myread
1651         cat <<EOH
1652
1653 Much effort has been expended to ensure that this shell script will run on any
1654 Unix system.  If despite that it blows up on yours, your best bet is to edit
1655 Configure and run it again.  If you can't run Configure for some reason,
1656 you'll have to generate a config.sh file by hand.  Whatever problems you
1657 have, let me (perlbug@perl.com) know how I blew it.
1658
1659 This installation script affects things in two ways:
1660
1661 1) it may do direct variable substitutions on some of the files included
1662    in this kit.
1663 2) it builds a config.h file for inclusion in C programs.  You may edit
1664    any of these files as the need arises after running this script.
1665
1666 If you make a mistake on a question, there is no easy way to back up to it
1667 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1668 files.  Configure will offer to let you do this before it runs the SH files.
1669
1670 EOH
1671         dflt='Type carriage return to continue'
1672         . ./myread
1673         case "$firsttime" in
1674         true) echo $user >>../.config/instruct;;
1675         esac
1676 fi
1677
1678 : find out where common programs are
1679 echo " "
1680 echo "Locating common programs..." >&4
1681 cat <<EOSC >loc
1682 $startsh
1683 case \$# in
1684 0) exit 1;;
1685 esac
1686 thing=\$1
1687 shift
1688 dflt=\$1
1689 shift
1690 for dir in \$*; do
1691         case "\$thing" in
1692         .)
1693         if test -d \$dir/\$thing; then
1694                 echo \$dir
1695                 exit 0
1696         fi
1697         ;;
1698         *)
1699         for thisthing in \$dir/\$thing; do
1700                 : just loop through to pick last item
1701         done
1702         if test -f \$thisthing; then
1703                 echo \$thisthing
1704                 exit 0
1705         elif test -f \$dir/\$thing.exe; then
1706                 if test -n "$DJGPP"; then
1707                         echo \$dir/\$thing.exe
1708                 else
1709                         : on Eunice apparently
1710                         echo \$dir/\$thing
1711                 fi
1712                 exit 0
1713         fi
1714         ;;
1715         esac
1716 done
1717 echo \$dflt
1718 exit 1
1719 EOSC
1720 chmod +x loc
1721 $eunicefix loc
1722 loclist="
1723 awk
1724 cat
1725 comm
1726 cp
1727 echo
1728 expr
1729 grep
1730 ls
1731 make
1732 mkdir
1733 rm
1734 sed
1735 sort
1736 touch
1737 tr
1738 uniq
1739 "
1740 trylist="
1741 Mcc
1742 ar
1743 byacc
1744 cpp
1745 csh
1746 date
1747 egrep
1748 gzip
1749 less
1750 ln
1751 more
1752 nm
1753 nroff
1754 pg
1755 tee
1756 test
1757 uname
1758 zip
1759 "
1760 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1761 pth="$pth /lib /usr/lib"
1762 for file in $loclist; do
1763         eval xxx=\$$file
1764         case "$xxx" in
1765         /*|?:[\\/]*)
1766                 if test -f "$xxx"; then
1767                         : ok
1768                 else
1769                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1770                         xxx=`./loc $file $file $pth`
1771                 fi
1772                 ;;
1773         '') xxx=`./loc $file $file $pth`;;
1774         *) xxx=`./loc $xxx $xxx $pth`;;
1775         esac
1776         eval $file=$xxx
1777         eval _$file=$xxx
1778         case "$xxx" in
1779         /*)
1780                 echo $file is in $xxx.
1781                 ;;
1782         ?:[\\/]*)
1783                 echo $file is in $xxx.
1784                 ;;
1785         *)
1786                 echo "I don't know where '$file' is, and my life depends on it." >&4
1787                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1788                 exit 1
1789                 ;;
1790         esac
1791 done
1792 echo " "
1793 echo "Don't worry if any of the following aren't found..."
1794 say=offhand
1795 for file in $trylist; do
1796         eval xxx=\$$file
1797         case "$xxx" in
1798         /*|?:[\\/]*)
1799                 if test -f "$xxx"; then
1800                         : ok
1801                 else
1802                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1803                         xxx=`./loc $file $file $pth`
1804                 fi
1805                 ;;
1806         '') xxx=`./loc $file $file $pth`;;
1807         *) xxx=`./loc $xxx $xxx $pth`;;
1808         esac
1809         eval $file=$xxx
1810         eval _$file=$xxx
1811         case "$xxx" in
1812         /*)
1813                 echo $file is in $xxx.
1814                 ;;
1815         ?:[\\/]*)
1816                 echo $file is in $xxx.
1817                 ;;
1818         *)
1819                 echo "I don't see $file out there, $say."
1820                 say=either
1821                 ;;
1822         esac
1823 done
1824 case "$egrep" in
1825 egrep)
1826         echo "Substituting grep for egrep."
1827         egrep=$grep
1828         ;;
1829 esac
1830 case "$ln" in
1831 ln)
1832         echo "Substituting cp for ln."
1833         ln=$cp
1834         ;;
1835 esac
1836 case "$test" in
1837 test)
1838         echo "Hopefully test is built into your sh."
1839         ;;
1840 *)
1841         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1842                 echo "Using the test built into your sh."
1843                 test=test
1844                 _test=test
1845         fi
1846         ;;
1847 esac
1848 case "$echo" in
1849 echo)
1850         echo "Hopefully echo is built into your sh."
1851         ;;
1852 '') ;;
1853 *)
1854         echo " "
1855 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1856         $echo $n "hi there$c" >foo1
1857         echo $n "hi there$c" >foo2
1858         if cmp foo1 foo2 >/dev/null 2>&1; then
1859                 echo "They are compatible.  In fact, they may be identical."
1860         else
1861                 case "$n" in
1862                 '-n') n='' c='\c';;
1863                 *) n='-n' c='';;
1864                 esac
1865                 cat <<FOO
1866 They are not compatible!  You are probably running ksh on a non-USG system.
1867 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1868 have echo built in and we may have to run some Bourne shell scripts.  That
1869 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1870
1871 FOO
1872                 $echo $n "The star should be here-->$c"
1873                 $echo "*"
1874         fi
1875         $rm -f foo1 foo2
1876         ;;
1877 esac
1878
1879 : determine whether symbolic links are supported
1880 echo " "
1881 $touch blurfl
1882 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1883         echo "Symbolic links are supported." >&4
1884         lns="$ln -s"
1885 else
1886         echo "Symbolic links are NOT supported." >&4
1887         lns="$ln"
1888 fi
1889 $rm -f blurfl sym
1890
1891 : see whether [:lower:] and [:upper:] are supported character classes
1892 echo " "
1893 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1894 ABYZ)
1895         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1896         up='[:upper:]'
1897         low='[:lower:]'
1898         ;;
1899 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
1900         # (0xc9 and 0xd1), therefore that is a nice testing point.
1901         if test "X$up" = X -o "X$low" = X; then
1902             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
1903             ij) up='[A-Z]'
1904                 low='[a-z]'
1905                 ;;
1906             esac
1907         fi
1908         if test "X$up" = X -o "X$low" = X; then
1909             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
1910             ij) up='A-Z'
1911                 low='a-z'
1912                 ;;
1913             esac
1914         fi
1915         if test "X$up" = X -o "X$low" = X; then
1916             case "`echo IJ | od -x 2>/dev/null`" in
1917             *C9D1*|*c9d1*)
1918                 echo "Hey, this might be EBCDIC." >&4
1919                 if test "X$up" = X -o "X$low" = X; then
1920                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
1921                     ij) up='[A-IJ-RS-Z]'
1922                         low='[a-ij-rs-z]'
1923                         ;;
1924                     esac
1925                 fi
1926                 if test "X$up" = X -o "X$low" = X; then
1927                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
1928                     ij) up='A-IJ-RS-Z'
1929                         low='a-ij-rs-z'
1930                         ;;
1931                     esac
1932                 fi
1933                 ;;
1934             esac
1935         fi
1936 esac
1937 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
1938 ij)
1939     echo "Using $up and $low to convert case." >&4
1940     ;;
1941 *)
1942     echo "I don't know how to translate letters from upper to lower case." >&4
1943     echo "Your tr is not acting any way I know of." >&4
1944     exit 1
1945     ;;
1946 esac
1947 : set up the translation script tr, must be called with ./tr of course
1948 cat >tr <<EOSC
1949 $startsh
1950 case "\$1\$2" in
1951 '[A-Z][a-z]') exec $tr '$up' '$low';;
1952 '[a-z][A-Z]') exec $tr '$low' '$up';;
1953 esac
1954 exec $tr "\$@"
1955 EOSC
1956 chmod +x tr
1957 $eunicefix tr
1958
1959 : Try to determine whether config.sh was made on this system
1960 case "$config_sh" in
1961 '')
1962 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1963 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
1964 # because the A-Z/a-z are not consecutive.
1965 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1966         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1967 newmyuname="$myuname"
1968 dflt=n
1969 case "$knowitall" in
1970 '')
1971         if test -f ../config.sh; then
1972                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1973                         eval "`grep myuname= ../config.sh`"
1974                 fi
1975                 if test "X$myuname" = "X$newmyuname"; then
1976                         dflt=y
1977                 fi
1978         fi
1979         ;;
1980 *) dflt=y;;
1981 esac
1982
1983 : Get old answers from old config file if Configure was run on the
1984 : same system, otherwise use the hints.
1985 hint=default
1986 cd ..
1987 if test -f config.sh; then
1988         echo " "
1989         rp="I see a config.sh file.  Shall I use it to set the defaults?"
1990         . UU/myread
1991         case "$ans" in
1992         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1993         *)  echo "Fetching default answers from your old config.sh file..." >&4
1994                 tmp_n="$n"
1995                 tmp_c="$c"
1996                 tmp_sh="$sh"
1997                 . ./config.sh
1998                 cp config.sh UU
1999                 n="$tmp_n"
2000                 c="$tmp_c"
2001                 : Older versions did not always set $sh.  Catch re-use of such
2002                 : an old config.sh.
2003                 case "$sh" in
2004                 '') sh="$tmp_sh" ;;
2005                 esac
2006                 hint=previous
2007                 ;;
2008         esac
2009 fi
2010 if test ! -f config.sh; then
2011         $cat <<EOM
2012
2013 First time through, eh?  I have some defaults handy for some systems
2014 that need some extra help getting the Configure answers right:
2015
2016 EOM
2017         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2018         dflt=''
2019         : Half the following guesses are probably wrong... If you have better
2020         : tests or hints, please send them to perlbug@perl.com
2021         : The metaconfig authors would also appreciate a copy...
2022         $test -f /irix && osname=irix
2023         $test -f /xenix && osname=sco_xenix
2024         $test -f /dynix && osname=dynix
2025         $test -f /dnix && osname=dnix
2026         $test -f /lynx.os && osname=lynxos
2027         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2028         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2029         $test -f /bin/mips && /bin/mips && osname=mips
2030         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2031                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2032         $test -d /usr/apollo/bin && osname=apollo
2033         $test -f /etc/saf/_sactab && osname=svr4
2034         $test -d /usr/include/minix && osname=minix
2035         if $test -d /MachTen -o -d /MachTen_Folder; then
2036                 osname=machten
2037                 if $test -x /sbin/version; then
2038                         osvers=`/sbin/version | $awk '{print $2}' |
2039                         $sed -e 's/[A-Za-z]$//'`
2040                 elif $test -x /usr/etc/version; then
2041                         osvers=`/usr/etc/version | $awk '{print $2}' |
2042                         $sed -e 's/[A-Za-z]$//'`
2043                 else
2044                         osvers="$2.$3"
2045                 fi
2046         fi
2047        $test -f /sys/posix.dll &&
2048                $test -f /usr/bin/what &&
2049                set X `/usr/bin/what /sys/posix.dll` &&
2050                $test "$3" = UWIN &&
2051                osname=uwin &&
2052                osvers="$5"
2053         if $test -f $uname; then
2054                 set X $myuname
2055                 shift
2056
2057                 case "$5" in
2058                 fps*) osname=fps ;;
2059                 mips*)
2060                         case "$4" in
2061                         umips) osname=umips ;;
2062                         *) osname=mips ;;
2063                         esac;;
2064                 [23]100) osname=mips ;;
2065                 next*) osname=next ;;
2066                 i386*)
2067                         if $test -f /etc/kconfig; then
2068                                 osname=isc
2069                                 if test "$lns" = "ln -s"; then
2070                                         osvers=4
2071                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2072                                         osvers=3
2073                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2074                                         osvers=2
2075                                 fi
2076                         fi
2077                         ;;
2078                 pc*)
2079                         if test -n "$DJGPP"; then
2080                                 osname=dos
2081                                 osvers=djgpp
2082                         fi
2083                         ;;
2084                 esac
2085
2086                 case "$1" in
2087                 aix) osname=aix
2088                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2089                         case "$tmp" in
2090                         'not found') osvers="$4"."$3" ;;
2091                         '<3240'|'<>3240') osvers=3.2.0 ;;
2092                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2093                         '=3250'|'>3250') osvers=3.2.5 ;;
2094                         *) osvers=$tmp;;
2095                         esac
2096                         ;;
2097                 *dc.osx) osname=dcosx
2098                         osvers="$3"
2099                         ;;
2100                 dnix) osname=dnix
2101                         osvers="$3"
2102                         ;;
2103                 domainos) osname=apollo
2104                         osvers="$3"
2105                         ;;
2106                 dgux) osname=dgux 
2107                         osvers="$3"
2108                         ;;
2109                 dynixptx*) osname=dynixptx
2110                         osvers=`echo "$4"|sed 's/^v//'`
2111                         ;;
2112                 freebsd) osname=freebsd 
2113                         osvers="$3" ;;
2114                 genix) osname=genix ;;
2115                 hp*) osname=hpux 
2116                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2117                         ;;
2118                 irix*) osname=irix
2119                         case "$3" in
2120                         4*) osvers=4 ;;
2121                         5*) osvers=5 ;;
2122                         *)      osvers="$3" ;;
2123                         esac
2124                         ;;
2125                 linux) osname=linux
2126                         case "$3" in
2127                         *)      osvers="$3" ;;
2128                         esac
2129                         ;;
2130                 MiNT) osname=mint
2131                         ;;
2132                 netbsd*) osname=netbsd
2133                         osvers="$3"
2134                         ;;
2135                 news-os) osvers="$3"
2136                         case "$3" in
2137                         4*) osname=newsos4 ;;
2138                         *) osname=newsos ;;
2139                         esac
2140                         ;;
2141                 bsd386) osname=bsd386
2142                         osvers=`$uname -r`
2143                         ;;
2144                 POSIX-BC | posix-bc ) osname=posix-bc
2145                         osvers="$3"
2146                         ;;
2147                 powerux | power_ux | powermax_os | powermaxos | \
2148                 powerunix | power_unix) osname=powerux
2149                         osvers="$3"
2150                         ;;
2151                 next*) osname=next ;;
2152                 solaris) osname=solaris
2153                         case "$3" in
2154                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2155                         *)      osvers="$3" ;;
2156                         esac
2157                         ;;
2158                 sunos) osname=sunos
2159                         case "$3" in
2160                         5*) osname=solaris
2161                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2162                         *)      osvers="$3" ;;
2163                         esac
2164                         ;;
2165                 titanos) osname=titanos
2166                         case "$3" in
2167                         1*) osvers=1 ;;
2168                         2*) osvers=2 ;;
2169                         3*) osvers=3 ;;
2170                         4*) osvers=4 ;;
2171                         *)      osvers="$3" ;;
2172                         esac
2173                         ;;
2174                 ultrix) osname=ultrix
2175                         osvers="$3"
2176                         ;;
2177                 osf1|mls+)      case "$5" in
2178                                 alpha)
2179                                         osname=dec_osf
2180                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2181                                         ;;
2182                         hp*)    osname=hp_osf1  ;;
2183                         mips)   osname=mips_osf1 ;;
2184                         esac
2185                         ;;
2186                 uts) osname=uts 
2187                         osvers="$3"
2188                         ;;
2189                 qnx) osname=qnx
2190                         osvers="$4"
2191                         ;;
2192                 $2) case "$osname" in
2193                         *isc*) ;;
2194                         *freebsd*) ;;
2195                         svr*)
2196                                 : svr4.x or possibly later
2197                                 case "svr$3" in 
2198                                 ${osname}*)
2199                                         osname=svr$3
2200                                         osvers=$4
2201                                         ;;
2202                                 esac
2203                                 case "$osname" in
2204                                 svr4.0)
2205                                         : Check for ESIX
2206                                         if test -f /stand/boot ; then
2207                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2208                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2209                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2210                                                         if test -n "$isesix"; then
2211                                                                 osname=esix4
2212                                                         fi
2213                                                 fi
2214                                         fi
2215                                         ;;
2216                                 esac
2217                                 ;;
2218                         *)      if test -f /etc/systemid; then
2219                                         osname=sco
2220                                         set `echo $3 | $sed 's/\./ /g'` $4
2221                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2222                                                 osvers=$1.$2.$3
2223                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2224                                                 osvers=$1.$2
2225                                         elif $test -f $src/hints/sco_$1.sh; then
2226                                                 osvers=$1
2227                                         fi
2228                                 else
2229                                         case "$osname" in
2230                                         '') : Still unknown.  Probably a generic Sys V.
2231                                                 osname="sysv"
2232                                                 osvers="$3"
2233                                                 ;;
2234                                         esac
2235                                 fi
2236                                 ;;
2237                         esac
2238                         ;;
2239                 *)      case "$osname" in
2240                         '') : Still unknown.  Probably a generic BSD.
2241                                 osname="$1"
2242                                 osvers="$3"
2243                                 ;;
2244                         esac
2245                         ;;
2246                 esac
2247         else
2248                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2249                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2250                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2251                                 osname=news_os
2252                         fi
2253                         $rm -f UU/kernel.what
2254                 elif test -d c:/.; then
2255                         set X $myuname
2256                         osname=os2
2257                         osvers="$5"
2258                 fi
2259         fi
2260         
2261         : Now look for a hint file osname_osvers, unless one has been
2262         : specified already.
2263         case "$hintfile" in
2264         ''|' ')
2265                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2266                 : Also try without trailing minor version numbers.
2267                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2268                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2269                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2270                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2271                 case "$file" in
2272                 '') dflt=none ;;
2273                 *)  case "$osvers" in
2274                         '') dflt=$file
2275                                 ;;
2276                         *)  if $test -f $src/hints/$file.sh ; then
2277                                         dflt=$file
2278                                 elif $test -f $src/hints/$xfile.sh ; then
2279                                         dflt=$xfile
2280                                 elif $test -f $src/hints/$xxfile.sh ; then
2281                                         dflt=$xxfile
2282                                 elif $test -f $src/hints/$xxxfile.sh ; then
2283                                         dflt=$xxxfile
2284                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2285                                         dflt=$xxxxfile
2286                                 elif $test -f "$src/hints/${osname}.sh" ; then
2287                                         dflt="${osname}"
2288                                 else
2289                                         dflt=none
2290                                 fi
2291                                 ;;
2292                         esac
2293                         ;;
2294                 esac
2295                 if $test -f Policy.sh ; then
2296                         case "$dflt" in
2297                         *Policy*) ;;
2298                         none) dflt="Policy" ;;
2299                         *) dflt="Policy $dflt" ;;
2300                         esac
2301                 fi
2302                 ;;
2303         *)
2304                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2305                 ;;
2306         esac
2307
2308         if $test -f Policy.sh ; then
2309                 $cat <<EOM
2310
2311 There's also a Policy hint file available, which should make the
2312 site-specific (policy) questions easier to answer.
2313 EOM
2314
2315         fi
2316
2317         $cat <<EOM
2318
2319 You may give one or more space-separated answers, or "none" if appropriate.
2320 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2321 is a good thing.  DO NOT give a wrong version.
2322
2323 EOM
2324
2325         rp="Which of these apply, if any?"
2326         . UU/myread
2327         tans=$ans
2328         for file in $tans; do
2329                 if $test X$file = XPolicy -a -f Policy.sh; then
2330                         . Policy.sh
2331                         $cat Policy.sh >> UU/config.sh
2332                 elif $test -f $src/hints/$file.sh; then
2333                         . $src/hints/$file.sh
2334                         $cat $src/hints/$file.sh >> UU/config.sh
2335                 elif $test X$tans = X -o X$tans = Xnone ; then
2336                         : nothing
2337                 else
2338                         : Give one chance to correct a possible typo.
2339                         echo "$file.sh does not exist"
2340                         dflt=$file
2341                         rp="hint to use instead?"
2342                         . UU/myread
2343                         for file in $ans; do
2344                                 if $test -f "$src/hints/$file.sh"; then
2345                                         . $src/hints/$file.sh
2346                                         $cat $src/hints/$file.sh >> UU/config.sh
2347                                 elif $test X$ans = X -o X$ans = Xnone ; then
2348                                         : nothing
2349                                 else
2350                                         echo "$file.sh does not exist -- ignored."
2351                                 fi
2352                         done
2353                 fi
2354         done
2355
2356         hint=recommended
2357         : Remember our hint file for later.
2358         if $test -f "$src/hints/$file.sh" ; then
2359                 hintfile="$file"
2360         else
2361                 hintfile=''
2362         fi
2363 fi
2364 cd UU
2365 ;;
2366 *)
2367         echo " "
2368         echo "Fetching default answers from $config_sh..." >&4
2369         tmp_n="$n"
2370         tmp_c="$c"
2371         cd ..
2372         cp $config_sh config.sh 2>/dev/null
2373         chmod +w config.sh
2374         . ./config.sh
2375         cd UU
2376         cp ../config.sh .
2377         n="$tmp_n"
2378         c="$tmp_c"
2379         hint=previous
2380         ;;
2381 esac
2382 test "$override" && . ./optdef.sh
2383 myuname="$newmyuname"
2384
2385 : Restore computed paths
2386 for file in $loclist $trylist; do
2387         eval $file="\$_$file"
2388 done
2389
2390 cat << EOM
2391
2392 Configure uses the operating system name and version to set some defaults.
2393 The default value is probably right if the name rings a bell. Otherwise,
2394 since spelling matters for me, either accept the default or answer "none"
2395 to leave it blank.
2396
2397 EOM
2398 case "$osname" in
2399         ''|' ')
2400                 case "$hintfile" in
2401                 ''|' '|none) dflt=none ;;
2402                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2403                 esac
2404                 ;;
2405         *) dflt="$osname" ;;
2406 esac
2407 rp="Operating system name?"
2408 . ./myread
2409 case "$ans" in
2410 none)  osname='' ;;
2411 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2412 esac
2413 echo " "
2414 case "$osvers" in
2415         ''|' ')
2416                 case "$hintfile" in
2417                 ''|' '|none) dflt=none ;;
2418                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2419                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2420                         case "$dflt" in
2421                         ''|' ') dflt=none ;;
2422                         esac
2423                         ;;
2424                 esac
2425                 ;;
2426         *) dflt="$osvers" ;;
2427 esac
2428 rp="Operating system version?"
2429 . ./myread
2430 case "$ans" in
2431 none)  osvers='' ;;
2432 *) osvers="$ans" ;;
2433 esac
2434
2435 : who configured the system
2436 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2437 cf_by=`(logname) 2>/dev/null`
2438 case "$cf_by" in
2439 "")
2440         cf_by=`(whoami) 2>/dev/null`
2441         case "$cf_by" in
2442         "") cf_by=unknown ;;
2443         esac ;;
2444 esac
2445
2446 : set up the script used to warn in case of inconsistency
2447 cat <<EOS >whoa
2448 $startsh
2449 EOS
2450 cat <<'EOSC' >>whoa
2451 dflt=y
2452 echo " "
2453 echo "*** WHOA THERE!!! ***" >&4
2454 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2455 rp="    Keep the $hint value?"
2456 . ./myread
2457 case "$ans" in
2458 y) td=$was; tu=$was;;
2459 esac
2460 EOSC
2461
2462 : function used to set $1 to $val
2463 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2464 case "$val$was" in
2465 $define$undef) . ./whoa; eval "$var=\$td";;
2466 $undef$define) . ./whoa; eval "$var=\$tu";;
2467 *) eval "$var=$val";;
2468 esac'
2469
2470 cat <<EOM
2471
2472 Perl can be built to take advantage of threads, on some systems.
2473 To do so, Configure must be run with -Dusethreads.
2474 (See README.threads for details.)
2475 EOM
2476 case "$usethreads" in
2477 $define|true|[yY]*)     dflt='y';;
2478 *) dflt='n';;
2479 esac
2480 rp='Build a threading Perl?'
2481 . ./myread
2482 case "$ans" in
2483 y|Y)    val="$define" ;;     
2484 *)      val="$undef" ;;
2485 esac
2486 set usethreads
2487 eval $setvar 
2488
2489 case "$d_oldpthreads" in
2490 '')     : Configure tests would be welcome here.  For now, assume undef.
2491         val="$undef" ;;
2492 *)      val="$d_oldpthreads" ;;
2493 esac
2494 set d_oldpthreads
2495 eval $setvar
2496
2497
2498 case "$usethreads" in
2499 "$define"|true|[yY]*)
2500 : Look for a hint-file generated 'call-back-unit'.  If the
2501 : user has specified that a threading perl is to be built,
2502 : we may need to set or change some other defaults.
2503         if $test -f usethreads.cbu; then
2504                 . ./usethreads.cbu
2505         fi
2506         case "$osname" in
2507         aix|dec_osf|dos_djgpp|freebsd|hpux|irix|linux|os2|solaris|vmesa)
2508                 # Known thread-capable platforms.
2509                 ;;
2510         *)
2511                 cat >&4 <<EOM
2512 $osname is not known to support threads.
2513 Please let me (jhi@iki.fi) know how to do that.
2514
2515 Cannot continue, aborting.
2516 EOM
2517                 exit 1
2518         ;;
2519         esac # $osname
2520     ;;
2521 esac # $usethreads
2522
2523 cat <<EOM
2524
2525 Perl can be built so that multiple Perl interpreters can coexist
2526 within the same Perl executable.  To do so, Configure must be run with
2527 -Dusemultiplicity.
2528
2529 Normally you do not need this and you should answer no.
2530
2531 EOM
2532 case "$usemultiplicity" in
2533 $define|true|[yY]*)     dflt='y';;
2534 *) dflt='n';;
2535 esac
2536 rp='Build Perl for multiplicity?'
2537 . ./myread
2538 case "$ans" in
2539 y|Y)    val="$define" ;;     
2540 *)      val="$undef" ;;
2541 esac
2542 set usemultiplicity
2543 eval $setvar 
2544
2545 cat <<EOM
2546
2547 Perl can be built to take advantage of explicit 64-bit interfaces,
2548 on some systems.  To do so, Configure must be run with -Duse64bits.
2549
2550 If this doesn't make any sense to you, just accept the default 'n'.
2551 EOM
2552 case "$use64bits" in
2553 $define|true|[yY]*)     dflt='y';;
2554 *) dflt='n';;
2555 esac
2556 rp='Try to use explicit 64-bit interfaces, if available?'
2557 . ./myread
2558 case "$ans" in
2559 y|Y) 
2560         val="$define"
2561         ;;     
2562 *)      
2563         val="$undef"
2564         ;;
2565 esac
2566 set use64bits
2567 eval $setvar
2568
2569 case "$archname64" in
2570 '') archname64='' ;;    # not a typo
2571 esac
2572
2573 case "$use64bits" in
2574 "$define"|true|[yY]*)
2575 : Look for a hint-file generated 'call-back-unit'.  If the
2576 : user has specified that a threading perl is to be built,
2577 : we may need to set or change some other defaults.
2578         if $test -f use64bits.cbu; then
2579                 . ./use64bits.cbu
2580         fi
2581         case "$osname" in
2582         dec_osf|hpux|irix|solaris|unicos)
2583                 # Known 64-bit capable platforms.
2584                 ;;
2585         *)
2586                 cat >&4 <<EOM
2587 $osname is not known to support 64-bit interfaces.
2588 Please let me (jhi@iki.fi) know how to do that.
2589
2590 Cannot continue, aborting.
2591 EOM
2592                 exit 1
2593                 ;;
2594         esac
2595         ;;
2596 esac
2597
2598 : determine the architecture name
2599 echo " "
2600 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2601         tarch=`arch`"-$osname"
2602 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2603         if uname -m > tmparch 2>&1 ; then
2604                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2605                         -e 's/$/'"-$osname/" tmparch`
2606         else
2607                 tarch="$osname"
2608         fi
2609         $rm -f tmparch
2610 else
2611         tarch="$osname"
2612 fi
2613 case "$myarchname" in
2614 ''|"$tarch") ;;
2615 *)
2616         echo "(Your architecture name used to be $myarchname.)"
2617         archname=''
2618         ;;
2619 esac
2620 myarchname="$tarch"
2621 case "$archname" in
2622 '') dflt="$tarch";;
2623 *) dflt="$archname";;
2624 esac
2625 rp='What is your architecture name'
2626 . ./myread
2627 archname="$ans"
2628 case "$usethreads" in
2629 $define)
2630         echo "Threads selected." >&4
2631         case "$archname" in
2632         *-thread*) echo "...and architecture name already has -thread." >&4
2633                 ;;
2634         *)      archname="$archname-thread"
2635                 echo "...setting architecture name to $archname." >&4
2636                 ;;
2637         esac
2638         ;;
2639 esac
2640 case "$usemultiplicity" in
2641 $define)
2642         echo "Multiplicity selected." >&4
2643         case "$archname" in
2644         *-multi*) echo "...and architecture name already has -multi." >&4
2645                 ;;
2646         *)      archname="$archname-multi"
2647                 echo "...setting architecture name to $archname." >&4
2648                 ;;
2649         esac
2650         ;;
2651 esac
2652 case "$use64bits" in
2653 $define)
2654         echo "Explicit 64-bitness selected." >&4
2655         case "$archname64" in
2656         '')
2657                 ;;
2658         *)
2659                 case "$archname" in
2660                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2661                         ;;
2662                 *)      archname="$archname-$archname64"
2663                         echo "...setting architecture name to $archname." >&4
2664                         ;;
2665                 esac
2666                 ;;
2667         esac
2668 esac
2669
2670 : is AFS running?
2671 echo " "
2672 case "$afs" in
2673 $define|true)   afs=true ;;
2674 $undef|false)   afs=false ;;
2675 *)      if test -d /afs; then
2676                 afs=true
2677         else
2678                 afs=false
2679         fi
2680         ;;
2681 esac
2682 if $afs; then
2683         echo "AFS may be running... I'll be extra cautious then..." >&4
2684 else
2685         echo "AFS does not seem to be running..." >&4
2686 fi
2687
2688 : decide how portable to be.  Allow command line overrides.
2689 case "$d_portable" in
2690 "$undef") ;;
2691 *)      d_portable="$define" ;;
2692 esac
2693
2694 : set up shell script to do ~ expansion
2695 cat >filexp <<EOSS
2696 $startsh
2697 : expand filename
2698 case "\$1" in
2699  ~/*|~)
2700         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2701         ;;
2702  ~*)
2703         if $test -f /bin/csh; then
2704                 /bin/csh -f -c "glob \$1"
2705                 failed=\$?
2706                 echo ""
2707                 exit \$failed
2708         else
2709                 name=\`$expr x\$1 : '..\([^/]*\)'\`
2710                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2711                 if $test ! -d "\$dir"; then
2712                         me=\`basename \$0\`
2713                         echo "\$me: can't locate home directory for: \$name" >&2
2714                         exit 1
2715                 fi
2716                 case "\$1" in
2717                 */*)
2718                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2719                         ;;
2720                 *)
2721                         echo \$dir
2722                         ;;
2723                 esac
2724         fi
2725         ;;
2726 *)
2727         echo \$1
2728         ;;
2729 esac
2730 EOSS
2731 chmod +x filexp
2732 $eunicefix filexp
2733
2734 : now set up to get a file name
2735 cat <<EOS >getfile
2736 $startsh
2737 EOS
2738 cat <<'EOSC' >>getfile
2739 tilde=''
2740 fullpath=''
2741 already=''
2742 skip=''
2743 none_ok=''
2744 exp_file=''
2745 nopath_ok=''
2746 orig_rp="$rp"
2747 orig_dflt="$dflt"
2748
2749 case "$fn" in
2750 *\(*)
2751         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
2752         fn=`echo $fn | sed 's/(.*)//'`
2753         ;;
2754 esac
2755
2756 case "$fn" in
2757 *:*)
2758         loc_file=`expr $fn : '.*:\(.*\)'`
2759         fn=`expr $fn : '\(.*\):.*'`
2760         ;;
2761 esac
2762
2763 case "$fn" in
2764 *~*) tilde=true;;
2765 esac
2766 case "$fn" in
2767 */*) fullpath=true;;
2768 esac
2769 case "$fn" in
2770 *+*) skip=true;;
2771 esac
2772 case "$fn" in
2773 *n*) none_ok=true;;
2774 esac
2775 case "$fn" in
2776 *e*) exp_file=true;;
2777 esac
2778 case "$fn" in
2779 *p*) nopath_ok=true;;
2780 esac
2781
2782 case "$fn" in
2783 *f*) type='File';;
2784 *d*) type='Directory';;
2785 *l*) type='Locate';;
2786 esac
2787
2788 what="$type"
2789 case "$what" in
2790 Locate) what='File';;
2791 esac
2792
2793 case "$exp_file" in
2794 '')
2795         case "$d_portable" in
2796         "$define") ;;
2797         *) exp_file=true;;
2798         esac
2799         ;;
2800 esac
2801
2802 cd ..
2803 while test "$type"; do
2804         redo=''
2805         rp="$orig_rp"
2806         dflt="$orig_dflt"
2807         case "$tilde" in
2808         true) rp="$rp (~name ok)";;
2809         esac
2810         . UU/myread
2811         if test -f UU/getfile.ok && \
2812                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2813         then
2814                 value="$ans"
2815                 ansexp="$ans"
2816                 break
2817         fi
2818         case "$ans" in
2819         none)
2820                 value=''
2821                 ansexp=''
2822                 case "$none_ok" in
2823                 true) type='';;
2824                 esac
2825                 ;;
2826         *)
2827                 case "$tilde" in
2828                 '') value="$ans"
2829                         ansexp="$ans";;
2830                 *)
2831                         value=`UU/filexp $ans`
2832                         case $? in
2833                         0)
2834                                 if test "$ans" != "$value"; then
2835                                         echo "(That expands to $value on this system.)"
2836                                 fi
2837                                 ;;
2838                         *) value="$ans";;
2839                         esac
2840                         ansexp="$value"
2841                         case "$exp_file" in
2842                         '') value="$ans";;
2843                         esac
2844                         ;;
2845                 esac
2846                 case "$fullpath" in
2847                 true)
2848                         case "$ansexp" in
2849                         /*) value="$ansexp" ;;
2850                         *)
2851                                 redo=true
2852                                 case "$already" in
2853                                 true)
2854                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
2855                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
2856                                         ;;
2857                                 *)
2858                                 echo "Please give a full path name, starting with slash." >&4
2859                                         case "$tilde" in
2860                                         true)
2861                                 echo "Note that using ~name is ok provided it expands well." >&4
2862                                                 already=true
2863                                                 ;;
2864                                         esac
2865                                 esac
2866                                 ;;
2867                         esac
2868                         ;;
2869                 esac
2870                 case "$redo" in
2871                 '')
2872                         case "$type" in
2873                         File)
2874                                 if test -f "$ansexp"; then
2875                                         type=''
2876                                 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2877                                 then
2878                                         echo "($value is not a plain file, but that's ok.)"
2879                                         type=''
2880                                 fi
2881                                 ;;
2882                         Directory)
2883                                 if test -d "$ansexp"; then
2884                                         type=''
2885                                 fi
2886                                 ;;
2887                         Locate)
2888                                 if test -d "$ansexp"; then
2889                                         echo "(Looking for $loc_file in directory $value.)"
2890                                         value="$value/$loc_file"
2891                                         ansexp="$ansexp/$loc_file"
2892                                 fi
2893                                 if test -f "$ansexp"; then
2894                                         type=''
2895                                 fi
2896                                 case "$nopath_ok" in
2897                                 true)   case "$value" in
2898                                         */*) ;;
2899                                         *)      echo "Assuming $value will be in people's path."
2900                                                 type=''
2901                                                 ;;
2902                                         esac
2903                                         ;;
2904                                 esac
2905                                 ;;
2906                         esac
2907
2908                         case "$skip" in
2909                         true) type='';
2910                         esac
2911
2912                         case "$type" in
2913                         '') ;;
2914                         *)
2915                                 if test "$fastread" = yes; then
2916                                         dflt=y
2917                                 else
2918                                         dflt=n
2919                                 fi
2920                                 rp="$what $value doesn't exist.  Use that name anyway?"
2921                                 . UU/myread
2922                                 dflt=''
2923                                 case "$ans" in
2924                                 y*) type='';;
2925                                 *) echo " ";;
2926                                 esac
2927                                 ;;
2928                         esac
2929                         ;;
2930                 esac
2931                 ;;
2932         esac
2933 done
2934 cd UU
2935 ans="$value"
2936 rp="$orig_rp"
2937 dflt="$orig_dflt"
2938 rm -f getfile.ok
2939 EOSC
2940
2941 : determine root of directory hierarchy where package will be installed.
2942 case "$prefix" in
2943 '')
2944         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2945         ;;
2946 *)
2947         dflt="$prefix"
2948         ;;
2949 esac
2950 $cat <<EOM
2951
2952 By default, $package will be installed in $dflt/bin, manual
2953 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2954 all installation directories. Typically set to /usr/local, but you
2955 may choose /usr if you wish to install $package among your system
2956 binaries. If you wish to have binaries under /bin but manual pages
2957 under /usr/local/man, that's ok: you will be prompted separately
2958 for each of the installation directories, the prefix being only used
2959 to set the defaults.
2960
2961 EOM
2962 fn=d~
2963 rp='Installation prefix to use?'
2964 . ./getfile
2965 oldprefix=''
2966 case "$prefix" in
2967 '') ;;
2968 *)
2969         case "$ans" in
2970         "$prefix") ;;
2971         *) oldprefix="$prefix";;
2972         esac
2973         ;;
2974 esac
2975 prefix="$ans"
2976 prefixexp="$ansexp"
2977
2978 : set the prefixit variable, to compute a suitable default value
2979 prefixit='case "$3" in
2980 ""|none)
2981         case "$oldprefix" in
2982         "") eval "$1=\"\$$2\"";;
2983         *)
2984                 case "$3" in
2985                 "") eval "$1=";;
2986                 none)
2987                         eval "tp=\"\$$2\"";
2988                         case "$tp" in
2989                         ""|" ") eval "$1=\"\$$2\"";;
2990                         *) eval "$1=";;
2991                         esac;;
2992                 esac;;
2993         esac;;
2994 *)
2995         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2996         case "$tp" in
2997         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2998         /*-$oldprefix/*|\~*-$oldprefix/*)
2999                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3000         *) eval "$1=\"\$$2\"";;
3001         esac;;
3002 esac'
3003
3004 : set the base revision
3005 baserev=5.0
3006
3007 : get the patchlevel
3008 echo " "
3009 echo "Getting the current patchlevel..." >&4
3010 if $test -r $rsrc/patchlevel.h;then
3011         patchlevel=`awk '/define[       ]+PATCHLEVEL/ {print $3}' $rsrc/patchlevel.h`
3012         subversion=`awk '/define[       ]+SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3013 else
3014         patchlevel=0
3015         subversion=0
3016 fi
3017 $echo $n "(You have $package" $c
3018 case "$package" in
3019 "*$baserev")    ;;
3020 *)              $echo $n " $baserev" $c ;;
3021 esac
3022 $echo $n " patchlevel $patchlevel" $c
3023 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3024 echo ".)"
3025
3026 if test 0 -eq "$subversion"; then
3027         version=`LC_ALL=C; export LC_ALL; \
3028                  LANGUAGE=C; export LANGUAGE; \
3029                  echo $baserev $patchlevel | \
3030                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3031 else
3032         version=`LC_ALL=C; export LC_ALL; \
3033                  LANGUAGE=C; export LANGUAGE; \
3034                  echo $baserev $patchlevel $subversion | \
3035                  $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3036 fi
3037 : Figure out perl API version.  Perhaps this should be in patchlevel.h
3038 if test "$subversion" -lt 50; then
3039         apiversion=`LC_ALL=C; export LC_ALL; \
3040                  LANGUAGE=C; export LANGUAGE; \
3041                  echo $baserev $patchlevel | \
3042                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3043 else
3044         apiversion="$version"
3045 fi
3046
3047 : determine where private library files go
3048 : Usual default is /usr/local/lib/perl5/$version.
3049 : Also allow things like /opt/perl/lib/$version, since 
3050 : /opt/perl/lib/perl5... would be redundant.
3051 case "$prefix" in
3052 *perl*) set dflt privlib lib/$version ;;
3053 *)       set dflt privlib lib/$package/$version ;;
3054 esac
3055 eval $prefixit
3056 $cat <<EOM
3057
3058 There are some auxiliary files for $package that need to be put into a
3059 private library directory that is accessible by everyone.
3060
3061 EOM
3062 fn=d~+
3063 rp='Pathname where the private library files will reside?'
3064 . ./getfile
3065 if $test "X$privlibexp" != "X$ansexp"; then
3066         installprivlib=''
3067 fi
3068 privlib="$ans"
3069 privlibexp="$ansexp"
3070 if $afs; then
3071         $cat <<EOM
3072
3073 Since you are running AFS, I need to distinguish the directory in which
3074 private files reside from the directory in which they are installed (and from
3075 which they are presumably copied to the former directory by occult means).
3076
3077 EOM
3078         case "$installprivlib" in
3079         '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3080         *) dflt="$installprivlib";;
3081         esac
3082         fn=de~
3083         rp='Where will private files be installed?'
3084         . ./getfile
3085         installprivlib="$ans"
3086 else
3087         installprivlib="$privlibexp"
3088 fi
3089
3090 : set the prefixup variable, to restore leading tilda escape
3091 prefixup='case "$prefixexp" in
3092 "$prefix") ;;
3093 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3094 esac'
3095
3096 : determine where public architecture dependent libraries go
3097 set archlib archlib
3098 eval $prefixit
3099 : privlib default is /usr/local/lib/$package/$version
3100 : archlib default is /usr/local/lib/$package/$version/$archname
3101 : privlib may have an optional trailing /share.
3102 tdflt=`echo $privlib | $sed 's,/share$,,'`
3103 tdflt=$tdflt/$archname
3104 case "$archlib" in
3105 '')     dflt=$tdflt
3106         ;;
3107 *)      dflt="$archlib"
3108     ;;
3109 esac
3110 cat <<EOM
3111
3112 $spackage contains architecture-dependent library files.  If you are
3113 sharing libraries in a heterogeneous environment, you might store
3114 these files in a separate location.  Otherwise, you can just include
3115 them with the rest of the public library files.
3116
3117 EOM
3118 fn=d+~
3119 rp='Where do you want to put the public architecture-dependent libraries?'
3120 . ./getfile
3121 archlib="$ans"
3122 archlibexp="$ansexp"
3123
3124 if $afs; then
3125         $cat <<EOM
3126
3127 Since you are running AFS, I need to distinguish the directory in
3128 which architecture-dependent library files reside from the directory
3129 in which they are installed (and from which they are presumably copied
3130 to the former directory by occult means).
3131
3132 EOM
3133         case "$installarchlib" in
3134         '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3135         *) dflt="$installarchlib";;
3136         esac
3137         fn=de~
3138         rp='Where will architecture-dependent library files be installed?'
3139         . ./getfile
3140         installarchlib="$ans"
3141 else
3142         installarchlib="$archlibexp"
3143 fi
3144 if $test X"$archlib" = X"$privlib"; then
3145         d_archlib="$undef"
3146 else
3147         d_archlib="$define"
3148 fi
3149
3150 : make some quick guesses about what we are up against
3151 echo " "
3152 $echo $n "Hmm...  $c"
3153 echo exit 1 >bsd
3154 echo exit 1 >usg
3155 echo exit 1 >v7
3156 echo exit 1 >osf1
3157 echo exit 1 >eunice
3158 echo exit 1 >xenix
3159 echo exit 1 >venix
3160 echo exit 1 >os2
3161 d_bsd="$undef"
3162 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3163 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3164 then
3165         echo "Looks kind of like an OSF/1 system, but we'll see..."
3166         echo exit 0 >osf1
3167 elif test `echo abc | tr a-z A-Z` = Abc ; then
3168         xxx=`./loc addbib blurfl $pth`
3169         if $test -f $xxx; then
3170         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3171                 echo exit 0 >bsd
3172                 echo exit 0 >usg
3173         else
3174                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3175                         echo "Looks kind of like an extended USG system, but we'll see..."
3176                 else
3177                         echo "Looks kind of like a USG system, but we'll see..."
3178                 fi
3179                 echo exit 0 >usg
3180         fi
3181 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3182         echo "Looks kind of like a BSD system, but we'll see..."
3183         d_bsd="$define"
3184         echo exit 0 >bsd
3185 else
3186         echo "Looks kind of like a Version 7 system, but we'll see..."
3187         echo exit 0 >v7
3188 fi
3189 case "$eunicefix" in
3190 *unixtovms*)
3191         $cat <<'EOI'
3192 There is, however, a strange, musty smell in the air that reminds me of
3193 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3194 EOI
3195         echo exit 0 >eunice
3196         d_eunice="$define"
3197 : it so happens the Eunice I know will not run shell scripts in Unix format
3198         ;;
3199 *)
3200         echo " "
3201         echo "Congratulations.  You aren't running Eunice."
3202         d_eunice="$undef"
3203         ;;
3204 esac
3205 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3206 case "$p_" in
3207 :) ;;
3208 *)
3209         $cat <<'EOI'
3210 I have the feeling something is not exactly right, however...don't tell me...
3211 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3212 EOI
3213         echo exit 0 >os2
3214         ;;
3215 esac
3216 if test -f /xenix; then
3217         echo "Actually, this looks more like a XENIX system..."
3218         echo exit 0 >xenix
3219         d_xenix="$define"
3220 else
3221         echo " "
3222         echo "It's not Xenix..."
3223         d_xenix="$undef"
3224 fi
3225 chmod +x xenix
3226 $eunicefix xenix
3227 if test -f /venix; then
3228         echo "Actually, this looks more like a VENIX system..."
3229         echo exit 0 >venix
3230 else
3231         echo " "
3232         if ./xenix; then
3233                 : null
3234         else
3235                 echo "Nor is it Venix..."
3236         fi
3237 fi
3238 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3239 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3240 $rm -f foo
3241
3242 : see if setuid scripts can be secure
3243 $cat <<EOM
3244
3245 Some kernels have a bug that prevents setuid #! scripts from being
3246 secure.  Some sites have disabled setuid #! scripts because of this.
3247
3248 First let's decide if your kernel supports secure setuid #! scripts.
3249 (If setuid #! scripts would be secure but have been disabled anyway,
3250 don't say that they are secure if asked.)
3251
3252 EOM
3253
3254 val="$undef"
3255 if $test -d /dev/fd; then
3256         echo "#!$ls" >reflect
3257         chmod +x,u+s reflect
3258         ./reflect >flect 2>&1
3259         if $contains "/dev/fd" flect >/dev/null; then
3260                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3261                 val="$define"
3262         else
3263                 $cat <<EOM
3264 If you are not sure if they are secure, I can check but I'll need a
3265 username and password different from the one you are using right now.
3266 If you don't have such a username or don't want me to test, simply
3267 enter 'none'.
3268
3269 EOM
3270                 rp='Other username to test security of setuid scripts with?'
3271                 dflt='none'
3272                 . ./myread
3273                 case "$ans" in
3274                 n|none)
3275                         case "$d_suidsafe" in
3276                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
3277                                 dflt=n;;
3278                         "$undef")
3279                                 echo "Well, the $hint value is *not* secure." >&4
3280                                 dflt=n;;
3281                         *)      echo "Well, the $hint value *is* secure." >&4
3282                                 dflt=y;;
3283                         esac
3284                         ;;
3285                 *)
3286                         $rm -f reflect flect
3287                         echo "#!$ls" >reflect
3288                         chmod +x,u+s reflect
3289                         echo >flect
3290                         chmod a+w flect
3291                         echo '"su" will (probably) prompt you for '"$ans's password."
3292                         su $ans -c './reflect >flect'
3293                         if $contains "/dev/fd" flect >/dev/null; then
3294                                 echo "Okay, it looks like setuid scripts are secure." >&4
3295                                 dflt=y
3296                         else
3297                                 echo "I don't think setuid scripts are secure." >&4
3298                                 dflt=n
3299                         fi
3300                         ;;
3301                 esac
3302                 rp='Does your kernel have *secure* setuid scripts?'
3303                 . ./myread
3304                 case "$ans" in
3305                 [yY]*)  val="$define";;
3306                 *)      val="$undef";;
3307                 esac
3308         fi
3309 else
3310         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3311         echo "(That's for file descriptors, not floppy disks.)"
3312         val="$undef"
3313 fi
3314 set d_suidsafe
3315 eval $setvar
3316
3317 $rm -f reflect flect
3318
3319 : now see if they want to do setuid emulation
3320 echo " "
3321 val="$undef"
3322 case "$d_suidsafe" in
3323 "$define")
3324         val="$undef"
3325         echo "No need to emulate SUID scripts since they are secure here." >& 4
3326         ;;
3327 *)
3328         $cat <<EOM
3329 Some systems have disabled setuid scripts, especially systems where
3330 setuid scripts cannot be secure.  On systems where setuid scripts have
3331 been disabled, the setuid/setgid bits on scripts are currently
3332 useless.  It is possible for $package to detect those bits and emulate
3333 setuid/setgid in a secure fashion.  This emulation will only work if
3334 setuid scripts have been disabled in your kernel.
3335
3336 EOM
3337         case "$d_dosuid" in
3338         "$define") dflt=y ;;
3339         *) dflt=n ;;
3340         esac
3341         rp="Do you want to do setuid/setgid emulation?"
3342         . ./myread
3343         case "$ans" in
3344         [yY]*)  val="$define";;
3345         *)      val="$undef";;
3346         esac
3347         ;;
3348 esac
3349 set d_dosuid
3350 eval $setvar
3351
3352 : determine where manual pages are on this system
3353 echo " "
3354 case "$sysman" in
3355 '') 
3356         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3357         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3358         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3359         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3360         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3361         sysman=`./loc . /usr/man/man1 $syspath`
3362         ;;
3363 esac
3364 if $test -d "$sysman"; then
3365         echo "System manual is in $sysman." >&4
3366 else
3367         echo "Could not find manual pages in source form." >&4
3368 fi
3369
3370 : see what memory models we can support
3371 case "$models" in
3372 '')
3373         $cat >pdp11.c <<'EOP'
3374 main() {
3375 #ifdef pdp11
3376         exit(0);
3377 #else
3378         exit(1);
3379 #endif
3380 }
3381 EOP
3382         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3383         if $test -f pdp11 && ./pdp11 2>/dev/null; then
3384                 dflt='unsplit split'
3385         else
3386                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3387                 case "$tans" in
3388                 X) dflt='none';;
3389                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3390                                 dflt='small'
3391                         else
3392                                 dflt=''
3393                         fi
3394                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
3395                                 dflt="$dflt medium"
3396                         fi
3397                         if $test -d /lib/large || $test -d /usr/lib/large; then
3398                                 dflt="$dflt large"
3399                         fi
3400                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
3401                                 dflt="$dflt huge"
3402                         fi
3403                 esac
3404         fi;;
3405 *) dflt="$models";;
3406 esac
3407 $cat <<EOM
3408  
3409 Some systems have different model sizes.  On most systems they are called
3410 small, medium, large, and huge.  On the PDP11 they are called unsplit and
3411 split.  If your system doesn't support different memory models, say "none".
3412 If you wish to force everything to one memory model, say "none" here and
3413 put the appropriate flags later when it asks you for other cc and ld flags.
3414 Venix systems may wish to put "none" and let the compiler figure things out.
3415 (In the following question multiple model names should be space separated.)
3416
3417 The default for most systems is "none".
3418
3419 EOM
3420 rp="Which memory models are supported?"
3421 . ./myread
3422 models="$ans"
3423
3424 case "$models" in
3425 none)
3426         small=''
3427         medium=''
3428         large=''
3429         huge=''
3430         unsplit=''
3431         split=''
3432         ;;
3433 *split)
3434         case "$split" in
3435         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3436                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3437                         dflt='-i'
3438                 else
3439                         dflt='none'
3440                 fi;;
3441         *) dflt="$split";;
3442         esac
3443         rp="What flag indicates separate I and D space?"
3444         . ./myread
3445         tans="$ans"
3446         case "$tans" in
3447         none) tans='';;
3448         esac
3449         split="$tans"
3450         unsplit='';;
3451 *large*|*small*|*medium*|*huge*)
3452         case "$models" in
3453         *large*)
3454                 case "$large" in
3455                 '') dflt='-Ml';;
3456                 *) dflt="$large";;
3457                 esac
3458         rp="What flag indicates large model?"
3459         . ./myread
3460         tans="$ans"
3461         case "$tans" in
3462         none) tans='';
3463         esac
3464         large="$tans";;
3465         *) large='';;
3466         esac
3467         case "$models" in
3468         *huge*) case "$huge" in
3469                 '') dflt='-Mh';;
3470                 *) dflt="$huge";;
3471                 esac
3472                 rp="What flag indicates huge model?"
3473                 . ./myread
3474                 tans="$ans"
3475                 case "$tans" in
3476                 none) tans='';
3477                 esac
3478                 huge="$tans";;
3479         *) huge="$large";;
3480         esac
3481         case "$models" in
3482         *medium*) case "$medium" in
3483                 '') dflt='-Mm';;
3484                 *) dflt="$medium";;
3485                 esac
3486                 rp="What flag indicates medium model?"
3487                 . ./myread
3488                 tans="$ans"
3489                 case "$tans" in
3490                 none) tans='';
3491                 esac
3492                 medium="$tans";;
3493         *) medium="$large";;
3494         esac
3495         case "$models" in
3496         *small*) case "$small" in
3497                 '') dflt='none';;
3498                 *) dflt="$small";;
3499                 esac
3500                 rp="What flag indicates small model?"
3501                 . ./myread
3502                 tans="$ans"
3503                 case "$tans" in
3504                 none) tans='';
3505                 esac
3506                 small="$tans";;
3507         *) small='';;
3508         esac
3509         ;;
3510 *)
3511         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3512         ;;
3513 esac
3514 $rm -f pdp11.* pdp11
3515
3516 : see if we need a special compiler
3517 echo " "
3518 if ./usg; then
3519         case "$cc" in
3520         '') case "$Mcc" in
3521                 /*) dflt='Mcc';;
3522                 *) case "$large" in
3523                         -M*) dflt='cc';;
3524                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3525                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3526                                                 dflt='cc'
3527                                         else
3528                                                 dflt='cc -M'
3529                                         fi
3530                                 else
3531                                         dflt='cc'
3532                                 fi;;
3533                         esac;;
3534                 esac;;
3535         *)  dflt="$cc";;
3536         esac
3537         case "$dflt" in
3538         *M*)    $cat <<'EOM'
3539 On some older systems the default C compiler will not resolve multiple global
3540 references that happen to have the same name.  On some such systems the "Mcc"
3541 command may be used to force these to be resolved.  On other systems a "cc -M"
3542 command is required.  (Note that the -M flag on other systems indicates a
3543 memory model to use!) If you have the Gnu C compiler, you might wish to use
3544 that instead.
3545
3546 EOM
3547         ;;
3548         esac
3549         rp="Use which C compiler?"
3550         . ./myread
3551         cc="$ans"
3552 else
3553         case "$cc" in
3554         '') dflt=cc;;
3555         *) dflt="$cc";;
3556         esac
3557         rp="Use which C compiler?"
3558         . ./myread
3559         cc="$ans"
3560 fi
3561 : Look for a hint-file generated 'call-back-unit'.  Now that the
3562 : user has specified the compiler, we may need to set or change some
3563 : other defaults.
3564 if $test -f cc.cbu; then
3565     . ./cc.cbu
3566 fi
3567 echo " "
3568 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3569 $cat >gccvers.c <<EOM
3570 #include <stdio.h>
3571 int main() {
3572 #ifdef __GNUC__
3573 #ifdef __VERSION__
3574         printf("%s\n", __VERSION__);
3575 #else
3576         printf("%s\n", "1");
3577 #endif
3578 #endif
3579         exit(0);
3580 }
3581 EOM
3582 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3583         gccversion=`./gccvers`
3584         case "$gccversion" in
3585         '') echo "You are not using GNU cc." ;;
3586         *)  echo "You are using GNU cc $gccversion." ;;
3587         esac
3588 else
3589         echo " "
3590         echo "*** WHOA THERE!!! ***" >&4
3591         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3592         case "$knowitall" in
3593         '')
3594         echo "    You'd better start hunting for one and let me know about it." >&4
3595                 exit 1
3596                 ;;
3597         esac
3598 fi
3599 $rm -f gccvers*
3600 case "$gccversion" in
3601 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3602 esac
3603
3604 : What should the include directory be ?
3605 echo " "
3606 $echo $n "Hmm...  $c"
3607 dflt='/usr/include'
3608 incpath=''
3609 mips_type=''
3610 if $test -f /bin/mips && /bin/mips; then
3611         echo "Looks like a MIPS system..."
3612         $cat >usr.c <<'EOCP'
3613 #ifdef SYSTYPE_BSD43
3614 /bsd43
3615 #endif
3616 EOCP
3617         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3618                 dflt='/bsd43/usr/include'
3619                 incpath='/bsd43'
3620                 mips_type='BSD 4.3'
3621         else
3622                 mips_type='System V'
3623         fi
3624         $rm -f usr.c usr.out
3625         echo "and you're compiling with the $mips_type compiler and libraries."
3626         xxx_prompt=y
3627         echo "exit 0" >mips
3628 else
3629         echo "Doesn't look like a MIPS system."
3630         xxx_prompt=n
3631         echo "exit 1" >mips
3632 fi
3633 chmod +x mips
3634 $eunicefix mips
3635 case "$usrinc" in
3636 '') ;;
3637 *) dflt="$usrinc";;
3638 esac
3639 case "$xxx_prompt" in
3640 y)      fn=d/
3641         echo " "
3642         rp='Where are the include files you want to use?'
3643         . ./getfile
3644         usrinc="$ans"
3645         ;;
3646 *)      usrinc="$dflt"
3647         ;;
3648 esac
3649
3650 : see how we invoke the C preprocessor
3651 echo " "
3652 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3653 cat <<'EOT' >testcpp.c
3654 #define ABC abc
3655 #define XYZ xyz
3656 ABC.XYZ
3657 EOT
3658 cd ..
3659 if test ! -f cppstdin; then
3660         echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3661 else
3662         echo "Keeping your $hint cppstdin wrapper."
3663 fi
3664 chmod 755 cppstdin
3665 wrapper=`pwd`/cppstdin
3666 ok='false'
3667 cd UU
3668
3669 if $test "X$cppstdin" != "X" && \
3670         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3671         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3672 then
3673         echo "You used to use $cppstdin $cppminus so we'll use that again."
3674         case "$cpprun" in
3675         '') echo "But let's see if we can live without a wrapper..." ;;
3676         *)
3677                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3678                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3679                 then
3680                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3681                         ok='true'
3682                 else
3683                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3684                 fi
3685                 ;;
3686         esac
3687 else
3688         case "$cppstdin" in
3689         '') ;;
3690         *)
3691                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3692                 ;;
3693         esac
3694 fi
3695
3696 if $ok; then
3697         : nothing
3698 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3699         $cc -E <testcpp.c >testcpp.out 2>&1; \
3700         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3701         echo "Yup, it does."
3702         x_cpp="$cc -E"
3703         x_minus='';
3704 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3705         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3706         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3707         echo "Yup, it does."
3708         x_cpp="$cc -E"
3709         x_minus='-';
3710 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3711         $cc -P <testcpp.c >testcpp.out 2>&1; \
3712         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3713         echo "Yipee, that works!"
3714         x_cpp="$cc -P"
3715         x_minus='';
3716 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3717         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3718         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3719         echo "At long last!"
3720         x_cpp="$cc -P"
3721         x_minus='-';
3722 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3723         $cpp <testcpp.c >testcpp.out 2>&1; \
3724         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3725         echo "It works!"
3726         x_cpp="$cpp"
3727         x_minus='';
3728 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3729         $cpp - <testcpp.c >testcpp.out 2>&1; \
3730         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3731         echo "Hooray, it works!  I was beginning to wonder."
3732         x_cpp="$cpp"
3733         x_minus='-';
3734 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3735         $wrapper <testcpp.c >testcpp.out 2>&1; \
3736         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3737         x_cpp="$wrapper"
3738         x_minus=''
3739         echo "Eureka!"
3740 else
3741         dflt=''
3742         rp="No dice.  I can't find a C preprocessor.  Name one:"
3743         . ./myread
3744         x_cpp="$ans"
3745         x_minus=''
3746         $x_cpp <testcpp.c >testcpp.out 2>&1
3747         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3748                 echo "OK, that will do." >&4
3749         else
3750 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3751                 exit 1
3752         fi
3753 fi
3754
3755 case "$ok" in
3756 false)
3757         cppstdin="$x_cpp"
3758         cppminus="$x_minus"
3759         cpprun="$x_cpp"
3760         cpplast="$x_minus"
3761         set X $x_cpp
3762         shift
3763         case "$1" in
3764         "$cpp")
3765                 echo "Perhaps can we force $cc -E using a wrapper..."
3766                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3767                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3768                 then
3769                         echo "Yup, we can."
3770                         cppstdin="$wrapper"
3771                         cppminus='';
3772                 else
3773                         echo "Nope, we'll have to live without it..."
3774                 fi
3775                 ;;
3776         esac
3777         case "$cpprun" in
3778         "$wrapper")
3779                 cpprun=''
3780                 cpplast=''
3781                 ;;
3782         esac
3783         ;;
3784 esac
3785
3786 case "$cppstdin" in
3787 "$wrapper"|'cppstdin') ;;
3788 *) $rm -f $wrapper;;
3789 esac
3790 $rm -f testcpp.c testcpp.out
3791
3792 : Set private lib path
3793 case "$plibpth" in
3794 '') if ./mips; then
3795                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3796         fi;;
3797 esac
3798 case "$libpth" in
3799 ' ') dlist='';;
3800 '') dlist="$loclibpth $plibpth $glibpth";;
3801 *) dlist="$libpth";;
3802 esac
3803
3804 : Now check and see which directories actually exist, avoiding duplicates
3805 libpth=''
3806 for xxx in $dlist
3807 do
3808     if $test -d $xxx; then
3809                 case " $libpth " in
3810                 *" $xxx "*) ;;
3811                 *) libpth="$libpth $xxx";;
3812                 esac
3813     fi
3814 done
3815 $cat <<'EOM'
3816
3817 Some systems have incompatible or broken versions of libraries.  Among
3818 the directories listed in the question below, please remove any you
3819 know not to be holding relevant libraries, and add any that are needed.
3820 Say "none" for none.
3821
3822 EOM
3823 case "$libpth" in
3824 '') dflt='none';;
3825 *)
3826         set X $libpth
3827         shift
3828         dflt=${1+"$@"}
3829         ;;
3830 esac
3831 rp="Directories to use for library searches?"
3832 . ./myread
3833 case "$ans" in
3834 none) libpth=' ';;
3835 *) libpth="$ans";;
3836 esac
3837
3838 : compute shared library extension
3839 case "$so" in
3840 '')
3841         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3842                 dflt='sl'
3843         else
3844                 dflt='so'
3845         fi
3846         ;;
3847 *) dflt="$so";;
3848 esac
3849 $cat <<EOM
3850
3851 On some systems, shared libraries may be available.  Answer 'none' if
3852 you want to suppress searching of shared libraries for the remaining
3853 of this configuration.
3854
3855 EOM
3856 rp='What is the file extension used for shared libraries?'
3857 . ./myread
3858 so="$ans"
3859
3860 : Define several unixisms.
3861 : Hints files or command line option can be used to override them.
3862 : The convoluted testing is in case hints files set either the old
3863 : or the new name.
3864 case "$_exe" in
3865 '')     case "$exe_ext" in
3866     '') ;;
3867         *)      _exe="$exe_ext" ;;
3868         esac
3869         ;;
3870 esac
3871 case "$_a" in
3872 '')     case "$lib_ext" in
3873     '') _a='.a';;
3874         *)      _a="$lib_ext" ;;
3875         esac
3876         ;;
3877 esac
3878 case "$_o" in
3879 '') case "$obj_ext" in
3880         '')     _o='.o';;
3881         *)      _o="$obj_ext";;
3882         esac
3883         ;;
3884 esac
3885 case "$p_" in
3886 '') case "$path_sep" in
3887         '')     p_=':';;
3888         *)      p_="$path_sep";;
3889         esac
3890         ;;
3891 esac
3892 exe_ext=$_exe
3893 lib_ext=$_a
3894 obj_ext=$_o
3895 path_sep=$p_
3896
3897 : Which makefile gets called first.  This is used by make depend.
3898 case "$firstmakefile" in
3899 '') firstmakefile='makefile';;
3900 esac
3901
3902 : Looking for optional libraries
3903 echo " "
3904 echo "Checking for optional libraries..." >&4
3905 case "$libs" in
3906 ' '|'') dflt='';;
3907 *) dflt="$libs";;
3908 esac
3909 case "$libswanted" in
3910 '') libswanted='c_s';;
3911 esac
3912 for thislib in $libswanted; do
3913         
3914         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3915                 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3916                 echo "Found -l$thislib (shared)."
3917                 case " $dflt " in
3918                 *"-l$thislib "*);;
3919                 *) dflt="$dflt -l$thislib";;
3920                 esac
3921         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3922                 echo "Found -l$thislib (shared)."
3923                 case " $dflt " in
3924                 *"-l$thislib "*);;
3925                 *) dflt="$dflt -l$thislib";;
3926                 esac
3927         elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3928                 echo "Found -l$thislib."
3929                 case " $dflt " in
3930                 *"-l$thislib "*);;
3931                 *) dflt="$dflt -l$thislib";;
3932                 esac
3933         elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3934                 echo "Found -l$thislib."
3935                 case " $dflt " in
3936                 *"-l$thislib "*);;
3937                 *) dflt="$dflt -l$thislib";;
3938                 esac
3939         elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3940                 echo "Found -l${thislib}_s."
3941                 case " $dflt " in
3942                 *"-l$thislib "*);;
3943                 *) dflt="$dflt -l${thislib}_s";;
3944                 esac
3945         elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3946                 echo "Found -l$thislib."
3947                 case " $dflt " in
3948                 *"-l$thislib "*);;
3949                 *) dflt="$dflt -l$thislib";;
3950                 esac
3951         else
3952                 echo "No -l$thislib."
3953         fi
3954 done
3955 set X $dflt
3956 shift
3957 dflt="$*"
3958 case "$libs" in
3959 '') dflt="$dflt";;
3960 *) dflt="$libs";;
3961 esac
3962 case "$dflt" in
3963 ' '|'') dflt='none';;
3964 esac
3965
3966 $cat <<EOM
3967  
3968 Some versions of Unix support shared libraries, which make executables smaller
3969 but make load time slightly longer.
3970
3971 On some systems, mostly System V Release 3's, the shared library is included
3972 by putting the option "-lc_s" as the last thing on the cc command line when
3973 linking.  Other systems use shared libraries by default.  There may be other
3974 libraries needed to compile $package on your machine as well.  If your system
3975 needs the "-lc_s" option, include it here.  Include any other special libraries
3976 here as well.  Say "none" for none.
3977 EOM
3978
3979 echo " "
3980 rp="Any additional libraries?"
3981 . ./myread
3982 case "$ans" in
3983 none) libs=' ';;
3984 *) libs="$ans";;
3985 esac
3986
3987 : determine optimize, if desired, or use for debug flag also
3988 case "$optimize" in
3989 ' '|$undef) dflt='none';;
3990 '') dflt='-O';;
3991 *) dflt="$optimize";;
3992 esac
3993 $cat <<EOH
3994
3995 Some C compilers have problems with their optimizers.  By default, $package
3996 compiles with the -O flag to use the optimizer.  Alternately, you might want
3997 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3998 systems).  Either flag can be specified here.  To use neither flag, specify
3999 the word "none".
4000
4001 EOH
4002 rp="What optimizer/debugger flag should be used?"
4003 . ./myread
4004 optimize="$ans"
4005 case "$optimize" in
4006 'none') optimize=" ";;
4007 esac
4008
4009 dflt=''
4010 : We will not override a previous value, but we might want to
4011 : augment a hint file
4012 case "$hint" in
4013 none|recommended)
4014         case "$gccversion" in
4015         1*) dflt='-fpcc-struct-return' ;;
4016         esac
4017         case "$optimize" in
4018         *-g*) dflt="$dflt -DDEBUGGING";;
4019         esac
4020         case "$gccversion" in
4021         2*) if test -d /etc/conf/kconfig.d &&
4022                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4023                 then
4024                         dflt="$dflt -posix"
4025                 fi
4026                 ;;
4027         esac
4028         ;;
4029 esac
4030
4031 case "$mips_type" in
4032 *BSD*|'') inclwanted="$locincpth $usrinc";;
4033 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4034 esac
4035 for thisincl in $inclwanted; do
4036         if $test -d $thisincl; then
4037                 if $test x$thisincl != x$usrinc; then
4038                         case "$dflt" in
4039                         *$thisincl*);;
4040                         *) dflt="$dflt -I$thisincl";;
4041                         esac
4042                 fi
4043         fi
4044 done
4045
4046 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4047         xxx=true;
4048 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4049         xxx=true;
4050 else
4051         xxx=false;
4052 fi;
4053 if $xxx; then
4054         case "$dflt" in
4055         *$2*);;
4056         *) dflt="$dflt -D$2";;
4057         esac;
4058 fi'
4059
4060 if ./osf1; then
4061         set signal.h __LANGUAGE_C__; eval $inctest
4062 else
4063         set signal.h LANGUAGE_C; eval $inctest
4064 fi
4065
4066 case "$hint" in
4067 none|recommended) dflt="$ccflags $dflt" ;;
4068 *) dflt="$ccflags";;
4069 esac
4070
4071 case "$dflt" in
4072 ''|' ') dflt=none;;
4073 esac
4074 $cat <<EOH
4075
4076 Your C compiler may want other flags.  For this question you should include
4077 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4078 but you should NOT include libraries or ld flags like -lwhatever.  If you
4079 want $package to honor its debug switch, you should include -DDEBUGGING here.
4080 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4081
4082 To use no flags, specify the word "none".
4083
4084 EOH
4085 set X $dflt
4086 shift
4087 dflt=${1+"$@"}
4088 rp="Any additional cc flags?"
4089 . ./myread
4090 case "$ans" in
4091 none) ccflags='';;
4092 *) ccflags="$ans";;
4093 esac
4094
4095 : the following weeds options from ccflags that are of no interest to cpp
4096 cppflags="$ccflags"
4097 case "$gccversion" in
4098 1*) cppflags="$cppflags -D__GNUC__"
4099 esac
4100 case "$mips_type" in
4101 '');;
4102 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4103 esac
4104 case "$cppflags" in
4105 '');;
4106 *)
4107         echo " "
4108         echo "Let me guess what the preprocessor flags are..." >&4
4109         set X $cppflags
4110         shift
4111         cppflags=''
4112         $cat >cpp.c <<'EOM'
4113 #define BLURFL foo
4114
4115 BLURFL xx LFRULB
4116 EOM
4117         previous=''
4118         for flag in $*
4119         do
4120                 case "$flag" in
4121                 -*) ftry="$flag";;
4122                 *) ftry="$previous $flag";;
4123                 esac
4124                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4125                         >cpp1.out 2>/dev/null && \
4126                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4127                         >cpp2.out 2>/dev/null && \
4128                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4129                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4130                 then
4131                         cppflags="$cppflags $ftry"
4132                         previous=''
4133                 else
4134                         previous="$flag"
4135                 fi
4136         done
4137         set X $cppflags
4138         shift
4139         cppflags=${1+"$@"}
4140         case "$cppflags" in
4141         *-*)  echo "They appear to be: $cppflags";;
4142         esac
4143         $rm -f cpp.c cpp?.out
4144         ;;
4145 esac
4146
4147 : flags used in final linking phase
4148 case "$ldflags" in
4149 '') if ./venix; then
4150                 dflt='-i -z'
4151         else
4152                 dflt=''
4153         fi
4154         case "$ccflags" in
4155         *-posix*) dflt="$dflt -posix" ;;
4156         esac
4157         ;;
4158 *) dflt="$ldflags";;
4159 esac
4160
4161 : Try to guess additional flags to pick up local libraries.
4162 for thislibdir in $libpth; do
4163         case " $loclibpth " in
4164         *" $thislibdir "*)
4165                 case "$dflt " in 
4166                 *"-L$thislibdir "*) ;;
4167                 *)  dflt="$dflt -L$thislibdir" ;;
4168                 esac
4169                 ;;
4170         esac
4171 done
4172
4173 case "$dflt" in
4174 '') dflt='none' ;;
4175 esac
4176
4177 $cat <<EOH
4178
4179 Your C linker may need flags.  For this question you should
4180 include -L/whatever and any other flags used by the C linker, but you
4181 should NOT include libraries like -lwhatever.
4182
4183 Make sure you include the appropriate -L/path flags if your C linker
4184 does not normally search all of the directories you specified above,
4185 namely
4186         $libpth
4187 To use no flags, specify the word "none".
4188
4189 EOH
4190
4191 rp="Any additional ld flags (NOT including libraries)?"
4192 . ./myread
4193 case "$ans" in
4194 none) ldflags='';;
4195 *) ldflags="$ans";;
4196 esac
4197 rmlist="$rmlist pdp11"
4198
4199 : coherency check
4200 echo " "
4201 echo "Checking your choice of C compiler and flags for coherency..." >&4
4202 $cat > try.c <<'EOF'
4203 #include <stdio.h>
4204 main() { printf("Ok\n"); exit(0); }
4205 EOF
4206 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4207 shift
4208 $cat >try.msg <<'EOM'
4209 I've tried to compile and run the following simple program:
4210
4211 EOM
4212 $cat try.c >> try.msg
4213
4214 $cat >> try.msg <<EOM
4215
4216 I used the command:
4217
4218         $*
4219         ./try
4220
4221 and I got the following output:
4222
4223 EOM
4224 dflt=y
4225 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4226         if sh -c './try' >>try.msg 2>&1; then
4227                 xxx=`./try`
4228                 case "$xxx" in
4229                 "Ok") dflt=n ;;
4230                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4231                         case " $libs " in
4232                         *" -lsfio "*)
4233                                 cat >> try.msg <<'EOQS'
4234 If $libs contains -lsfio, and sfio is mis-configured, then it
4235 sometimes (apparently) runs and exits with a 0 status, but with no
4236 output!  It may have to do with sfio's use of _exit vs. exit.
4237
4238 EOQS
4239                                 rp="You have a big problem.  Shall I abort Configure"
4240                                 dflt=y
4241                                 ;;
4242                         esac
4243                         ;;
4244                 esac
4245         else
4246                 echo "The program compiled OK, but exited with status $?." >>try.msg
4247                 rp="You have a problem.  Shall I abort Configure"
4248                 dflt=y
4249         fi
4250 else
4251         echo "I can't compile the test program." >>try.msg
4252         rp="You have a BIG problem.  Shall I abort Configure"
4253         dflt=y
4254 fi
4255 case "$dflt" in
4256 y)
4257         $cat try.msg >&4
4258         case "$knowitall" in
4259         '')
4260                 echo "(The supplied flags or libraries might be incorrect.)"
4261                 ;;
4262         *) dflt=n;;
4263         esac
4264         echo " "
4265         . ./myread
4266         case "$ans" in
4267         n*|N*) ;;
4268         *)      echo "Ok.  Stopping Configure." >&4
4269                 exit 1
4270                 ;;
4271         esac
4272         ;;
4273 n) echo "OK, that should do.";;
4274 esac
4275 $rm -f try try.* core
4276
4277 : determine filename position in cpp output
4278 echo " "
4279 echo "Computing filename position in cpp output for #include directives..." >&4
4280 echo '#include <stdio.h>' > foo.c
4281 $cat >fieldn <<EOF
4282 $startsh
4283 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4284 $grep '^[       ]*#.*stdio\.h' | \
4285 while read cline; do
4286         pos=1
4287         set \$cline
4288         while $test \$# -gt 0; do
4289                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4290                         echo "\$pos"
4291                         exit 0
4292                 fi
4293                 shift
4294                 pos=\`expr \$pos + 1\`
4295         done
4296 done
4297 EOF
4298 chmod +x fieldn
4299 fieldn=`./fieldn`
4300 $rm -f foo.c fieldn
4301 case $fieldn in
4302 '') pos='???';;
4303 1) pos=first;;
4304 2) pos=second;;
4305 3) pos=third;;
4306 *) pos="${fieldn}th";;
4307 esac
4308 echo "Your cpp writes the filename in the $pos field of the line."
4309
4310 : locate header file
4311 $cat >findhdr <<EOF
4312 $startsh
4313 wanted=\$1
4314 name=''
4315 if test -f $usrinc/\$wanted; then
4316         echo "$usrinc/\$wanted"
4317         exit 0
4318 fi
4319 awkprg='{ print \$$fieldn }'
4320 echo "#include <\$wanted>" > foo\$\$.c
4321 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4322 $grep "^[       ]*#.*\$wanted" | \
4323 while read cline; do
4324         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4325         case "\$name" in
4326         */\$wanted) echo "\$name"; exit 0;;
4327         *) name='';;
4328         esac;
4329 done;
4330 $rm -f foo\$\$.c;
4331 case "\$name" in
4332 '') exit 1;;
4333 esac
4334 EOF
4335 chmod +x findhdr
4336
4337 : define an alternate in-header-list? function
4338 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4339 cont=true; xxf="echo \"<\$1> found.\" >&4";
4340 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4341 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4342 esac;
4343 case $# in 4) instead=instead;; *) instead="at last";; esac;
4344 while $test "$cont"; do
4345         xxx=`./findhdr $1`
4346         var=$2; eval "was=\$$2";
4347         if $test "$xxx" && $test -r "$xxx";
4348         then eval $xxf;
4349         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4350                 cont="";
4351         else eval $xxnf;
4352         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4353         set $yyy; shift; shift; yyy=$@;
4354         case $# in 0) cont="";;
4355         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4356                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4357         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4358                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4359         esac;
4360 done;
4361 while $test "$yyy";
4362 do set $yyy; var=$2; eval "was=\$$2";
4363         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4364         set $yyy; shift; shift; yyy=$@;
4365 done'
4366
4367 : see if this is a malloc.h system
4368 set malloc.h i_malloc
4369 eval $inhdr
4370
4371 : see if stdlib is available
4372 set stdlib.h i_stdlib
4373 eval $inhdr
4374
4375 : determine which malloc to compile in
4376 echo " "
4377 case "$usemymalloc" in
4378 ''|[yY]*|true|$define)  dflt='y' ;;
4379 *)      dflt='n' ;;
4380 esac
4381 rp="Do you wish to attempt to use the malloc that comes with $package?"
4382 . ./myread
4383 usemymalloc="$ans"
4384 case "$ans" in
4385 y*|true)
4386         usemymalloc='y'
4387         mallocsrc='malloc.c'
4388         mallocobj="malloc$_o"
4389         d_mymalloc="$define"
4390         case "$libs" in
4391         *-lmalloc*)
4392                 : Remove malloc from list of libraries to use
4393                 echo "Removing unneeded -lmalloc from library list" >&4
4394                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4395                 shift
4396                 libs="$*"
4397                 echo "libs = $libs" >&4
4398                 ;;
4399         esac
4400         ;;
4401 *)
4402         usemymalloc='n'
4403         mallocsrc=''
4404         mallocobj=''
4405         d_mymalloc="$undef"
4406         ;;
4407 esac
4408
4409 : compute the return types of malloc and free
4410 echo " "
4411 $cat >malloc.c <<END
4412 #$i_malloc I_MALLOC
4413 #$i_stdlib I_STDLIB
4414 #include <stdio.h>
4415 #include <sys/types.h>
4416 #ifdef I_MALLOC
4417 #include <malloc.h>
4418 #endif
4419 #ifdef I_STDLIB
4420 #include <stdlib.h>
4421 #endif
4422 #ifdef TRY_MALLOC
4423 void *malloc();
4424 #endif
4425 #ifdef TRY_FREE
4426 void free();
4427 #endif
4428 END
4429 case "$malloctype" in
4430 '')
4431         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4432                 malloctype='void *'
4433         else
4434                 malloctype='char *'
4435         fi
4436         ;;
4437 esac
4438 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4439
4440 case "$freetype" in
4441 '')
4442         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4443                 freetype='void'
4444         else
4445                 freetype='int'
4446         fi
4447         ;;
4448 esac
4449 echo "Your system uses $freetype free(), it would seem." >&4
4450 $rm -f malloc.[co]
4451 : Cruising for prototypes
4452 echo " "
4453 echo "Checking out function prototypes..." >&4
4454 $cat >prototype.c <<'EOCP'
4455 int main(int argc, char *argv[]) {
4456         exit(0);}
4457 EOCP
4458 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4459         echo "Your C compiler appears to support function prototypes."
4460         val="$define"
4461 else
4462         echo "Your C compiler doesn't seem to understand function prototypes."
4463         val="$undef"
4464 fi
4465 set prototype
4466 eval $setvar
4467 $rm -f prototype*
4468
4469 case "$prototype" in
4470 "$define") ;;
4471 *)      ansi2knr='ansi2knr'
4472         echo " "
4473         cat <<EOM >&4
4474
4475 $me:  FATAL ERROR:
4476 This version of $package can only be compiled by a compiler that 
4477 understands function prototypes.  Unfortunately, your C compiler 
4478         $cc $ccflags
4479 doesn't seem to understand them.  Sorry about that.
4480
4481 If GNU cc is available for your system, perhaps you could try that instead.  
4482
4483 Eventually, we hope to support building Perl with pre-ANSI compilers.
4484 If you would like to help in that effort, please contact <perlbug@perl.org>.
4485
4486 Aborting Configure now.
4487 EOM
4488         exit 2
4489         ;;
4490 esac
4491
4492 : determine where public executables go
4493 echo " "
4494 set dflt bin bin
4495 eval $prefixit
4496 fn=d~
4497 rp='Pathname where the public executables will reside?'
4498 . ./getfile
4499 if $test "X$ansexp" != "X$binexp"; then
4500         installbin=''
4501 fi
4502 bin="$ans"
4503 binexp="$ansexp"
4504 if $afs; then
4505         $cat <<EOM
4506
4507 Since you are running AFS, I need to distinguish the directory in which
4508 executables reside from the directory in which they are installed (and from
4509 which they are presumably copied to the former directory by occult means).
4510
4511 EOM
4512         case "$installbin" in
4513         '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
4514         *) dflt="$installbin";;
4515         esac
4516         fn=de~
4517         rp='Where will public executables be installed?'
4518         . ./getfile
4519         installbin="$ans"
4520 else
4521         installbin="$binexp"
4522 fi
4523
4524 : determine whether to install perl also as /usr/bin/perl
4525
4526 echo " "
4527 case "$installusrbinperl" in
4528 '') if test -d /usr/bin -a "X$installbin" != X/usr/bin; then
4529         $cat <<EOM
4530 Many scripts expect to perl to be installed as /usr/bin/perl.
4531 I can install the perl you are about to compile also as /usr/bin/perl
4532 (in addition to $installbin/perl).
4533 EOM
4534         dflt='y'
4535         rp="Do you want to install perl as /usr/bin/perl?"
4536         . ./myread
4537         case "$ans" in
4538         [yY]*)  val="$define";;
4539         *)      val="$undef";;
4540         esac
4541     fi
4542     ;;
4543 esac
4544 case "$installusrbinperl" in
4545 "$undef"|[nN]*) val="$undef";;
4546 *)              val="$define";;
4547 esac
4548 set installusrbinperl
4549 eval $setvar
4550
4551 : define a shorthand compile call
4552 compile='
4553 mc_file=$1;
4554 shift;
4555 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4556 : define a shorthand compile call for compilations that should be ok.
4557 compile_ok='
4558 mc_file=$1;
4559 shift;
4560 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4561
4562 echo " "
4563 echo "Checking for GNU C Library..." >&4
4564 cat >gnulibc.c <<EOM
4565 #include <stdio.h>
4566 int main()
4567 {
4568 #ifdef __GLIBC__
4569     exit(0);
4570 #else
4571     exit(1);
4572 #endif
4573 }
4574 EOM
4575 set gnulibc
4576 if eval $compile_ok && ./gnulibc; then
4577         val="$define"
4578         echo "You are using the GNU C Library"
4579 else
4580         val="$undef"
4581         echo "You are not using the GNU C Library"
4582 fi
4583 $rm -f gnulibc*
4584 set d_gnulibc
4585 eval $setvar
4586
4587 : see if nm is to be used to determine whether a symbol is defined or not
4588 case "$usenm" in
4589 '')
4590         dflt=''
4591         case "$d_gnulibc" in
4592         "$define")
4593                 echo " "
4594                 echo "nm probably won't work on the GNU C Library." >&4
4595                 dflt=n
4596                 ;;
4597         esac
4598         case "$dflt" in
4599         '') 
4600                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4601                         echo " "
4602                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4603                         echo "'nm' won't be sufficient on this sytem." >&4
4604                         dflt=n
4605                 fi
4606                 ;;
4607         esac
4608         case "$dflt" in
4609         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4610                 if $test $dflt -gt 20; then
4611                         dflt=y
4612                 else
4613                         dflt=n
4614                 fi
4615                 ;;
4616         esac
4617         ;;
4618 *)
4619         case "$usenm" in
4620         true|$define) dflt=y;;
4621         *) dflt=n;;
4622         esac
4623         ;;
4624 esac
4625 $cat <<EOM
4626
4627 I can use $nm to extract the symbols from your C libraries. This
4628 is a time consuming task which may generate huge output on the disk (up
4629 to 3 megabytes) but that should make the symbols extraction faster. The
4630 alternative is to skip the 'nm' extraction part and to compile a small
4631 test program instead to determine whether each symbol is present. If
4632 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4633 this may be the best solution.
4634
4635 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4636
4637 EOM
4638 rp="Shall I use $nm to extract C symbols from the libraries?"
4639 . ./myread
4640 case "$ans" in
4641 [Nn]*) usenm=false;;
4642 *) usenm=true;;
4643 esac
4644
4645 runnm=$usenm
4646 case "$reuseval" in
4647 true) runnm=false;;
4648 esac
4649
4650 : nm options which may be necessary
4651 case "$nm_opt" in
4652 '') if $test -f /mach_boot; then
4653                 nm_opt=''       # Mach
4654         elif $test -d /usr/ccs/lib; then
4655                 nm_opt='-p'     # Solaris (and SunOS?)
4656         elif $test -f /dgux; then
4657                 nm_opt='-p'     # DG-UX
4658         elif $test -f /lib64/rld; then
4659                 nm_opt='-p'     # 64-bit Irix
4660         else
4661                 nm_opt=''
4662         fi;;
4663 esac
4664
4665 : nm options which may be necessary for shared libraries but illegal
4666 : for archive libraries.  Thank you, Linux.
4667 case "$nm_so_opt" in
4668 '')     case "$myuname" in
4669         *linux*)
4670                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4671                         nm_so_opt='--dynamic'
4672                 fi
4673                 ;;
4674         esac
4675         ;;
4676 esac
4677
4678 case "$runnm" in
4679 true)
4680 : get list of predefined functions in a handy place
4681 echo " "
4682 case "$libc" in
4683 '') libc=unknown
4684         case "$libs" in
4685         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4686         esac
4687         ;;
4688 esac
4689 libnames='';
4690 case "$libs" in
4691 '') ;;
4692 *)  for thislib in $libs; do
4693         case "$thislib" in
4694         -lc|-lc_s)
4695                 : Handle C library specially below.
4696                 ;;
4697         -l*)
4698                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4699                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4700                         :
4701                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4702                         :
4703                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4704                         :
4705                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4706                         :
4707                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4708                         :
4709                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4710                         :
4711                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4712                         :
4713                 else
4714                         try=''
4715                 fi
4716                 libnames="$libnames $try"
4717                 ;;
4718         *) libnames="$libnames $thislib" ;;
4719         esac
4720         done
4721         ;;
4722 esac
4723 xxx=normal
4724 case "$libc" in
4725 unknown)
4726         set /lib/libc.$so
4727         for xxx in $libpth; do
4728                 $test -r $1 || set $xxx/libc.$so
4729                 : The messy sed command sorts on library version numbers.
4730                 $test -r $1 || \
4731                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4732                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4733                                 h
4734                                 s/[0-9][0-9]*/0000&/g
4735                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4736                                 G
4737                                 s/\n/ /' | \
4738                          sort | $sed -e 's/^.* //'`
4739                 eval set \$$#
4740         done
4741         $test -r $1 || set /usr/ccs/lib/libc.$so
4742         $test -r $1 || set /lib/libsys_s$_a
4743         ;;
4744 *)
4745         set blurfl
4746         ;;
4747 esac
4748 if $test -r "$1"; then
4749         echo "Your (shared) C library seems to be in $1."
4750         libc="$1"
4751 elif $test -r /lib/libc && $test -r /lib/clib; then
4752         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4753         xxx=apollo
4754         libc='/lib/clib /lib/libc'
4755         if $test -r /lib/syslib; then
4756                 echo "(Your math library is in /lib/syslib.)"
4757                 libc="$libc /lib/syslib"
4758         fi
4759 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4760         echo "Your C library seems to be in $libc, as you said before."
4761 elif $test -r $incpath/usr/lib/libc$_a; then
4762         libc=$incpath/usr/lib/libc$_a;
4763         echo "Your C library seems to be in $libc.  That's fine."
4764 elif $test -r /lib/libc$_a; then
4765         libc=/lib/libc$_a;
4766         echo "Your C library seems to be in $libc.  You're normal."
4767 else
4768         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4769                 :
4770         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4771                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4772         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4773                 :
4774         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4775                 :
4776         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4777                 :
4778         else
4779                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4780         fi
4781         if $test -r "$tans"; then
4782                 echo "Your C library seems to be in $tans, of all places."
4783                 libc=$tans
4784         else
4785                 libc='blurfl'
4786         fi
4787 fi
4788 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4789         dflt="$libc"
4790         cat <<EOM
4791
4792 If the guess above is wrong (which it might be if you're using a strange
4793 compiler, or your machine supports multiple models), you can override it here.
4794
4795 EOM
4796 else
4797         dflt=''
4798         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4799         cat >&4 <<EOM
4800 I can't seem to find your C library.  I've looked in the following places:
4801
4802 EOM
4803         $sed 's/^/      /' libpath
4804         cat <<EOM
4805
4806 None of these seems to contain your C library. I need to get its name...
4807
4808 EOM
4809 fi
4810 fn=f
4811 rp='Where is your C library?'
4812 . ./getfile
4813 libc="$ans"
4814
4815 echo " "
4816 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4817 set X `cat libnames`
4818 shift
4819 xxx=files
4820 case $# in 1) xxx=file; esac
4821 echo "Extracting names from the following $xxx for later perusal:" >&4
4822 echo " "
4823 $sed 's/^/      /' libnames >&4
4824 echo " "
4825 $echo $n "This may take a while...$c" >&4
4826
4827 for file in $*; do
4828         case $file in
4829         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4830         *) $nm $nm_opt $file 2>/dev/null;;
4831         esac
4832 done >libc.tmp
4833
4834 $echo $n ".$c"
4835 $grep fprintf libc.tmp > libc.ptf
4836 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4837 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4838 xxx='[ADTSIW]'
4839 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4840         eval $xscan;\
4841         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4842                 eval $xrun
4843 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4844         eval $xscan;\
4845         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4846                 eval $xrun
4847 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4848         eval $xscan;\
4849         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4850                 eval $xrun
4851 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4852         eval $xscan;\
4853         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4854                 eval $xrun
4855 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4856         eval $xscan;\
4857         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4858                 eval $xrun
4859 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4860         eval $xscan;\
4861         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4862                 eval $xrun
4863 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4864                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
4865         eval $xscan;\
4866         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4867                 eval $xrun
4868 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//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 '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4873         eval $xscan;\
4874         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4875                 eval $xrun
4876 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4877         eval $xscan;\
4878         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4879                 eval $xrun
4880 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4881         eval $xscan;\
4882         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4883                 eval $xrun
4884 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\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/.*\.text n\ \ \ \.//p'";\
4889         eval $xscan;\
4890         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4891                 eval $xrun
4892 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
4893         eval $xscan;\
4894         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4895                 eval $xrun
4896 else
4897         $nm -p $* 2>/dev/null >libc.tmp
4898         $grep fprintf libc.tmp > libc.ptf
4899         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4900                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4901         then
4902                 nm_opt='-p'
4903                 eval $xrun
4904         else
4905                 echo " "
4906                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4907                 com=''
4908                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4909                         for thisname in $libnames $libc; do
4910                                 $ar t $thisname >>libc.tmp
4911                         done
4912                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4913                         echo "Ok." >&4
4914                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4915                         # Repeat libc to extract forwarders to DLL entries too
4916                         for thisname in $libnames $libc; do
4917                                 $ar tv $thisname >>libc.tmp
4918                                 # Revision 50 of EMX has bug in $ar.
4919                                 # it will not extract forwarders to DLL entries
4920                                 # Use emximp which will extract exactly them.
4921                                 emximp -o tmp.imp $thisname \
4922                                     2>/dev/null && \
4923                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4924                                     < tmp.imp >>libc.tmp
4925                                 $rm tmp.imp
4926                         done
4927                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4928                         echo "Ok." >&4
4929                 else
4930                         echo "$ar didn't seem to work right." >&4
4931                         echo "Maybe this is a Cray...trying bld instead..." >&4
4932                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4933                         then
4934                                 for thisname in $libnames; do
4935                                         bld t $libnames | \
4936                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4937                                         $ar t $thisname >>libc.tmp
4938                                 done
4939                                 echo "Ok." >&4
4940                         else
4941                                 echo "That didn't work either.  Giving up." >&4
4942                                 exit 1
4943                         fi
4944                 fi
4945         fi
4946 fi
4947 nm_extract="$com"
4948 if $test -f /lib/syscalls.exp; then
4949         echo " "
4950         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4951         $sed -n 's/^\([^        ]*\)[   ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4952 fi
4953 ;;
4954 esac
4955 $rm -f libnames libpath
4956
4957 : see if dld is available
4958 set dld.h i_dld
4959 eval $inhdr
4960
4961 : is a C symbol defined?
4962 csym='tlook=$1;
4963 case "$3" in
4964 -v) tf=libc.tmp; tc=""; tdc="";;
4965 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4966 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4967 esac;
4968 tx=yes;
4969 case "$reuseval-$4" in
4970 true-) ;;
4971 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4972 esac;
4973 case "$tx" in
4974 yes)
4975         case "$runnm" in
4976         true)
4977                 if $contains $tlook $tf >/dev/null 2>&1;
4978                 then tval=true;
4979                 else tval=false;
4980                 fi;;
4981         *)
4982                 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4983                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4984                 then tval=true;
4985                 else tval=false;
4986                 fi;
4987                 $rm -f t t.c;;
4988         esac;;
4989 *)
4990         case "$tval" in
4991         $define) tval=true;;
4992         *) tval=false;;
4993         esac;;
4994 esac;
4995 eval "$2=$tval"'
4996
4997 : define an is-in-libc? function
4998 inlibc='echo " "; td=$define; tu=$undef;
4999 sym=$1; var=$2; eval "was=\$$2";
5000 tx=yes;
5001 case "$reuseval$was" in
5002 true) ;;
5003 true*) tx=no;;
5004 esac;
5005 case "$tx" in
5006 yes)
5007         set $sym tres -f;
5008         eval $csym;
5009         case "$tres" in
5010         true)
5011                 echo "$sym() found." >&4;
5012                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5013         *)
5014                 echo "$sym() NOT found." >&4;
5015                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5016         esac;;
5017 *)
5018         case "$was" in
5019         $define) echo "$sym() found." >&4;;
5020         *) echo "$sym() NOT found." >&4;;
5021         esac;;
5022 esac'
5023
5024 : see if dlopen exists
5025 xxx_runnm="$runnm"
5026 runnm=false
5027 set dlopen d_dlopen
5028 eval $inlibc
5029 runnm="$xxx_runnm"
5030
5031 : determine which dynamic loading, if any, to compile in
5032 echo " "
5033 dldir="ext/DynaLoader"
5034 case "$usedl" in
5035 $define|y|true)
5036         dflt='y'
5037         usedl="$define"
5038         ;;
5039 $undef|n|false)
5040         dflt='n'
5041         usedl="$undef"
5042         ;;
5043 *) 
5044         dflt='n'
5045         case "$d_dlopen" in
5046             $define) dflt='y' ;;
5047         esac
5048         case "$i_dld" in
5049             $define) dflt='y' ;;
5050         esac
5051         : Does a dl_xxx.xs file exist for this operating system
5052         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5053         ;;
5054 esac
5055 rp="Do you wish to use dynamic loading?"
5056 . ./myread
5057 usedl="$ans"
5058 case "$ans" in
5059 y*) usedl="$define"
5060         case "$dlsrc" in
5061         '')
5062                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5063                         dflt="$dldir/dl_${osname}.xs"
5064                 elif $test "$d_dlopen" = "$define" ; then
5065                         dflt="$dldir/dl_dlopen.xs"
5066                 elif $test "$i_dld" = "$define" ; then
5067                         dflt="$dldir/dl_dld.xs"
5068                 else
5069                         dflt=''
5070                 fi
5071                 ;;
5072         *)      dflt="$dldir/$dlsrc"
5073                 ;;
5074         esac
5075     echo "The following dynamic loading files are available:"
5076         : Can not go over to $dldir because getfile has path hard-coded in.
5077         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5078         rp="Source file to use for dynamic loading"
5079         fn="fne"
5080         # XXX This getfile call will fail the existence check if you try 
5081         # building away from $src (this is not supported yet).
5082         . ./getfile
5083         usedl="$define"
5084         : emulate basename
5085         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5086
5087         $cat << EOM
5088
5089 Some systems may require passing special flags to $cc -c to
5090 compile modules that will be used to create a shared library.
5091 To use no flags, say "none".
5092
5093 EOM
5094     case "$cccdlflags" in
5095     '') case "$gccversion" in
5096                 '') case "$osname" in
5097                         hpux)   dflt='+z' ;;
5098                         next)   dflt='none' ;;
5099                         irix*)  dflt='-KPIC' ;;
5100                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5101                         sunos)  dflt='-pic' ;;
5102                         *)      dflt='none' ;;
5103                     esac
5104                         ;;
5105                 *)  case "$osname" in
5106                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5107                         *)      dflt='-fpic' ;;
5108                     esac ;;
5109             esac ;;
5110         ' ') dflt='none' ;;
5111     *)  dflt="$cccdlflags" ;;
5112     esac
5113     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5114     . ./myread
5115     case "$ans" in
5116     none) cccdlflags=' ' ;;
5117     *) cccdlflags="$ans" ;;
5118     esac
5119
5120     cat << EOM
5121
5122 Some systems use ld to create libraries that can be dynamically loaded,
5123 while other systems (such as those using ELF) use $cc.
5124
5125 EOM
5126         case "$ld" in
5127         '')     $cat >try.c <<'EOM'
5128 /* Test for whether ELF binaries are produced */
5129 #include <fcntl.h>
5130 #include <stdlib.h>
5131 int main() {
5132         char b[4];
5133         int i = open("a.out",O_RDONLY);
5134         if(i == -1) 
5135                 exit(1); /* fail */
5136         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5137                 exit(0); /* succeed (yes, it's ELF) */
5138         else
5139                 exit(1); /* fail */
5140 }
5141 EOM
5142                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5143                         cat <<EOM
5144 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
5145 EOM
5146                         dflt="$cc"
5147                 else
5148                         echo "I'll use ld to build dynamic libraries."
5149                         dflt='ld'
5150                 fi
5151                 rm -f try.c a.out
5152                 ;;
5153         *)      dflt="$ld"
5154                 ;;
5155         esac
5156
5157     rp="What command should be used to create dynamic libraries?"
5158     . ./myread
5159         ld="$ans"
5160
5161     cat << EOM
5162
5163 Some systems may require passing special flags to $ld to create a
5164 library that can be dynamically loaded.  If your ld flags include
5165 -L/other/path options to locate libraries outside your loader's normal
5166 search path, you may need to specify those -L options here as well.  To
5167 use no flags, say "none".
5168
5169 EOM
5170     case "$lddlflags" in
5171     '') case "$osname" in
5172                         beos) dflt='-nostart' ;;
5173                         hpux)  dflt='-b' ;;
5174                         linux|irix*)    dflt='-shared' ;;
5175                         next)  dflt='none' ;;
5176                         solaris) dflt='-G' ;;
5177                         sunos) dflt='-assert nodefinitions' ;;
5178                         svr4*|esix*) dflt="-G $ldflags" ;;
5179                 *)     dflt='none' ;;
5180                         esac
5181                         ;;
5182     *) dflt="$lddlflags" ;;
5183     esac
5184
5185         : Try to guess additional flags to pick up local libraries.
5186         : Be careful not to append to a plain 'none'
5187         case "$dflt" in
5188         none) dflt='' ;;
5189         esac
5190         for thisflag in $ldflags; do
5191                 case "$thisflag" in
5192                 -L*)
5193                         case " $dflt " in
5194                         *" $thisflag "*) ;;
5195                         *) dflt="$dflt $thisflag" ;;
5196                         esac
5197                         ;;
5198                 esac
5199         done
5200
5201         case "$dflt" in
5202         ''|' ') dflt='none' ;;
5203         esac
5204
5205     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5206     . ./myread
5207     case "$ans" in
5208     none) lddlflags=' ' ;;
5209     *) lddlflags="$ans" ;;
5210     esac
5211
5212         cat <<EOM
5213
5214 Some systems may require passing special flags to $cc to indicate that
5215 the resulting executable will use dynamic linking.  To use no flags,
5216 say "none".
5217
5218 EOM
5219     case "$ccdlflags" in
5220     '') case "$osname" in
5221                 hpux)   dflt='-Wl,-E' ;;
5222                 linux)  dflt='-rdynamic' ;;
5223                 next)   dflt='none' ;;
5224                 sunos)  dflt='none' ;;
5225                 *)      dflt='none' ;;
5226             esac ;;
5227     ' ')  dflt='none' ;;
5228     *)  dflt="$ccdlflags" ;;
5229     esac
5230     rp="Any special flags to pass to $cc to use dynamic loading?"
5231     . ./myread
5232     case "$ans" in
5233     none) ccdlflags=' ' ;;
5234     *) ccdlflags="$ans" ;;
5235     esac
5236     ;;
5237 *)  usedl="$undef"
5238         ld='ld'
5239     dlsrc='dl_none.xs'
5240     lddlflags=''
5241     ccdlflags=''
5242     ;;
5243 esac
5244
5245 also=''
5246 case "$usedl" in
5247 $undef)
5248         # No dynamic loading being used, so don't bother even to prompt.
5249         useshrplib='false'
5250         ;;
5251 *)      case "$useshrplib" in
5252         '')     case "$osname" in
5253                 svr4*|dgux|dynixptx|esix|powerux|beos)
5254                         dflt=y
5255                         also='Building a shared libperl is required for dynamic loading to work on your system.'
5256                         ;;
5257                 next*)
5258                         case "$osvers" in
5259                         4*)     dflt=y
5260                                 also='Building a shared libperl is needed for MAB support.'
5261                                 ;;
5262                         *)      dflt=n
5263                                 ;;
5264                         esac
5265                         ;;
5266                 *)      dflt=n
5267                         ;;
5268                 esac
5269                 ;;
5270         $define|true|[Yy]*)
5271                 dflt=y
5272                 ;;
5273         *)      dflt=n
5274                 ;;
5275         esac
5276         $cat << EOM
5277
5278 The perl executable is normally obtained by linking perlmain.c with
5279 libperl${_a}, any static extensions (usually just DynaLoader), and
5280 any other libraries needed on this system (such as -lm, etc.).  Since
5281 your system supports dynamic loading, it is probably possible to build
5282 a shared libperl.$so.  If you will have more than one executable linked
5283 to libperl.$so, this will significantly reduce the size of each
5284 executable, but it may have a noticeable affect on performance.  The
5285 default is probably sensible for your system.
5286 $also
5287
5288 EOM
5289         rp="Build a shared libperl.$so (y/n)"
5290         . ./myread
5291         case "$ans" in
5292         true|$define|[Yy]*)
5293                 useshrplib='true'
5294                 # Why does next4 have to be so different?
5295                 case "${osname}${osvers}" in
5296                 next4*) xxx='DYLD_LIBRARY_PATH' ;;
5297                 os2*)   xxx='' ;; # Nothing special needed.
5298                 beos*)  xxx='' ;;
5299                 *)              xxx='LD_LIBRARY_PATH' ;;
5300                 esac
5301                 if test X"$xxx" != "X"; then
5302                         $cat <<EOM  | $tee -a ../config.msg >&4
5303
5304 To build perl, you must add the current working directory to your
5305 $xxx environment variable before running make.  You can do
5306 this with
5307    $xxx=\`pwd\`:\$$xxx; export $xxx
5308 for Bourne-style shells, or
5309    setenv $xxx \`pwd\`
5310 for Csh-style shells.  You *MUST* do this before running make.
5311
5312 EOM
5313                 fi
5314                 ;;
5315         *)      useshrplib='false' ;;
5316         esac
5317         ;;
5318 esac
5319
5320 case "$useshrplib" in
5321 true)
5322         case "$libperl" in
5323         '')
5324                 # Figure out a good name for libperl.so.  Since it gets stored in
5325                 # a version-specific architecture-dependent library, the version
5326                 # number isn't really that important, except for making cc/ld happy.
5327                 #
5328                 # A name such as libperl.so.3.1
5329                 majmin="libperl.$so.$patchlevel.$subversion"
5330                 # A name such as libperl.so.301
5331                 majonly=`echo $patchlevel $subversion |
5332                         $awk '{printf "%d%02d", $1, $2}'`
5333                 majonly=libperl.$so.$majonly
5334                 # I'd prefer to keep the os-specific stuff here to a minimum, and
5335                 # rely on figuring it out from the naming of libc.
5336                 case "${osname}${osvers}" in
5337                 next4*)
5338                         dflt=libperl.5.$so
5339                         # XXX How handle the --version stuff for MAB?
5340                         ;;
5341                 linux*)  # ld won't link with a bare -lperl otherwise.
5342                         dflt=libperl.$so
5343                         ;;
5344                 *)      # Try to guess based on whether libc has major.minor.
5345                         case "$libc" in
5346                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5347                         *libc.$so.[0-9]*) dflt=$majonly ;;
5348                         *)      dflt=libperl.$so ;;
5349                         esac
5350                         ;;
5351                 esac
5352                 ;;
5353         *)      dflt=$libperl
5354                 ;;
5355         esac
5356         cat << EOM
5357
5358 I need to select a good name for the shared libperl.  If your system uses
5359 library names with major and minor numbers, then you might want something
5360 like $majmin.  Alternatively, if your system uses a single version
5361 number for shared libraries, then you might want to use $majonly.
5362 Or, your system might be quite happy with a simple libperl.$so.
5363
5364 Since the shared libperl will get installed into a version-specific
5365 architecture-dependent directory, the version number of the shared perl
5366 library probably isn't important, so the default should be o.k.
5367
5368 EOM
5369         rp='What name do you want to give to the shared libperl?'
5370         . ./myread
5371         libperl=$ans
5372         echo "Ok, I'll use $libperl"
5373         ;;
5374 *)
5375         libperl="libperl${_a}"
5376         ;;
5377 esac
5378
5379 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5380 case "$shrpdir" in
5381 '') ;;
5382 *)      $cat >&4 <<EOM
5383 WARNING:  Use of the shrpdir variable for the installation location of
5384 the shared $libperl is not supported.  It was never documented and
5385 will not work in this version.  Let me (perlbug@perl.com)
5386 know of any problems this may cause.
5387
5388 EOM
5389         case "$shrpdir" in
5390         "$archlibexp/CORE")
5391                 $cat >&4 <<EOM
5392 But your current setting of $shrpdir is
5393 the default anyway, so it's harmless.
5394 EOM
5395                 ;;
5396         *)
5397                 $cat >&4 <<EOM
5398 Further, your current attempted setting of $shrpdir
5399 conflicts with the value of $archlibexp/CORE
5400 that installperl will use.
5401 EOM
5402                 ;;
5403         esac
5404         ;;
5405 esac
5406
5407 # How will the perl executable find the installed shared $libperl?
5408 # Add $xxx to ccdlflags.
5409 # If we can't figure out a command-line option, use $shrpenv to
5410 # set env LD_RUN_PATH.  The main perl makefile uses this.
5411 shrpdir=$archlibexp/CORE
5412 xxx=''
5413 tmp_shrpenv=''
5414 if "$useshrplib"; then
5415     case "$osname" in 
5416         aix)
5417                 # We'll set it in Makefile.SH...
5418                 ;;
5419         solaris|netbsd)
5420                 xxx="-R $shrpdir"
5421                 ;;
5422         freebsd)
5423                 xxx="-Wl,-R$shrpdir"
5424                 ;;
5425         linux|irix*|dec_osf)
5426                 xxx="-Wl,-rpath,$shrpdir"
5427                 ;;
5428         next)
5429                 # next doesn't like the default...
5430                 ;;
5431         beos)
5432                 # beos doesn't like the default, either.
5433                 ;;
5434         *)
5435                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5436                 ;;
5437         esac
5438         case "$xxx" in
5439         '') ;;
5440         *)      
5441                 # Only add $xxx if it isn't already in ccdlflags.
5442                 case " $ccdlflags " in
5443                 *" $xxx "*)     ;;
5444                 *)      ccdlflags="$ccdlflags $xxx"
5445                         cat <<EOM >&4
5446
5447 Adding $xxx to the flags
5448 passed to $ld so that the perl executable will find the 
5449 installed shared $libperl.
5450
5451 EOM
5452                         ;;
5453                 esac
5454                 ;;
5455         esac
5456 fi
5457 # Respect a hint or command-line value.
5458 case "$shrpenv" in
5459 '') shrpenv="$tmp_shrpenv" ;;
5460 esac
5461
5462 : determine where manual pages go
5463 set man1dir man1dir none
5464 eval $prefixit
5465 $cat <<EOM
5466
5467 $spackage has manual pages available in source form.
5468 EOM
5469 case "$nroff" in
5470 nroff)
5471         echo "However, you don't have nroff, so they're probably useless to you."
5472         case "$man1dir" in
5473         '') man1dir="none";;
5474         esac;;
5475 esac
5476 echo "If you don't want the manual sources installed, answer 'none'."
5477 case "$man1dir" in
5478 ' ') dflt=none
5479         ;;
5480 '')
5481         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5482         lookpath="$lookpath $prefixexp/man/p_man/man1"
5483         lookpath="$lookpath $prefixexp/man/u_man/man1"
5484         lookpath="$lookpath $prefixexp/man/man.1"
5485         case "$sysman" in
5486         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5487         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5488         esac
5489         set dflt
5490         eval $prefixup
5491         ;;
5492 *)  dflt="$man1dir"
5493         ;;
5494 esac
5495 echo " "
5496 fn=dn+~
5497 rp="Where do the main $spackage manual pages (source) go?"
5498 . ./getfile
5499 if $test "X$man1direxp" != "X$ansexp"; then
5500         installman1dir=''
5501 fi
5502 man1dir="$ans"
5503 man1direxp="$ansexp"
5504 case "$man1dir" in
5505 '') man1dir=' '
5506         installman1dir='';;
5507 esac
5508 if $afs; then
5509         $cat <<EOM
5510
5511 Since you are running AFS, I need to distinguish the directory in which
5512 manual pages reside from the directory in which they are installed (and from
5513 which they are presumably copied to the former directory by occult means).
5514
5515 EOM
5516         case "$installman1dir" in
5517         '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5518         *) dflt="$installman1dir";;
5519         esac
5520         fn=de~
5521         rp='Where will man pages be installed?'
5522         . ./getfile
5523         installman1dir="$ans"
5524 else
5525         installman1dir="$man1direxp"
5526 fi
5527
5528 : What suffix to use on installed man pages
5529
5530 case "$man1dir" in
5531 ' ')
5532         man1ext='0'
5533         ;;
5534 *)
5535         rp="What suffix should be used for the main $spackage man pages?"
5536         case "$man1ext" in
5537         '')     case "$man1dir" in
5538                 *1)  dflt=1 ;;
5539                 *1p) dflt=1p ;;
5540                 *1pm) dflt=1pm ;;
5541                 *l) dflt=l;;
5542                 *n) dflt=n;;
5543                 *o) dflt=o;;
5544                 *p) dflt=p;;
5545                 *C) dflt=C;;
5546                 *L) dflt=L;;
5547                 *L1) dflt=L1;;
5548                 *) dflt=1;;
5549                 esac
5550                 ;;
5551         *)      dflt="$man1ext";;
5552         esac
5553         . ./myread
5554         man1ext="$ans"
5555         ;;
5556 esac
5557
5558 : see if we can have long filenames
5559 echo " "
5560 rmlist="$rmlist /tmp/cf$$"
5561 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5562 first=123456789abcdef
5563 second=/tmp/cf$$/$first
5564 $rm -f $first $second
5565 if (echo hi >$first) 2>/dev/null; then
5566         if $test -f 123456789abcde; then
5567                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
5568                 val="$undef"
5569         else
5570                 if (echo hi >$second) 2>/dev/null; then
5571                         if $test -f /tmp/cf$$/123456789abcde; then
5572                                 $cat <<'EOM'
5573 That's peculiar... You can have filenames longer than 14 characters, but only
5574 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
5575 I shall consider your system cannot support long filenames at all.
5576 EOM
5577                                 val="$undef"
5578                         else
5579                                 echo 'You can have filenames longer than 14 characters.' >&4
5580                                 val="$define"
5581                         fi
5582                 else
5583                         $cat <<'EOM'
5584 How confusing! Some of your filesystems are sane enough to allow filenames
5585 longer than 14 characters but some others like /tmp can't even think about them.
5586 So, for now on, I shall assume your kernel does not allow them at all.
5587 EOM
5588                         val="$undef"
5589                 fi
5590         fi
5591 else
5592         $cat <<'EOM'
5593 You can't have filenames longer than 14 chars.  You can't even think about them!
5594 EOM
5595         val="$undef"
5596 fi 
5597 set d_flexfnam
5598 eval $setvar
5599 $rm -rf /tmp/cf$$ 123456789abcde*
5600
5601 : determine where library module manual pages go
5602 set man3dir man3dir none
5603 eval $prefixit
5604 $cat <<EOM
5605
5606 $spackage has manual pages for many of the library modules.
5607 EOM
5608
5609 case "$nroff" in
5610 nroff)
5611         $cat <<'EOM'
5612 However, you don't have nroff, so they're probably useless to you.
5613 EOM
5614         case "$man3dir" in
5615         '') man3dir="none";;
5616         esac;;
5617 esac
5618
5619 case "$d_flexfnam" in
5620 undef)
5621         $cat <<'EOM'
5622 However, your system can't handle the long file names like File::Basename.3. 
5623 EOM
5624         case "$man3dir" in
5625         '') man3dir="none";;
5626         esac;;
5627 esac
5628
5629 echo "If you don't want the manual sources installed, answer 'none'."
5630 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5631 case "$man3dir" in
5632 '')     case "$prefix" in 
5633         *$prog*) dflt=`echo $man1dir | 
5634                         $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5635         *)      dflt="$privlib/man/man3" ;;
5636         esac
5637         ;;
5638 ' ') dflt=none;;
5639 *)      dflt="$man3dir" ;;
5640 esac
5641 echo " "
5642
5643 fn=dn+~
5644 rp="Where do the $package library man pages (source) go?"
5645 . ./getfile
5646 if test "X$man3direxp" != "X$ansexp"; then
5647         installman3dir=''
5648 fi
5649
5650 man3dir="$ans"
5651 man3direxp="$ansexp"
5652 case "$man3dir" in
5653 '') man3dir=' '
5654         installman3dir='';;
5655 esac
5656 if $afs; then
5657         $cat <<EOM
5658
5659 Since you are running AFS, I need to distinguish the directory in which
5660 manual pages reside from the directory in which they are installed (and from
5661 which they are presumably copied to the former directory by occult means).
5662
5663 EOM
5664         case "$installman3dir" in
5665         '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5666         *) dflt="$installman3dir";;
5667         esac
5668         fn=de~
5669         rp='Where will man pages be installed?'
5670         . ./getfile
5671         installman3dir="$ans"
5672 else
5673         installman3dir="$man3direxp"
5674 fi
5675
5676 : What suffix to use on installed man pages
5677
5678 case "$man3dir" in
5679 ' ')
5680         man3ext='0'
5681         ;;
5682 *)
5683         rp="What suffix should be used for the $package library man pages?"
5684         case "$man3ext" in
5685         '')     case "$man3dir" in
5686                 *3)  dflt=3 ;;
5687                 *3p) dflt=3p ;;
5688                 *3pm) dflt=3pm ;;
5689                 *l) dflt=l;;
5690                 *n) dflt=n;;
5691                 *o) dflt=o;;
5692                 *p) dflt=p;;
5693                 *C) dflt=C;;
5694                 *L) dflt=L;;
5695                 *L3) dflt=L3;;
5696                 *) dflt=3;;
5697                 esac
5698                 ;;
5699         *)      dflt="$man3ext";;
5700         esac
5701         . ./myread
5702         man3ext="$ans"
5703         ;;
5704 esac
5705
5706 : see if we have to deal with yellow pages, now NIS.
5707 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5708         if $test -f /usr/etc/nibindd; then
5709                 echo " "
5710                 echo "I'm fairly confident you're on a NeXT."
5711                 echo " "
5712                 rp='Do you get the hosts file via NetInfo?'
5713                 dflt=y
5714                 case "$hostcat" in
5715                 nidump*) ;;
5716                 '') ;;
5717                 *) dflt=n;;
5718                 esac
5719                 . ./myread
5720                 case "$ans" in
5721                 y*) hostcat='nidump hosts .';;
5722                 *)      case "$hostcat" in
5723                         nidump*) hostcat='';;
5724                         esac
5725                         ;;
5726                 esac
5727         fi
5728         case "$hostcat" in
5729         nidump*) ;;
5730         *)
5731                 case "$hostcat" in
5732                 *ypcat*) dflt=y;;
5733                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5734                                 dflt=y
5735                         else
5736                                 dflt=n
5737                         fi;;
5738                 *) dflt=n;;
5739                 esac
5740                 echo " "
5741                 rp='Are you getting the hosts file via yellow pages?'
5742                 . ./myread
5743                 case "$ans" in
5744                 y*) hostcat='ypcat hosts';;
5745                 *) hostcat='cat /etc/hosts';;
5746                 esac
5747                 ;;
5748         esac
5749 fi
5750 case "$hostcat" in
5751 '') hostcat='cat /etc/hosts';;
5752 esac
5753 case "$groupcat" in
5754 '') groupcat='cat /etc/group';;
5755 esac
5756 case "$passcat" in
5757 '') passcat='cat /etc/passwd';;
5758 esac
5759
5760 : now get the host name
5761 echo " "
5762 echo "Figuring out host name..." >&4
5763 case "$myhostname" in
5764 '') cont=true
5765         echo 'Maybe "hostname" will work...'
5766         if tans=`sh -c hostname 2>&1` ; then
5767                 myhostname=$tans
5768                 phostname=hostname
5769                 cont=''
5770         fi
5771         ;;
5772 *) cont='';;
5773 esac
5774 if $test "$cont"; then
5775         if ./xenix; then
5776                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
5777                 if tans=`cat /etc/systemid 2>&1` ; then
5778                         myhostname=$tans
5779                         phostname='cat /etc/systemid'
5780                         echo "Whadyaknow.  Xenix always was a bit strange..."
5781                         cont=''
5782                 fi
5783         elif $test -r /etc/systemid; then
5784                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5785         fi
5786 fi
5787 if $test "$cont"; then
5788         echo 'No, maybe "uuname -l" will work...'
5789         if tans=`sh -c 'uuname -l' 2>&1` ; then
5790                 myhostname=$tans
5791                 phostname='uuname -l'
5792         else
5793                 echo 'Strange.  Maybe "uname -n" will work...'
5794                 if tans=`sh -c 'uname -n' 2>&1` ; then
5795                         myhostname=$tans
5796                         phostname='uname -n'
5797                 else
5798                         echo 'Oh well, maybe I can mine it out of whoami.h...'
5799                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5800                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5801                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5802                         else
5803                                 case "$myhostname" in
5804                                 '') echo "Does this machine have an identity crisis or something?"
5805                                         phostname='';;
5806                                 *)
5807                                         echo "Well, you said $myhostname before..."
5808                                         phostname='echo $myhostname';;
5809                                 esac
5810                         fi
5811                 fi
5812         fi
5813 fi
5814 : you do not want to know about this
5815 set $myhostname
5816 myhostname=$1
5817
5818 : verify guess
5819 if $test "$myhostname" ; then
5820         dflt=y
5821         rp='Your host name appears to be "'$myhostname'".'" Right?"
5822         . ./myread
5823         case "$ans" in
5824         y*) ;;
5825         *) myhostname='';;
5826         esac
5827 fi
5828
5829 : bad guess or no guess
5830 while $test "X$myhostname" = X ; do
5831         dflt=''
5832         rp="Please type the (one word) name of your host:"
5833         . ./myread
5834         myhostname="$ans"
5835 done
5836
5837 : translate upper to lower if necessary
5838 case "$myhostname" in
5839 *[A-Z]*)
5840         echo "(Normalizing case in your host name)"
5841         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5842         ;;
5843 esac
5844
5845 case "$myhostname" in
5846 *.*)
5847         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5848         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5849         echo "(Trimming domain name from host name--host name is now $myhostname)"
5850         ;;
5851 *) case "$mydomain" in
5852         '')
5853                 {
5854                         test "X$hostcat" = "Xypcat hosts" &&
5855                         ypmatch "$myhostname" hosts 2>/dev/null |\
5856                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
5857                         $test -s hosts
5858                 } || {
5859                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
5860                                         /[       ]$myhostname[  . ]/p" > hosts
5861                 }
5862                 tmp_re="[       . ]"
5863                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
5864                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
5865                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5866                         hosts | $sort | $uniq | \
5867                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5868                 case `$echo X$dflt` in
5869                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
5870                         dflt=.
5871                         ;;
5872                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5873                         ;;
5874                 esac
5875                 case "$dflt" in
5876                 .)
5877                         tans=`./loc resolv.conf X /etc /usr/etc`
5878                         if $test -f "$tans"; then
5879                                 echo "(Attempting domain name extraction from $tans)"
5880                                 dflt=.`$sed -n -e 's/   / /g' \
5881                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
5882                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5883                                 case "$dflt" in
5884                                 .) dflt=.`$sed -n -e 's/        / /g' \
5885                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
5886                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5887                                         ;;
5888                                 esac
5889                         fi
5890                         ;;
5891                 esac
5892                 case "$dflt" in
5893                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5894                         dflt=.`sh -c domainname 2>/dev/null`
5895                         case "$dflt" in
5896                         '') dflt='.';;
5897                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5898                         esac
5899                         ;;
5900                 esac
5901                 case "$dflt" in
5902                 .) echo "(Lost all hope -- silly guess then)"
5903                         dflt='.uucp'
5904                         ;;
5905                 esac
5906                 $rm -f hosts
5907                 ;;
5908         *) dflt="$mydomain";;
5909         esac;;
5910 esac
5911 echo " "
5912 rp="What is your domain name?"
5913 . ./myread
5914 tans="$ans"
5915 case "$ans" in
5916 '') ;;
5917 .*) ;;
5918 *) tans=".$tans";;
5919 esac
5920 mydomain="$tans"
5921
5922 : translate upper to lower if necessary
5923 case "$mydomain" in
5924 *[A-Z]*)
5925         echo "(Normalizing case in your domain name)"
5926         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5927         ;;
5928 esac
5929
5930 : a little sanity check here
5931 case "$phostname" in
5932 '') ;;
5933 *)
5934         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5935         $myhostname$mydomain|$myhostname) ;;
5936         *)
5937                 case "$phostname" in
5938                 sed*)
5939                         echo "(That doesn't agree with your whoami.h file, by the way.)"
5940                         ;;
5941                 *)
5942                         echo "(That doesn't agree with your $phostname command, by the way.)"
5943                         ;;
5944                 esac
5945         ;;
5946         esac
5947         ;;
5948 esac
5949
5950 $cat <<EOM
5951
5952 I need to get your e-mail address in Internet format if possible, i.e.
5953 something like user@host.domain. Please answer accurately since I have
5954 no easy means to double check it. The default value provided below
5955 is most probably close to the reality but may not be valid from outside
5956 your organization...
5957
5958 EOM
5959 cont=x
5960 while test "$cont"; do
5961         case "$cf_email" in
5962         '') dflt="$cf_by@$myhostname$mydomain";;
5963         *) dflt="$cf_email";;
5964         esac
5965         rp='What is your e-mail address?'
5966         . ./myread
5967         cf_email="$ans"
5968         case "$cf_email" in
5969         *@*.*) cont='' ;;
5970         *)
5971                 rp='Address does not look like an Internet one.  Use it anyway?'
5972                 case "$fastread" in
5973                 yes) dflt=y ;;
5974                 *) dflt=n ;;
5975                 esac
5976                 . ./myread
5977                 case "$ans" in
5978                 y*) cont='' ;;
5979                 *) echo " " ;;
5980                 esac
5981                 ;;
5982         esac
5983 done
5984
5985 $cat <<EOM
5986
5987 If you or somebody else will be maintaining perl at your site, please
5988 fill in the correct e-mail address here so that they may be contacted
5989 if necessary. Currently, the "perlbug" program included with perl
5990 will send mail to this address in addition to perlbug@perl.com. You may
5991 enter "none" for no administrator.
5992
5993 EOM
5994 case "$perladmin" in
5995 '') dflt="$cf_email";;
5996 *) dflt="$perladmin";;
5997 esac
5998 rp='Perl administrator e-mail address'
5999 . ./myread
6000 perladmin="$ans"
6001
6002 : figure out how to guarantee perl startup
6003 case "$startperl" in
6004 '')
6005         case "$sharpbang" in
6006         *!)
6007                 $cat <<EOH
6008
6009 I can use the #! construct to start perl on your system. This will
6010 make startup of perl scripts faster, but may cause problems if you
6011 want to share those scripts and perl is not in a standard place
6012 ($binexp/perl) on all your platforms. The alternative is to force
6013 a shell by starting the script with a single ':' character.
6014
6015 EOH
6016                 dflt="$binexp/perl"
6017                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6018                 . ./myread
6019                 case "$ans" in
6020                 none)   startperl=": # use perl";;
6021                 *)      startperl="#!$ans"
6022                         if $test 30 -lt `echo "$ans" | wc -c`; then
6023                                 $cat >&4 <<EOM
6024
6025 WARNING:  Some systems limit the #! command to 32 characters.
6026 If you experience difficulty running Perl scripts with #!, try
6027 installing Perl in a directory with a shorter pathname.
6028
6029 EOM
6030                         fi ;;
6031                 esac
6032                 ;;
6033         *) startperl=": # use perl"
6034                 ;;
6035         esac
6036         ;;
6037 esac
6038 echo "I'll use $startperl to start perl scripts."
6039
6040 : figure best path for perl in scripts
6041 case "$perlpath" in
6042 '')
6043         perlpath="$binexp/perl"
6044         case "$startperl" in
6045         *!*) ;;
6046         *)
6047                 $cat <<EOH
6048
6049 I will use the "eval 'exec'" idiom to start Perl on your system.
6050 I can use the full path of your Perl binary for this purpose, but
6051 doing so may cause problems if you want to share those scripts and
6052 Perl is not always in a standard place ($binexp/perl).
6053
6054 EOH
6055                 dflt="$binexp/perl"
6056                 rp="What path shall I use in \"eval 'exec'\"?"
6057                 . ./myread
6058                 perlpath="$ans"
6059                 ;;
6060         esac
6061         ;;
6062 esac
6063 case "$startperl" in
6064 *!*)    ;;
6065 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6066 esac
6067
6068 : determine where public executable scripts go
6069 set scriptdir scriptdir
6070 eval $prefixit
6071 case "$scriptdir" in
6072 '')
6073         dflt="$bin"
6074         : guess some guesses
6075         $test -d /usr/share/scripts && dflt=/usr/share/scripts
6076         $test -d /usr/share/bin && dflt=/usr/share/bin
6077         $test -d /usr/local/script && dflt=/usr/local/script
6078         $test -d $prefixexp/script && dflt=$prefixexp/script
6079         set dflt
6080         eval $prefixup
6081         ;;
6082 *)  dflt="$scriptdir"
6083         ;;
6084 esac
6085 $cat <<EOM
6086  
6087 Some installations have a separate directory just for executable scripts so
6088 that they can mount it across multiple architectures but keep the scripts in
6089 one spot.  You might, for example, have a subdirectory of /usr/share for this.
6090 Or you might just lump your scripts in with all your other executables.
6091  
6092 EOM
6093 fn=d~
6094 rp='Where do you keep publicly executable scripts?'
6095 . ./getfile
6096 if $test "X$ansexp" != "X$scriptdirexp"; then
6097         installscript=''
6098 fi
6099 scriptdir="$ans"
6100 scriptdirexp="$ansexp"
6101 if $afs; then
6102         $cat <<EOM
6103
6104 Since you are running AFS, I need to distinguish the directory in which
6105 scripts reside from the directory in which they are installed (and from
6106 which they are presumably copied to the former directory by occult means).
6107
6108 EOM
6109         case "$installscript" in
6110         '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6111         *) dflt="$installscript";;
6112         esac
6113         fn=de~
6114         rp='Where will public scripts be installed?'
6115         . ./getfile
6116         installscript="$ans"
6117 else
6118         installscript="$scriptdirexp"
6119 fi
6120
6121 : determine where site specific libraries go.
6122 : Usual default is /usr/local/lib/perl5/site_perl/$apiversion
6123 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6124 case "$prefix" in
6125 *perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6126 *)       set dflt sitelib lib/$package/site_$prog/$apiversion ;;
6127 esac
6128 eval $prefixit
6129 $cat <<EOM
6130
6131 The installation process will also create a directory for
6132 site-specific extensions and modules.  Some users find it convenient
6133 to place all local files in this directory rather than in the main
6134 distribution directory.
6135
6136 EOM
6137 fn=d~+
6138 rp='Pathname for the site-specific library files?'
6139 . ./getfile
6140 if $test "X$sitelibexp" != "X$ansexp"; then
6141         installsitelib=''
6142 fi
6143 sitelib="$ans"
6144 sitelibexp="$ansexp"
6145 if $afs; then
6146         $cat <<EOM
6147
6148 Since you are running AFS, I need to distinguish the directory in
6149 which site-specific files reside from the directory in which they are
6150 installed (and from which they are presumably copied to the former
6151 directory by occult means).
6152
6153 EOM
6154         case "$installsitelib" in
6155         '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6156         *) dflt="$installsitelib";;
6157         esac
6158         fn=de~
6159         rp='Where will site-specific files be installed?'
6160         . ./getfile
6161         installsitelib="$ans"
6162 else
6163         installsitelib="$sitelibexp"
6164 fi
6165
6166 : determine where site specific architecture-dependent libraries go.
6167 : sitelib  default is /usr/local/lib/perl5/site_perl/$apiversion
6168 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6169 : sitelib may have an optional trailing /share.
6170 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6171 tdflt="$tdflt/$archname"
6172 set sitearch sitearch none
6173 eval $prefixit
6174 case "$sitearch" in
6175 '')     dflt="$tdflt" ;;
6176 *)      dflt="$sitearch" ;;
6177 esac
6178 $cat <<EOM
6179
6180 The installation process will also create a directory for
6181 architecture-dependent site-specific extensions and modules.
6182
6183 EOM
6184 fn=nd~+
6185 rp='Pathname for the site-specific architecture-dependent library files?'
6186 . ./getfile
6187 if $test "X$sitearchexp" != "X$ansexp"; then
6188         installsitearch=''
6189 fi
6190 sitearch="$ans"
6191 sitearchexp="$ansexp"
6192 if $afs; then
6193         $cat <<EOM
6194
6195 Since you are running AFS, I need to distinguish the directory in
6196 which site-specific architecture-dependent library files reside from
6197 the directory in which they are installed (and from which they are
6198 presumably copied to the former directory by occult means).
6199
6200 EOM
6201         case "$installsitearch" in
6202         '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6203         *) dflt="$installsitearch";;
6204         esac
6205         fn=de~
6206         rp='Where will site-specific architecture-dependent files be installed?'
6207         . ./getfile
6208         installsitearch="$ans"
6209 else
6210         installsitearch="$sitearchexp"
6211 fi
6212
6213 cat <<EOM
6214
6215 Previous version of $package used the standard IO mechanisms as defined
6216 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
6217 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6218 the default.  This abstraction layer can use AT&T's sfio (if you already
6219 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
6220 problems with some extension modules.  Using PerlIO with stdio is safe,
6221 but it is slower than plain stdio and therefore is not the default.
6222
6223 If this doesn't make any sense to you, just accept the default 'n'.
6224 EOM
6225 case "$useperlio" in
6226 $define|true|[yY]*)     dflt='y';;
6227 *) dflt='n';;
6228 esac
6229 rp='Use the experimental PerlIO abstraction layer?'
6230 . ./myread
6231 case "$ans" in
6232 y|Y) 
6233         val="$define"
6234         ;;     
6235 *)      
6236         echo "Ok, doing things the stdio way"
6237         val="$undef"
6238         ;;
6239 esac
6240 set useperlio
6241 eval $setvar 
6242
6243 : Check how to convert floats to strings.
6244 if test "X$d_Gconvert" = X; then
6245         echo " "
6246         echo "Checking for an efficient way to convert floats to strings."
6247         $cat >try.c <<'EOP'
6248 #ifdef TRY_gconvert
6249 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6250 char *myname = "gconvert";
6251 #endif
6252 #ifdef TRY_gcvt
6253 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6254 char *myname = "gcvt";
6255 #endif
6256 #ifdef TRY_sprintf
6257 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6258 char *myname = "sprintf";
6259 #endif
6260
6261 #include <stdio.h>
6262
6263 int
6264 checkit(expect, got)
6265 char *expect;
6266 char *got;
6267 {
6268     if (strcmp(expect, got)) {
6269                 printf("%s oddity:  Expected %s, got %s\n",
6270                         myname, expect, got);
6271                 exit(1);
6272         }
6273 }
6274
6275 int main()
6276
6277         char buf[64]; 
6278         buf[63] = '\0';
6279
6280         /* This must be 1st test on (which?) platform */
6281         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6282         Gconvert(0.1, 8, 0, buf);
6283         checkit("0.1", buf);
6284
6285         Gconvert(1.0, 8, 0, buf); 
6286         checkit("1", buf);
6287
6288         Gconvert(0.0, 8, 0, buf); 
6289         checkit("0", buf);
6290
6291         Gconvert(-1.0, 8, 0, buf); 
6292         checkit("-1", buf);
6293
6294         /* Some Linux gcvt's give 1.e+5 here. */
6295         Gconvert(100000.0, 8, 0, buf); 
6296         checkit("100000", buf);
6297         
6298         /* Some Linux gcvt's give -1.e+5 here. */
6299         Gconvert(-100000.0, 8, 0, buf); 
6300         checkit("-100000", buf);
6301
6302         exit(0);
6303 }
6304 EOP
6305         case "$d_Gconvert" in
6306         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6307         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6308         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6309         *) xxx_list='gconvert gcvt sprintf' ;;
6310         esac
6311
6312         for xxx_convert in $xxx_list; do
6313                 echo "Trying $xxx_convert"
6314                 $rm -f try try$_o
6315                 set try -DTRY_$xxx_convert
6316                 if eval $compile; then
6317                         echo "$xxx_convert" found. >&4
6318                         if ./try; then
6319                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
6320                                 break;
6321                         else
6322                                 echo "...But $xxx_convert didn't work as I expected."
6323                         fi
6324                 else
6325                         echo "$xxx_convert NOT found." >&4
6326                 fi
6327         done
6328                 
6329         case "$xxx_convert" in
6330         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6331         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6332         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6333         esac
6334 fi
6335
6336 : Initialize h_fcntl
6337 h_fcntl=false
6338
6339 : Initialize h_sysfile
6340 h_sysfile=false
6341
6342 : access call always available on UNIX
6343 set access d_access
6344 eval $inlibc
6345
6346 : locate the flags for 'access()'
6347 case "$d_access" in
6348 "$define")
6349         echo " "
6350         $cat >access.c <<'EOCP'
6351 #include <sys/types.h>
6352 #ifdef I_FCNTL
6353 #include <fcntl.h>
6354 #endif
6355 #ifdef I_SYS_FILE
6356 #include <sys/file.h>
6357 #endif
6358 #ifdef I_UNISTD
6359 #include <unistd.h>
6360 #endif
6361 main() {
6362         exit(R_OK);
6363 }
6364 EOCP
6365         : check sys/file.h first, no particular reason here
6366         if $test `./findhdr sys/file.h` && \
6367                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6368                 h_sysfile=true;
6369                 echo "<sys/file.h> defines the *_OK access constants." >&4
6370         elif $test `./findhdr fcntl.h` && \
6371                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6372                 h_fcntl=true;
6373                 echo "<fcntl.h> defines the *_OK access constants." >&4
6374         elif $test `./findhdr unistd.h` && \
6375                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6376                 echo "<unistd.h> defines the *_OK access constants." >&4
6377         else
6378                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6379         fi
6380         ;;
6381 esac
6382 $rm -f access*
6383
6384 : see if accessx exists
6385 set accessx d_accessx
6386 eval $inlibc
6387
6388 : see if alarm exists
6389 set alarm d_alarm
6390 eval $inlibc
6391
6392 : Look for GNU-cc style attribute checking
6393 echo " "
6394 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6395 $cat >attrib.c <<'EOCP'
6396 #include <stdio.h>
6397 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6398 EOCP
6399 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6400         if $contains 'warning' attrib.out >/dev/null 2>&1; then
6401                 echo "Your C compiler doesn't fully support __attribute__."
6402                 val="$undef"
6403         else
6404                 echo "Your C compiler supports __attribute__."
6405                 val="$define"
6406         fi
6407 else
6408         echo "Your C compiler doesn't seem to understand __attribute__ at all."
6409         val="$undef"
6410 fi
6411 set d_attribut
6412 eval $setvar
6413 $rm -f attrib*
6414
6415 : see if bcmp exists
6416 set bcmp d_bcmp
6417 eval $inlibc
6418
6419 : see if bcopy exists
6420 set bcopy d_bcopy
6421 eval $inlibc
6422
6423 : see if this is a unistd.h system
6424 set unistd.h i_unistd
6425 eval $inhdr
6426
6427 : see if getpgrp exists
6428 set getpgrp d_getpgrp
6429 eval $inlibc
6430
6431 case "$d_getpgrp" in
6432 "$define")
6433         echo " "
6434         echo "Checking to see which flavor of getpgrp is in use..."
6435         $cat >set.c <<EOP
6436 #$i_unistd I_UNISTD
6437 #include <sys/types.h>
6438 #ifdef I_UNISTD
6439 #  include <unistd.h>
6440 #endif
6441 int main()
6442 {
6443         if (getuid() == 0) {
6444                 printf("(I see you are running Configure as super-user...)\n");
6445                 setuid(1);
6446         }
6447 #ifdef TRY_BSD_PGRP
6448         if (getpgrp(1) == 0)
6449                 exit(0);
6450 #else
6451         if (getpgrp() > 0)
6452                 exit(0);
6453 #endif
6454         exit(1);
6455 }
6456 EOP
6457         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6458                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6459                 val="$define"
6460         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6461                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6462                 val="$undef"
6463         else
6464                 echo "I can't seem to compile and run the test program."
6465                 if ./usg; then
6466                         xxx="a USG one, i.e. you use getpgrp()."
6467                 else
6468                         # SVR4 systems can appear rather BSD-ish.
6469                         case "$i_unistd" in
6470                         $undef)
6471                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
6472                                 val="$define"
6473                                 ;;
6474                         $define)
6475                                 xxx="probably a USG one, i.e. you use getpgrp()."
6476                                 val="$undef"
6477                                 ;;
6478                         esac
6479                 fi
6480                 echo "Assuming your getpgrp is $xxx" >&4
6481         fi
6482         ;;
6483 *) val="$undef";;
6484 esac
6485 set d_bsdgetpgrp
6486 eval $setvar
6487 $rm -f set set.c
6488
6489 : see if setpgrp exists
6490 set setpgrp d_setpgrp
6491 eval $inlibc
6492
6493 case "$d_setpgrp" in
6494 "$define")
6495         echo " "
6496         echo "Checking to see which flavor of setpgrp is in use..."
6497         $cat >set.c <<EOP
6498 #$i_unistd I_UNISTD
6499 #include <sys/types.h>
6500 #ifdef I_UNISTD
6501 #  include <unistd.h>
6502 #endif
6503 int main()
6504 {
6505         if (getuid() == 0) {
6506                 printf("(I see you are running Configure as super-user...)\n");
6507                 setuid(1);
6508         }
6509 #ifdef TRY_BSD_PGRP
6510         if (-1 == setpgrp(1, 1))
6511                 exit(0);
6512 #else
6513         if (setpgrp() != -1)
6514                 exit(0);
6515 #endif
6516         exit(1);
6517 }
6518 EOP
6519         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6520                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6521                 val="$define"
6522         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6523                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6524                 val="$undef"
6525         else
6526                 echo "(I can't seem to compile and run the test program.)"
6527                 if ./usg; then
6528                         xxx="a USG one, i.e. you use setpgrp()."
6529                 else
6530                         # SVR4 systems can appear rather BSD-ish.
6531                         case "$i_unistd" in
6532                         $undef)
6533                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6534                                 val="$define"
6535                                 ;;
6536                         $define)
6537                                 xxx="probably a USG one, i.e. you use setpgrp()."
6538                                 val="$undef"
6539                                 ;;
6540                         esac
6541                 fi
6542                 echo "Assuming your setpgrp is $xxx" >&4
6543         fi
6544         ;;
6545 *) val="$undef";;
6546 esac
6547 set d_bsdsetpgrp
6548 eval $setvar
6549 $rm -f set set.c
6550 : see if bzero exists
6551 set bzero d_bzero
6552 eval $inlibc
6553
6554 : check for lengths of integral types
6555 echo " "
6556 case "$intsize" in
6557 '')
6558         echo "Checking to see how big your integers are..." >&4
6559         $cat >intsize.c <<'EOCP'
6560 #include <stdio.h>
6561 main()
6562 {
6563         printf("intsize=%d;\n", sizeof(int));
6564         printf("longsize=%d;\n", sizeof(long));
6565         printf("shortsize=%d;\n", sizeof(short));
6566         exit(0);
6567 }
6568 EOCP
6569         set intsize
6570         if eval $compile_ok && ./intsize > /dev/null; then
6571                 eval `./intsize`
6572                 echo "Your integers are $intsize bytes long."
6573                 echo "Your long integers are $longsize bytes long."
6574                 echo "Your short integers are $shortsize bytes long."
6575         else
6576                 $cat >&4 <<EOM
6577 !
6578 Help! I can't compile and run the intsize test program: please enlighten me!
6579 (This is probably a misconfiguration in your system or libraries, and
6580 you really ought to fix it.  Still, I'll try anyway.)
6581 !
6582 EOM
6583                 dflt=4
6584                 rp="What is the size of an integer (in bytes)?"
6585                 . ./myread
6586                 intsize="$ans"
6587                 dflt=$intsize
6588                 rp="What is the size of a long integer (in bytes)?"
6589                 . ./myread
6590                 longsize="$ans"
6591                 dflt=2
6592                 rp="What is the size of a short integer (in bytes)?"
6593                 . ./myread
6594                 shortsize="$ans"
6595         fi
6596         ;;
6597 esac
6598 $rm -f intsize intsize.*
6599
6600 : see if signal is declared as pointer to function returning int or void
6601 echo " "
6602 xxx=`./findhdr signal.h`
6603 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6604 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
6605         echo "You have int (*signal())() instead of void." >&4
6606         val="$undef"
6607 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
6608         echo "You have void (*signal())()." >&4
6609         val="$define"
6610 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6611         echo "You have int (*signal())() instead of void." >&4
6612         val="$undef"
6613 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6614         echo "You have void (*signal())()." >&4
6615         val="$define"
6616 else
6617         case "$d_voidsig" in
6618         '')
6619         echo "I can't determine whether signal handler returns void or int..." >&4
6620                 dflt=void
6621                 rp="What type does your signal handler return?"
6622                 . ./myread
6623                 case "$ans" in
6624                 v*) val="$define";;
6625                 *) val="$undef";;
6626                 esac;;
6627         "$define")
6628                 echo "As you already told me, signal handler returns void." >&4
6629                 val="$define"
6630                 ;;
6631         *)      echo "As you already told me, signal handler returns int." >&4
6632                 val="$undef"
6633                 ;;
6634         esac
6635 fi
6636 set d_voidsig
6637 eval $setvar
6638 case "$d_voidsig" in
6639 "$define") signal_t="void";;
6640 *) signal_t="int";;
6641 esac
6642 $rm -f $$.tmp
6643
6644 : check for ability to cast large floats to 32-bit ints.
6645 echo " "
6646 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6647 if $test "$intsize" -ge 4; then
6648         xxx=int
6649 else
6650         xxx=long
6651 fi
6652 $cat >try.c <<EOCP
6653 #include <stdio.h>
6654 #include <sys/types.h>
6655 #include <signal.h>
6656 $signal_t blech(s) int s; { exit(3); }
6657 main()
6658 {
6659         $xxx i32;
6660         double f, g;
6661         int result = 0;
6662         char str[16];
6663         signal(SIGFPE, blech);
6664
6665         /* Don't let compiler optimize the test away.  Store the number 
6666            in a writable string for gcc to pass to sscanf under HP/UX.
6667         */
6668         sprintf(str, "2147483647");
6669         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6670         g = 10 * f;
6671         i32  = ($xxx) g;
6672
6673         /* x86 processors will probably give 0x8000 0000, which is a
6674        sign change.  We don't want that.  We want to mimic SPARC
6675            behavior here, which is to preserve the sign and give
6676            back 0x7fff ffff.
6677         */
6678         if (i32 != ($xxx) f)
6679                 result |= 1;
6680         exit(result);
6681 }
6682 EOCP
6683 set try
6684 if eval $compile_ok; then
6685         ./try
6686         yyy=$?
6687 else
6688         echo "(I can't seem to compile the test program--assuming it can't)"
6689         yyy=1
6690 fi
6691 case "$yyy" in
6692 0)      val="$define"
6693         echo "Yup, it can."
6694         ;;
6695 *)      val="$undef"
6696         echo "Nope, it can't."
6697         ;;
6698 esac
6699 set d_casti32
6700 eval $setvar
6701 $rm -f try try.*
6702
6703 : check for ability to cast negative floats to unsigned
6704 echo " "
6705 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6706 $cat >try.c <<EOCP
6707 #include <stdio.h>
6708 #include <sys/types.h>
6709 #include <signal.h>
6710 $signal_t blech(s) int s; { exit(7); }
6711 $signal_t blech_in_list(s) int s; { exit(4); }
6712 unsigned long dummy_long(p) unsigned long p; { return p; }
6713 unsigned int dummy_int(p) unsigned int p; { return p; }
6714 unsigned short dummy_short(p) unsigned short p; { return p; }
6715 main()
6716 {
6717         double f;
6718         unsigned long along;
6719         unsigned int aint;
6720         unsigned short ashort;
6721         int result = 0;
6722         char str[16];
6723         
6724         /* Frustrate gcc-2.7.2's optimizer which failed this test with
6725            a direct f = -123. assignment.  gcc-2.8.0 reportedly
6726            optimized the whole file away
6727         */
6728         /* Store the number in a writable string for gcc to pass to 
6729            sscanf under HP/UX.
6730         */
6731         sprintf(str, "-123");
6732         sscanf(str, "%lf", &f);  /* f = -123.; */
6733
6734         signal(SIGFPE, blech);
6735         along = (unsigned long)f;
6736         aint = (unsigned int)f;
6737         ashort = (unsigned short)f;
6738         if (along != (unsigned long)-123)
6739                 result |= 1;
6740         if (aint != (unsigned int)-123)
6741                 result |= 1;
6742         if (ashort != (unsigned short)-123)
6743                 result |= 1;
6744         sprintf(str, "1073741824.");
6745         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6746         f = f + f;
6747         along = 0;
6748         along = (unsigned long)f;
6749         if (along != 0x80000000)
6750                 result |= 2;
6751         f -= 1.;
6752         along = 0;
6753         along = (unsigned long)f;
6754         if (along != 0x7fffffff)
6755                 result |= 1;
6756         f += 2.;
6757         along = 0;
6758         along = (unsigned long)f;
6759         if (along != 0x80000001)
6760                 result |= 2;
6761         if (result)
6762                 exit(result);
6763         signal(SIGFPE, blech_in_list);
6764         sprintf(str, "123.");
6765         sscanf(str, "%lf", &f);  /* f = 123.; */
6766         along = dummy_long((unsigned long)f);
6767         aint = dummy_int((unsigned int)f);
6768         ashort = dummy_short((unsigned short)f);
6769         if (along != (unsigned long)123)
6770                 result |= 4;
6771         if (aint != (unsigned int)123)
6772                 result |= 4;
6773         if (ashort != (unsigned short)123)
6774                 result |= 4;
6775         exit(result);
6776
6777 }
6778 EOCP
6779 set try
6780 if eval $compile_ok; then
6781         ./try
6782         castflags=$?
6783 else
6784         echo "(I can't seem to compile the test program--assuming it can't)"
6785         castflags=7
6786 fi
6787 case "$castflags" in
6788 0)      val="$define"
6789         echo "Yup, it can."
6790         ;;
6791 *)      val="$undef"
6792         echo "Nope, it can't."
6793         ;;
6794 esac
6795 set d_castneg
6796 eval $setvar
6797 $rm -f try.*
6798
6799 : see if vprintf exists
6800 echo " "
6801 if set vprintf val -f d_vprintf; eval $csym; $val; then
6802         echo 'vprintf() found.' >&4
6803         val="$define"
6804         $cat >vprintf.c <<'EOF'
6805 #include <varargs.h>
6806
6807 main() { xxx("foo"); }
6808
6809 xxx(va_alist)
6810 va_dcl
6811 {
6812         va_list args;
6813         char buf[10];
6814
6815         va_start(args);
6816         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6817 }
6818 EOF
6819         set vprintf
6820         if eval $compile && ./vprintf; then
6821                 echo "Your vsprintf() returns (int)." >&4
6822                 val2="$undef"
6823         else
6824                 echo "Your vsprintf() returns (char*)." >&4
6825                 val2="$define"
6826         fi
6827 else
6828         echo 'vprintf() NOT found.' >&4
6829                 val="$undef"
6830                 val2="$undef"
6831 fi
6832 set d_vprintf
6833 eval $setvar
6834 val=$val2
6835 set d_charvspr
6836 eval $setvar
6837
6838 : see if chown exists
6839 set chown d_chown
6840 eval $inlibc
6841
6842 : see if chroot exists
6843 set chroot d_chroot
6844 eval $inlibc
6845
6846 : see if chsize exists
6847 set chsize d_chsize
6848 eval $inlibc
6849
6850 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6851 while $test $# -ge 2; do
6852         case "$1" in
6853         $define) echo "#include <$2>";;
6854         esac ;
6855     shift 2;
6856 done > try.c;
6857 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6858 if eval $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6859         val="$define";
6860 else
6861         val="$undef";
6862 fi;
6863 set $varname;
6864 eval $setvar;
6865 $rm -f try.c try.o'
6866
6867 : see if this is a sys/uio.h system
6868 set sys/uio.h i_sysuio
6869 eval $inhdr
6870
6871 echo "Checking to see if your system supports struct iovec..." >&4
6872 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6873 eval $hasfield
6874 case "$d_iovec_s" in
6875 "$define")      echo "Yup, it does." >&4
6876                 ;;
6877 *)              echo "Nope, it doesn't." >&4
6878                 ;;
6879 esac
6880
6881 socketlib=''
6882 sockethdr=''
6883 : see whether socket exists
6884 echo " "
6885 $echo $n "Hmm... $c" >&4
6886 if set socket val -f d_socket; eval $csym; $val; then
6887         echo "Looks like you have Berkeley networking support." >&4
6888         d_socket="$define"
6889         if set setsockopt val -f; eval $csym; $val; then
6890                 d_oldsock="$undef"
6891         else
6892                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6893                 d_oldsock="$define"
6894         fi
6895 else
6896         if $contains socklib libc.list >/dev/null 2>&1; then
6897                 echo "Looks like you have Berkeley networking support." >&4
6898                 d_socket="$define"
6899                 : we will have to assume that it supports the 4.2 BSD interface
6900                 d_oldsock="$undef"
6901         else
6902                 echo "You don't have Berkeley networking in libc$_a..." >&4
6903                 if test "X$d_socket" = "X$define"; then
6904                    echo "...but you seem to believe that you have sockets." >&4
6905                 else
6906                         for net in net socket
6907                         do
6908                                 if test -f /usr/lib/lib$net$_a; then
6909                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
6910                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6911                                         if $contains socket libc.list >/dev/null 2>&1; then
6912                                                 d_socket="$define"
6913                                                 socketlib="-l$net"
6914                                                 case "$net" in
6915                                                 net)
6916                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
6917                                                         sockethdr="-I/usr/netinclude"
6918                                                         ;;
6919                                                 esac
6920                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
6921                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
6922                                                         d_oldsock="$undef"
6923                                                 else
6924                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6925                                                         d_oldsock="$define"
6926                                                 fi
6927                                                 break
6928                                         fi
6929                                 fi
6930                         done
6931                         if test "X$d_socket" != "X$define"; then
6932                            echo "or anywhere else I see." >&4
6933                            d_socket="$undef"
6934                            d_oldsock="$undef"
6935                         fi
6936                 fi
6937         fi
6938 fi
6939
6940 : see if socketpair exists
6941 set socketpair d_sockpair
6942 eval $inlibc
6943
6944
6945 echo " "
6946 echo "Checking the availability of certain socket constants..." >& 4
6947 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
6948         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
6949         $cat >try.c <<EOF
6950 #include <sys/types.h>
6951 #include <sys/socket.h>
6952 int main() {
6953     int i = $ENUM;
6954 }
6955 EOF
6956         val="$undef"
6957         set try; if eval $compile; then
6958                 val="$define"
6959         fi
6960         set d_${enum}; eval $setvar
6961         $rm -f try.c try
6962 done
6963
6964 set sendmsg d_sendmsg
6965 eval $inlibc
6966
6967 set recvmsg d_recvmsg
6968 eval $inlibc
6969
6970 echo " "
6971 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
6972 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6973 eval $hasfield
6974 case "$d_msghdr_s" in
6975 "$define")      echo "Yup, it does." >&4
6976                 ;;
6977 *)              echo "Nope, it doesn't." >&4
6978                 ;;
6979 esac
6980
6981 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
6982 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6983 eval $hasfield
6984 case "$d_cmsghdr_s" in
6985 "$define")      echo "Yup, it does." >&4
6986                 ;;
6987 *)              echo "Nope, it doesn't." >&4
6988                 ;;
6989 esac
6990
6991 : check for const keyword
6992 echo " "
6993 echo 'Checking to see if your C compiler knows about "const"...' >&4
6994 $cat >const.c <<'EOCP'
6995 typedef struct spug { int drokk; } spug;
6996 int main()
6997 {
6998         const char *foo;
6999         const spug y;
7000 }
7001 EOCP
7002 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7003         val="$define"
7004         echo "Yup, it does."
7005 else
7006         val="$undef"
7007         echo "Nope, it doesn't."
7008 fi
7009 set d_const
7010 eval $setvar
7011
7012 : see if crypt exists
7013 echo " "
7014 if set crypt val -f d_crypt; eval $csym; $val; then
7015         echo 'crypt() found.' >&4
7016         val="$define"
7017         cryptlib=''
7018 else
7019         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7020         if $test -z "$cryptlib"; then
7021                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7022         else
7023                 cryptlib=-lcrypt
7024         fi
7025         if $test -z "$cryptlib"; then
7026                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7027         else
7028                 cryptlib=-lcrypt
7029         fi
7030         if $test -z "$cryptlib"; then
7031                 cryptlib=`./loc libcrypt$_a "" $libpth`
7032         else
7033                 cryptlib=-lcrypt
7034         fi
7035         if $test -z "$cryptlib"; then
7036                 echo 'crypt() NOT found.' >&4
7037                 val="$undef"
7038         else
7039                 val="$define"
7040         fi
7041 fi
7042 set d_crypt
7043 eval $setvar
7044
7045 : get csh whereabouts
7046 case "$csh" in
7047 'csh') val="$undef" ;;
7048 *) val="$define" ;;
7049 esac
7050 set d_csh
7051 eval $setvar
7052 : Respect a hint or command line value for full_csh.
7053 case "$full_csh" in
7054 '') full_csh=$csh ;;
7055 esac
7056
7057 : see if cuserid exists
7058 set cuserid d_cuserid
7059 eval $inlibc
7060
7061 : see if this is a limits.h system
7062 set limits.h i_limits
7063 eval $inhdr
7064
7065 : see if this is a float.h system
7066 set float.h i_float
7067 eval $inhdr
7068
7069 : See if number of significant digits in a double precision number is known
7070 echo " "
7071 $cat >dbl_dig.c <<EOM
7072 #$i_limits I_LIMITS
7073 #$i_float I_FLOAT
7074 #ifdef I_LIMITS
7075 #include <limits.h>
7076 #endif
7077 #ifdef I_FLOAT
7078 #include <float.h>
7079 #endif
7080 #ifdef DBL_DIG
7081 printf("Contains DBL_DIG");
7082 #endif
7083 EOM
7084 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7085 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7086         echo "DBL_DIG found." >&4
7087         val="$define"
7088 else
7089         echo "DBL_DIG NOT found." >&4
7090         val="$undef"
7091 fi
7092 $rm -f dbl_dig.?
7093 set d_dbl_dig
7094 eval $setvar
7095
7096
7097 if $test X"$use64bits" = X"$define"; then
7098         : see if dbminit64 exists
7099         set dbminit64 d_dbminit64
7100         eval $inlibc
7101
7102         : see if dbmclose64 exists
7103         set dbmclose64 d_dbmclose64
7104         eval $inlibc
7105
7106         : see if fetch64 exists
7107         set fetch64 d_fetch64
7108         eval $inlibc
7109
7110         : see if store64 exists
7111         set store64 d_store64
7112         eval $inlibc
7113
7114         : see if delete64 exists
7115         set delete64 d_delete64
7116         eval $inlibc
7117
7118         : see if firstkey64 exists
7119         set firstkey64 d_firstkey64
7120         eval $inlibc
7121
7122         : see if nextkey64 exists
7123         set nextkey64 d_nextkey64
7124         eval $inlibc
7125 else
7126         val="$undef"
7127         for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7128         do
7129                 set $xxx
7130                 eval $setvar
7131         done
7132 fi
7133
7134 : see if difftime exists
7135 set difftime d_difftime
7136 eval $inlibc
7137
7138 : see if sys/stat.h is available
7139 set sys/stat.h i_sysstat
7140 eval $inhdr
7141
7142 : see if this is a dirent system
7143 echo " "
7144 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7145         val="$define"
7146         echo "<dirent.h> found." >&4
7147 else
7148         val="$undef"
7149         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7150                 echo "<sys/dir.h> found." >&4
7151                 echo " "
7152         else
7153                 xinc=`./findhdr sys/ndir.h`
7154         fi
7155         echo "<dirent.h> NOT found." >&4
7156 fi
7157 set i_dirent
7158 eval $setvar
7159
7160 : Look for type of directory structure.
7161 echo " "
7162 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7163
7164 case "$direntrytype" in
7165 ''|' ')
7166         case "$i_dirent" in
7167         $define) guess1='struct dirent' ;;
7168         *) guess1='struct direct'  ;;
7169         esac
7170         ;;
7171 *)      guess1="$direntrytype"
7172         ;;
7173 esac
7174
7175 case "$guess1" in
7176 'struct dirent') guess2='struct direct' ;;
7177 *) guess2='struct dirent' ;;
7178 esac
7179                 
7180 if $contains "$guess1" try.c >/dev/null 2>&1; then
7181         direntrytype="$guess1"
7182         echo "Your directory entries are $direntrytype." >&4
7183 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7184         direntrytype="$guess2"
7185         echo "Your directory entries seem to be $direntrytype." >&4
7186 else
7187         echo "I don't recognize your system's directory entries." >&4
7188         rp="What type is used for directory entries on this system?"
7189         dflt="$guess1"
7190         . ./myread
7191         direntrytype="$ans"
7192 fi
7193 $rm -f try.c
7194
7195
7196 : see if the directory entry stores field length
7197 echo " "
7198 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7199 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7200         echo "Good, your directory entry keeps length information in d_namlen." >&4
7201         val="$define"
7202 else
7203         echo "Your directory entry does not know about the d_namlen field." >&4
7204         val="$undef"
7205 fi
7206 set d_dirnamlen
7207 eval $setvar
7208 $rm -f try.c
7209
7210
7211 if $test X"$use64bits" = X"$define"; then
7212         : see if fstat64 exists
7213         set fstat64 d_fstat64
7214         eval $inlibc
7215
7216         : see if ftruncate64 exists
7217         set ftruncate64 d_ftruncate64
7218         eval $inlibc
7219
7220         : see if lockf64 exists
7221         set lockf64 d_lockf64
7222         eval $inlibc
7223
7224         : see if lseek64 exists
7225         set lseek64 d_lseek64
7226         eval $inlibc
7227
7228         : see if lstat64 exists
7229         set lstat64 d_lstat64
7230         eval $inlibc
7231
7232         : see if open64 exists
7233         set open64 d_open64
7234         eval $inlibc
7235
7236         : see if opendir64 exists
7237         set opendir64 d_opendir64
7238         eval $inlibc
7239
7240         : see if readdir64 exists
7241         set readdir64 d_readdir64
7242         eval $inlibc
7243
7244         : see if seekdir64 exists
7245         set seekdir64 d_seekdir64
7246         eval $inlibc
7247
7248         : see if stat64 exists
7249         set stat64 d_stat64
7250         eval $inlibc
7251
7252         : see if telldir64 exists
7253         set telldir64 d_telldir64
7254         eval $inlibc
7255
7256         : see if truncate64 exists
7257         set truncate64 d_truncate64
7258         eval $inlibc
7259
7260         : check for off64_t
7261         echo " "
7262         echo $n "Checking to see if your system supports off64_t...$c" >&4
7263         $cat >try.c <<EOCP
7264 #include <sys/types.h>
7265 off64_t foo() { off64_t x; x = 7; return x; }'
7266 EOCP
7267         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7268                 val="$define"
7269                 echo " Yup, it does." >&4
7270         else
7271                 val="$undef"
7272                 echo " Nope, it doesn't." >&4
7273         fi
7274         $rm -f try.*
7275         set d_off64t
7276         eval $setvar
7277
7278         : check for ino64_t
7279         echo " "
7280         echo $n "Checking to see if your system supports ino64_t...$c" >&4
7281         val="$undef"
7282         case "$i_sysstat" in
7283         "$define" )
7284                 $cat >try.c <<EOCP
7285 #include <sys/types.h>
7286 #include <sys/stat.h>
7287 ino64_t foo() { ino64_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                 fi
7292                 $rm -f try.*
7293                 ;;
7294         esac
7295         if $test "X$val" = X"$define"; then
7296                 echo " Yup, it does." >&4
7297         else
7298                 echo " Nope, it doesn't." >&4
7299         fi
7300         set d_ino64t
7301         eval $setvar
7302
7303         : check for struct flock64
7304         echo " "
7305         echo "Checking to see if your system supports struct flock64..." >&4
7306         if $h_fcntl; then
7307                 set d_flock64_s flock64 l_len define fcntl.h
7308                 eval $hasfield
7309         else
7310                 val="$undef"
7311                 set d_flock64_s
7312                 eval $setvar
7313         fi
7314         case "$d_flock64_s" in
7315         "$define")      echo "Yup, it does." >&4
7316                         ;;
7317         *)              echo "Nope, it doesn't." >&4
7318                         ;;
7319         esac
7320
7321         : check for struct dirent64
7322         echo " "
7323         echo "Checking to see if your system supports struct dirent64..." >&4
7324         set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7325         eval $hasfield
7326         case "$d_dirent64_s" in
7327         "$define")      echo "Yup, it does." >&4
7328                         ;;
7329         *)              echo "Nope, it doesn't." >&4
7330                         ;;
7331         esac
7332
7333 else
7334         val="$undef"
7335         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_off64t d_ino64t d_flock64_s d_dirent64_s
7336         do
7337                 set $xxx
7338                 eval $setvar
7339         done
7340 fi
7341
7342 : see if dlerror exists
7343 xxx_runnm="$runnm"
7344 runnm=false
7345 set dlerror d_dlerror
7346 eval $inlibc
7347 runnm="$xxx_runnm"
7348
7349 : see if dlfcn is available
7350 set dlfcn.h i_dlfcn
7351 eval $inhdr
7352
7353 case "$usedl" in
7354 $define|y|true)
7355         $cat << EOM
7356
7357 On a few systems, the dynamically loaded modules that perl generates and uses
7358 will need a different extension than shared libs. The default will probably
7359 be appropriate.
7360
7361 EOM
7362         case "$dlext" in
7363         '')     dflt="$so" ;;
7364         *)      dflt="$dlext" ;;
7365         esac
7366         rp='What is the extension of dynamically loaded modules'
7367         . ./myread
7368         dlext="$ans"
7369         ;;
7370 *)
7371         dlext="none"
7372         ;;
7373 esac
7374
7375 : Check if dlsym need a leading underscore
7376 echo " "
7377 val="$undef"
7378
7379 case "$dlsrc" in
7380 dl_dlopen.xs)
7381         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7382         $cat >dyna.c <<'EOM'
7383 fred () { }
7384 EOM
7385
7386 $cat >fred.c<<EOM
7387
7388 #include <stdio.h>
7389 #$i_dlfcn I_DLFCN
7390 #ifdef I_DLFCN
7391 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
7392 #else
7393 #include <sys/types.h>
7394 #include <nlist.h>
7395 #include <link.h>
7396 #endif
7397
7398 extern int fred() ;
7399
7400 int main()
7401 {
7402     void * handle ;
7403     void * symbol ;
7404 #ifndef RTLD_LAZY
7405     int mode = 1 ;
7406 #else
7407     int mode = RTLD_LAZY ;
7408 #endif
7409     handle = dlopen("./dyna.$dlext", mode) ;
7410     if (handle == NULL) {
7411         printf ("1\n") ;
7412         fflush (stdout) ;
7413         exit(0);
7414     }
7415     symbol = dlsym(handle, "fred") ;
7416     if (symbol == NULL) {
7417         /* try putting a leading underscore */
7418         symbol = dlsym(handle, "_fred") ;
7419         if (symbol == NULL) {
7420             printf ("2\n") ;
7421             fflush (stdout) ;
7422             exit(0);
7423         }
7424         printf ("3\n") ;
7425     }
7426     else
7427         printf ("4\n") ;
7428     fflush (stdout) ;
7429     exit(0);
7430 }
7431 EOM
7432         : Call the object file tmp-dyna.o in case dlext=o.
7433         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
7434                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
7435                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
7436                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7437                 xxx=`./fred`
7438                 case $xxx in
7439                 1)      echo "Test program failed using dlopen." >&4
7440                         echo "Perhaps you should not use dynamic loading." >&4;;
7441                 2)      echo "Test program failed using dlsym." >&4
7442                         echo "Perhaps you should not use dynamic loading." >&4;;
7443                 3)      echo "dlsym needs a leading underscore" >&4
7444                         val="$define" ;;
7445                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
7446                 esac
7447         else
7448                 echo "I can't compile and run the test program." >&4
7449         fi
7450         ;;
7451 esac
7452                 
7453 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7454
7455 set d_dlsymun
7456 eval $setvar
7457
7458 hasproto='varname=$1; func=$2; shift; shift;
7459 while $test $# -ge 2; do
7460         case "$1" in
7461         $define) echo "#include <$2>";;
7462         esac ;
7463     shift 2;
7464 done > try.c;
7465 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7466 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7467         echo "$func() prototype found.";
7468         val="$define";
7469 else
7470         echo "$func() prototype NOT found.";
7471         val="$undef";
7472 fi;
7473 set $varname;
7474 eval $setvar;
7475 $rm -f try.c tryout.c'
7476
7477 : see if prototype for drand48 is available
7478 echo " "
7479 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7480 eval $hasproto
7481
7482 : see if dup2 exists
7483 set dup2 d_dup2
7484 eval $inlibc
7485
7486 : see if eaccess exists
7487 set eaccess d_eaccess
7488 eval $inlibc
7489
7490 : see if endgrent exists
7491 set endgrent d_endgrent
7492 eval $inlibc
7493
7494 : see if endhostent exists
7495 set endhostent d_endhent
7496 eval $inlibc
7497
7498 : see if endnetent exists
7499 set endnetent d_endnent
7500 eval $inlibc
7501
7502 : see if endprotoent exists
7503 set endprotoent d_endpent
7504 eval $inlibc
7505
7506 : see if endpwent exists
7507 set endpwent d_endpwent
7508 eval $inlibc
7509
7510 : see if endservent exists
7511 set endservent d_endsent
7512 eval $inlibc
7513
7514 : Locate the flags for 'open()'
7515 echo " "
7516 $cat >open3.c <<'EOCP'
7517 #include <sys/types.h>
7518 #ifdef I_FCNTL
7519 #include <fcntl.h>
7520 #endif
7521 #ifdef I_SYS_FILE
7522 #include <sys/file.h>
7523 #endif
7524 main() {
7525         if(O_RDONLY);
7526 #ifdef O_TRUNC
7527         exit(0);
7528 #else
7529         exit(1);
7530 #endif
7531 }
7532 EOCP
7533 : check sys/file.h first to get FREAD on Sun
7534 if $test `./findhdr sys/file.h` && \
7535                 set open3 -DI_SYS_FILE && eval $compile; then
7536         h_sysfile=true;
7537         echo "<sys/file.h> defines the O_* constants..." >&4
7538         if ./open3; then
7539                 echo "and you have the 3 argument form of open()." >&4
7540                 val="$define"
7541         else
7542                 echo "but not the 3 argument form of open().  Oh, well." >&4
7543                 val="$undef"
7544         fi
7545 elif $test `./findhdr fcntl.h` && \
7546                 set open3 -DI_FCNTL && eval $compile; then
7547         h_fcntl=true;
7548         echo "<fcntl.h> defines the O_* constants..." >&4
7549         if ./open3; then
7550                 echo "and you have the 3 argument form of open()." >&4
7551                 val="$define"
7552         else
7553                 echo "but not the 3 argument form of open().  Oh, well." >&4
7554                 val="$undef"
7555         fi
7556 else
7557         val="$undef"
7558         echo "I can't find the O_* constant definitions!  You got problems." >&4
7559 fi
7560 set d_open3
7561 eval $setvar
7562 $rm -f open3*
7563
7564 : check for non-blocking I/O stuff
7565 case "$h_sysfile" in
7566 true) echo "#include <sys/file.h>" > head.c;;
7567 *)
7568         case "$h_fcntl" in
7569         true) echo "#include <fcntl.h>" > head.c;;
7570         *) echo "#include <sys/fcntl.h>" > head.c;;
7571         esac
7572         ;;
7573 esac
7574 echo " "
7575 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7576 case "$o_nonblock" in
7577 '')
7578         $cat head.c > try.c
7579         $cat >>try.c <<'EOCP'
7580 main() {
7581 #ifdef O_NONBLOCK
7582         printf("O_NONBLOCK\n");
7583         exit(0);
7584 #endif
7585 #ifdef O_NDELAY
7586         printf("O_NDELAY\n");
7587         exit(0);
7588 #endif
7589 #ifdef FNDELAY
7590         printf("FNDELAY\n");
7591         exit(0);
7592 #endif
7593         exit(0);
7594 }
7595 EOCP
7596         set try
7597         if eval $compile_ok; then
7598                 o_nonblock=`./try`
7599                 case "$o_nonblock" in
7600                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7601                 *) echo "Seems like we can use $o_nonblock.";;
7602                 esac
7603         else
7604                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7605         fi
7606         ;;
7607 *) echo "Using $hint value $o_nonblock.";;
7608 esac
7609 $rm -f try try.* .out core
7610
7611 echo " "
7612 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7613 case "$eagain" in
7614 '')
7615         $cat head.c > try.c
7616         $cat >>try.c <<EOCP
7617 #include <errno.h>
7618 #include <sys/types.h>
7619 #include <signal.h>
7620 #define MY_O_NONBLOCK $o_nonblock
7621 #ifndef errno  /* XXX need better Configure test */
7622 extern int errno;
7623 #endif
7624 $signal_t blech(x) int x; { exit(3); }
7625 EOCP
7626         $cat >> try.c <<'EOCP'
7627 main()
7628 {
7629         int pd[2];
7630         int pu[2];
7631         char buf[1];
7632         char string[100];
7633
7634         pipe(pd);       /* Down: child -> parent */
7635         pipe(pu);       /* Up: parent -> child */
7636         if (0 != fork()) {
7637                 int ret;
7638                 close(pd[1]);   /* Parent reads from pd[0] */
7639                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
7640                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7641                         exit(1);
7642                 signal(SIGALRM, blech);
7643                 alarm(5);
7644                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
7645                         exit(2);
7646                 sprintf(string, "%d\n", ret);
7647                 write(2, string, strlen(string));
7648                 alarm(0);
7649 #ifdef EAGAIN
7650                 if (errno == EAGAIN) {
7651                         printf("EAGAIN\n");
7652                         goto ok;
7653                 }
7654 #endif
7655 #ifdef EWOULDBLOCK
7656                 if (errno == EWOULDBLOCK)
7657                         printf("EWOULDBLOCK\n");
7658 #endif
7659         ok:
7660                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
7661                 sleep(2);                               /* Give it time to close our pipe */
7662                 alarm(5);
7663                 ret = read(pd[0], buf, 1);      /* Should read EOF */
7664                 alarm(0);
7665                 sprintf(string, "%d\n", ret);
7666                 write(3, string, strlen(string));
7667                 exit(0);
7668         }
7669
7670         close(pd[0]);                   /* We write to pd[1] */
7671         close(pu[1]);                   /* We read from pu[0] */
7672         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
7673         close(pd[1]);                   /* Pipe pd is now fully closed! */
7674         exit(0);                                /* Bye bye, thank you for playing! */
7675 }
7676 EOCP
7677         set try
7678         if eval $compile_ok; then
7679                 echo "$startsh" >mtry
7680                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7681                 chmod +x mtry
7682                 ./mtry >/dev/null 2>&1
7683                 case $? in
7684                 0) eagain=`$cat try.out`;;
7685                 1) echo "Could not perform non-blocking setting!";;
7686                 2) echo "I did a successful read() for something that was not there!";;
7687                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7688                 *) echo "Something terribly wrong happened during testing.";;
7689                 esac
7690                 rd_nodata=`$cat try.ret`
7691                 echo "A read() system call with no data present returns $rd_nodata."
7692                 case "$rd_nodata" in
7693                 0|-1) ;;
7694                 *)
7695                         echo "(That's peculiar, fixing that to be -1.)"
7696                         rd_nodata=-1
7697                         ;;
7698                 esac
7699                 case "$eagain" in
7700                 '')
7701                         echo "Forcing errno EAGAIN on read() with no data available."
7702                         eagain=EAGAIN
7703                         ;;
7704                 *)
7705                         echo "Your read() sets errno to $eagain when no data is available."
7706                         ;;
7707                 esac
7708                 status=`$cat try.err`
7709                 case "$status" in
7710                 0) echo "And it correctly returns 0 to signal EOF.";;
7711                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7712                 *) echo "However, your read() returns '$status' on EOF??";;
7713                 esac
7714                 val="$define"
7715                 if test "$status" = "$rd_nodata"; then
7716                         echo "WARNING: you can't distinguish between EOF and no data!"
7717                         val="$undef"
7718                 fi
7719         else
7720                 echo "I can't compile the test program--assuming errno EAGAIN will do."
7721                 eagain=EAGAIN
7722         fi
7723         set d_eofnblk
7724         eval $setvar
7725         ;;
7726 *)
7727         echo "Using $hint value $eagain."
7728         echo "Your read() returns $rd_nodata when no data is present."
7729         case "$d_eofnblk" in
7730         "$define") echo "And you can see EOF because read() returns 0.";;
7731         "$undef") echo "But you can't see EOF status from read() returned value.";;
7732         *)
7733                 echo "(Assuming you can't see EOF status from read anyway.)"
7734                 d_eofnblk=$undef
7735                 ;;
7736         esac
7737         ;;
7738 esac
7739 $rm -f try try.* .out core head.c mtry
7740
7741 : see if fchmod exists
7742 set fchmod d_fchmod
7743 eval $inlibc
7744
7745 : see if fchown exists
7746 set fchown d_fchown
7747 eval $inlibc
7748
7749 : see if this is an fcntl system
7750 set fcntl d_fcntl
7751 eval $inlibc
7752
7753 : see if sys/select.h has to be included
7754 set sys/select.h i_sysselct
7755 eval $inhdr
7756
7757 : see if we should include time.h, sys/time.h, or both
7758 echo " "
7759 if test "X$timeincl" = X; then
7760         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7761         $echo $n "I'm now running the test program...$c"
7762         $cat >try.c <<'EOCP'
7763 #include <sys/types.h>
7764 #ifdef I_TIME
7765 #include <time.h>
7766 #endif
7767 #ifdef I_SYSTIME
7768 #ifdef SYSTIMEKERNEL
7769 #define KERNEL
7770 #endif
7771 #include <sys/time.h>
7772 #endif
7773 #ifdef I_SYSSELECT
7774 #include <sys/select.h>
7775 #endif
7776 main()
7777 {
7778         struct tm foo;
7779 #ifdef S_TIMEVAL
7780         struct timeval bar;
7781 #endif
7782 #ifdef S_TIMEZONE
7783         struct timezone tzp;
7784 #endif
7785         if (foo.tm_sec == foo.tm_sec)
7786                 exit(0);
7787 #ifdef S_TIMEVAL
7788         if (bar.tv_sec == bar.tv_sec)
7789                 exit(0);
7790 #endif
7791         exit(1);
7792 }
7793 EOCP
7794         flags=''
7795         for s_timezone in '-DS_TIMEZONE' ''; do
7796         sysselect=''
7797         for s_timeval in '-DS_TIMEVAL' ''; do
7798         for i_systimek in '' '-DSYSTIMEKERNEL'; do
7799         for i_time in '' '-DI_TIME'; do
7800         for i_systime in '-DI_SYSTIME' ''; do
7801                 case "$flags" in
7802                 '') $echo $n ".$c"
7803                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7804                         if eval $compile; then
7805                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7806                                 shift
7807                                 flags="$*"
7808                                 echo " "
7809                                 $echo $n "Succeeded with $flags$c"
7810                         fi
7811                         ;;
7812                 esac
7813         done
7814         done
7815         done
7816         done
7817         done
7818         timeincl=''
7819         echo " "
7820         case "$flags" in
7821         *SYSTIMEKERNEL*) i_systimek="$define"
7822                 timeincl=`./findhdr sys/time.h`
7823                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7824         *) i_systimek="$undef";;
7825         esac
7826         case "$flags" in
7827         *I_TIME*) i_time="$define"
7828                 timeincl=`./findhdr time.h`" $timeincl"
7829                 echo "We'll include <time.h>." >&4;;
7830         *) i_time="$undef";;
7831         esac
7832         case "$flags" in
7833         *I_SYSTIME*) i_systime="$define"
7834                 timeincl=`./findhdr sys/time.h`" $timeincl"
7835                 echo "We'll include <sys/time.h>." >&4;;
7836         *) i_systime="$undef";;
7837         esac
7838         $rm -f try.c try
7839 fi
7840
7841 : check for fd_set items
7842 $cat <<EOM
7843
7844 Checking to see how well your C compiler handles fd_set and friends ...
7845 EOM
7846 $cat >fd_set.c <<EOCP
7847 #$i_systime I_SYS_TIME
7848 #$i_sysselct I_SYS_SELECT
7849 #$d_socket HAS_SOCKET
7850 #include <sys/types.h>
7851 #ifdef HAS_SOCKET
7852 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7853 #endif
7854 #ifdef I_SYS_TIME
7855 #include <sys/time.h>
7856 #endif
7857 #ifdef I_SYS_SELECT
7858 #include <sys/select.h>
7859 #endif
7860 main() {
7861         fd_set fds;
7862
7863 #ifdef TRYBITS
7864         if(fds.fds_bits);
7865 #endif
7866
7867 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7868         exit(0);
7869 #else
7870         exit(1);
7871 #endif
7872 }
7873 EOCP
7874 set fd_set -DTRYBITS
7875 if eval $compile; then
7876         d_fds_bits="$define"
7877         d_fd_set="$define"
7878         echo "Well, your system knows about the normal fd_set typedef..." >&4
7879         if ./fd_set; then
7880                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7881                 d_fd_macros="$define"
7882         else
7883                 $cat >&4 <<'EOM'
7884 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
7885 EOM
7886                 d_fd_macros="$undef"
7887         fi
7888 else
7889         $cat <<'EOM'
7890 Hmm, your compiler has some difficulty with fd_set.  Checking further...
7891 EOM
7892         set fd_set
7893         if eval $compile; then
7894                 d_fds_bits="$undef"
7895                 d_fd_set="$define"
7896                 echo "Well, your system has some sort of fd_set available..." >&4
7897                 if ./fd_set; then
7898                         echo "and you have the normal fd_set macros." >&4
7899                         d_fd_macros="$define"
7900                 else
7901                         $cat <<'EOM'
7902 but not the normal fd_set macros!  Gross!  More work for me...
7903 EOM
7904                         d_fd_macros="$undef"
7905                 fi
7906         else
7907         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
7908                 d_fd_set="$undef"
7909                 d_fds_bits="$undef"
7910                 d_fd_macros="$undef"
7911         fi
7912 fi
7913 $rm -f fd_set*
7914
7915 : see if fgetpos exists
7916 set fgetpos d_fgetpos
7917 eval $inlibc
7918
7919
7920 if $test X"$use64bits" = X"$define"; then
7921         : see if fgetpos64 exists
7922         set fgetpos64 d_fgetpos64
7923         eval $inlibc
7924
7925         : see if fopen64 exists
7926         set freopen64 d_fopen64
7927         eval $inlibc
7928
7929         : see if freopen64 exists
7930         set freopen64 d_freopen64
7931         eval $inlibc
7932
7933         : see if fseek64 exists
7934         set fseek64 d_fseek64
7935         eval $inlibc
7936
7937         : see if fseeko64 exists
7938         set fseeko64 d_fseeko64
7939         eval $inlibc
7940
7941         : see if fsetpos64 exists
7942         set fsetpos64 d_fsetpos64
7943         eval $inlibc
7944
7945         : see if ftell64 exists
7946         set ftell64 d_ftell64
7947         eval $inlibc
7948
7949         : see if ftello64 exists
7950         set ftello64 d_ftello64
7951         eval $inlibc
7952
7953         : see if tmpfile64 exists
7954         set tmpfile64 d_tmpfile64
7955         eval $inlibc
7956 else
7957         val="$undef"
7958         for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
7959         do
7960                 set $xxx
7961                 eval $setvar
7962         done
7963 fi
7964
7965 : see if flock exists
7966 set flock d_flock
7967 eval $inlibc
7968
7969 : see if fork exists
7970 set fork d_fork
7971 eval $inlibc
7972
7973 : see if pathconf exists
7974 set pathconf d_pathconf
7975 eval $inlibc
7976
7977 : see if fpathconf exists
7978 set fpathconf d_fpathconf
7979 eval $inlibc
7980
7981 : see if fseeko exists
7982 set fseeko d_fseeko
7983 eval $inlibc
7984
7985 : see if fsetpos exists
7986 set fsetpos d_fsetpos
7987 eval $inlibc
7988
7989 : see if this is a sys/param system
7990 set sys/param.h i_sysparam
7991 eval $inhdr
7992
7993 : see if this is a sys/mount.h system
7994 set sys/mount.h i_sysmount
7995 eval $inhdr
7996
7997
7998 : see if statfs exists
7999 set statfs d_statfs
8000 eval $inlibc
8001
8002 : see if fstatfs exists
8003 set fstatfs d_fstatfs
8004 eval $inlibc
8005
8006 : see if statfs knows about mount flags
8007 set d_statfsflags statfs f_flags $i_sysparam sys/param.h $i_sysmount sys/mount.h
8008 eval $hasfield
8009
8010
8011 : see if statvfs exists
8012 set statvfs d_statvfs
8013 eval $inlibc
8014
8015 : see if fstatvfs exists
8016 set fstatvfs d_fstatvfs
8017 eval $inlibc
8018
8019
8020 : see if ftello exists
8021 set ftello d_ftello
8022 eval $inlibc
8023
8024 : see if getgrent exists
8025 set getgrent d_getgrent
8026 eval $inlibc
8027
8028 : see if gethostbyaddr exists
8029 set gethostbyaddr d_gethbyaddr
8030 eval $inlibc
8031
8032 : see if gethostbyname exists
8033 set gethostbyname d_gethbyname
8034 eval $inlibc
8035
8036 : see if gethostent exists
8037 set gethostent d_gethent
8038 eval $inlibc
8039
8040 : see how we will look up host name
8041 echo " "
8042 if false; then
8043         : dummy stub to allow use of elif
8044 elif set gethostname val -f d_gethname; eval $csym; $val; then
8045         echo 'gethostname() found.' >&4
8046         d_gethname="$define"
8047         call=gethostname
8048 elif set uname val -f d_uname; eval $csym; $val; then
8049         if ./xenix; then
8050                 $cat <<'EOM'
8051 uname() was found, but you're running xenix, and older versions of xenix
8052 have a broken uname(). If you don't really know whether your xenix is old
8053 enough to have a broken system call, use the default answer.
8054
8055 EOM
8056                 dflt=y
8057                 case "$d_uname" in
8058                 "$define") dflt=n;;
8059                 esac
8060                 rp='Is your uname() broken?'
8061                 . ./myread
8062                 case "$ans" in
8063                 n*) d_uname="$define"; call=uname;;
8064                 esac
8065         else
8066                 echo 'uname() found.' >&4
8067                 d_uname="$define"
8068                 call=uname
8069         fi
8070 fi
8071 case "$d_gethname" in
8072 '') d_gethname="$undef";;
8073 esac
8074 case "$d_uname" in
8075 '') d_uname="$undef";;
8076 esac
8077 case "$d_uname$d_gethname" in
8078 *define*)
8079         dflt=n
8080         cat <<EOM
8081  
8082 Every now and then someone has a $call() that lies about the hostname
8083 but can't be fixed for political or economic reasons.  If you wish, I can
8084 pretend $call() isn't there and maybe compute hostname at run-time
8085 thanks to the '$phostname' command.
8086
8087 EOM
8088         rp="Shall I ignore $call() from now on?"
8089         . ./myread
8090         case "$ans" in
8091         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8092         esac;;
8093 esac
8094 case "$phostname" in
8095 '') aphostname='';;
8096 *) case "$aphostname" in
8097         /*) ;;
8098         *) set X $phostname
8099                 shift
8100                 file=$1
8101                 shift
8102                 file=`./loc $file $file $pth`
8103                 aphostname=`echo $file $*`
8104                 ;;
8105         esac
8106         ;;
8107 esac
8108 case "$d_uname$d_gethname" in
8109 *define*) ;;
8110 *)
8111         case "$phostname" in
8112         '')
8113                 echo "There will be no way for $package to get your hostname." >&4;;
8114         *)
8115         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8116                 ;;
8117         esac;;
8118 esac
8119 case "$d_phostname" in
8120 '') d_phostname="$undef";;
8121 esac
8122
8123 : see if this is a netdb.h system
8124 set netdb.h i_netdb
8125 eval $inhdr
8126
8127 : see if prototypes for various gethostxxx netdb.h functions are available
8128 echo " "
8129 set d_gethostprotos gethostent $i_netdb netdb.h
8130 eval $hasproto
8131
8132 : see if getlogin exists
8133 set getlogin d_getlogin
8134 eval $inlibc
8135
8136 : see if getnetbyaddr exists
8137 set getnetbyaddr d_getnbyaddr
8138 eval $inlibc
8139
8140 : see if getnetbyname exists
8141 set getnetbyname d_getnbyname
8142 eval $inlibc
8143
8144 : see if getnetent exists
8145 set getnetent d_getnent
8146 eval $inlibc
8147
8148 : see if prototypes for various getnetxxx netdb.h functions are available
8149 echo " "
8150 set d_getnetprotos getnetent $i_netdb netdb.h
8151 eval $hasproto
8152
8153
8154 : see if getprotobyname exists
8155 set getprotobyname d_getpbyname
8156 eval $inlibc
8157
8158 : see if getprotobynumber exists
8159 set getprotobynumber d_getpbynumber
8160 eval $inlibc
8161
8162 : see if getprotoent exists
8163 set getprotoent d_getpent
8164 eval $inlibc
8165
8166 : see if getpgid exists
8167 set getpgid d_getpgid
8168 eval $inlibc
8169
8170 : see if getpgrp2 exists
8171 set getpgrp2 d_getpgrp2
8172 eval $inlibc
8173
8174 : see if getppid exists
8175 set getppid d_getppid
8176 eval $inlibc
8177
8178 : see if getpriority exists
8179 set getpriority d_getprior
8180 eval $inlibc
8181
8182 : see if prototypes for various getprotoxxx netdb.h functions are available
8183 echo " "
8184 set d_getprotoprotos getprotoent $i_netdb netdb.h
8185 eval $hasproto
8186
8187 : see if getpwent exists
8188 set getpwent d_getpwent
8189 eval $inlibc
8190
8191
8192 : see if getservbyname exists
8193 set getservbyname d_getsbyname
8194 eval $inlibc
8195
8196 : see if getservbyport exists
8197 set getservbyport d_getsbyport
8198 eval $inlibc
8199
8200 : see if getservent exists
8201 set getservent d_getsent
8202 eval $inlibc
8203
8204 : see if prototypes for various getservxxx netdb.h functions are available
8205 echo " "
8206 set d_getservprotos getservent $i_netdb netdb.h
8207 eval $hasproto
8208
8209 : see if gettimeofday or ftime exists
8210 set gettimeofday d_gettimeod
8211 eval $inlibc
8212 case "$d_gettimeod" in
8213 "$undef")
8214         set ftime d_ftime 
8215         eval $inlibc
8216         ;;
8217 *)
8218         val="$undef"; set d_ftime; eval $setvar
8219         ;;
8220 esac
8221 case "$d_gettimeod$d_ftime" in
8222 "$undef$undef")
8223         echo " "
8224         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8225         ;;
8226 esac
8227
8228 : see if this is an grp system
8229 set grp.h i_grp
8230 eval $inhdr
8231
8232 case "$i_grp" in
8233 $define)
8234         xxx=`./findhdr grp.h`
8235         $cppstdin $cppflags $cppminus < $xxx >$$.h
8236
8237         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8238                 val="$define"
8239         else
8240                 val="$undef"
8241         fi
8242         set d_grpasswd
8243         eval $setvar
8244
8245         $rm -f $$.h
8246         ;;
8247 *)
8248         val="$undef";
8249         set d_grpasswd; eval $setvar
8250         ;;
8251 esac
8252
8253 : see if this is a netinet/in.h or sys/in.h system
8254 set netinet/in.h i_niin sys/in.h i_sysin
8255 eval $inhdr
8256
8257 : see if arpa/inet.h has to be included
8258 set arpa/inet.h i_arpainet
8259 eval $inhdr
8260
8261 : see if htonl --and friends-- exists
8262 val=''
8263 set htonl val
8264 eval $inlibc
8265
8266 : Maybe they are macros.
8267 case "$val" in
8268 $undef)
8269         $cat >htonl.c <<EOM
8270 #include <stdio.h>
8271 #include <sys/types.h>
8272 #$i_niin I_NETINET_IN
8273 #$i_sysin I_SYS_IN
8274 #$i_arpainet I_ARPA_INET
8275 #ifdef I_NETINET_IN
8276 #include <netinet/in.h>
8277 #endif
8278 #ifdef I_SYS_IN
8279 #include <sys/in.h>
8280 #endif
8281 #ifdef I_ARPA_INET
8282 #include <arpa/inet.h>
8283 #endif
8284 #ifdef htonl
8285 printf("Defined as a macro.");
8286 #endif
8287 EOM
8288         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8289         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8290                 val="$define"
8291                 echo "But it seems to be defined as a macro." >&4
8292         fi
8293         $rm -f htonl.?
8294         ;;
8295 esac
8296 set d_htonl
8297 eval $setvar
8298
8299 : see which of string.h or strings.h is needed
8300 echo " "
8301 strings=`./findhdr string.h`
8302 if $test "$strings" && $test -r "$strings"; then
8303         echo "Using <string.h> instead of <strings.h>." >&4
8304         val="$define"
8305 else
8306         val="$undef"
8307         strings=`./findhdr strings.h`
8308         if $test "$strings" && $test -r "$strings"; then
8309                 echo "Using <strings.h> instead of <string.h>." >&4
8310         else
8311                 echo "No string header found -- You'll surely have problems." >&4
8312         fi
8313 fi
8314 set i_string
8315 eval $setvar
8316 case "$i_string" in
8317 "$undef") strings=`./findhdr strings.h`;;
8318 *)        strings=`./findhdr string.h`;;
8319 esac
8320
8321 : index or strchr
8322 echo " "
8323 if set index val -f; eval $csym; $val; then
8324         if set strchr val -f d_strchr; eval $csym; $val; then
8325                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8326                         val="$define"
8327                         vali="$undef"
8328                         echo "strchr() found." >&4
8329                 else
8330                         val="$undef"
8331                         vali="$define"
8332                         echo "index() found." >&4
8333                 fi
8334         else
8335                 val="$undef"
8336                 vali="$define"
8337                 echo "index() found." >&4
8338         fi
8339 else
8340         if set strchr val -f d_strchr; eval $csym; $val; then
8341                 val="$define"
8342                 vali="$undef"
8343                 echo "strchr() found." >&4
8344         else
8345                 echo "No index() or strchr() found!" >&4
8346                 val="$undef"
8347                 vali="$undef"
8348         fi
8349 fi
8350 set d_strchr; eval $setvar
8351 val="$vali"
8352 set d_index; eval $setvar
8353
8354 : check whether inet_aton exists
8355 set inet_aton d_inetaton
8356 eval $inlibc
8357
8358 : see if inttypes.h is available
8359 : we want a real compile instead of Inhdr because some systems
8360 : have an inttypes.h which includes non-existent headers
8361 echo " "
8362 $cat >try.c <<EOCP
8363 #include <inttypes.h>
8364 int main() {
8365         static int32_t foo32 = 0x12345678;
8366 }
8367 EOCP
8368 set try
8369 if eval $compile; then
8370         echo "<inttypes.h> found." >&4
8371         val="$define"
8372 else
8373         echo "<inttypes.h> NOT found." >&4
8374         val="$undef"
8375 fi
8376 $rm -f try.c try
8377 set i_inttypes
8378 eval $setvar
8379
8380 : check for int64_t
8381 case "$use64bits" in
8382 "$define" )
8383         echo " "
8384         echo $n "Checking to see if your system supports int64_t...$c" >&4
8385         $cat >try.c <<EOCP
8386 #include <sys/types.h>
8387 #$i_inttypes I_INTTYPES
8388 #ifdef I_INTTYPES
8389 #include <inttypes.h>
8390 #endif
8391 int64_t foo() { int64_t x; x = 7; return x; }
8392 EOCP
8393         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8394                 val="$define"
8395                 echo " Yup, it does." >&4
8396         else
8397                 val="$undef"
8398                 echo " Nope, it doesn't." >&4
8399         fi
8400         $rm -f try.*
8401         ;;
8402 *)      val="$undef"
8403         ;;
8404 esac
8405 set d_int64t
8406 eval $setvar
8407
8408
8409 : Look for isascii
8410 echo " "
8411 $cat >isascii.c <<'EOCP'
8412 #include <stdio.h>
8413 #include <ctype.h>
8414 main() {
8415         int c = 'A';
8416         if (isascii(c))
8417                 exit(0);
8418         else
8419                 exit(1);
8420 }
8421 EOCP
8422 set isascii
8423 if eval $compile; then
8424         echo "isascii() found." >&4
8425         val="$define"
8426 else
8427         echo "isascii() NOT found." >&4
8428         val="$undef"
8429 fi
8430 set d_isascii
8431 eval $setvar
8432 $rm -f isascii*
8433
8434 : see if killpg exists
8435 set killpg d_killpg
8436 eval $inlibc
8437
8438 : see if lchown exists
8439 echo " "
8440 $cat > try.c <<'EOCP'
8441 /* System header to define __stub macros and hopefully few prototypes,
8442     which can conflict with char lchown(); below.  */
8443 #include <assert.h>
8444 /* Override any gcc2 internal prototype to avoid an error.  */
8445 /* We use char because int might match the return type of a gcc2
8446    builtin and then its argument prototype would still apply.  */
8447 char lchown();
8448 int main() {
8449     /*  The GNU C library defines this for functions which it implements
8450         to always fail with ENOSYS.  Some functions are actually named
8451         something starting with __ and the normal name is an alias.  */
8452 #if defined (__stub_lchown) || defined (__stub___lchown)
8453 choke me
8454 #else
8455 lchown();
8456 #endif
8457 ; return 0; }
8458 EOCP
8459 set try
8460 if eval $compile; then
8461     $echo "lchown() found." >&4
8462     val="$define"
8463 else
8464     $echo "lchown() NOT found." >&4
8465     val="$undef"
8466 fi
8467 set d_lchown
8468 eval $setvar
8469
8470 : see if link exists
8471 set link d_link
8472 eval $inlibc
8473
8474 : see if localeconv exists
8475 set localeconv d_locconv
8476 eval $inlibc
8477
8478 : see if lockf exists
8479 set lockf d_lockf
8480 eval $inlibc
8481
8482 : check for length of double
8483 echo " "
8484 case "$doublesize" in
8485 '')
8486         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8487         $cat >try.c <<'EOCP'
8488 #include <stdio.h>
8489 main()
8490 {
8491         printf("%d\n", sizeof(double));
8492 }
8493 EOCP
8494         set try
8495         if eval $compile_ok; then
8496                 doublesize=`./try`
8497                 $echo " $doublesize bytes." >&4
8498         else
8499                 dflt='8'
8500                 echo "(I can't seem to compile the test program.  Guessing...)"
8501                 rp="What is the size of a double precision number (in bytes)?"
8502                 . ./myread
8503                 doublesize="$ans"
8504         fi
8505         ;;
8506 esac
8507 $rm -f try.c try
8508
8509 : check for long doubles
8510 echo " "
8511 echo $n "Checking to see if your system supports long doubles...$c" >&4
8512 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8513 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8514         val="$define"
8515         echo " Yup, it does." >&4
8516 else
8517         val="$undef"
8518         echo " Nope, it doesn't." >&4
8519 fi
8520 $rm try.*
8521 set d_longdbl
8522 eval $setvar
8523
8524 : check for length of long double
8525 case "${d_longdbl}${longdblsize}" in
8526 $define)
8527         echo " "
8528         $echo $n "Checking to see how big your long doubles are...$c" >&4
8529         $cat >try.c <<'EOCP'
8530 #include <stdio.h>
8531 int main()
8532 {
8533         printf("%d\n", sizeof(long double));
8534 }
8535 EOCP
8536         set try
8537         if eval $compile; then
8538                 longdblsize=`./try`
8539                 $echo " $longdblsize bytes." >&4
8540         else
8541                 dflt='8'
8542                 echo " "
8543                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
8544                 rp="What is the size of a long double (in bytes)?"
8545                 . ./myread
8546                 longdblsize="$ans"
8547         fi
8548         if $test "X$doublesize" = "X$longdblsize"; then
8549                 echo "(That isn't any different from an ordinary double.)"
8550         fi      
8551         ;;
8552 esac
8553 $rm -f try.c try
8554
8555 : check for long long
8556 echo " "
8557 echo $n "Checking to see if your system supports long long...$c" >&4
8558 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8559 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8560         val="$define"
8561         echo " Yup, it does." >&4
8562 else
8563         val="$undef"
8564         echo " Nope, it doesn't." >&4
8565 fi
8566 $rm try.*
8567 set d_longlong
8568 eval $setvar
8569
8570 : check for length of long long
8571 case "${d_longlong}${longlongsize}" in
8572 $define)
8573         echo " "
8574         $echo $n "Checking to see how big your long longs are...$c" >&4
8575         $cat >try.c <<'EOCP'
8576 #include <stdio.h>
8577 int main()
8578 {
8579         printf("%d\n", sizeof(long long));
8580 }
8581 EOCP
8582         set try
8583         if eval $compile_ok; then
8584                 longlongsize=`./try`
8585                 $echo " $longlongsize bytes." >&4
8586         else
8587                 dflt='8'
8588                 echo " "
8589                 echo "(I can't seem to compile the test program.  Guessing...)"
8590                 rp="What is the size of a long long (in bytes)?"
8591                 . ./myread
8592                 longlongsize="$ans"
8593         fi
8594         if $test "X$longsize" = "X$longlongsize"; then
8595                 echo "(That isn't any different from an ordinary long.)"
8596         fi      
8597         ;;
8598 esac
8599 $rm -f try.c try
8600
8601 : see if lstat exists
8602 set lstat d_lstat
8603 eval $inlibc
8604
8605 : see if mblen exists
8606 set mblen d_mblen
8607 eval $inlibc
8608
8609 : see if mbstowcs exists
8610 set mbstowcs d_mbstowcs
8611 eval $inlibc
8612
8613 : see if mbtowc exists
8614 set mbtowc d_mbtowc
8615 eval $inlibc
8616
8617 : see if memcmp exists
8618 set memcmp d_memcmp
8619 eval $inlibc
8620
8621 : see if memcpy exists
8622 set memcpy d_memcpy
8623 eval $inlibc
8624
8625 : see if memmove exists
8626 set memmove d_memmove
8627 eval $inlibc
8628
8629 : see if memset exists
8630 set memset d_memset
8631 eval $inlibc
8632
8633 : see if mkdir exists
8634 set mkdir d_mkdir
8635 eval $inlibc
8636
8637 : see if mkfifo exists
8638 set mkfifo d_mkfifo
8639 eval $inlibc
8640
8641 : see if mktime exists
8642 set mktime d_mktime
8643 eval $inlibc
8644
8645 : see if msgctl exists
8646 set msgctl d_msgctl
8647 eval $inlibc
8648
8649 : see if msgget exists
8650 set msgget d_msgget
8651 eval $inlibc
8652
8653 : see if msgsnd exists
8654 set msgsnd d_msgsnd
8655 eval $inlibc
8656
8657 : see if msgrcv exists
8658 set msgrcv d_msgrcv
8659 eval $inlibc
8660
8661 : see how much of the 'msg*(2)' library is present.
8662 h_msg=true
8663 echo " "
8664 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8665 *"$undef"*) h_msg=false;;
8666 esac
8667 case "$osname" in
8668 freebsd)
8669     case "`ipcs 2>&1`" in
8670     "SVID messages"*"not configured"*)
8671         echo "Your $osname does not have the msg*(2) configured." >&4
8672         h_msg=false
8673         val="$undef"
8674         set msgctl d_msgctl
8675         eval $setvar
8676         set msgget d_msgget
8677         eval $setvar
8678         set msgsnd d_msgsnd
8679         eval $setvar
8680         set msgrcv d_msgrcv
8681         eval $setvar
8682         ;;
8683     esac
8684     ;;
8685 esac
8686 : we could also check for sys/ipc.h ...
8687 if $h_msg && $test `./findhdr sys/msg.h`; then
8688         echo "You have the full msg*(2) library." >&4
8689         val="$define"
8690 else
8691         echo "You don't have the full msg*(2) library." >&4
8692         val="$undef"
8693 fi
8694 set d_msg
8695 eval $setvar
8696
8697 : see if nice exists
8698 set nice d_nice
8699 eval $inlibc
8700
8701 : how to create joinable pthreads
8702 if test "X$usethreads" = "X$define"; then
8703         echo " "
8704         echo "Checking what constant to use for creating joinable pthreads..." >&4 
8705         $cat >try.c <<'EOCP'
8706 #include <pthread.h>
8707 int main() {
8708     int detachstate = JOINABLE;
8709 }
8710 EOCP
8711         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8712         if eval $compile; then
8713                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&2
8714                 val="$undef" # Yes, undef.
8715                 set d_old_pthread_create_joinable
8716                 eval $setvar
8717                 val=""
8718                 set old_pthread_create_joinable
8719                 eval $setvar
8720         else
8721                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8722                 if eval $compile; then
8723                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&2
8724                         val="$define"
8725                         set d_old_pthread_create_joinable
8726                         eval $setvar
8727                         val=PTHREAD_CREATE_UNDETACHED
8728                         set old_pthread_create_joinable
8729                         eval $setvar
8730                 else            
8731                         set try -DJOINABLE=__UNDETACHED
8732                         if eval $compile; then
8733                                 echo "You seem to use __UNDETACHED." >&2
8734                                 val="$define"
8735                                 set d_old_pthread_create_joinable
8736                                 eval $setvar
8737                                 val=__UNDETACHED
8738                                 set old_pthread_create_joinable
8739                                 eval $setvar
8740                         else
8741                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&2
8742                                 val="$define"
8743                                 set d_old_pthread_create_joinable
8744                                 eval $setvar
8745                                 val=0
8746                                 set old_pthread_create_joinable
8747                                 eval $setvar
8748                         fi
8749                 fi
8750         fi
8751         $rm -f try try.*
8752 else
8753     d_old_pthread_create_joinable="$undef"
8754     old_pthread_create_joinable=""
8755 fi
8756
8757 : see if pause exists
8758 set pause d_pause
8759 eval $inlibc
8760
8761 : see if pipe exists
8762 set pipe d_pipe
8763 eval $inlibc
8764
8765 : see if poll exists
8766 set poll d_poll
8767 eval $inlibc
8768
8769
8770 : see whether the various POSIXish _yields exist
8771 $cat >try.c <<EOP
8772 #include <pthread.h>
8773 #include <stdio.h>
8774 int main() {
8775 #ifdef SCHED_YIELD
8776         sched_yield();
8777 #else
8778 #ifdef PTHREAD_YIELD
8779         pthread_yield();
8780 #else
8781 #ifdef PTHREAD_YIELD_NULL
8782         pthread_yield(NULL);
8783 #endif
8784 #endif
8785 #endif
8786 }
8787 EOP
8788 : see if sched_yield exists
8789 set try -DSCHED_YIELD
8790 if eval $compile; then
8791     val="$define"
8792     sched_yield='sched_yield()'
8793 else
8794     val="$undef"
8795 fi
8796 case "$usethreads" in
8797 $define)
8798         case "$val" in
8799         $define) echo 'sched_yield() found.' >&4        ;;
8800         *)       echo 'sched_yield() NOT found.' >&4    ;;
8801         esac
8802 esac
8803 set d_sched_yield
8804 eval $setvar
8805
8806 : see if pthread_yield exists
8807 set try -DPTHREAD_YIELD
8808 if eval $compile; then
8809     val="$define"
8810     case "$sched_yield" in
8811     '') sched_yield='pthread_yield()' ;;
8812     esac
8813 else
8814     set try -DPTHREAD_YIELD_NULL
8815     if eval $compile; then
8816         val="$define"
8817         case "$sched_yield" in
8818         '') sched_yield='pthread_yield(NULL)' ;;
8819         esac
8820     else
8821         val="$undef"
8822     fi
8823 fi
8824 case "$usethreads" in
8825 $define)
8826         case "$val" in
8827         $define) echo 'pthread_yield() found.' >&4      ;;
8828         *)       echo 'pthread_yield() NOT found.' >&4  ;;
8829         esac
8830         ;;
8831 esac
8832 set d_pthread_yield
8833 eval $setvar
8834
8835 case "$sched_yield" in
8836 '') sched_yield=undef ;;
8837 esac
8838
8839 $rm -f try try.*
8840
8841 : see if this is a pwd.h system
8842 set pwd.h i_pwd
8843 eval $inhdr
8844
8845 case "$i_pwd" in
8846 $define)
8847         xxx=`./findhdr pwd.h`
8848         $cppstdin $cppflags $cppminus < $xxx >$$.h
8849
8850         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
8851                 val="$define"
8852         else
8853                 val="$undef"
8854         fi
8855         set d_pwquota
8856         eval $setvar
8857
8858         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
8859                 val="$define"
8860         else
8861                 val="$undef"
8862         fi
8863         set d_pwage
8864         eval $setvar
8865
8866         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
8867                 val="$define"
8868         else
8869                 val="$undef"
8870         fi
8871         set d_pwchange
8872         eval $setvar
8873
8874         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
8875                 val="$define"
8876         else
8877                 val="$undef"
8878         fi
8879         set d_pwclass
8880         eval $setvar
8881
8882         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
8883                 val="$define"
8884         else
8885                 val="$undef"
8886         fi
8887         set d_pwexpire
8888         eval $setvar
8889
8890         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
8891                 val="$define"
8892         else
8893                 val="$undef"
8894         fi
8895         set d_pwcomment
8896         eval $setvar
8897
8898         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
8899                 val="$define"
8900         else
8901                 val="$undef"
8902         fi
8903         set d_pwgecos
8904         eval $setvar
8905
8906         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
8907                 val="$define"
8908         else
8909                 val="$undef"
8910         fi
8911         set d_pwpasswd
8912         eval $setvar
8913
8914         $rm -f $$.h
8915         ;;
8916 *)
8917         val="$undef"; 
8918         set d_pwquota; eval $setvar
8919         set d_pwage; eval $setvar
8920         set d_pwchange; eval $setvar
8921         set d_pwclass; eval $setvar
8922         set d_pwexpire; eval $setvar
8923         set d_pwcomment; eval $setvar
8924         set d_pwgecos; eval $setvar
8925         set d_pwpasswd; eval $setvar
8926         ;;
8927 esac
8928
8929 : see if readdir and friends exist
8930 set readdir d_readdir
8931 eval $inlibc
8932 set seekdir d_seekdir
8933 eval $inlibc
8934 set telldir d_telldir
8935 eval $inlibc
8936 set rewinddir d_rewinddir
8937 eval $inlibc
8938
8939 : see if readlink exists
8940 set readlink d_readlink
8941 eval $inlibc
8942
8943 : see if readv exists
8944 set readv d_readv
8945 eval $inlibc
8946
8947 : see if rename exists
8948 set rename d_rename
8949 eval $inlibc
8950
8951 : see if rmdir exists
8952 set rmdir d_rmdir
8953 eval $inlibc
8954
8955 : see if memory.h is available.
8956 val=''
8957 set memory.h val
8958 eval $inhdr
8959
8960 : See if it conflicts with string.h
8961 case "$val" in
8962 $define)
8963         case "$strings" in
8964         '') ;;
8965         *)
8966                 $cppstdin $cppflags $cppminus < $strings > mem.h
8967                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
8968                         echo " "
8969                         echo "We won't be including <memory.h>."
8970                         val="$undef"
8971                 fi
8972                 $rm -f mem.h
8973                 ;;
8974         esac
8975 esac
8976 set i_memory
8977 eval $setvar
8978
8979 : can bcopy handle overlapping blocks?
8980 val="$undef"
8981 case "$d_bcopy" in
8982 "$define")
8983         echo " "
8984         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
8985         $cat >try.c <<EOCP
8986 #$i_memory I_MEMORY
8987 #$i_stdlib I_STDLIB
8988 #$i_string I_STRING
8989 #$i_unistd I_UNISTD
8990 EOCP
8991         $cat >>try.c <<'EOCP'
8992 #include <stdio.h>
8993 #ifdef I_MEMORY
8994 #  include <memory.h>
8995 #endif
8996 #ifdef I_STDLIB
8997 #  include <stdlib.h>
8998 #endif
8999 #ifdef I_STRING
9000 #  include <string.h>
9001 #else
9002 #  include <strings.h>
9003 #endif
9004 #ifdef I_UNISTD
9005 #  include <unistd.h>  /* Needed for NetBSD */
9006 #endif
9007 main()
9008 {
9009 char buf[128], abc[128];
9010 char *b;
9011 int len;
9012 int off;
9013 int align;
9014
9015 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9016
9017 for (align = 7; align >= 0; align--) {
9018         for (len = 36; len; len--) {
9019                 b = buf+align;
9020                 bcopy(abc, b, len);
9021                 for (off = 1; off <= len; off++) {
9022                         bcopy(b, b+off, len);
9023                         bcopy(b+off, b, len);
9024                         if (bcmp(b, abc, len))
9025                                 exit(1);
9026                 }
9027         }
9028 }
9029 exit(0);
9030 }
9031 EOCP
9032         set try
9033         if eval $compile_ok; then
9034                 if ./try 2>/dev/null; then
9035                         echo "Yes, it can."
9036                         val="$define"
9037                 else
9038                         echo "It can't, sorry."
9039                         case "$d_memmove" in
9040                         "$define") echo "But that's Ok since you have memmove()." ;;
9041                         esac
9042                 fi
9043         else
9044                 echo "(I can't compile the test program, so we'll assume not...)"
9045                 case "$d_memmove" in
9046                 "$define") echo "But that's Ok since you have memmove()." ;;
9047                 esac
9048         fi
9049         ;;
9050 esac
9051 $rm -f try.* try core
9052 set d_safebcpy
9053 eval $setvar
9054
9055 : can memcpy handle overlapping blocks?
9056 val="$undef"
9057 case "$d_memcpy" in
9058 "$define")
9059         echo " "
9060         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9061         $cat >try.c <<EOCP
9062 #$i_memory I_MEMORY
9063 #$i_stdlib I_STDLIB
9064 #$i_string I_STRING
9065 #$i_unistd I_UNISTD
9066 EOCP
9067         $cat >>try.c <<'EOCP'
9068 #include <stdio.h>
9069 #ifdef I_MEMORY
9070 #  include <memory.h>
9071 #endif
9072 #ifdef I_STDLIB
9073 #  include <stdlib.h>
9074 #endif
9075 #ifdef I_STRING
9076 #  include <string.h>
9077 #else
9078 #  include <strings.h>
9079 #endif
9080 #ifdef I_UNISTD
9081 #  include <unistd.h>  /* Needed for NetBSD */
9082 #endif
9083 main()
9084 {
9085 char buf[128], abc[128];
9086 char *b;
9087 int len;
9088 int off;
9089 int align;
9090
9091 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9092    try to store the string in read-only memory. */
9093 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9094
9095 for (align = 7; align >= 0; align--) {
9096         for (len = 36; len; len--) {
9097                 b = buf+align;
9098                 memcpy(b, abc, len);
9099                 for (off = 1; off <= len; off++) {
9100                         memcpy(b+off, b, len);
9101                         memcpy(b, b+off, len);
9102                         if (memcmp(b, abc, len))
9103                                 exit(1);
9104                 }
9105         }
9106 }
9107 exit(0);
9108 }
9109 EOCP
9110         set try
9111         if eval $compile_ok; then
9112                 if ./try 2>/dev/null; then
9113                         echo "Yes, it can."
9114                         val="$define"
9115                 else
9116                         echo "It can't, sorry."
9117                         case "$d_memmove" in
9118                         "$define") echo "But that's Ok since you have memmove()." ;;
9119                         esac
9120                 fi
9121         else
9122                 echo "(I can't compile the test program, so we'll assume not...)"
9123                 case "$d_memmove" in
9124                 "$define") echo "But that's Ok since you have memmove()." ;;
9125                 esac
9126         fi
9127         ;;
9128 esac
9129 $rm -f try.* try core
9130 set d_safemcpy
9131 eval $setvar
9132
9133 : can memcmp be trusted to compare relative magnitude?
9134 val="$undef"
9135 case "$d_memcmp" in
9136 "$define")
9137         echo " "
9138         echo "Checking if your memcmp() can compare relative magnitude..." >&4
9139         $cat >try.c <<EOCP
9140 #$i_memory I_MEMORY
9141 #$i_stdlib I_STDLIB
9142 #$i_string I_STRING
9143 #$i_unistd I_UNISTD
9144 EOCP
9145         $cat >>try.c <<'EOCP'
9146 #include <stdio.h>
9147 #ifdef I_MEMORY
9148 #  include <memory.h>
9149 #endif
9150 #ifdef I_STDLIB
9151 #  include <stdlib.h>
9152 #endif
9153 #ifdef I_STRING
9154 #  include <string.h>
9155 #else
9156 #  include <strings.h>
9157 #endif
9158 #ifdef I_UNISTD
9159 #  include <unistd.h>  /* Needed for NetBSD */
9160 #endif
9161 main()
9162 {
9163 char a = -1;
9164 char b = 0;
9165 if ((a < b) && memcmp(&a, &b, 1) < 0)
9166         exit(1);
9167 exit(0);
9168 }
9169 EOCP
9170         set try
9171         if eval $compile_ok; then
9172                 if ./try 2>/dev/null; then
9173                         echo "Yes, it can."
9174                         val="$define"
9175                 else
9176                         echo "No, it can't (it uses signed chars)."
9177                 fi
9178         else
9179                 echo "(I can't compile the test program, so we'll assume not...)"
9180         fi
9181         ;;
9182 esac
9183 $rm -f try.* try core
9184 set d_sanemcmp
9185 eval $setvar
9186
9187 : see if select exists
9188 set select d_select
9189 eval $inlibc
9190
9191 : see if semctl exists
9192 set semctl d_semctl
9193 eval $inlibc
9194
9195 : see if semget exists
9196 set semget d_semget
9197 eval $inlibc
9198
9199 : see if semop exists
9200 set semop d_semop
9201 eval $inlibc
9202
9203 : see how much of the 'sem*(2)' library is present.
9204 h_sem=true
9205 echo " "
9206 case "$d_semctl$d_semget$d_semop" in
9207 *"$undef"*) h_sem=false;;
9208 esac
9209 case "$osname" in
9210 freebsd)
9211     case "`ipcs 2>&1`" in
9212     "SVID messages"*"not configured"*)
9213         echo "Your $osname does not have the sem*(2) configured." >&4
9214         h_sem=false
9215         val="$undef"
9216         set semctl d_semctl
9217         eval $setvar
9218         set semget d_semget
9219         eval $setvar
9220         set semop d_semop
9221         eval $setvar
9222         ;;
9223     esac
9224     ;;
9225 esac
9226 : we could also check for sys/ipc.h ...
9227 if $h_sem && $test `./findhdr sys/sem.h`; then
9228         echo "You have the full sem*(2) library." >&4
9229         val="$define"
9230 else
9231         echo "You don't have the full sem*(2) library." >&4
9232         val="$undef"
9233 fi
9234 set d_sem
9235 eval $setvar
9236
9237 : see whether sys/sem.h defines union semun
9238 echo " "
9239 $cat > try.c <<'END'
9240 #include <sys/types.h>
9241 #include <sys/ipc.h>
9242 #include <sys/sem.h>
9243 int main () { union semun semun; semun.buf = 0; }
9244 END
9245 set try
9246 if eval $compile; then
9247     echo "You have union semun in <sys/sem.h>." >&4
9248     val="$define"
9249 else
9250     echo "You do not have union semun in <sys/sem.h>." >&4
9251     val="$undef"
9252 fi
9253 $rm -f try try.c try.h
9254 set d_union_semun
9255 eval $setvar
9256
9257 : see how to do semctl IPC_STAT
9258 case "$d_sem" in
9259 $define)
9260     : see whether semctl IPC_STAT can use union semun
9261     echo " "
9262     $cat > try.h <<END
9263 #ifndef S_IRUSR
9264 #   ifdef S_IREAD
9265 #       define S_IRUSR S_IREAD
9266 #       define S_IWUSR S_IWRITE
9267 #       define S_IXUSR S_IEXEC
9268 #   else
9269 #       define S_IRUSR 0400
9270 #       define S_IWUSR 0200
9271 #       define S_IXUSR 0100
9272 #   endif
9273 #   define S_IRGRP (S_IRUSR>>3)
9274 #   define S_IWGRP (S_IWUSR>>3)
9275 #   define S_IXGRP (S_IXUSR>>3)
9276 #   define S_IROTH (S_IRUSR>>6)
9277 #   define S_IWOTH (S_IWUSR>>6)
9278 #   define S_IXOTH (S_IXUSR>>6)
9279 #endif
9280 #ifndef S_IRWXU
9281 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9282 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9283 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9284 #endif
9285 END
9286
9287     $cat > try.c <<END
9288 #include <sys/types.h>
9289 #include <sys/ipc.h>
9290 #include <sys/sem.h>
9291 #include <sys/stat.h>
9292 #include <stdio.h>
9293 #include <errno.h>
9294 #include "try.h"
9295 #ifndef errno
9296 extern int errno;
9297 #endif
9298 #$d_union_semun HAS_UNION_SEMUN
9299 int main() {
9300     union semun
9301 #ifndef HAS_UNION_SEMUN
9302     {
9303         int val;
9304         struct semid_ds *buf;
9305         unsigned short *array;
9306     }
9307 #endif
9308     arg;
9309     int sem, st;
9310
9311 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9312     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9313     if (sem > -1) {
9314         struct semid_ds argbuf;
9315         arg.buf = &argbuf;
9316 #       ifdef IPC_STAT
9317         st = semctl(sem, 0, IPC_STAT, arg);
9318         if (st == 0)
9319             printf("semun\n");
9320         else
9321 #       endif /* IPC_STAT */
9322             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9323 #       ifdef IPC_RMID
9324         if (semctl(sem, 0, IPC_RMID, arg) != 0)
9325 #       endif /* IPC_RMID */
9326             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9327     } else
9328 #endif /* IPC_PRIVATE && ... */
9329         printf("semget failed: errno = %d\n", errno);
9330   return 0;
9331 }
9332 END
9333     val="$undef"
9334     set try
9335     if eval $compile; then
9336         xxx=`./try`
9337         case "$xxx" in
9338         semun) val="$define" ;;
9339         esac
9340     fi
9341     $rm -f try try.c
9342     set d_semctl_semun
9343     eval $setvar
9344     case "$d_semctl_semun" in
9345     $define)
9346         echo "You can use union semun for semctl IPC_STAT." >&4
9347         also='also'
9348         ;;
9349     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
9350         also=''
9351         ;;
9352     esac
9353
9354     : see whether semctl IPC_STAT can use struct semid_ds pointer
9355     $cat > try.c <<'END'
9356 #include <sys/types.h>
9357 #include <sys/ipc.h>
9358 #include <sys/sem.h>
9359 #include <sys/stat.h>
9360 #include "try.h"
9361 #include <stdio.h>
9362 #include <errno.h>
9363 #ifndef errno
9364 extern int errno;
9365 #endif
9366 int main() {
9367     struct semid_ds arg;
9368     int sem, st;
9369
9370 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
9371     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9372     if (sem > -1) {
9373 #       ifdef IPC_STAT
9374         st = semctl(sem, 0, IPC_STAT, &arg);
9375         if (st == 0)
9376             printf("semid_ds\n");
9377         else
9378 #       endif /* IPC_STAT */
9379             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9380 #       ifdef IPC_RMID
9381         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9382 #       endif /* IPC_RMID */
9383             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9384     } else
9385 #endif /* IPC_PRIVATE && ... */
9386         printf("semget failed: errno = %d\n", errno);
9387
9388     return 0;
9389 }
9390 END
9391     val="$undef"
9392     set try
9393     if eval $compile; then
9394         xxx=`./try`
9395         case "$xxx" in
9396         semid_ds) val="$define" ;;
9397         esac
9398     fi
9399     $rm -f try try.c
9400     set d_semctl_semid_ds
9401     eval $setvar
9402     case "$d_semctl_semid_ds" in
9403     $define)
9404         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9405         ;;
9406     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9407         ;;
9408     esac
9409     $rm -f try.h
9410     ;;
9411 *)  val="$undef"
9412
9413     # We do not have the full sem*(2) library, so assume we can not
9414     # use either.
9415
9416     set d_semctl_semun
9417     eval $setvar
9418
9419     set d_semctl_semid_ds
9420     eval $setvar
9421     ;;
9422 esac
9423
9424 : see if setegid exists
9425 set setegid d_setegid
9426 eval $inlibc
9427
9428 : see if seteuid exists
9429 set seteuid d_seteuid
9430 eval $inlibc
9431
9432 : see if setgrent exists
9433 set setgrent d_setgrent
9434 eval $inlibc
9435
9436 : see if sethostent exists
9437 set sethostent d_sethent
9438 eval $inlibc
9439
9440 : see if setlinebuf exists
9441 set setlinebuf d_setlinebuf
9442 eval $inlibc
9443
9444 : see if setlocale exists
9445 set setlocale d_setlocale
9446 eval $inlibc
9447
9448 : see if setnetent exists
9449 set setnetent d_setnent
9450 eval $inlibc
9451
9452 : see if setprotoent exists
9453 set setprotoent d_setpent
9454 eval $inlibc
9455
9456 : see if setpgid exists
9457 set setpgid d_setpgid
9458 eval $inlibc
9459
9460 : see if setpgrp2 exists
9461 set setpgrp2 d_setpgrp2
9462 eval $inlibc
9463
9464 : see if setpriority exists
9465 set setpriority d_setprior
9466 eval $inlibc
9467
9468 : see if setpwent exists
9469 set setpwent d_setpwent
9470 eval $inlibc
9471
9472 : see if setregid exists
9473 set setregid d_setregid
9474 eval $inlibc
9475 set setresgid d_setresgid
9476 eval $inlibc
9477
9478 : see if setreuid exists
9479 set setreuid d_setreuid
9480 eval $inlibc
9481 set setresuid d_setresuid
9482 eval $inlibc
9483
9484 : see if setrgid exists
9485 set setrgid d_setrgid
9486 eval $inlibc
9487
9488 : see if setruid exists
9489 set setruid d_setruid
9490 eval $inlibc
9491
9492 : see if setservent exists
9493 set setservent d_setsent
9494 eval $inlibc
9495
9496 : see if setsid exists
9497 set setsid d_setsid
9498 eval $inlibc
9499
9500 : see if setvbuf exists
9501 set setvbuf d_setvbuf
9502 eval $inlibc
9503
9504 : see if sfio.h is available
9505 set sfio.h i_sfio
9506 eval $inhdr
9507
9508
9509 : see if sfio library is available
9510 case "$i_sfio" in
9511 $define)
9512         val=''
9513         set sfreserve val
9514         eval $inlibc
9515         ;;
9516 *)
9517         val="$undef"
9518         ;;
9519 esac
9520 : Ok, but do we want to use it.
9521 case "$val" in
9522 $define)
9523         case "$usesfio" in
9524         true|$define|[yY]*) dflt='y';;
9525         *) dflt='n';;
9526         esac
9527         echo "$package can use the sfio library, but it is experimental."
9528         rp="You seem to have sfio available, do you want to try using it?"
9529         . ./myread
9530         case "$ans" in
9531         y|Y) ;;
9532         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
9533                 val="$undef"
9534                 : Remove sfio from list of libraries to use
9535                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9536                 shift
9537                 libs="$*"
9538                 echo "libs = $libs" >&4
9539                 ;;
9540         esac
9541         ;;
9542 *)      case "$usesfio" in
9543         true|$define|[yY]*)
9544                 echo "Sorry, cannot find sfio on this machine" >&4
9545                 echo "Ignoring your setting of usesfio=$usesfio" >&4
9546                 ;;
9547         esac
9548         ;;
9549 esac
9550 set d_sfio
9551 eval $setvar
9552 case "$d_sfio" in
9553 $define) usesfio='true';;
9554 *) usesfio='false';;
9555 esac
9556
9557 : see if shmctl exists
9558 set shmctl d_shmctl
9559 eval $inlibc
9560
9561 : see if shmget exists
9562 set shmget d_shmget
9563 eval $inlibc
9564
9565 : see if shmat exists
9566 set shmat d_shmat
9567 eval $inlibc
9568 : see what shmat returns
9569 case "$d_shmat" in
9570 "$define")
9571         $cat >shmat.c <<'END'
9572 #include <sys/shm.h>
9573 void *shmat();
9574 END
9575         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9576                 shmattype='void *'
9577         else
9578                 shmattype='char *'
9579         fi
9580         echo "and it returns ($shmattype)." >&4
9581         : see if a prototype for shmat is available
9582         xxx=`./findhdr sys/shm.h`
9583         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9584         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9585                 val="$define"
9586         else
9587                 val="$undef"
9588         fi
9589         $rm -f shmat.[co]
9590         ;;
9591 *)
9592         val="$undef"
9593         ;;
9594 esac
9595 set d_shmatprototype
9596 eval $setvar
9597
9598 : see if shmdt exists
9599 set shmdt d_shmdt
9600 eval $inlibc
9601
9602 : see how much of the 'shm*(2)' library is present.
9603 h_shm=true
9604 echo " "
9605 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9606 *"$undef"*) h_shm=false;;
9607 esac
9608 case "$osname" in
9609 freebsd)
9610     case "`ipcs 2>&1`" in
9611     "SVID shared memory"*"not configured"*)
9612         echo "Your $osname does not have the shm*(2) configured." >&4
9613         h_shm=false
9614         val="$undef"
9615         set shmctl d_shmctl
9616         evat $setvar
9617         set shmget d_shmget
9618         evat $setvar
9619         set shmat d_shmat
9620         evat $setvar
9621         set shmdt d_shmdt
9622         evat $setvar
9623         ;;
9624     esac
9625     ;;
9626 esac
9627 : we could also check for sys/ipc.h ...
9628 if $h_shm && $test `./findhdr sys/shm.h`; then
9629         echo "You have the full shm*(2) library." >&4
9630         val="$define"
9631 else
9632         echo "You don't have the full shm*(2) library." >&4
9633         val="$undef"
9634 fi
9635 set d_shm
9636 eval $setvar
9637
9638 echo " "
9639 : see if we have sigaction
9640 if set sigaction val -f d_sigaction; eval $csym; $val; then
9641         echo 'sigaction() found.' >&4
9642         $cat > try.c <<'EOP'
9643 #include <stdio.h>
9644 #include <sys/types.h>
9645 #include <signal.h>
9646 main()
9647 {
9648     struct sigaction act, oact;
9649 }
9650 EOP
9651         set try
9652         if eval $compile_ok; then
9653                 val="$define"
9654         else
9655                 echo "But you don't seem to have a useable struct sigaction." >&4
9656                 val="$undef"
9657         fi
9658 else
9659         echo 'sigaction NOT found.' >&4
9660         val="$undef"
9661 fi
9662 set d_sigaction; eval $setvar
9663 $rm -f try try$_o try.c
9664
9665 : see if sigsetjmp exists
9666 echo " "
9667 case "$d_sigsetjmp" in
9668 '')
9669         $cat >try.c <<'EOP'
9670 #include <setjmp.h>
9671 sigjmp_buf env;
9672 int set = 1;
9673 main()
9674 {
9675         if (sigsetjmp(env,1))
9676                 exit(set);
9677         set = 0;
9678         siglongjmp(env, 1);
9679         exit(1);
9680 }
9681 EOP
9682         set try
9683         if eval $compile; then
9684                 if ./try >/dev/null 2>&1; then
9685                         echo "POSIX sigsetjmp found." >&4
9686                         val="$define"
9687                 else
9688                         $cat >&4 <<EOM
9689 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9690 I'll ignore them.
9691 EOM
9692                         val="$undef"
9693                 fi
9694         else
9695                 echo "sigsetjmp not found." >&4
9696                 val="$undef"
9697         fi
9698         ;;
9699 *) val="$d_sigsetjmp"
9700         case "$d_sigsetjmp" in
9701         $define) echo "POSIX sigsetjmp found." >&4;;
9702         $undef) echo "sigsetjmp not found." >&4;;
9703         esac
9704         ;;
9705 esac
9706 set d_sigsetjmp
9707 eval $setvar
9708 $rm -f try.c try
9709
9710 : see if stat knows about block sizes
9711 echo " "
9712 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9713 eval $hasfield
9714
9715 : see if _ptr and _cnt from stdio act std
9716 echo " "
9717 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9718         echo "(Looks like you have stdio.h from Linux.)"
9719         case "$stdio_ptr" in
9720         '') stdio_ptr='((fp)->_IO_read_ptr)'
9721                 ptr_lval=$define
9722                 ;;
9723         *)      ptr_lval=$d_stdio_ptr_lval;;
9724         esac
9725         case "$stdio_cnt" in
9726         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9727                 cnt_lval=$undef
9728                 ;;
9729         *)      cnt_lval=$d_stdio_cnt_lval;;
9730         esac
9731         case "$stdio_base" in
9732         '') stdio_base='((fp)->_IO_read_base)';;
9733         esac
9734         case "$stdio_bufsiz" in
9735         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9736         esac
9737 else
9738         case "$stdio_ptr" in
9739         '') stdio_ptr='((fp)->_ptr)'
9740                 ptr_lval=$define
9741                 ;;
9742         *)      ptr_lval=$d_stdio_ptr_lval;;
9743         esac
9744         case "$stdio_cnt" in
9745         '') stdio_cnt='((fp)->_cnt)'
9746                 cnt_lval=$define
9747                 ;;
9748         *)      cnt_lval=$d_stdio_cnt_lval;;
9749         esac
9750         case "$stdio_base" in
9751         '') stdio_base='((fp)->_base)';;
9752         esac
9753         case "$stdio_bufsiz" in
9754         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9755         esac
9756 fi
9757 : test whether _ptr and _cnt really work
9758 echo "Checking how std your stdio is..." >&4
9759 $cat >try.c <<EOP
9760 #include <stdio.h>
9761 #define FILE_ptr(fp)    $stdio_ptr
9762 #define FILE_cnt(fp)    $stdio_cnt
9763 main() {
9764         FILE *fp = fopen("try.c", "r");
9765         char c = getc(fp);
9766         if (
9767                 18 <= FILE_cnt(fp) &&
9768                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9769         )
9770                 exit(0);
9771         exit(1);
9772 }
9773 EOP
9774 val="$undef"
9775 set try
9776 if eval $compile; then
9777         if ./try; then
9778                 echo "Your stdio acts pretty std."
9779                 val="$define"
9780         else
9781                 echo "Your stdio isn't very std."
9782         fi
9783 else
9784         echo "Your stdio doesn't appear very std."
9785 fi
9786 $rm -f try.c try
9787 set d_stdstdio
9788 eval $setvar
9789
9790 : Can _ptr be used as an lvalue?
9791 case "$d_stdstdio$ptr_lval" in
9792 $define$define) val=$define ;;
9793 *) val=$undef ;;
9794 esac
9795 set d_stdio_ptr_lval
9796 eval $setvar
9797
9798 : Can _cnt be used as an lvalue?
9799 case "$d_stdstdio$cnt_lval" in
9800 $define$define) val=$define ;;
9801 *) val=$undef ;;
9802 esac
9803 set d_stdio_cnt_lval
9804 eval $setvar
9805
9806 : see if _base is also standard
9807 val="$undef"
9808 case "$d_stdstdio" in
9809 $define)
9810         $cat >try.c <<EOP
9811 #include <stdio.h>
9812 #define FILE_base(fp)   $stdio_base
9813 #define FILE_bufsiz(fp) $stdio_bufsiz
9814 main() {
9815         FILE *fp = fopen("try.c", "r");
9816         char c = getc(fp);
9817         if (
9818                 19 <= FILE_bufsiz(fp) &&
9819                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9820         )
9821                 exit(0);
9822         exit(1);
9823 }
9824 EOP
9825         set try
9826         if eval $compile; then
9827                 if ./try; then
9828                         echo "And its _base field acts std."
9829                         val="$define"
9830                 else
9831                         echo "But its _base field isn't std."
9832                 fi
9833         else
9834                 echo "However, it seems to be lacking the _base field."
9835         fi
9836         $rm -f try.c try
9837         ;;
9838 esac
9839 set d_stdiobase
9840 eval $setvar
9841
9842 : see if strcoll exists
9843 set strcoll d_strcoll
9844 eval $inlibc
9845
9846 : check for structure copying
9847 echo " "
9848 echo "Checking to see if your C compiler can copy structs..." >&4
9849 $cat >try.c <<'EOCP'
9850 int main()
9851 {
9852         struct blurfl {
9853                 int dyick;
9854         } foo, bar;
9855
9856         foo = bar;
9857 }
9858 EOCP
9859 if $cc -c try.c >/dev/null 2>&1 ; then
9860         val="$define"
9861         echo "Yup, it can."
9862 else
9863         val="$undef"
9864         echo "Nope, it can't."
9865 fi
9866 set d_strctcpy
9867 eval $setvar
9868 $rm -f try.*
9869
9870 : see if strerror and/or sys_errlist[] exist
9871 echo " "
9872 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
9873     if set strerror val -f d_strerror; eval $csym; $val; then
9874                 echo 'strerror() found.' >&4
9875                 d_strerror="$define"
9876                 d_strerrm='strerror(e)'
9877                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9878                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
9879                         d_syserrlst="$define"
9880                 else
9881                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
9882                         d_syserrlst="$undef"
9883                 fi
9884     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
9885                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
9886                 echo 'strerror() found in string header.' >&4
9887                 d_strerror="$define"
9888                 d_strerrm='strerror(e)'
9889                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9890                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
9891                                 d_syserrlst="$define"
9892                 else
9893                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
9894                         d_syserrlst="$undef"
9895                 fi
9896     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9897                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
9898                 d_strerror="$undef"
9899                 d_syserrlst="$define"
9900                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
9901     else
9902                 echo 'strerror() and sys_errlist[] NOT found.' >&4
9903                 d_strerror="$undef"
9904                 d_syserrlst="$undef"
9905                 d_strerrm='"unknown"'
9906     fi
9907 fi
9908
9909 : see if strtod exists
9910 set strtod d_strtod
9911 eval $inlibc
9912
9913 : see if strtol exists
9914 set strtol d_strtol
9915 eval $inlibc
9916
9917 : see if strtoul exists
9918 set strtoul d_strtoul
9919 eval $inlibc
9920
9921 : see if strxfrm exists
9922 set strxfrm d_strxfrm
9923 eval $inlibc
9924
9925 : see if symlink exists
9926 set symlink d_symlink
9927 eval $inlibc
9928
9929 : see if syscall exists
9930 set syscall d_syscall
9931 eval $inlibc
9932
9933 : see if sysconf exists
9934 set sysconf d_sysconf
9935 eval $inlibc
9936
9937 : see if system exists
9938 set system d_system
9939 eval $inlibc
9940
9941 : see if tcgetpgrp exists
9942 set tcgetpgrp d_tcgetpgrp
9943 eval $inlibc
9944
9945 : see if tcsetpgrp exists
9946 set tcsetpgrp d_tcsetpgrp
9947 eval $inlibc
9948
9949 : define an is-a-typedef? function
9950 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9951 case "$inclist" in
9952 "") inclist="sys/types.h";;
9953 esac;
9954 eval "varval=\$$var";
9955 case "$varval" in
9956 "")
9957         $rm -f temp.c;
9958         for inc in $inclist; do
9959                 echo "#include <$inc>" >>temp.c;
9960         done;
9961         echo "#ifdef $type" >> temp.c;
9962         echo "printf(\"We have $type\");" >> temp.c;
9963         echo "#endif" >> temp.c;
9964         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9965         if $contains $type temp.E >/dev/null 2>&1; then
9966                 eval "$var=\$type";
9967         else
9968                 eval "$var=\$def";
9969         fi;
9970         $rm -f temp.?;;
9971 *) eval "$var=\$varval";;
9972 esac'
9973
9974 : define an is-a-typedef? function that prompts if the type is not available.
9975 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9976 case "$inclist" in
9977 "") inclist="sys/types.h";;
9978 esac;
9979 eval "varval=\$$var";
9980 case "$varval" in
9981 "")
9982         $rm -f temp.c;
9983         for inc in $inclist; do
9984                 echo "#include <$inc>" >>temp.c;
9985         done;
9986         echo "#ifdef $type" >> temp.c;
9987         echo "printf(\"We have $type\");" >> temp.c;
9988         echo "#endif" >> temp.c;
9989         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9990         echo " " ;
9991         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
9992         if $contains $type temp.E >/dev/null 2>&1; then
9993                 echo "$type found." >&4;
9994                 eval "$var=\$type";
9995         else
9996                 echo "$type NOT found." >&4;
9997                 dflt="$def";
9998                 . ./myread ;
9999                 eval "$var=\$ans";
10000         fi;
10001         $rm -f temp.?;;
10002 *) eval "$var=\$varval";;
10003 esac'
10004
10005 : see if this is a sys/times.h system
10006 set sys/times.h i_systimes
10007 eval $inhdr
10008
10009 : see if times exists
10010 echo " "
10011 if set times val -f d_times; eval $csym; $val; then
10012         echo 'times() found.' >&4
10013         d_times="$define"
10014         inc=''
10015         case "$i_systimes" in
10016         "$define") inc='sys/times.h';;
10017         esac
10018         rp="What is the type returned by times() on this system?"
10019         set clock_t clocktype long stdio.h sys/types.h $inc
10020         eval $typedef_ask
10021 else
10022         echo 'times() NOT found, hope that will do.' >&4
10023         d_times="$undef"
10024         clocktype='int'
10025 fi
10026
10027 : see if truncate exists
10028 set truncate d_truncate
10029 eval $inlibc
10030
10031 : see if tzname[] exists
10032 echo " "
10033 if set tzname val -a d_tzname; eval $csym; $val; then
10034         val="$define"
10035         echo 'tzname[] found.' >&4
10036 else
10037         val="$undef"
10038         echo 'tzname[] NOT found.' >&4
10039 fi
10040 set d_tzname
10041 eval $setvar
10042
10043 : see if umask exists
10044 set umask d_umask
10045 eval $inlibc
10046
10047 : backward compatibility for d_hvfork
10048 if test X$d_hvfork != X; then
10049         d_vfork="$d_hvfork"
10050         d_hvfork=''
10051 fi
10052 : see if there is a vfork
10053 val=''
10054 set vfork val
10055 eval $inlibc
10056
10057 : Ok, but do we want to use it. vfork is reportedly unreliable in 
10058 : perl on Solaris 2.x, and probably elsewhere.
10059 case "$val" in
10060 $define)
10061         echo " "
10062         case "$usevfork" in
10063         false) dflt='n';;
10064         *) dflt='y';;
10065         esac
10066         rp="Some systems have problems with vfork().  Do you want to use it?"
10067         . ./myread
10068         case "$ans" in
10069         y|Y) ;;
10070         *)
10071                 echo "Ok, we won't use vfork()."
10072                 val="$undef"
10073                 ;;
10074         esac
10075         ;;
10076 esac
10077 set d_vfork
10078 eval $setvar
10079 case "$d_vfork" in
10080 $define) usevfork='true';;
10081 *) usevfork='false';;
10082 esac
10083
10084 : see if this is an sysdir system
10085 set sys/dir.h i_sysdir
10086 eval $inhdr
10087
10088 : see if this is an sysndir system
10089 set sys/ndir.h i_sysndir
10090 eval $inhdr
10091
10092 : see if sys/types.h has to be included
10093 set sys/types.h i_systypes
10094 eval $inhdr
10095
10096 : see if closedir exists
10097 set closedir d_closedir
10098 eval $inlibc
10099
10100 case "$d_closedir" in
10101 "$define")
10102         echo " "
10103         echo "Checking whether closedir() returns a status..." >&4
10104         cat > closedir.c <<EOM
10105 #$i_dirent I_DIRENT             /**/
10106 #$i_sysdir I_SYS_DIR            /**/
10107 #$i_sysndir I_SYS_NDIR          /**/
10108 #$i_systypes I_SYS_TYPES        /**/
10109
10110 #if defined(I_SYS_TYPES)
10111 #include <sys/types.h>
10112 #endif
10113 #if defined(I_DIRENT)
10114 #include <dirent.h>
10115 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10116 #include <sys/dir.h>
10117 #endif
10118 #else
10119 #ifdef I_SYS_NDIR
10120 #include <sys/ndir.h>
10121 #else
10122 #ifdef I_SYS_DIR
10123 #ifdef hp9000s500
10124 #include <ndir.h>       /* may be wrong in the future */
10125 #else
10126 #include <sys/dir.h>
10127 #endif
10128 #endif
10129 #endif
10130 #endif 
10131 int main() { return closedir(opendir(".")); }
10132 EOM
10133         set closedir
10134         if eval $compile_ok; then
10135                 if ./closedir > /dev/null 2>&1 ; then
10136                         echo "Yes, it does."
10137                         val="$undef"
10138                 else
10139                         echo "No, it doesn't."
10140                         val="$define"
10141                 fi
10142         else
10143                 echo "(I can't seem to compile the test program--assuming it doesn't)"
10144                 val="$define"
10145         fi
10146         ;;
10147 *)
10148         val="$undef";
10149         ;;
10150 esac
10151 set d_void_closedir
10152 eval $setvar
10153 $rm -f closedir*
10154 : check for volatile keyword
10155 echo " "
10156 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10157 $cat >try.c <<'EOCP'
10158 int main()
10159 {
10160         typedef struct _goo_struct goo_struct;
10161         goo_struct * volatile goo = ((goo_struct *)0);
10162         struct _goo_struct {
10163                 long long_int;
10164                 int reg_int;
10165                 char char_var;
10166         };
10167         typedef unsigned short foo_t;
10168         char *volatile foo;
10169         volatile int bar;
10170         volatile foo_t blech;
10171         foo = foo;
10172 }
10173 EOCP
10174 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10175         val="$define"
10176         echo "Yup, it does."
10177 else
10178         val="$undef"
10179         echo "Nope, it doesn't."
10180 fi
10181 set d_volatile
10182 eval $setvar
10183 $rm -f try.*
10184
10185 : see if there is a wait4
10186 set wait4 d_wait4
10187 eval $inlibc
10188
10189 : see if waitpid exists
10190 set waitpid d_waitpid
10191 eval $inlibc
10192
10193 : see if wcstombs exists
10194 set wcstombs d_wcstombs
10195 eval $inlibc
10196
10197 : see if wctomb exists
10198 set wctomb d_wctomb
10199 eval $inlibc
10200
10201 : see if writev exists
10202 set writev d_writev
10203 eval $inlibc
10204
10205 : preserve RCS keywords in files with variable substitution, grrr
10206 Date='$Date'
10207 Id='$Id'
10208 Log='$Log'
10209 RCSfile='$RCSfile'
10210 Revision='$Revision'
10211
10212 : check for alignment requirements
10213 echo " "
10214 case "$alignbytes" in
10215 '') echo "Checking alignment constraints..." >&4
10216         $cat >try.c <<'EOCP'
10217 struct foobar {
10218         char foo;
10219         double bar;
10220 } try;
10221 main()
10222 {
10223         printf("%d\n", (char *)&try.bar - (char *)&try.foo);
10224 }
10225 EOCP
10226         set try
10227         if eval $compile_ok; then
10228                 dflt=`./try`
10229         else
10230                 dflt='8'
10231                 echo "(I can't seem to compile the test program...)"
10232         fi
10233         ;;
10234 *) dflt="$alignbytes"
10235         ;;
10236 esac
10237 rp="Doubles must be aligned on a how-many-byte boundary?"
10238 . ./myread
10239 alignbytes="$ans"
10240 $rm -f try.c try
10241
10242 : check for ordering of bytes in a long
10243 case "$byteorder" in
10244 '')
10245         $cat <<'EOM'
10246   
10247 In the following, larger digits indicate more significance.  A big-endian
10248 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10249 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10250 machines may have weird orders like 3412.  A Cray will report 87654321. If
10251 the test program works the default is probably right.
10252 I'm now running the test program...
10253 EOM
10254         $cat >try.c <<'EOCP'
10255 #include <stdio.h>
10256 main()
10257 {
10258         int i;
10259         union {
10260                 unsigned long l;
10261                 char c[sizeof(long)];
10262         } u;
10263
10264         if (sizeof(long) > 4)
10265                 u.l = (0x08070605L << 32) | 0x04030201L;
10266         else
10267                 u.l = 0x04030201L;
10268         for (i = 0; i < sizeof(long); i++)
10269                 printf("%c", u.c[i]+'0');
10270         printf("\n");
10271         exit(0);
10272 }
10273 EOCP
10274         xxx_prompt=y
10275         set try
10276         if eval $compile && ./try > /dev/null; then
10277                 dflt=`./try`
10278                 case "$dflt" in
10279                 [1-4][1-4][1-4][1-4]|12345678|87654321)
10280                         echo "(The test program ran ok.)"
10281                         echo "byteorder=$dflt"
10282                         xxx_prompt=n
10283                         ;;
10284                 ????|????????) echo "(The test program ran ok.)" ;;
10285                 *) echo "(The test program didn't run right for some reason.)" ;;
10286                 esac
10287         else
10288                 dflt='4321'
10289                 cat <<'EOM'
10290 (I can't seem to compile the test program.  Guessing big-endian...)
10291 EOM
10292         fi
10293         case "$xxx_prompt" in
10294         y)
10295                 rp="What is the order of bytes in a long?"
10296                 . ./myread
10297                 byteorder="$ans"
10298                 ;;
10299         *)      byteorder=$dflt
10300                 ;;
10301         esac
10302         ;;
10303 esac
10304 $rm -f try.c try
10305
10306 : how do we catenate cpp tokens here?
10307 echo " "
10308 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10309 $cat >cpp_stuff.c <<'EOCP'
10310 #define RCAT(a,b)a/**/b
10311 #define ACAT(a,b)a ## b
10312 RCAT(Rei,ser)
10313 ACAT(Cir,cus)
10314 EOCP
10315 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10316 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10317         echo "Oh!  Smells like ANSI's been here." >&4
10318         echo "We can catify or stringify, separately or together!"
10319         cpp_stuff=42
10320 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10321         echo "Ah, yes!  The good old days!" >&4
10322         echo "However, in the good old days we don't know how to stringify and"
10323         echo "catify at the same time."
10324         cpp_stuff=1
10325 else
10326         $cat >&4 <<EOM
10327 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
10328 to have to edit the values of CAT[2-5] in config.h...
10329 EOM
10330         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10331 fi
10332 $rm -f cpp_stuff.*
10333
10334 : see if this is a db.h system
10335 set db.h i_db
10336 eval $inhdr
10337
10338 case "$i_db" in
10339 $define)
10340         : Check db version.
10341         echo " "
10342         echo "Checking Berkeley DB version ..." >&4
10343         $cat >try.c <<EOCP
10344 #$d_const HASCONST
10345 #ifndef HASCONST
10346 #define const
10347 #endif
10348 #include <sys/types.h>
10349 #include <stdio.h>
10350 #include <db.h>
10351 main()
10352 {
10353 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10354     int Major, Minor, Patch ;
10355     unsigned long Version ;
10356     (void)db_version(&Major, &Minor, &Patch) ;
10357     printf("You have Berkeley DB Version 2 or greater\n");
10358
10359     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10360                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10361     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10362                 Major, Minor, Patch) ;
10363
10364     /* check that db.h & libdb are compatible */
10365     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10366         printf("db.h and libdb are incompatible\n") ;
10367         exit(3);        
10368     }
10369
10370     printf("db.h and libdb are compatible\n") ;
10371
10372     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10373                 + DB_VERSION_PATCH ;
10374
10375     /* needs to be >= 2.3.4 */
10376     if (Version < 2003004) {
10377     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10378         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10379         exit(2);        
10380     }
10381
10382     exit(0);
10383 #else
10384 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10385     printf("You have Berkeley DB Version 1\n");
10386     exit(0);    /* DB version < 2: the coast is clear. */
10387 #else
10388     exit(1);    /* <db.h> not Berkeley DB? */
10389 #endif
10390 #endif
10391 }
10392 EOCP
10393         set try
10394         if eval $compile && ./try; then
10395                 echo 'Looks OK.' >&4
10396         else
10397                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
10398                 i_db=$undef
10399                 case " $libs " in
10400                 *"-ldb "*)
10401                         : Remove db from list of libraries to use
10402                         echo "Removing unusable -ldb from library list" >&4
10403                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10404                         shift
10405                         libs="$*"
10406                         echo "libs = $libs" >&4
10407                         ;;
10408                 esac
10409         fi
10410         $rm -f try.*
10411         ;;
10412 esac
10413
10414 case "$i_db" in
10415 define)
10416         : Check the return type needed for hash 
10417         echo " "
10418         echo "Checking return type needed for hash for Berkeley DB ..." >&4
10419         $cat >try.c <<EOCP
10420 #$d_const HASCONST
10421 #ifndef HASCONST
10422 #define const
10423 #endif
10424 #include <sys/types.h>
10425 #include <db.h>
10426
10427 #ifndef DB_VERSION_MAJOR
10428 u_int32_t hash_cb (ptr, size)
10429 const void *ptr;
10430 size_t size;
10431 {
10432 }
10433 HASHINFO info;
10434 main()
10435 {
10436         info.hash = hash_cb;
10437 }
10438 #endif
10439 EOCP
10440         if $cc $ccflags -c try.c >try.out 2>&1 ; then
10441                 if $contains warning try.out >>/dev/null 2>&1 ; then
10442                         db_hashtype='int'
10443                 else
10444                         db_hashtype='u_int32_t'
10445                 fi
10446         else
10447                 : XXX Maybe we should just give up here.
10448                 db_hashtype=u_int32_t
10449                 $cat try.out >&4
10450                 echo "Help:  I can't seem to compile the db test program." >&4
10451                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10452         fi
10453         $rm -f try.*
10454         echo "Your version of Berkeley DB uses $db_hashtype for hash."
10455         ;;
10456 *)      db_hashtype=u_int32_t
10457         ;;
10458 esac
10459 case "$i_db" in
10460 define)
10461         : Check the return type needed for prefix 
10462         echo " "
10463         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10464         cat >try.c <<EOCP
10465 #$d_const HASCONST
10466 #ifndef HASCONST
10467 #define const
10468 #endif
10469 #include <sys/types.h>
10470 #include <db.h>
10471
10472 #ifndef DB_VERSION_MAJOR
10473 size_t prefix_cb (key1, key2)
10474 const DBT *key1;
10475 const DBT *key2;
10476 {
10477 }
10478 BTREEINFO info;
10479 main()
10480 {
10481         info.prefix = prefix_cb;
10482 }
10483 #endif
10484 EOCP
10485         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
10486                 if $contains warning try.out >>/dev/null 2>&1 ; then
10487                         db_prefixtype='int'
10488                 else
10489                         db_prefixtype='size_t'
10490                 fi
10491         else
10492                 db_prefixtype='size_t'
10493                 : XXX Maybe we should just give up here.
10494                 $cat try.out >&4
10495                 echo "Help:  I can't seem to compile the db test program." >&4
10496                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10497         fi
10498         $rm -f try.*
10499         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10500         ;;
10501 *)      db_prefixtype='size_t'
10502         ;;
10503 esac
10504
10505 : check for void type
10506 echo " "
10507 echo "Checking to see how well your C compiler groks the void type..." >&4
10508 case "$voidflags" in
10509 '')
10510         $cat >try.c <<'EOCP'
10511 #if TRY & 1
10512 void sub() {
10513 #else
10514 sub() {
10515 #endif
10516         extern void moo();      /* function returning void */
10517         void (*goo)();          /* ptr to func returning void */
10518 #if TRY & 8
10519         void *hue;              /* generic ptr */
10520 #endif
10521 #if TRY & 2
10522         void (*foo[10])();
10523 #endif
10524
10525 #if TRY & 4
10526         if(goo == moo) {
10527                 exit(0);
10528         }
10529 #endif
10530         exit(0);
10531 }
10532 main() { sub(); }
10533 EOCP
10534         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10535                 voidflags=$defvoidused
10536         echo "Good.  It appears to support void to the level $package wants.">&4
10537                 if $contains warning .out >/dev/null 2>&1; then
10538                         echo "However, you might get some warnings that look like this:"
10539                         $cat .out
10540                 fi
10541         else
10542 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10543                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10544                         echo "It supports 1..."
10545                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10546                                 echo "It also supports 2..."
10547                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10548                                         voidflags=7
10549                                         echo "And it supports 4 but not 8 definitely."
10550                                 else
10551                                         echo "It doesn't support 4..."
10552                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10553                                                 voidflags=11
10554                                                 echo "But it supports 8."
10555                                         else
10556                                                 voidflags=3
10557                                                 echo "Neither does it support 8."
10558                                         fi
10559                                 fi
10560                         else
10561                                 echo "It does not support 2..."
10562                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10563                                         voidflags=13
10564                                         echo "But it supports 4 and 8."
10565                                 else
10566                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10567                                                 voidflags=5
10568                                                 echo "And it supports 4 but has not heard about 8."
10569                                         else
10570                                                 echo "However it supports 8 but not 4."
10571                                         fi
10572                                 fi
10573                         fi
10574                 else
10575                         echo "There is no support at all for void."
10576                         voidflags=0
10577                 fi
10578         fi
10579 esac
10580 case "$voidflags" in
10581 "$defvoidused") ;;
10582 *)      $cat >&4 <<'EOM'
10583   Support flag bits are:
10584     1: basic void declarations.
10585     2: arrays of pointers to functions returning void.
10586     4: operations between pointers to and addresses of void functions.
10587     8: generic void pointers.
10588 EOM
10589         dflt="$voidflags";
10590         rp="Your void support flags add up to what?"
10591         . ./myread
10592         voidflags="$ans"
10593         ;;
10594 esac
10595 $rm -f try.* .out
10596
10597
10598 : How can we generate normalized random numbers ?
10599 echo " "
10600 echo "Looking for a random number function..." >&4
10601 case "$randfunc" in
10602 '')
10603         if set drand48 val -f; eval $csym; $val; then
10604                 dflt="drand48"
10605                 echo "Good, found drand48()." >&4
10606         elif set random val -f; eval $csym; $val; then
10607                 dflt="random"
10608                 echo "OK, found random()." >&4
10609         else
10610                 dflt="rand"
10611                 echo "Yick, looks like I have to use rand()." >&4
10612         fi
10613         echo " "
10614         ;;
10615 *)
10616         dflt="$randfunc"
10617         ;;
10618 esac
10619 cont=true
10620
10621 case "$ccflags" in
10622 *-Dmy_rand=*|*-Dmy_srand=*)
10623         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10624         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10625         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10626         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10627         ;;
10628 esac
10629
10630 while $test "$cont"; do
10631         rp="Use which function to generate random numbers?"
10632         . ./myread
10633         if $test "$ans" = "$dflt"; then
10634                 : null
10635         else
10636                 randbits=''
10637         fi
10638         randfunc="$ans"
10639         if set $ans val -f; eval $csym; $val; then
10640                 cont=''
10641         else
10642                 dflt=y
10643                 rp="I cannot find function $ans. Use that name anyway?"
10644                 . ./myread
10645                 dflt=rand
10646                 case "$ans" in
10647                         [yY]*) cont='';;
10648                 esac
10649         fi
10650         case "$cont" in
10651         '')
10652                 case "$randfunc" in
10653                 drand48)
10654                         drand01="drand48()"
10655                         seedfunc="srand48"
10656                         randbits=48
10657                         randseedtype=long
10658                         ;;
10659                 rand|random)
10660                         case "$randbits" in
10661                         '')
10662 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10663                                 $cat >try.c <<EOCP
10664 #$i_unistd I_UNISTD
10665 #$i_stdlib I_STDLIB
10666 #include <stdio.h>
10667 #ifdef I_UNISTD
10668 #  include <unistd.h>
10669 #endif
10670 #ifdef I_STDLIB
10671 #  include <stdlib.h>
10672 #endif
10673 main()
10674 {
10675         register int i;
10676         register unsigned long tmp;
10677         register unsigned long max = 0L;
10678
10679         for (i = 1000; i; i--) {
10680                 tmp = (unsigned long) $randfunc();
10681                 if (tmp > max) max = tmp;
10682         }
10683         for (i = 0; max; i++)
10684                 max /= 2;
10685         printf("%d\n",i);
10686 }
10687 EOCP
10688                                 set try
10689                                 if eval $compile_ok; then
10690                                         dflt=`try`
10691                                 else
10692                                         dflt='?'
10693                                         echo "(I can't seem to compile the test program...)"
10694                                 fi
10695                                 ;;
10696                         *)
10697                                 dflt="$randbits"
10698                                 ;;
10699                         esac
10700                         rp="How many bits does your $randfunc() function produce?"
10701                         . ./myread
10702                         randbits="$ans"
10703                         $rm -f try.c try
10704                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10705                         seedfunc="s$randfunc"
10706                         randseedtype=unsigned
10707                         ;;
10708                 *)
10709                         dflt="31"
10710                         rp="How many bits does your $randfunc() function produce?"
10711                         . ./myread
10712                         randbits="$ans"
10713                         seedfunc="s$randfunc"
10714                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10715                         if set $seedfunc val -f; eval $csym; $val; then
10716                                 echo "(Using $seedfunc() to seed random generator)"
10717                         else
10718                                 echo "(Warning: no $seedfunc() to seed random generator)"
10719                                 seedfunc=rand
10720                         fi
10721                         randseedtype=unsigned
10722                         ;;
10723                 esac
10724                 ;;
10725         esac
10726 done
10727
10728 echo " "
10729 echo "Determining whether or not we are on an EBCDIC system..." >&4
10730 $cat >tebcdic.c <<'EOM'
10731 int main()
10732 {
10733   if ('M'==0xd4) return 0;
10734   return 1;
10735 }
10736 EOM
10737
10738 val=$undef
10739 set tebcdic
10740 if eval $compile_ok; then
10741         if ./tebcdic; then
10742                 echo "You have EBCDIC." >&4
10743                 val="$define"
10744         else
10745                 echo "Nope, no EBCDIC.  Assuming ASCII or some ISO Latin." >&4
10746         fi
10747 else
10748         echo "I'm unable to compile the test program." >&4
10749         echo "I'll assume ASCII or some ISO Latin." >&4
10750 fi
10751 $rm -f tebcdic.c tebcdic
10752 set ebcdic
10753 eval $setvar
10754
10755 : see what type file positions are declared as in the library
10756 rp="What is the type for file position used by fsetpos()?"
10757 set fpos_t fpostype long stdio.h sys/types.h
10758 eval $typedef_ask
10759
10760 : Store the full pathname to the sed program for use in the C program
10761 full_sed=$sed
10762
10763 : see what type gids are declared as in the kernel
10764 echo " "
10765 echo "Looking for the type for group ids returned by getgid()."
10766 set gid_t gidtype xxx stdio.h sys/types.h
10767 eval $typedef
10768 case "$gidtype" in
10769 xxx)
10770         xxx=`./findhdr sys/user.h`
10771         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
10772         case $1 in
10773         unsigned) dflt="$1 $2" ;;
10774         *) dflt="$1" ;;
10775         esac
10776         ;;
10777 *) dflt="$gidtype";;
10778 esac
10779 case "$gidtype" in
10780 gid_t) echo "gid_t found." ;;
10781 *)      rp="What is the type for group ids returned by getgid()?"
10782         . ./myread
10783         gidtype="$ans"
10784         ;;
10785 esac
10786
10787 : see if getgroups exists
10788 set getgroups d_getgrps
10789 eval $inlibc
10790
10791 : see if setgroups exists
10792 set setgroups d_setgrps
10793 eval $inlibc
10794
10795
10796 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
10797 echo " "
10798 case "$d_getgrps$d_setgrps" in
10799 *define*)
10800         case "$groupstype" in
10801         '') dflt="$gidtype" ;;
10802         *)  dflt="$groupstype" ;;
10803         esac
10804         $cat <<EOM
10805 What type of pointer is the second argument to getgroups() and setgroups()?
10806 Usually this is the same as group ids, $gidtype, but not always.
10807
10808 EOM
10809         rp='What type pointer is the second argument to getgroups() and setgroups()?'
10810         . ./myread
10811         groupstype="$ans"
10812         ;;
10813 *)  groupstype="$gidtype";;
10814 esac
10815
10816 : see what type lseek is declared as in the kernel
10817 rp="What is the type used for lseek's offset on this system?"
10818 set off_t lseektype long stdio.h sys/types.h
10819 eval $typedef_ask
10820
10821 echo " "
10822 $echo $n "Checking to see how big your file offsets are...$c" >&4
10823 $cat >try.c <<EOCP
10824 #include <sys/types.h>
10825 #include <stdio.h>
10826 int main()
10827 {
10828         printf("%d\n", sizeof($lseektype));
10829 }
10830 EOCP
10831 set try
10832 if eval $compile_ok; then
10833         lseeksize=`./try`
10834         $echo " $lseeksize bytes." >&4
10835 else
10836         dflt='4'
10837         echo " "
10838         echo "(I can't seem to compile the test program.  Guessing...)"
10839         rp="What is the size of your file offsets (in bytes)?"
10840         . ./myread
10841         lseeksize="$ans"
10842 fi
10843 $rm -f try.c try
10844
10845 echo " "
10846 echo "Checking if your $make program sets \$(MAKE)..." >&4
10847 case "$make_set_make" in
10848 '')
10849         $sed 's/^X //' > testmake.mak << 'EOF'
10850 Xall:
10851 X       @echo 'maketemp="$(MAKE)"'
10852 EOF
10853         case "`$make -f testmake.mak 2>/dev/null`" in
10854         *maketemp=*) make_set_make='#' ;;
10855         *)      make_set_make="MAKE=$make" ;;
10856         esac
10857         $rm -f testmake.mak
10858         ;;
10859 esac
10860 case "$make_set_make" in
10861 '#') echo "Yup, it does.";;
10862 *) echo "Nope, it doesn't.";;
10863 esac
10864
10865 : see what type is used for mode_t
10866 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
10867 set mode_t modetype int stdio.h sys/types.h
10868 eval $typedef_ask
10869
10870 : define a fucntion to check prototypes
10871 $cat > protochk <<EOSH
10872 $startsh
10873 cc="$cc"
10874 optimize="$optimize"
10875 ccflags="$ccflags"
10876 prototype="$prototype"
10877 define="$define"
10878 rm=$rm
10879 EOSH
10880
10881 $cat >> protochk <<'EOSH'
10882
10883 $rm -f try.c
10884 foo="$1"
10885 shift
10886 while test $# -ge 2; do
10887         case "$1" in
10888                 $define) echo "#include <$2>" >> try.c ;;
10889                 literal) echo "$2" >> try.c ;;
10890         esac
10891     shift 2
10892 done
10893 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
10894 cat >> try.c <<'EOCP'
10895 #ifdef CAN_PROTOTYPE
10896 #define _(args) args
10897 #else
10898 #define _(args) ()
10899 #endif
10900 EOCP
10901 echo "$foo" >> try.c
10902 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
10903 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
10904 status=$?
10905 $rm -f try.[co]
10906 exit $status
10907 EOSH
10908 chmod +x protochk
10909 $eunicefix protochk
10910
10911 : see what type is used for size_t
10912 rp="What is the type used for the length parameter for string functions?"
10913 set size_t sizetype 'unsigned int' stdio.h sys/types.h
10914 eval $typedef_ask
10915
10916 : check for type of arguments to gethostbyaddr. 
10917 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
10918         case "$d_gethbyaddr" in
10919         $define)
10920                 $cat <<EOM
10921
10922 Checking to see what type of arguments are accepted by gethostbyaddr().
10923 EOM
10924                 hdrs="$define sys/types.h
10925                         $d_socket sys/socket.h 
10926                         $i_niin netinet/in.h 
10927                         $i_netdb netdb.h
10928                         $i_unistd unistd.h"
10929                 : The first arg can 'char *' or 'void *'
10930                 : The second arg is some of integral type
10931                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
10932                         for yyy in size_t long int; do
10933                                 case "$netdb_host_type" in
10934                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
10935                                         if ./protochk "$try" $hdrs; then
10936                                                 echo "Your system accepts $xxx for the first arg."
10937                                                 echo "...and $yyy for the second arg."
10938                                                 netdb_host_type="$xxx"
10939                                                 netdb_hlen_type="$yyy"
10940                                         fi
10941                                         ;;
10942                                 esac
10943                         done
10944                 done
10945                 : In case none of those worked, prompt the user.
10946                 case "$netdb_host_type" in
10947                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
10948                         dflt='char *'
10949                         . ./myread
10950                         netdb_host_type=$ans
10951                         rp='What is the type for the 2nd argument to gethostbyaddr?'
10952                         dflt="$sizetype"
10953                         . ./myread
10954                         netdb_hlen_type=$ans
10955                         ;;
10956                 esac
10957                 ;;
10958         *)      : no gethostbyaddr, so pick harmless defaults
10959                 netdb_host_type='char *'
10960                 netdb_hlen_type="$sizetype"
10961                 ;;
10962         esac
10963         # Remove the "const" if needed. -- but then we'll have a 
10964         # prototype clash!
10965         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
10966 fi
10967
10968 : check for type of argument to gethostbyname. 
10969 if test "X$netdb_name_type" = X ; then
10970         case "$d_gethbyname" in
10971         $define)
10972                 $cat <<EOM
10973
10974 Checking to see what type of argument is accepted by gethostbyname().
10975 EOM
10976                 hdrs="$define sys/types.h
10977                         $d_socket sys/socket.h 
10978                         $i_niin netinet/in.h 
10979                         $i_netdb netdb.h
10980                         $i_unistd unistd.h"
10981                 for xxx in "const char *" "char *"; do
10982                         case "$netdb_name_type" in
10983                         '')     try="extern struct hostent *gethostbyname($xxx);"
10984                                 if ./protochk "$try" $hdrs; then
10985                                         echo "Your system accepts $xxx."
10986                                         netdb_name_type="$xxx"
10987                                 fi
10988                                 ;;
10989                         esac
10990                 done
10991                 : In case none of those worked, prompt the user.
10992                 case "$netdb_name_type" in
10993                 '')     rp='What is the type for the 1st argument to gethostbyname?'
10994                         dflt='char *'
10995                         . ./myread
10996                         netdb_name_type=$ans
10997                         ;;
10998                 esac
10999                 ;;
11000         *)      : no gethostbyname, so pick harmless default
11001                 netdb_name_type='char *'
11002                 ;;
11003         esac
11004 fi
11005
11006 : check for type of 1st argument to getnetbyaddr. 
11007 if test "X$netdb_net_type" = X ; then
11008         case "$d_getnbyaddr" in
11009         $define)
11010                 $cat <<EOM
11011
11012 Checking to see what type of 1st argument is accepted by getnetbyaddr().
11013 EOM
11014                 hdrs="$define sys/types.h
11015                         $d_socket sys/socket.h 
11016                         $i_niin netinet/in.h 
11017                         $i_netdb netdb.h
11018                         $i_unistd unistd.h"
11019                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11020                         case "$netdb_net_type" in
11021                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
11022                                 if ./protochk "$try" $hdrs; then
11023                                         echo "Your system accepts $xxx."
11024                                         netdb_net_type="$xxx"
11025                                 fi
11026                                 ;;
11027                         esac
11028                 done
11029                 : In case none of those worked, prompt the user.
11030                 case "$netdb_net_type" in
11031                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
11032                         dflt='long'
11033                         . ./myread
11034                         netdb_net_type=$ans
11035                         ;;
11036                 esac
11037                 ;;
11038         *)      : no getnetbyaddr, so pick harmless default
11039                 netdb_net_type='long'
11040                 ;;
11041         esac
11042 fi
11043 : locate the preferred pager for this system
11044 case "$pager" in
11045 '')
11046         dflt=''
11047         case "$pg" in
11048         /*) dflt=$pg;;
11049         esac
11050         case "$more" in
11051         /*) dflt=$more;;
11052         esac
11053         case "$less" in
11054         /*) dflt=$less;;
11055         esac
11056         case "$dflt" in
11057         '') dflt=/usr/ucb/more;;
11058         esac
11059         ;;
11060 *) dflt="$pager";;
11061 esac
11062 echo " "
11063 fn=f/
11064 rp='What pager is used on your system?'
11065 . ./getfile
11066 pager="$ans"
11067
11068 : see what type pids are declared as in the kernel
11069 rp="What is the type of process ids on this system?"
11070 set pid_t pidtype int stdio.h sys/types.h
11071 eval $typedef_ask
11072
11073 : check for length of pointer
11074 echo " "
11075 case "$ptrsize" in
11076 '')
11077         $echo $n "Checking to see how big your pointers are...$c" >&4
11078         if test "$voidflags" -gt 7; then
11079                 echo '#define VOID_PTR char *' > try.c
11080         else
11081                 echo '#define VOID_PTR void *' > try.c
11082         fi
11083         $cat >>try.c <<'EOCP'
11084 #include <stdio.h>
11085 main()
11086 {
11087         printf("%d\n", sizeof(VOID_PTR));
11088         exit(0);
11089 }
11090 EOCP
11091         set try
11092         if eval $compile_ok; then
11093                 ptrsize=`./try`
11094                 $echo " $ptrsize bytes." >&4
11095         else
11096                 dflt='4'
11097                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
11098                 rp="What is the size of a pointer (in bytes)?"
11099                 . ./myread
11100                 ptrsize="$ans"
11101         fi
11102         ;;
11103 esac
11104 $rm -f try.c try
11105
11106 : see if ar generates random libraries by itself
11107 echo " "
11108 echo "Checking how to generate random libraries on your machine..." >&4
11109 echo 'int bar1() { return bar2(); }' > bar1.c
11110 echo 'int bar2() { return 2; }' > bar2.c
11111 $cat > foo.c <<'EOP'
11112 main() { printf("%d\n", bar1()); exit(0); }
11113 EOP
11114 $cc $ccflags -c bar1.c >/dev/null 2>&1
11115 $cc $ccflags -c bar2.c >/dev/null 2>&1
11116 $cc $ccflags -c foo.c >/dev/null 2>&1
11117 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11118 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11119         ./foobar >/dev/null 2>&1; then
11120         echo "$ar appears to generate random libraries itself."
11121         orderlib=false
11122         ranlib=":"
11123 elif $ar ts bar$_a >/dev/null 2>&1 &&
11124         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11125         ./foobar >/dev/null 2>&1; then
11126                 echo "a table of contents needs to be added with '$ar ts'."
11127                 orderlib=false
11128                 ranlib="$ar ts"
11129 else
11130         case "$ranlib" in
11131         :) ranlib='';;
11132         '')
11133                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11134                 $test -f $ranlib || ranlib=''
11135                 ;;
11136         esac
11137         if $test -n "$ranlib"; then
11138                 echo "your system has '$ranlib'; we'll use that."
11139                 orderlib=false
11140         else
11141                 echo "your system doesn't seem to support random libraries"
11142                 echo "so we'll use lorder and tsort to order the libraries."
11143                 orderlib=true
11144                 ranlib=":"
11145         fi
11146 fi
11147 $rm -f foo* bar* 
11148
11149 : check for type of arguments to select. 
11150 case "$selecttype" in
11151 '') case "$d_select" in
11152         $define)
11153                 $cat <<EOM
11154 Checking to see what type of arguments are accepted by select().
11155 EOM
11156                 hdrs="$define sys/types.h
11157                         $i_systime sys/time.h 
11158                         $i_sysselct sys/select.h
11159                         $d_socket sys/socket.h"
11160                 : The first arg can be int, unsigned, or size_t
11161                 : The last arg may or may not be 'const'
11162                 val=''
11163                 : void pointer has been seen but using that
11164                 : breaks the selectminbits test
11165                 for xxx in 'fd_set *' 'int *'; do
11166                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11167                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
11168                                         case "$val" in
11169                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11170                                                 if ./protochk "$try" $hdrs; then
11171                                                         echo "Your system accepts $xxx."
11172                                                         val="$xxx"
11173                                                 fi
11174                                                 ;;
11175                                         esac
11176                                 done
11177                         done
11178                 done
11179                 case "$val" in
11180                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11181                         case "$d_fd_set" in
11182                                 $define) dflt="fd_set *" ;;
11183                                 *)              dflt="int *" ;;
11184                         esac
11185                         . ./myread
11186                         val=$ans
11187                         ;;
11188                 esac
11189                 selecttype="$val"
11190                 ;;
11191         *)      : no select, so pick a harmless default
11192                 selecttype='int *'
11193                 ;;
11194         esac
11195         ;;
11196 esac
11197
11198 : check for the select 'width'
11199 case "$selectminbits" in
11200 '') case "$d_select" in
11201         $define)
11202                 $cat <<EOM
11203
11204 Checking to see on how many bits at a time your select() operates...
11205 EOM
11206                 $cat >try.c <<EOCP
11207 #include <sys/types.h>
11208 #$i_time I_TIME
11209 #$i_systime I_SYS_TIME
11210 #$i_systimek I_SYS_TIME_KERNEL
11211 #ifdef I_TIME
11212 #   include <time.h>
11213 #endif
11214 #ifdef I_SYS_TIME
11215 #   ifdef I_SYS_TIME_KERNEL
11216 #       define KERNEL
11217 #   endif
11218 #   include <sys/time.h>
11219 #   ifdef I_SYS_TIME_KERNEL
11220 #       undef KERNEL
11221 #   endif
11222 #endif
11223 #$i_sysselct I_SYS_SELECT
11224 #ifdef I_SYS_SELECT
11225 #include <sys/select.h>
11226 #endif
11227 #include <stdio.h>
11228 $selecttype b;
11229 #define S sizeof(*(b))
11230 #define MINBITS 64
11231 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11232 #define NBITS  (NBYTES * 8)
11233 int main() {
11234     char s[NBYTES];
11235     struct timeval t;
11236     int i;
11237     FILE* fp;
11238     int fd;
11239
11240     fclose(stdin);
11241     fp = fopen("try.c", "r");
11242     if (fp == 0)
11243       exit(1);
11244     fd = fileno(fp);
11245     if (fd < 0)
11246       exit(2);
11247     b = ($selecttype)s;
11248     for (i = 0; i < NBITS; i++)
11249         FD_SET(i, b);
11250     t.tv_sec  = 0;
11251     t.tv_usec = 0;
11252     select(fd + 1, b, 0, 0, &t);
11253     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11254     printf("%d\n", i + 1);
11255     return 0;
11256 }
11257 EOCP
11258                 set try
11259                 if eval $compile_ok; then
11260                         selectminbits=`./try`
11261                         case "$selectminbits" in
11262                         '')     cat >&4 <<EOM
11263 Cannot figure out on how many bits at a time your select() operates.
11264 I'll play safe and guess it is 32 bits.
11265 EOM
11266                                 selectminbits=32
11267                                 bits="32 bits"
11268                                 ;;
11269                         1)      bits="1 bit" ;;
11270                         *)      bits="$selectminbits bits" ;;
11271                         esac
11272                         echo "Your select() operates on $bits at a time." >&4
11273                 else
11274                         rp='What is the minimum number of bits your select() operates on?'
11275                         case "$byteorder" in
11276                         1234|12345678)  dflt=32 ;;
11277                         *)              dflt=1  ;;
11278                         esac
11279                         . ./myread
11280                         val=$ans
11281                         selectminbits="$val"
11282                 fi
11283                 $rm -f try.* try
11284                 ;;
11285         *)      : no select, so pick a harmless default
11286                 selectminbits='32'
11287                 ;;
11288         esac
11289         ;;
11290 esac
11291
11292 : Trace out the files included by signal.h, then look for SIGxxx names.
11293 : Remove SIGARRAYSIZE used by HPUX.
11294 : Remove SIGTYP void lines used by OS2.
11295 xxx=`echo '#include <signal.h>' |
11296         $cppstdin $cppminus $cppflags 2>/dev/null |
11297         $grep '^[       ]*#.*include' | 
11298         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11299 : Check this list of files to be sure we have parsed the cpp output ok.
11300 : This will also avoid potentially non-existent files, such 
11301 : as ../foo/bar.h
11302 xxxfiles=''
11303 for xx in $xxx /dev/null ; do
11304         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11305 done
11306 : If we have found no files, at least try signal.h
11307 case "$xxxfiles" in
11308 '')     xxxfiles=`./findhdr signal.h` ;;
11309 esac
11310 xxx=`awk '
11311 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
11312         print substr($2, 4, 20)
11313 }
11314 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11315         print substr($3, 4, 20)
11316 }' $xxxfiles`
11317 : Append some common names just in case the awk scan failed.
11318 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11319 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11320 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11321 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11322 : generate a few handy files for later
11323 $cat > signal.c <<'EOCP'
11324 #include <sys/types.h>
11325 #include <signal.h>
11326 #include <stdio.h>
11327 int main() {
11328
11329 /* Strange style to avoid deeply-nested #if/#else/#endif */
11330 #ifndef NSIG
11331 #  ifdef _NSIG
11332 #    define NSIG (_NSIG)
11333 #  endif
11334 #endif
11335
11336 #ifndef NSIG
11337 #  ifdef SIGMAX
11338 #    define NSIG (SIGMAX+1)
11339 #  endif
11340 #endif
11341
11342 #ifndef NSIG
11343 #  ifdef SIG_MAX
11344 #    define NSIG (SIG_MAX+1)
11345 #  endif
11346 #endif
11347
11348 #ifndef NSIG
11349 #  ifdef MAXSIG
11350 #    define NSIG (MAXSIG+1)
11351 #  endif
11352 #endif
11353
11354 #ifndef NSIG
11355 #  ifdef MAX_SIG
11356 #    define NSIG (MAX_SIG+1)
11357 #  endif
11358 #endif
11359
11360 #ifndef NSIG
11361 #  ifdef SIGARRAYSIZE
11362 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11363 #  endif
11364 #endif
11365
11366 #ifndef NSIG
11367 #  ifdef _sys_nsig
11368 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
11369 #  endif
11370 #endif
11371
11372 /* Default to some arbitrary number that's big enough to get most
11373    of the common signals.
11374 */
11375 #ifndef NSIG
11376 #    define NSIG 50
11377 #endif
11378
11379 printf("NSIG %d\n", NSIG);
11380
11381 #ifndef JUST_NSIG
11382
11383 EOCP
11384
11385 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11386 {
11387         printf "#ifdef SIG"; printf $1; printf "\n"
11388         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11389         printf $1; printf ");\n"
11390         printf "#endif\n"
11391 }
11392 END {
11393         printf "#endif /* JUST_NSIG */\n";
11394         printf "}\n";
11395 }
11396 ' >>signal.c
11397 $cat >signal.awk <<'EOP'
11398 BEGIN { ndups = 0 }
11399 $1 ~ /^NSIG$/ { nsig = $2 }
11400 ($1 !~ /^NSIG$/) && (NF == 2) {
11401     if ($2 > maxsig) { maxsig = $2 }
11402     if (sig_name[$2]) {
11403         dup_name[ndups] = $1
11404         dup_num[ndups] = $2
11405         ndups++ 
11406     }
11407     else {
11408         sig_name[$2] = $1
11409         sig_num[$2] = $2
11410     }
11411
11412 }
11413 END { 
11414     if (nsig == 0) { nsig = maxsig + 1 }
11415         for (n = 1; n < nsig; n++) {
11416                 if (sig_name[n]) {
11417                         printf("%s %d\n", sig_name[n], sig_num[n])
11418                 }
11419                 else {
11420                         printf("NUM%d %d\n", n, n) 
11421                 }
11422         }
11423     for (n = 0; n < ndups; n++) {
11424                 printf("%s %d\n", dup_name[n], dup_num[n])
11425     }
11426 }
11427 EOP
11428 $cat >signal_cmd <<EOS
11429 $startsh
11430 if $test -s signal.lst; then
11431     echo "Using your existing signal.lst file"
11432         exit 0
11433 fi
11434 xxx="$xxx"
11435 EOS
11436 $cat >>signal_cmd <<'EOS'
11437
11438 set signal
11439 if eval $compile_ok; then
11440         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11441 else
11442         echo "(I can't seem be able to compile the whole test program)" >&4
11443         echo "(I'll try it in little pieces.)" >&4
11444         set signal -DJUST_NSIG
11445         if eval $compile_ok; then
11446                 ./signal$_exe > signal.nsg
11447                 $cat signal.nsg
11448         else
11449                 echo "I can't seem to figure out how many signals you have." >&4
11450                 echo "Guessing 50." >&4
11451                 echo 'NSIG 50' > signal.nsg
11452         fi
11453         : Now look at all the signal names, one at a time.
11454         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11455                 $cat > signal.c <<EOCP
11456 #include <sys/types.h>
11457 #include <signal.h>
11458 #include <stdio.h>
11459 int main() {
11460 printf("$xx %d\n", SIG${xx});
11461 return 0;
11462 }
11463 EOCP
11464                 set signal
11465                 if eval $compile; then
11466                         echo "SIG${xx} found."
11467                         ./signal$_exe  >> signal.ls1
11468                 else
11469                         echo "SIG${xx} NOT found."
11470                 fi
11471         done
11472         if $test -s signal.ls1; then
11473                 $cat signal.nsg signal.ls1 |
11474                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11475         fi
11476
11477 fi
11478 if $test -s signal.lst; then
11479         :
11480 else
11481         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11482         echo 'kill -l' >signal
11483         set X `csh -f <signal`
11484         $rm -f signal
11485         shift
11486         case $# in
11487         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11488         esac
11489         echo $@ | $tr ' ' $trnl | \
11490                 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
11491 fi
11492 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11493 EOS
11494 chmod a+x signal_cmd
11495 $eunicefix signal_cmd
11496
11497 : generate list of signal names
11498 echo " "
11499 case "$sig_name_init" in
11500 '') doinit=yes ;;
11501 *)  case "$sig_num_init" in
11502     ''|*,*) doinit=yes ;;
11503     esac ;;
11504 esac
11505 case "$doinit" in
11506 yes)
11507         echo "Generating a list of signal names and numbers..." >&4
11508         . ./signal_cmd
11509         sig_name=`$awk '{printf "%s ", $1}' signal.lst`
11510         sig_name="ZERO $sig_name"
11511         sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
11512                                                 { printf "\"%s\", ", $1 }
11513                                                 END { printf "0\n" }' signal.lst`
11514         sig_num=`$awk '{printf "%d ", $2}' signal.lst`
11515         sig_num="0 $sig_num"
11516         sig_num_init=`$awk 'BEGIN { printf "0, " }
11517                                         { printf "%d, ", $2}
11518                                         END { printf "0\n"}' signal.lst`
11519         ;;
11520 esac
11521 echo "The following signals are available:"
11522 echo " "
11523 echo $sig_name | $awk \
11524 'BEGIN { linelen = 0 }
11525 {
11526         for (i = 1; i <= NF; i++) {
11527                 name = "SIG" $i " "
11528                 linelen = linelen + length(name)
11529                 if (linelen > 70) {
11530                         printf "\n"
11531                         linelen = length(name)
11532                 }
11533                 printf "%s", name
11534         }
11535         printf "\n"
11536 }'
11537 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
11538
11539 : see what type is used for signed size_t
11540 set ssize_t ssizetype int stdio.h sys/types.h
11541 eval $typedef
11542 dflt="$ssizetype"
11543 $cat > ssize.c <<EOM
11544 #include <stdio.h>
11545 #include <sys/types.h>
11546 #define Size_t $sizetype
11547 #define SSize_t $dflt
11548 main()
11549 {
11550         if (sizeof(Size_t) == sizeof(SSize_t))
11551                 printf("$dflt\n");
11552         else if (sizeof(Size_t) == sizeof(int))
11553                 printf("int\n");
11554         else 
11555                 printf("long\n");
11556         exit(0);
11557 }
11558 EOM
11559 echo " "
11560 set ssize
11561 if eval $compile_ok && ./ssize > /dev/null; then
11562         ssizetype=`./ssize`
11563         echo "I'll be using $ssizetype for functions returning a byte count." >&4
11564 else
11565         $cat >&4 <<EOM
11566 Help! I can't compile and run the ssize_t test program: please enlighten me!
11567 (This is probably a misconfiguration in your system or libraries, and
11568 you really ought to fix it.  Still, I'll try anyway.)
11569
11570 I need a type that is the same size as $sizetype, but is guaranteed to
11571 be signed.  Common values are ssize_t, int and long.
11572
11573 EOM
11574         rp="What signed type is the same size as $sizetype?"
11575         . ./myread
11576         ssizetype="$ans"
11577 fi
11578 $rm -f ssize ssize.*
11579
11580 : see what type of char stdio uses.
11581 echo " "
11582 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11583         echo "Your stdio uses unsigned chars." >&4
11584         stdchar="unsigned char"
11585 else
11586         echo "Your stdio uses signed chars." >&4
11587         stdchar="char"
11588 fi
11589
11590 : see if time exists
11591 echo " "
11592 if test "X$d_time" = X -o X"$timetype" = X; then
11593     if set time val -f d_time; eval $csym; $val; then
11594                 echo 'time() found.' >&4
11595                 val="$define"
11596                 rp="What is the type returned by time() on this system?"
11597                 set time_t timetype long stdio.h sys/types.h
11598                 eval $typedef_ask
11599     else
11600                 echo 'time() not found, hope that will do.' >&4
11601                 val="$undef"
11602                 timetype='int';
11603     fi
11604     set d_time
11605     eval $setvar
11606 fi
11607
11608 : see what type uids are declared as in the kernel
11609 echo " "
11610 echo "Looking for the type for user ids returned by getuid()."
11611 set uid_t uidtype xxx stdio.h sys/types.h
11612 eval $typedef
11613 case "$uidtype" in
11614 xxx)
11615         xxx=`./findhdr sys/user.h`
11616         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
11617         case $1 in
11618         unsigned) dflt="$1 $2" ;;
11619         *) dflt="$1" ;;
11620         esac
11621         ;;
11622 *) dflt="$uidtype";;
11623 esac
11624 case "$uidtype" in
11625 uid_t)  echo "uid_t found." ;;
11626 *)      rp="What is the type for user ids returned by getuid()?"
11627         . ./myread
11628         uidtype="$ans"
11629         ;;
11630 esac
11631
11632 : see if dbm.h is available
11633 : see if dbmclose exists
11634 set dbmclose d_dbmclose
11635 eval $inlibc
11636
11637 case "$d_dbmclose" in
11638 $define)
11639         set dbm.h i_dbm
11640         eval $inhdr
11641         case "$i_dbm" in
11642         $define)
11643                 val="$undef"
11644                 set i_rpcsvcdbm
11645                 eval $setvar
11646                 ;;
11647         *)      set rpcsvc/dbm.h i_rpcsvcdbm
11648                 eval $inhdr
11649                 ;;
11650         esac
11651         ;;
11652 *)      echo "We won't be including <dbm.h>"
11653         val="$undef"
11654         set i_dbm
11655         eval $setvar
11656         val="$undef"
11657         set i_rpcsvcdbm
11658         eval $setvar
11659         ;;
11660 esac
11661
11662 : see if this is a sys/file.h system
11663 val=''
11664 set sys/file.h val
11665 eval $inhdr
11666
11667 : do we need to include sys/file.h ?
11668 case "$val" in
11669 "$define")
11670         echo " "
11671         if $h_sysfile; then
11672                 val="$define"
11673                 echo "We'll be including <sys/file.h>." >&4
11674         else
11675                 val="$undef"
11676                 echo "We won't be including <sys/file.h>." >&4
11677         fi
11678         ;;
11679 *)
11680         h_sysfile=false
11681         ;;
11682 esac
11683 set i_sysfile
11684 eval $setvar
11685
11686 : see if fcntl.h is there
11687 val=''
11688 set fcntl.h val
11689 eval $inhdr
11690
11691 : see if we can include fcntl.h
11692 case "$val" in
11693 "$define")
11694         echo " "
11695         if $h_fcntl; then
11696                 val="$define"
11697                 echo "We'll be including <fcntl.h>." >&4
11698         else
11699                 val="$undef"
11700                 if $h_sysfile; then
11701         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11702                 else
11703                         echo "We won't be including <fcntl.h>." >&4
11704                 fi
11705         fi
11706         ;;
11707 *)
11708         h_fcntl=false
11709         val="$undef"
11710         ;;
11711 esac
11712 set i_fcntl
11713 eval $setvar
11714
11715 : see if locale.h is available
11716 set locale.h i_locale
11717 eval $inhdr
11718
11719 : see if mach cthreads are available
11720 if test "X$usethreads" = "X$define"; then
11721         set mach/cthreads.h i_machcthr
11722         eval $inhdr
11723 else
11724         i_machcthr="$undef"
11725 fi
11726
11727
11728
11729 : see if this is a math.h system
11730 set math.h i_math
11731 eval $inhdr
11732
11733 : see if this is a mntent.h system
11734 set mntent.h i_mntent
11735 eval $inhdr
11736
11737 : see if ndbm.h is available
11738 set ndbm.h t_ndbm
11739 eval $inhdr
11740 case "$t_ndbm" in
11741 $define)
11742         : see if dbm_open exists
11743         set dbm_open d_dbm_open
11744         eval $inlibc
11745         case "$d_dbm_open" in
11746         $undef)
11747                 t_ndbm="$undef"
11748                 echo "We won't be including <ndbm.h>"
11749                 ;;
11750         esac
11751         ;;
11752 esac
11753 val="$t_ndbm"
11754 set i_ndbm
11755 eval $setvar
11756
11757 : see if net/errno.h is available
11758 val=''
11759 set net/errno.h val
11760 eval $inhdr
11761
11762 : Unfortunately, it causes problems on some systems.  Arrgh.
11763 case "$val" in
11764 $define)
11765         cat > try.c <<'EOM'
11766 #include <stdio.h>
11767 #include <errno.h>
11768 #include <net/errno.h>
11769 int func()
11770 {
11771         return ENOTSOCK;
11772 }
11773 EOM
11774         if $cc $ccflags -c try.c >/dev/null 2>&1; then
11775                 echo "We'll be including <net/errno.h>." >&4
11776         else
11777                 echo "We won't be including <net/errno.h>." >&4
11778                 val="$undef"
11779         fi
11780         $rm -f try.* try
11781         ;;
11782 esac
11783 set i_neterrno
11784 eval $setvar
11785
11786 : see if this is a poll.h system
11787 set poll.h i_poll
11788 eval $inhdr
11789
11790 : get C preprocessor symbols handy
11791 echo " "
11792 $echo $n "Hmm... $c"
11793 echo $al | $tr ' ' $trnl >Cppsym.know
11794 $cat <<EOSS >Cppsym
11795 $startsh
11796 case "\$1" in
11797 -l) list=true
11798         shift
11799         ;;
11800 esac
11801 unknown=''
11802 case "\$list\$#" in
11803 1|2)
11804         for sym do
11805                 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
11806                         exit 0
11807                 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
11808                         :
11809                 else
11810                         unknown="\$unknown \$sym"
11811                 fi
11812         done
11813         set X \$unknown
11814         shift
11815         ;;
11816 esac
11817 case \$# in
11818 0) exit 1;;
11819 esac
11820 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
11821 #ifdef \1\\
11822 exit 0; _ _ _ _\1\\      \1\\
11823 #endif\\
11824 /' >Cppsym\$\$
11825 echo "exit 1; _ _ _" >>Cppsym\$\$
11826 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _'  >Cppsym2\$\$
11827 case "\$list" in
11828 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
11829 *)
11830         sh Cppsym2\$\$
11831         status=\$?
11832         ;;
11833 esac
11834 $rm -f Cppsym\$\$ Cppsym2\$\$
11835 exit \$status
11836 EOSS
11837 chmod +x Cppsym
11838 $eunicefix Cppsym
11839 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
11840
11841 : now check the C compiler for additional symbols
11842 $cat >ccsym <<EOS
11843 $startsh
11844 $cat >tmp.c <<EOF
11845 extern int foo;
11846 EOF
11847 for i in \`$cc -v -c tmp.c 2>&1\`
11848 do
11849         case "\$i" in
11850         -D*) echo "\$i" | $sed 's/^-D//';;
11851         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
11852         esac
11853 done
11854 $rm -f try.c
11855 EOS
11856 chmod +x ccsym
11857 $eunicefix ccsym
11858 ./ccsym > ccsym1.raw
11859 if $test -s ccsym1.raw; then
11860        $sort ccsym1.raw | $uniq >ccsym.raw
11861 else
11862        mv ccsym1.raw ccsym.raw
11863 fi
11864
11865 $awk '/\=/ { print $0; next }
11866         { print $0"=1" }' ccsym.raw >ccsym.list
11867 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
11868 $comm -13 ccsym.true ccsym.list >ccsym.own
11869 $comm -12 ccsym.true ccsym.list >ccsym.com
11870 $comm -23 ccsym.true ccsym.list >ccsym.cpp
11871 also=''
11872 symbols='symbols'
11873 if $test -z ccsym.raw; then
11874         echo "Your C compiler doesn't seem to define any symbol!" >&4
11875         echo " "
11876         echo "However, your C preprocessor defines the following ones:"
11877         $cat Cppsym.true
11878 else
11879         if $test -s ccsym.com; then
11880                 echo "Your C compiler and pre-processor define these symbols:"
11881                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
11882                 also='also '
11883                 symbols='ones'
11884                 $test "$silent" || sleep 1
11885         fi
11886         if $test -s ccsym.cpp; then
11887                 $test "$also" && echo " "
11888                 echo "Your C pre-processor ${also}defines the following $symbols:"
11889                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
11890                 also='further '
11891                 $test "$silent" || sleep 1
11892         fi
11893         if $test -s ccsym.own; then
11894                 $test "$also" && echo " "
11895                 echo "Your C compiler ${also}defines the following cpp variables:"
11896                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
11897                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
11898                 $test "$silent" || sleep 1
11899         fi
11900 fi
11901 $rm -f ccsym*
11902
11903 : see if this is a termio system
11904 val="$undef"
11905 val2="$undef"
11906 val3="$undef"
11907 if $test `./findhdr termios.h`; then
11908         set tcsetattr i_termios
11909         eval $inlibc
11910         val3="$i_termios"
11911 fi
11912 echo " "
11913 case "$val3" in
11914 "$define") echo "You have POSIX termios.h... good!" >&4;;
11915 *) if ./Cppsym pyr; then
11916                 case "`/bin/universe`" in
11917                 ucb) if $test `./findhdr sgtty.h`; then
11918                                 val2="$define"
11919                                 echo "<sgtty.h> found." >&4
11920                         else
11921                                 echo "System is pyramid with BSD universe."
11922                                 echo "<sgtty.h> not found--you could have problems." >&4
11923                         fi;;
11924                 *) if $test `./findhdr termio.h`; then
11925                                 val="$define"
11926                                 echo "<termio.h> found." >&4
11927                         else
11928                                 echo "System is pyramid with USG universe."
11929                                 echo "<termio.h> not found--you could have problems." >&4
11930                         fi;;
11931                 esac
11932         elif ./usg; then
11933                 if $test `./findhdr termio.h`; then
11934                         echo "<termio.h> found." >&4
11935                         val="$define"
11936                 elif $test `./findhdr sgtty.h`; then
11937                         echo "<sgtty.h> found." >&4
11938                         val2="$define"
11939                 else
11940 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
11941                 fi
11942         else
11943                 if $test `./findhdr sgtty.h`; then
11944                         echo "<sgtty.h> found." >&4
11945                         val2="$define"
11946                 elif $test `./findhdr termio.h`; then
11947                         echo "<termio.h> found." >&4
11948                         val="$define"
11949                 else
11950 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
11951                 fi
11952         fi;;
11953 esac
11954 set i_termio; eval $setvar
11955 val=$val2; set i_sgtty; eval $setvar
11956 val=$val3; set i_termios; eval $setvar
11957
11958 : see if stdarg is available
11959 echo " "
11960 if $test `./findhdr stdarg.h`; then
11961         echo "<stdarg.h> found." >&4
11962         valstd="$define"
11963 else
11964         echo "<stdarg.h> NOT found." >&4
11965         valstd="$undef"
11966 fi
11967
11968 : see if varags is available
11969 echo " "
11970 if $test `./findhdr varargs.h`; then
11971         echo "<varargs.h> found." >&4
11972 else
11973         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
11974 fi
11975
11976 : set up the varargs testing programs
11977 $cat > varargs.c <<EOP
11978 #ifdef I_STDARG
11979 #include <stdarg.h>
11980 #endif
11981 #ifdef I_VARARGS
11982 #include <varargs.h>
11983 #endif
11984
11985 #ifdef I_STDARG
11986 int f(char *p, ...)
11987 #else
11988 int f(va_alist)
11989 va_dcl
11990 #endif
11991 {
11992         va_list ap;
11993 #ifndef I_STDARG
11994         char *p;
11995 #endif
11996 #ifdef I_STDARG
11997         va_start(ap,p);
11998 #else
11999         va_start(ap);
12000         p = va_arg(ap, char *);
12001 #endif
12002         va_end(ap);
12003 }
12004 EOP
12005 $cat > varargs <<EOP
12006 $startsh
12007 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
12008         echo "true"
12009 else
12010         echo "false"
12011 fi
12012 $rm -f varargs$_o
12013 EOP
12014 chmod +x varargs
12015
12016 : now check which varargs header should be included
12017 echo " "
12018 i_varhdr=''
12019 case "$valstd" in
12020 "$define")
12021         if `./varargs I_STDARG`; then
12022                 val='stdarg.h'
12023         elif `./varargs I_VARARGS`; then
12024                 val='varargs.h'
12025         fi
12026         ;;
12027 *)
12028         if `./varargs I_VARARGS`; then
12029                 val='varargs.h'
12030         fi
12031         ;;
12032 esac
12033 case "$val" in
12034 '')
12035 echo "I could not find the definition for va_dcl... You have problems..." >&4
12036         val="$undef"; set i_stdarg; eval $setvar
12037         val="$undef"; set i_varargs; eval $setvar
12038         ;;
12039 *) 
12040         set i_varhdr
12041         eval $setvar
12042         case "$i_varhdr" in
12043         stdarg.h)
12044                 val="$define"; set i_stdarg; eval $setvar
12045                 val="$undef"; set i_varargs; eval $setvar
12046                 ;;
12047         varargs.h)
12048                 val="$undef"; set i_stdarg; eval $setvar
12049                 val="$define"; set i_varargs; eval $setvar
12050                 ;;
12051         esac
12052         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12053 esac
12054 $rm -f varargs*
12055
12056 : see if stddef is available
12057 set stddef.h i_stddef
12058 eval $inhdr
12059
12060 : see if sys/access.h is available
12061 set sys/access.h i_sysaccess
12062 eval $inhdr
12063
12064 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12065 set sys/filio.h i_sysfilio
12066 eval $inhdr
12067 echo " "
12068 if $test `./findhdr sys/ioctl.h`; then
12069         val="$define"
12070         echo '<sys/ioctl.h> found.' >&4
12071 else
12072         val="$undef"
12073         if $test $i_sysfilio = "$define"; then
12074             echo '<sys/ioctl.h> NOT found.' >&4
12075         else
12076                 $test $i_sgtty = "$define" && xxx="sgtty.h"
12077                 $test $i_termio = "$define" && xxx="termio.h"
12078                 $test $i_termios = "$define" && xxx="termios.h"
12079 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12080         fi
12081 fi
12082 set i_sysioctl
12083 eval $setvar
12084
12085 : see if sys/resource.h has to be included
12086 set sys/resource.h i_sysresrc
12087 eval $inhdr
12088
12089 : see if sys/security.h is available
12090 set sys/security.h i_syssecrt
12091 eval $inhdr
12092
12093 : see if this is a sys/statvfs.h system
12094 set sys/statvfs.h i_sysstatvfs
12095 eval $inhdr
12096
12097 : see if this is a sys/un.h system
12098 set sys/un.h i_sysun
12099 eval $inhdr
12100
12101 : see if this is a syswait system
12102 set sys/wait.h i_syswait
12103 eval $inhdr
12104
12105 : see if this is an utime system
12106 set utime.h i_utime
12107 eval $inhdr
12108
12109 : see if this is a values.h system
12110 set values.h i_values
12111 eval $inhdr
12112
12113 : see if this is a vfork system
12114 case "$d_vfork" in
12115 "$define")
12116         set vfork.h i_vfork
12117         eval $inhdr
12118         ;;
12119 *)
12120         i_vfork="$undef"
12121         ;;
12122 esac
12123
12124 : see if gdbm.h is available
12125 set gdbm.h t_gdbm
12126 eval $inhdr
12127 case "$t_gdbm" in
12128 $define)
12129         : see if gdbm_open exists
12130         set gdbm_open d_gdbm_open
12131         eval $inlibc
12132         case "$d_gdbm_open" in
12133         $undef)
12134                 t_gdbm="$undef"
12135                 echo "We won't be including <gdbm.h>"
12136                 ;;
12137         esac
12138         ;;
12139 esac
12140 val="$t_gdbm"
12141 set i_gdbm
12142 eval $setvar
12143
12144 echo " "
12145 echo "Looking for extensions..." >&4
12146 tdir=`pwd`
12147 cd $rsrc/ext
12148 : If we are using the old config.sh, known_extensions may contain
12149 : old or inaccurate or duplicate values.
12150 known_extensions=''
12151 nonxs_extensions=''
12152 : We do not use find because it might not be available.
12153 : We do not just use MANIFEST because the user may have dropped
12154 : some additional extensions into the source tree and expect them
12155 : to be built.
12156 for xxx in * ; do
12157         case "$xxx" in
12158         DynaLoader|dynaload) ;;
12159         *)      if $test -f $xxx/$xxx.xs; then
12160                         known_extensions="$known_extensions $xxx"
12161                 elif $test -f $xxx/Makefile.PL; then
12162                         nonxs_extensions="$nonxs_extensions $xxx"
12163                 else
12164                         if $test -d $xxx; then
12165                                 # Look for nested extensions, eg. Devel/Dprof.
12166                                 cd $xxx
12167                                 for yyy in * ; do
12168                                 if $test -f $yyy/$yyy.xs; then
12169                                         known_extensions="$known_extensions $xxx/$yyy"
12170                                 elif $test -f $yyy/Makefile.PL; then
12171                                         nonxs_extensions="$nonxs_extensions $xxx/$yyy"
12172                                 fi
12173                                 done
12174                                 cd ..
12175                         fi
12176                 fi 
12177                 ;;
12178         esac
12179 done
12180 set X $nonxs_extensions
12181 shift
12182 nonxs_extensions="$*"
12183 set X $known_extensions
12184 shift
12185 known_extensions="$*"
12186 cd $tdir
12187
12188 : Now see which are supported on this system.
12189 avail_ext=''
12190 for xxx in $known_extensions ; do
12191         case "$xxx" in
12192         DB_File|db_file)
12193                 case "$i_db" in
12194                 $define) avail_ext="$avail_ext $xxx" ;;
12195                 esac
12196                 ;;
12197         GDBM_File|gdbm_fil)
12198                 case "$i_gdbm" in 
12199                 $define) avail_ext="$avail_ext $xxx" ;;
12200                 esac
12201                 ;;
12202         NDBM_File|ndbm_fil)
12203                 case "$i_ndbm" in
12204                 $define) avail_ext="$avail_ext $xxx" ;;
12205                 esac
12206                 ;;
12207         ODBM_File|odbm_fil) 
12208                 case "${i_dbm}${i_rpcsvcdbm}" in
12209                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12210                 esac
12211                 ;;
12212         POSIX|posix)
12213                 case "$useposix" in
12214                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12215                 esac
12216                 ;;
12217         Opcode|opcode)
12218                 case "$useopcode" in
12219                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12220                 esac
12221                 ;;
12222         Socket|socket)
12223                 case "$d_socket" in 
12224                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12225                 esac
12226                 ;;
12227         Thread|thread)
12228                 case "$usethreads" in 
12229                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12230                 esac
12231                 ;;
12232         IPC/SysV|ipc/sysv)
12233                 : XXX Do we need a useipcsysv variable here
12234                 case "${d_msg}${d_sem}${d_shm}" in 
12235                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12236                 esac
12237                 ;;
12238         *)      avail_ext="$avail_ext $xxx"
12239                 ;;
12240         esac
12241 done
12242
12243 set X $avail_ext
12244 shift
12245 avail_ext="$*"
12246
12247 : Now see which nonxs extensions are supported on this system.
12248 : For now assume all are.
12249 nonxs_ext=''
12250 for xxx in $nonxs_extensions ; do
12251         case "$xxx" in
12252         *)      nonxs_ext="$nonxs_ext $xxx"
12253                 ;;
12254         esac
12255 done
12256
12257 set X $nonxs_ext
12258 shift
12259 nonxs_ext="$*"
12260
12261 case $usedl in
12262 $define)
12263         $cat <<EOM
12264 A number of extensions are supplied with $package.  You may choose to
12265 compile these extensions for dynamic loading (the default), compile
12266 them into the $package executable (static loading), or not include
12267 them at all.  Answer "none" to include no extensions.
12268 Note that DynaLoader is always built and need not be mentioned here.
12269
12270 EOM
12271         case "$dynamic_ext" in
12272         '') dflt="$avail_ext" ;;
12273         *)      dflt="$dynamic_ext"
12274                 # Perhaps we are reusing an old out-of-date config.sh.
12275                 case "$hint" in
12276                 previous)
12277                         if test X"$dynamic_ext" != X"$avail_ext"; then
12278                                 $cat <<EOM
12279 NOTICE:  Your previous config.sh list may be incorrect. 
12280 The extensions now available to you are 
12281         ${avail_ext}
12282 but the default list from your previous config.sh is
12283         ${dynamic_ext} 
12284
12285 EOM
12286                         fi
12287                         ;;
12288                 esac
12289                 ;;
12290         esac
12291         case "$dflt" in
12292         '')     dflt=none;;
12293         esac
12294         rp="What extensions do you wish to load dynamically?"
12295         . ./myread
12296         case "$ans" in
12297         none) dynamic_ext=' ' ;;
12298         *) dynamic_ext="$ans" ;;
12299         esac
12300
12301         case "$static_ext" in
12302         '')
12303                 : Exclude those already listed in dynamic linking
12304                 dflt=''
12305                 for xxx in $avail_ext; do
12306                         case " $dynamic_ext " in
12307                         *" $xxx "*) ;;
12308                         *) dflt="$dflt $xxx" ;;
12309                         esac
12310                 done
12311                 set X $dflt
12312                 shift
12313                 dflt="$*"
12314                 ;;
12315         *)  dflt="$static_ext" 
12316                 ;;
12317         esac
12318
12319         case "$dflt" in
12320         '')     dflt=none;;
12321         esac
12322         rp="What extensions do you wish to load statically?"
12323         . ./myread
12324         case "$ans" in
12325         none) static_ext=' ' ;;
12326         *) static_ext="$ans" ;;
12327         esac
12328         ;;
12329 *)
12330         $cat <<EOM
12331 A number of extensions are supplied with $package.  Answer "none" 
12332 to include no extensions. 
12333 Note that DynaLoader is always built and need not be mentioned here.
12334
12335 EOM
12336         case "$static_ext" in
12337         '') dflt="$avail_ext" ;;
12338         *)      dflt="$static_ext"
12339                 # Perhaps we are reusing an old out-of-date config.sh.
12340                 case "$hint" in
12341                 previous)
12342                         if test X"$static_ext" != X"$avail_ext"; then
12343                                 $cat <<EOM
12344 NOTICE:  Your previous config.sh list may be incorrect. 
12345 The extensions now available to you are 
12346         ${avail_ext}
12347 but the default list from your previous config.sh is
12348         ${static_ext} 
12349
12350 EOM
12351                         fi
12352                         ;;
12353                 esac
12354                 ;;
12355         esac
12356         : Exclude those that are not xs extensions
12357         case "$dflt" in
12358         '')     dflt=none;;
12359         esac
12360         rp="What extensions do you wish to include?"
12361         . ./myread
12362         case "$ans" in
12363         none) static_ext=' ' ;;
12364         *) static_ext="$ans" ;;
12365         esac
12366         ;;
12367 esac
12368
12369 set X $dynamic_ext $static_ext $nonxs_ext
12370 shift
12371 extensions="$*"
12372
12373 : Remove build directory name from cppstdin so it can be used from
12374 : either the present location or the final installed location.
12375 echo " "
12376 : Get out of the UU directory to get correct path name.
12377 cd ..
12378 case "$cppstdin" in
12379 `pwd`/cppstdin)
12380         echo "Stripping down cppstdin path name"
12381         cppstdin=cppstdin
12382         ;;
12383 esac
12384 cd UU
12385
12386 : end of configuration questions
12387 echo " "
12388 echo "End of configuration questions."
12389 echo " "
12390
12391 : back to where it started
12392 if test -d ../UU; then
12393         cd ..
12394 fi
12395
12396 : configuration may be patched via a 'config.over' file
12397 if $test -f config.over; then
12398         echo " "
12399         dflt=y
12400         rp='I see a config.over file.  Do you wish to load it?'
12401         . UU/myread
12402         case "$ans" in
12403         n*) echo "OK, I'll ignore it.";;
12404         *)      . ./config.over
12405                 echo "Configuration override changes have been loaded."
12406                 ;;
12407         esac
12408 fi
12409
12410 : in case they want portability, strip down executable paths
12411 case "$d_portable" in
12412 "$define")
12413         echo " "
12414         echo "Stripping down executable paths..." >&4
12415         for file in $loclist $trylist; do
12416                 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12417                         eval $file="\$file"
12418                 fi
12419         done
12420         ;;
12421 esac
12422
12423 : create config.sh file
12424 echo " "
12425 echo "Creating config.sh..." >&4
12426 $spitshell <<EOT >config.sh
12427 $startsh
12428 #
12429 # This file was produced by running the Configure script. It holds all the
12430 # definitions figured out by Configure. Should you modify one of these values,
12431 # do not forget to propagate your changes by running "Configure -der". You may
12432 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12433 #
12434
12435 # Package name      : $package
12436 # Source directory  : $src
12437 # Configuration time: $cf_time
12438 # Configured by     : $cf_by
12439 # Target system     : $myuname
12440
12441 Author='$Author'
12442 Date='$Date'
12443 Header='$Header'
12444 Id='$Id'
12445 Locker='$Locker'
12446 Log='$Log'
12447 Mcc='$Mcc'
12448 RCSfile='$RCSfile'
12449 Revision='$Revision'
12450 Source='$Source'
12451 State='$State'
12452 _a='$_a'
12453 _exe='$_exe'
12454 _o='$_o'
12455 afs='$afs'
12456 alignbytes='$alignbytes'
12457 ansi2knr='$ansi2knr'
12458 aphostname='$aphostname'
12459 apiversion='$apiversion'
12460 ar='$ar'
12461 archlib='$archlib'
12462 archlibexp='$archlibexp'
12463 archname64='$archname64'
12464 archname='$archname'
12465 archobjs='$archobjs'
12466 awk='$awk'
12467 baserev='$baserev'
12468 bash='$bash'
12469 bin='$bin'
12470 binexp='$binexp'
12471 bison='$bison'
12472 byacc='$byacc'
12473 byteorder='$byteorder'
12474 c='$c'
12475 castflags='$castflags'
12476 cat='$cat'
12477 cc='$cc'
12478 cccdlflags='$cccdlflags'
12479 ccdlflags='$ccdlflags'
12480 ccflags='$ccflags'
12481 cf_by='$cf_by'
12482 cf_email='$cf_email'
12483 cf_time='$cf_time'
12484 chgrp='$chgrp'
12485 chmod='$chmod'
12486 chown='$chown'
12487 clocktype='$clocktype'
12488 comm='$comm'
12489 compress='$compress'
12490 contains='$contains'
12491 cp='$cp'
12492 cpio='$cpio'
12493 cpp='$cpp'
12494 cpp_stuff='$cpp_stuff'
12495 cppflags='$cppflags'
12496 cpplast='$cpplast'
12497 cppminus='$cppminus'
12498 cpprun='$cpprun'
12499 cppstdin='$cppstdin'
12500 cryptlib='$cryptlib'
12501 csh='$csh'
12502 d_Gconvert='$d_Gconvert'
12503 d_access='$d_access'
12504 d_accessx='$d_accessx'
12505 d_alarm='$d_alarm'
12506 d_archlib='$d_archlib'
12507 d_attribut='$d_attribut'
12508 d_bcmp='$d_bcmp'
12509 d_bcopy='$d_bcopy'
12510 d_bsd='$d_bsd'
12511 d_bsdgetpgrp='$d_bsdgetpgrp'
12512 d_bsdsetpgrp='$d_bsdsetpgrp'
12513 d_bzero='$d_bzero'
12514 d_casti32='$d_casti32'
12515 d_castneg='$d_castneg'
12516 d_charvspr='$d_charvspr'
12517 d_chown='$d_chown'
12518 d_chroot='$d_chroot'
12519 d_chsize='$d_chsize'
12520 d_closedir='$d_closedir'
12521 d_cmsghdr_s='$d_cmsghdr_s'
12522 d_const='$d_const'
12523 d_crypt='$d_crypt'
12524 d_csh='$d_csh'
12525 d_cuserid='$d_cuserid'
12526 d_dbl_dig='$d_dbl_dig'
12527 d_dbmclose64='$d_dbmclose64'
12528 d_dbminit64='$d_dbminit64'
12529 d_delete64='$d_delete64'
12530 d_difftime='$d_difftime'
12531 d_dirent64_s='$d_dirent64_s'
12532 d_dirnamlen='$d_dirnamlen'
12533 d_dlerror='$d_dlerror'
12534 d_dlopen='$d_dlopen'
12535 d_dlsymun='$d_dlsymun'
12536 d_dosuid='$d_dosuid'
12537 d_drand48proto='$d_drand48proto'
12538 d_dup2='$d_dup2'
12539 d_eaccess='$d_eaccess'
12540 d_endgrent='$d_endgrent'
12541 d_endhent='$d_endhent'
12542 d_endnent='$d_endnent'
12543 d_endpent='$d_endpent'
12544 d_endpwent='$d_endpwent'
12545 d_endsent='$d_endsent'
12546 d_eofnblk='$d_eofnblk'
12547 d_eunice='$d_eunice'
12548 d_fchmod='$d_fchmod'
12549 d_fchown='$d_fchown'
12550 d_fcntl='$d_fcntl'
12551 d_fd_macros='$d_fd_macros'
12552 d_fd_set='$d_fd_set'
12553 d_fds_bits='$d_fds_bits'
12554 d_fetch64='$d_fetch64'
12555 d_fgetpos64='$d_fgetpos64'
12556 d_fgetpos='$d_fgetpos'
12557 d_firstkey64='$d_firstkey64'
12558 d_flexfnam='$d_flexfnam'
12559 d_flock64_s='$d_flock64_s'
12560 d_flock='$d_flock'
12561 d_fopen64='$d_fopen64'
12562 d_fork='$d_fork'
12563 d_fpathconf='$d_fpathconf'
12564 d_freopen64='$d_freopen64'
12565 d_fseek64='$d_fseek64'
12566 d_fseeko64='$d_fseeko64'
12567 d_fseeko='$d_fseeko'
12568 d_fsetpos64='$d_fsetpos64'
12569 d_fsetpos='$d_fsetpos'
12570 d_fstat64='$d_fstat64'
12571 d_fstatfs='$d_fstatfs'
12572 d_fstatvfs='$d_fstatvfs'
12573 d_ftell64='$d_ftell64'
12574 d_ftello64='$d_ftello64'
12575 d_ftello='$d_ftello'
12576 d_ftime='$d_ftime'
12577 d_ftruncate64='$d_ftruncate64'
12578 d_getgrent='$d_getgrent'
12579 d_getgrps='$d_getgrps'
12580 d_gethbyaddr='$d_gethbyaddr'
12581 d_gethbyname='$d_gethbyname'
12582 d_gethent='$d_gethent'
12583 d_gethname='$d_gethname'
12584 d_gethostprotos='$d_gethostprotos'
12585 d_getlogin='$d_getlogin'
12586 d_getnbyaddr='$d_getnbyaddr'
12587 d_getnbyname='$d_getnbyname'
12588 d_getnent='$d_getnent'
12589 d_getnetprotos='$d_getnetprotos'
12590 d_getpbyname='$d_getpbyname'
12591 d_getpbynumber='$d_getpbynumber'
12592 d_getpent='$d_getpent'
12593 d_getpgid='$d_getpgid'
12594 d_getpgrp2='$d_getpgrp2'
12595 d_getpgrp='$d_getpgrp'
12596 d_getppid='$d_getppid'
12597 d_getprior='$d_getprior'
12598 d_getprotoprotos='$d_getprotoprotos'
12599 d_getpwent='$d_getpwent'
12600 d_getsbyname='$d_getsbyname'
12601 d_getsbyport='$d_getsbyport'
12602 d_getsent='$d_getsent'
12603 d_getservprotos='$d_getservprotos'
12604 d_gettimeod='$d_gettimeod'
12605 d_gnulibc='$d_gnulibc'
12606 d_grpasswd='$d_grpasswd'
12607 d_htonl='$d_htonl'
12608 d_index='$d_index'
12609 d_inetaton='$d_inetaton'
12610 d_ino64t='$d_ino64t'
12611 d_int64t='$d_int64t'
12612 d_iovec_s='$d_iovec_s'
12613 d_isascii='$d_isascii'
12614 d_killpg='$d_killpg'
12615 d_lchown='$d_lchown'
12616 d_link='$d_link'
12617 d_locconv='$d_locconv'
12618 d_lockf64='$d_lockf64'
12619 d_lockf='$d_lockf'
12620 d_longdbl='$d_longdbl'
12621 d_longlong='$d_longlong'
12622 d_lseek64='$d_lseek64'
12623 d_lstat64='$d_lstat64'
12624 d_lstat='$d_lstat'
12625 d_mblen='$d_mblen'
12626 d_mbstowcs='$d_mbstowcs'
12627 d_mbtowc='$d_mbtowc'
12628 d_memcmp='$d_memcmp'
12629 d_memcpy='$d_memcpy'
12630 d_memmove='$d_memmove'
12631 d_memset='$d_memset'
12632 d_mkdir='$d_mkdir'
12633 d_mkfifo='$d_mkfifo'
12634 d_mktime='$d_mktime'
12635 d_msg='$d_msg'
12636 d_msg_ctrunc='$d_msg_ctrunc'
12637 d_msg_dontroute='$d_msg_dontroute'
12638 d_msg_oob='$d_msg_oob'
12639 d_msg_peek='$d_msg_peek'
12640 d_msg_proxy='$d_msg_proxy'
12641 d_msgctl='$d_msgctl'
12642 d_msgget='$d_msgget'
12643 d_msghdr_s='$d_msghdr_s'
12644 d_msgrcv='$d_msgrcv'
12645 d_msgsnd='$d_msgsnd'
12646 d_mymalloc='$d_mymalloc'
12647 d_nextkey64='$d_nextkey64'
12648 d_nice='$d_nice'
12649 d_off64t='$d_off64t'
12650 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
12651 d_oldpthreads='$d_oldpthreads'
12652 d_oldsock='$d_oldsock'
12653 d_open3='$d_open3'
12654 d_open64='$d_open64'
12655 d_opendir64='$d_opendir64'
12656 d_pathconf='$d_pathconf'
12657 d_pause='$d_pause'
12658 d_phostname='$d_phostname'
12659 d_pipe='$d_pipe'
12660 d_poll='$d_poll'
12661 d_portable='$d_portable'
12662 d_pthread_yield='$d_pthread_yield'
12663 d_pwage='$d_pwage'
12664 d_pwchange='$d_pwchange'
12665 d_pwclass='$d_pwclass'
12666 d_pwcomment='$d_pwcomment'
12667 d_pwexpire='$d_pwexpire'
12668 d_pwgecos='$d_pwgecos'
12669 d_pwpasswd='$d_pwpasswd'
12670 d_pwquota='$d_pwquota'
12671 d_readdir64='$d_readdir64'
12672 d_readdir='$d_readdir'
12673 d_readlink='$d_readlink'
12674 d_readv='$d_readv'
12675 d_recvmsg='$d_recvmsg'
12676 d_rename='$d_rename'
12677 d_rewinddir='$d_rewinddir'
12678 d_rmdir='$d_rmdir'
12679 d_safebcpy='$d_safebcpy'
12680 d_safemcpy='$d_safemcpy'
12681 d_sanemcmp='$d_sanemcmp'
12682 d_sched_yield='$d_sched_yield'
12683 d_scm_rights='$d_scm_rights'
12684 d_seekdir64='$d_seekdir64'
12685 d_seekdir='$d_seekdir'
12686 d_select='$d_select'
12687 d_sem='$d_sem'
12688 d_semctl='$d_semctl'
12689 d_semctl_semid_ds='$d_semctl_semid_ds'
12690 d_semctl_semun='$d_semctl_semun'
12691 d_semget='$d_semget'
12692 d_semop='$d_semop'
12693 d_sendmsg='$d_sendmsg'
12694 d_setegid='$d_setegid'
12695 d_seteuid='$d_seteuid'
12696 d_setgrent='$d_setgrent'
12697 d_setgrps='$d_setgrps'
12698 d_sethent='$d_sethent'
12699 d_setlinebuf='$d_setlinebuf'
12700 d_setlocale='$d_setlocale'
12701 d_setnent='$d_setnent'
12702 d_setpent='$d_setpent'
12703 d_setpgid='$d_setpgid'
12704 d_setpgrp2='$d_setpgrp2'
12705 d_setpgrp='$d_setpgrp'
12706 d_setprior='$d_setprior'
12707 d_setpwent='$d_setpwent'
12708 d_setregid='$d_setregid'
12709 d_setresgid='$d_setresgid'
12710 d_setresuid='$d_setresuid'
12711 d_setreuid='$d_setreuid'
12712 d_setrgid='$d_setrgid'
12713 d_setruid='$d_setruid'
12714 d_setsent='$d_setsent'
12715 d_setsid='$d_setsid'
12716 d_setvbuf='$d_setvbuf'
12717 d_sfio='$d_sfio'
12718 d_shm='$d_shm'
12719 d_shmat='$d_shmat'
12720 d_shmatprototype='$d_shmatprototype'
12721 d_shmctl='$d_shmctl'
12722 d_shmdt='$d_shmdt'
12723 d_shmget='$d_shmget'
12724 d_sigaction='$d_sigaction'
12725 d_sigsetjmp='$d_sigsetjmp'
12726 d_socket='$d_socket'
12727 d_sockpair='$d_sockpair'
12728 d_stat64='$d_stat64'
12729 d_statblks='$d_statblks'
12730 d_statfs='$d_statfs'
12731 d_statfsflags='$d_statfsflags'
12732 d_statvfs='$d_statvfs'
12733 d_stdio_cnt_lval='$d_stdio_cnt_lval'
12734 d_stdio_ptr_lval='$d_stdio_ptr_lval'
12735 d_stdiobase='$d_stdiobase'
12736 d_stdstdio='$d_stdstdio'
12737 d_store64='$d_store64'
12738 d_strchr='$d_strchr'
12739 d_strcoll='$d_strcoll'
12740 d_strctcpy='$d_strctcpy'
12741 d_strerrm='$d_strerrm'
12742 d_strerror='$d_strerror'
12743 d_strtod='$d_strtod'
12744 d_strtol='$d_strtol'
12745 d_strtoul='$d_strtoul'
12746 d_strxfrm='$d_strxfrm'
12747 d_suidsafe='$d_suidsafe'
12748 d_symlink='$d_symlink'
12749 d_syscall='$d_syscall'
12750 d_sysconf='$d_sysconf'
12751 d_sysernlst='$d_sysernlst'
12752 d_syserrlst='$d_syserrlst'
12753 d_system='$d_system'
12754 d_tcgetpgrp='$d_tcgetpgrp'
12755 d_tcsetpgrp='$d_tcsetpgrp'
12756 d_telldir64='$d_telldir64'
12757 d_telldir='$d_telldir'
12758 d_time='$d_time'
12759 d_times='$d_times'
12760 d_tmpfile64='$d_tmpfile64'
12761 d_truncate64='$d_truncate64'
12762 d_truncate='$d_truncate'
12763 d_tzname='$d_tzname'
12764 d_umask='$d_umask'
12765 d_uname='$d_uname'
12766 d_union_semun='$d_union_semun'
12767 d_vfork='$d_vfork'
12768 d_void_closedir='$d_void_closedir'
12769 d_voidsig='$d_voidsig'
12770 d_voidtty='$d_voidtty'
12771 d_volatile='$d_volatile'
12772 d_vprintf='$d_vprintf'
12773 d_wait4='$d_wait4'
12774 d_waitpid='$d_waitpid'
12775 d_wcstombs='$d_wcstombs'
12776 d_wctomb='$d_wctomb'
12777 d_writev='$d_writev'
12778 d_xenix='$d_xenix'
12779 date='$date'
12780 db_hashtype='$db_hashtype'
12781 db_prefixtype='$db_prefixtype'
12782 defvoidused='$defvoidused'
12783 direntrytype='$direntrytype'
12784 dlext='$dlext'
12785 dlsrc='$dlsrc'
12786 doublesize='$doublesize'
12787 drand01='$drand01'
12788 dynamic_ext='$dynamic_ext'
12789 eagain='$eagain'
12790 ebcdic='$ebcdic'
12791 echo='$echo'
12792 egrep='$egrep'
12793 emacs='$emacs'
12794 eunicefix='$eunicefix'
12795 exe_ext='$exe_ext'
12796 expr='$expr'
12797 extensions='$extensions'
12798 find='$find'
12799 firstmakefile='$firstmakefile'
12800 flex='$flex'
12801 fpostype='$fpostype'
12802 freetype='$freetype'
12803 full_csh='$full_csh'
12804 full_sed='$full_sed'
12805 gccversion='$gccversion'
12806 gidtype='$gidtype'
12807 glibpth='$glibpth'
12808 grep='$grep'
12809 groupcat='$groupcat'
12810 groupstype='$groupstype'
12811 gzip='$gzip'
12812 h_fcntl='$h_fcntl'
12813 h_sysfile='$h_sysfile'
12814 hint='$hint'
12815 hostcat='$hostcat'
12816 huge='$huge'
12817 i_arpainet='$i_arpainet'
12818 i_bsdioctl='$i_bsdioctl'
12819 i_db='$i_db'
12820 i_dbm='$i_dbm'
12821 i_dirent='$i_dirent'
12822 i_dld='$i_dld'
12823 i_dlfcn='$i_dlfcn'
12824 i_fcntl='$i_fcntl'
12825 i_float='$i_float'
12826 i_gdbm='$i_gdbm'
12827 i_grp='$i_grp'
12828 i_inttypes='$i_inttypes'
12829 i_limits='$i_limits'
12830 i_locale='$i_locale'
12831 i_machcthr='$i_machcthr'
12832 i_malloc='$i_malloc'
12833 i_math='$i_math'
12834 i_memory='$i_memory'
12835 i_mntent='$i_mntent'
12836 i_ndbm='$i_ndbm'
12837 i_netdb='$i_netdb'
12838 i_neterrno='$i_neterrno'
12839 i_niin='$i_niin'
12840 i_poll='$i_poll'
12841 i_pwd='$i_pwd'
12842 i_rpcsvcdbm='$i_rpcsvcdbm'
12843 i_sfio='$i_sfio'
12844 i_sgtty='$i_sgtty'
12845 i_stdarg='$i_stdarg'
12846 i_stddef='$i_stddef'
12847 i_stdlib='$i_stdlib'
12848 i_string='$i_string'
12849 i_sysaccess='$i_sysaccess'
12850 i_sysdir='$i_sysdir'
12851 i_sysfile='$i_sysfile'
12852 i_sysfilio='$i_sysfilio'
12853 i_sysin='$i_sysin'
12854 i_sysioctl='$i_sysioctl'
12855 i_sysmount='$i_sysmount'
12856 i_sysndir='$i_sysndir'
12857 i_sysparam='$i_sysparam'
12858 i_sysresrc='$i_sysresrc'
12859 i_syssecrt='$i_syssecrt'
12860 i_sysselct='$i_sysselct'
12861 i_syssockio='$i_syssockio'
12862 i_sysstat='$i_sysstat'
12863 i_sysstatvfs='$i_sysstatvfs'
12864 i_systime='$i_systime'
12865 i_systimek='$i_systimek'
12866 i_systimes='$i_systimes'
12867 i_systypes='$i_systypes'
12868 i_sysuio='$i_sysuio'
12869 i_sysun='$i_sysun'
12870 i_syswait='$i_syswait'
12871 i_termio='$i_termio'
12872 i_termios='$i_termios'
12873 i_time='$i_time'
12874 i_unistd='$i_unistd'
12875 i_utime='$i_utime'
12876 i_values='$i_values'
12877 i_varargs='$i_varargs'
12878 i_varhdr='$i_varhdr'
12879 i_vfork='$i_vfork'
12880 ignore_versioned_solibs='$ignore_versioned_solibs'
12881 incpath='$incpath'
12882 inews='$inews'
12883 installarchlib='$installarchlib'
12884 installbin='$installbin'
12885 installman1dir='$installman1dir'
12886 installman3dir='$installman3dir'
12887 installprivlib='$installprivlib'
12888 installscript='$installscript'
12889 installsitearch='$installsitearch'
12890 installsitelib='$installsitelib'
12891 installusrbinperl='$installusrbinperl'
12892 intsize='$intsize'
12893 known_extensions='$known_extensions'
12894 ksh='$ksh'
12895 large='$large'
12896 ld='$ld'
12897 lddlflags='$lddlflags'
12898 ldflags='$ldflags'
12899 less='$less'
12900 lib_ext='$lib_ext'
12901 libc='$libc'
12902 libperl='$libperl'
12903 libpth='$libpth'
12904 libs='$libs'
12905 libswanted='$libswanted'
12906 line='$line'
12907 lint='$lint'
12908 lkflags='$lkflags'
12909 ln='$ln'
12910 lns='$lns'
12911 locincpth='$locincpth'
12912 loclibpth='$loclibpth'
12913 longdblsize='$longdblsize'
12914 longlongsize='$longlongsize'
12915 longsize='$longsize'
12916 lp='$lp'
12917 lpr='$lpr'
12918 ls='$ls'
12919 lseeksize='$lseeksize'
12920 lseektype='$lseektype'
12921 mail='$mail'
12922 mailx='$mailx'
12923 make='$make'
12924 make_set_make='$make_set_make'
12925 mallocobj='$mallocobj'
12926 mallocsrc='$mallocsrc'
12927 malloctype='$malloctype'
12928 man1dir='$man1dir'
12929 man1direxp='$man1direxp'
12930 man1ext='$man1ext'
12931 man3dir='$man3dir'
12932 man3direxp='$man3direxp'
12933 man3ext='$man3ext'
12934 medium='$medium'
12935 mips='$mips'
12936 mips_type='$mips_type'
12937 mkdir='$mkdir'
12938 models='$models'
12939 modetype='$modetype'
12940 more='$more'
12941 mv='$mv'
12942 myarchname='$myarchname'
12943 mydomain='$mydomain'
12944 myhostname='$myhostname'
12945 myuname='$myuname'
12946 n='$n'
12947 netdb_hlen_type='$netdb_hlen_type'
12948 netdb_host_type='$netdb_host_type'
12949 netdb_name_type='$netdb_name_type'
12950 netdb_net_type='$netdb_net_type'
12951 nm='$nm'
12952 nm_opt='$nm_opt'
12953 nm_so_opt='$nm_so_opt'
12954 nonxs_ext='$nonxs_ext'
12955 nroff='$nroff'
12956 o_nonblock='$o_nonblock'
12957 obj_ext='$obj_ext'
12958 old_pthread_create_joinable='$old_pthread_create_joinable'
12959 optimize='$optimize'
12960 orderlib='$orderlib'
12961 osname='$osname'
12962 osvers='$osvers'
12963 package='$package'
12964 pager='$pager'
12965 passcat='$passcat'
12966 patchlevel='$patchlevel'
12967 path_sep='$path_sep'
12968 perl='$perl'
12969 perladmin='$perladmin'
12970 perlpath='$perlpath'
12971 pg='$pg'
12972 phostname='$phostname'
12973 pidtype='$pidtype'
12974 plibpth='$plibpth'
12975 pmake='$pmake'
12976 pr='$pr'
12977 prefix='$prefix'
12978 prefixexp='$prefixexp'
12979 privlib='$privlib'
12980 privlibexp='$privlibexp'
12981 prototype='$prototype'
12982 ptrsize='$ptrsize'
12983 randbits='$randbits'
12984 randfunc='$randfunc'
12985 randseedtype='$randseedtype'
12986 ranlib='$ranlib'
12987 rd_nodata='$rd_nodata'
12988 rm='$rm'
12989 rmail='$rmail'
12990 runnm='$runnm'
12991 sched_yield='$sched_yield'
12992 scriptdir='$scriptdir'
12993 scriptdirexp='$scriptdirexp'
12994 sed='$sed'
12995 seedfunc='$seedfunc'
12996 selectminbits='$selectminbits'
12997 selecttype='$selecttype'
12998 sendmail='$sendmail'
12999 sh='$sh'
13000 shar='$shar'
13001 sharpbang='$sharpbang'
13002 shmattype='$shmattype'
13003 shortsize='$shortsize'
13004 shrpenv='$shrpenv'
13005 shsharp='$shsharp'
13006 sig_name='$sig_name'
13007 sig_name_init='$sig_name_init'
13008 sig_num='$sig_num'
13009 sig_num_init='$sig_num_init'
13010 signal_t='$signal_t'
13011 sitearch='$sitearch'
13012 sitearchexp='$sitearchexp'
13013 sitelib='$sitelib'
13014 sitelibexp='$sitelibexp'
13015 sizetype='$sizetype'
13016 sleep='$sleep'
13017 smail='$smail'
13018 small='$small'
13019 so='$so'
13020 sockethdr='$sockethdr'
13021 socketlib='$socketlib'
13022 sort='$sort'
13023 spackage='$spackage'
13024 spitshell='$spitshell'
13025 split='$split'
13026 src='$src'
13027 ssizetype='$ssizetype'
13028 startperl='$startperl'
13029 startsh='$startsh'
13030 static_ext='$static_ext'
13031 stdchar='$stdchar'
13032 stdio_base='$stdio_base'
13033 stdio_bufsiz='$stdio_bufsiz'
13034 stdio_cnt='$stdio_cnt'
13035 stdio_filbuf='$stdio_filbuf'
13036 stdio_ptr='$stdio_ptr'
13037 strings='$strings'
13038 submit='$submit'
13039 subversion='$subversion'
13040 sysman='$sysman'
13041 tail='$tail'
13042 tar='$tar'
13043 tbl='$tbl'
13044 tee='$tee'
13045 test='$test'
13046 timeincl='$timeincl'
13047 timetype='$timetype'
13048 touch='$touch'
13049 tr='$tr'
13050 trnl='$trnl'
13051 troff='$troff'
13052 uidtype='$uidtype'
13053 uname='$uname'
13054 uniq='$uniq'
13055 use64bits='$use64bits'
13056 usedl='$usedl'
13057 usemultiplicity='$usemultiplicity'
13058 usemymalloc='$usemymalloc'
13059 usenm='$usenm'
13060 useopcode='$useopcode'
13061 useperlio='$useperlio'
13062 useposix='$useposix'
13063 usesfio='$usesfio'
13064 useshrplib='$useshrplib'
13065 usethreads='$usethreads'
13066 usevfork='$usevfork'
13067 usrinc='$usrinc'
13068 uuname='$uuname'
13069 version='$version'
13070 vi='$vi'
13071 voidflags='$voidflags'
13072 xlibpth='$xlibpth'
13073 zcat='$zcat'
13074 zip='$zip'
13075 EOT
13076
13077 : Add in command line options if available
13078 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
13079
13080 : add special variables
13081 $test -f $src/patchlevel.h && \
13082 awk '/^#define/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
13083 echo "CONFIG=true" >>config.sh
13084
13085 : propagate old symbols
13086 if $test -f UU/config.sh; then
13087         <UU/config.sh sort | uniq >UU/oldconfig.sh
13088         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
13089         sort | uniq -u >UU/oldsyms
13090         set X `cat UU/oldsyms`
13091         shift
13092         case $# in
13093         0) ;;
13094         *)
13095                 cat <<EOM
13096 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
13097 EOM
13098                 echo "# Variables propagated from previous config.sh file." >>config.sh
13099                 for sym in `cat UU/oldsyms`; do
13100                         echo "    Propagating $hint variable "'$'"$sym..."
13101                         eval 'tmp="$'"${sym}"'"'
13102                         echo "$tmp" | \
13103                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
13104                 done
13105                 ;;
13106         esac
13107 fi
13108
13109 : Finish up by extracting the .SH files
13110 case "$alldone" in
13111 exit)
13112         $rm -rf UU
13113         echo "Done."
13114         exit 0
13115         ;;
13116 cont)
13117         ;;
13118 '')
13119         dflt=''
13120         nostick=true
13121         $cat <<EOM
13122
13123 If you'd like to make any changes to the config.sh file before I begin
13124 to configure things, do it as a shell escape now (e.g. !vi config.sh).
13125
13126 EOM
13127         rp="Press return or use a shell escape to edit config.sh:"
13128         . UU/myread
13129         nostick=''
13130         case "$ans" in
13131         '') ;;
13132         *) : in case they cannot read
13133                 sh 1>&4 -c "$ans";;
13134         esac
13135         ;;
13136 esac
13137
13138 : if this fails, just run all the .SH files by hand
13139 . ./config.sh
13140
13141 echo " "
13142 exec 1>&4
13143 . ./UU/extract
13144
13145 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13146         dflt=y
13147         case "$silent" in
13148         true) ;;
13149         *)
13150                 $cat <<EOM
13151
13152 Now you need to generate make dependencies by running "$make depend".
13153 You might prefer to run it in background: "$make depend > makedepend.out &"
13154 It can take a while, so you might not want to run it right now.
13155
13156 EOM
13157                 ;;
13158         esac
13159         rp="Run $make depend now?"
13160         . UU/myread
13161         case "$ans" in
13162         y*)
13163                 $make depend && echo "Now you must run a $make."
13164                 ;;
13165         *)
13166                 echo "You must run '$make depend' then '$make'."
13167                 ;;
13168         esac
13169 elif test -f [Mm]akefile; then
13170         echo " "
13171         echo "Now you must run a $make."
13172 else
13173         echo "Done."
13174 fi
13175
13176 if $test -f Policy.sh; then
13177     $cat <<EOM
13178
13179 If you compile $package on a different machine or from a different object
13180 directory, copy the Policy.sh file from this object directory to the
13181 new one before you run Configure -- this will help you with most of
13182 the policy defaults.
13183
13184 EOM
13185 fi
13186 if $test -f config.msg; then
13187     echo "Hmm.  I also noted the following information while running:"
13188     echo " "
13189     $cat config.msg >&4
13190     $rm -f config.msg
13191 fi
13192 $rm -f kit*isdone ark*isdone
13193 $rm -rf UU
13194
13195 : End of Configure
13196